Hast du auch schon immer gedacht, dass die Welt doch nicht so rund ist, wie sie zu sein scheint? Hattest du jeher das Gefühl, dass die Kreiszahl eher quadratisch sein müsste?
Dann bist du genau hier richtig! Blockforum ist die neue Minecraft-Community. Werde Mitglied und teile mit uns Deine Leidenschaft. Wir freuen uns auf dich!

Der Zugriff auf das Forum ist für Gäste eingeschränkt, als registrierter Benutzer würden Dir alle Funktionen (wie z.B. Bildvergrößerung und Downloads) im Forum zur Verfügung stehen.

Entwicklungstagebuch "Delete Unchanged Chunks"

    • Welteditor

      NeunEinser schrieb:

      Das muss noch geändert werden. 31 = hohes Gras, 37 und 38 = Blume, 0 = Luft. Habe ich bisher nicht eingebunden. Tree-Berechnung muss auch noch toleranter werden.

      Der selbe Chunk:

      Quellcode

      1. Chunk (-28, -15):
      2. 1 points, vegitation different, expected 31, found 0 at 11, 64, 0
      3. 1 points, vegitation different, expected 31, found 37 at 12, 64, 0
      4. 1 points, vegitation different, expected 0, found 37 at 13, 64, 0
      5. 1 points, vegitation different, expected 31, found 0 at 15, 64, 0
      6. 1 points, vegitation different, expected 0, found 31 at 6, 64, 1
      7. 1 points, vegitation different, expected 31, found 0 at 9, 64, 1
      8. 1 points, vegitation different, expected 31, found 0 at 14, 64, 1
      9. 1 points, vegitation different, expected 31, found 0 at 15, 64, 1
      10. 1 points, vegitation different, expected 0, found 31 at 7, 64, 2
      11. 1 points, vegitation different, expected 31, found 0 at 8, 64, 2
      12. 1 points, vegitation different, expected 0, found 31 at 10, 64, 2
      13. 1 points, vegitation different, expected 31, found 0 at 12, 64, 2
      14. 1 points, vegitation different, expected 31, found 0 at 13, 64, 2
      15. 1 points, vegitation different, expected 31, found 0 at 15, 64, 2
      16. 1 points, vegitation different, expected 0, found 31 at 14, 64, 3
      17. 1 points, vegitation different, expected 0, found 31 at 15, 64, 3
      18. 1 points, vegitation different, expected 37, found 31 at 8, 64, 4
      19. 1 points, vegitation different, expected 31, found 0 at 12, 64, 4
      20. 1 points, vegitation different, expected 31, found 0 at 15, 64, 5
      21. 1 points, vegitation different, expected 31, found 0 at 9, 64, 6
      22. 1 points, vegitation different, expected 0, found 31 at 15, 64, 6
      23. 0 points, grass/dirt mismatch, expected 3, found 2 at 8, 64, 7
      24. 1 points, vegitation different, expected 31, found 0 at 10, 64, 7
      25. 1 points, vegitation different, expected 31, found 0 at 13, 64, 7
      26. 1 points, vegitation different, expected 31, found 0 at 11, 64, 9
      27. 1 points, vegitation different, expected 0, found 31 at 12, 64, 10
      28. 1 points, vegitation different, expected 31, found 0 at 13, 64, 10
      29. 1 points, vegitation different, expected 0, found 31 at 14, 64, 10
      30. 1 points, vegitation different, expected 31, found 0 at 14, 64, 11
      31. 1 points, vegitation different, expected 0, found 31 at 13, 64, 12
      32. 1 points, vegitation different, expected 0, found 31 at 3, 65, 0
      33. 1 points, vegitation different, expected 0, found 31 at 6, 65, 2
      34. 1 points, vegitation different, expected 31, found 0 at 6, 65, 3
      35. 1 points, vegitation different, expected 0, found 31 at 7, 65, 5
      36. 1 points, vegitation different, expected 31, found 0 at 9, 65, 8
      37. 1 points, vegitation different, expected 31, found 38 at 10, 65, 9
      38. 1 points, vegitation different, expected 0, found 31 at 11, 65, 12
      39. 1 points, vegitation different, expected 31, found 0 at 14, 65, 13
      40. 1 points, vegitation different, expected 31, found 0 at 6, 66, 4
      41. 1 points, vegitation different, expected 0, found 31 at 5, 67, 7
      42. 1 points, vegitation different, expected 0, found 38 at 10, 67, 12
      43. 0 points, grass/dirt mismatch, expected 2, found 3 at 0, 67, 13
      44. 1 points, vegitation different, expected 31, found 0 at 11, 67, 13
      45. 1 points, vegitation different, expected 0, found 31 at 0, 68, 1
      46. 1 points, vegitation different, expected 0, found 31 at 1, 68, 1
      47. 1 points, vegitation different, expected 0, found 31 at 0, 68, 2
      48. 1 points, vegitation different, expected 0, found 31 at 3, 68, 3
      49. 1 points, vegitation different, expected 0, found 31 at 4, 68, 5
      50. 1 points, vegitation different, expected 0, found 31 at 0, 68, 6
      51. 1 points, vegitation different, expected 0, found 31 at 2, 68, 6
      52. 1 points, vegitation different, expected 0, found 31 at 4, 68, 7
      53. 1 points, vegitation different, expected 0, found 31 at 5, 68, 8
      54. 1 points, vegitation different, expected 0, found 31 at 3, 68, 9
      55. 1 points, vegitation different, expected 0, found 31 at 4, 68, 10
      56. 1 points, vegitation different, expected 0, found 31 at 6, 68, 10
      57. 1 points, vegitation different, expected 38, found 31 at 4, 68, 11
      58. 1 points, vegitation different, expected 0, found 31 at 5, 68, 11
      59. 1 points, vegitation different, expected 0, found 31 at 1, 68, 12
      60. 1 points, vegitation different, expected 31, found 0 at 0, 68, 14
      61. 1 points, vegitation different, expected 0, found 31 at 12, 68, 15
      62. 1 points, vegitation different, expected 0, found 31 at 0, 69, 5
      63. 1 points, vegitation different, expected 0, found 31 at 3, 69, 12
      64. 1 points, vegitation different, expected 38, found 31 at 8, 69, 13
      65. 1 points, vegitation different, expected 31, found 0 at 1, 69, 14
      66. 28 points for tree mismatch. Found 89 tree blocks, expected 125.
      67. deleted with score: 90


      Bis score 100 wird gelöscht.

      Hier mal der Fortschritt. Immer noch Optimierungsbedarf.


      Oh nein! Da unten ist ja ein Kreis!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „NeunEinser“ ()

      Viel hat sich nicht verändert, ich habe den Code etwas aufgeräumt und daraus resultierend eine config im JSON- format geschrieben.
      In der Config kann individuell eingestellt werden, welcher Unterschied wie viele Punkte gibt. Die Sonderbehandlung von Bäumen ist komplett wegefallen, Bäume werden jetzt mit der Standard-config wie Vegitation behandelt. Eventuell ändere ich das noch.

      Momentaner Aufbau der Config (Verbesserungsvorschläge?)

      • :nbtc:
        • :nbtli: keepChunk: Liste an Blöcken, die dazu führen, dass der Chunk unter keinen Umständen gelöscht wird.
          • :nbtc: Ein Block
            • :nbts: id: numerischer ID-Wert des Blockes.
            • :nbtst: name: Optional. Name des Blockes. Taucht im Logfile auf. Ist er nicht gegeben, wird nur die Block-ID ins log geschrieben.

        • :nbti: pointsToDeleteChunk: Die minimale Anzahl an Gesamtpunkten, bei der der Chunk gelöscht wird.
        • :nbti: defaultMismatchPoints: Die Anzahl an Punkten, die standardmäßig für einen Blockunterschied gegeben wird.
        • :nbtli: pointsForBlockMismatch: Liste, in der Blockunterschiede, denen besondere Punktzahlen zugewiesen werden, aufgeführt sind.
          • :nbtc: Ein Eintrag
            • :nbtli: block1: Liste an Blöcken. Entweder in der Quellwelt oder der Vergleichswelt muss einer der Blöcke an der Koordinate, die aktuell überprüft wird, vorhanden sein. Kann entweder nur eine Zahl, oder ein Objekt mit Angabe id und data sein.
              • :nbts: Eine Block ID

              • :nbtc: Ein Block
                • :nbts: id: Die numerische Block-ID
                • :nbtb: data: Optional. Der Metadatenwert, den der Block haben muss. Ohne Angabe wird der Metadatenwert ignoriert.

            • :nbti: defaultPoints: Optional. Wenn angegeben, wird dieser Wert als Punktzahl verwendet, wenn der aktuelle Block in der Liste block1 vorkommt, aber nicht in block2. Ohne Angabe werden die anderen Fälle überprüft. Trifft kein spezifizierter Fall zu, wird der Wert von defaultMismatchPoints verwendet.
            • :nbtli: block2: Liste an Sonderfällen, die angewendet werden können, wenn block1 erfüllt ist.
              • :nbtc: Ein Sonderfall
                • :nbtli: blocks: Liste an Blöcken. In der jeweils anderen Welt, als die bei block1 verwendeten, muss einer der Blöcke an der Koordinate, die aktuell überprüft wird, vorhanden sein. Kann entweder nur eine Zahl, oder ein Objekt mit Angabe id und data sein.
                  • :nbts: Eine Block ID

                  • :nbtc: Ein Block
                    • :nbts: id: Die numerische Block-ID
                    • :nbtb: data: Optional. Der Metadatenwert, den der Block haben muss. Ohne Angabe wird der Metadatenwert ignoriert.

                • :nbtst: description: Optional. Beschreibung dieses Unterschieds. Taucht im Logfile auf. Ohne Angabe erscheint dort allgemein "block mismatch".
                • :nbti: points: Punkte, mit denen dieser Sonderfall bewertet wird.


      Aktuelle Standard- Config-Datei (nicht final):
      config

      Quellcode

      1. {
      2. "keepChunk": [
      3. { "id": 63, "name": "standing sign" },
      4. { "id": 68, "name": "wall sign" },
      5. { "id": 90, "name": "nether portal" },
      6. { "id": 119, "name": "end portal" },
      7. { "id": 120, "name": "end portal frame" },
      8. { "id": 130, "name": "ender chest" },
      9. { "id": 166, "name": "barrier" },
      10. { "id": 137, "name": "impulse command block" },
      11. { "id": 210, "name": "repeating command block" },
      12. { "id": 211, "name": "chain command block" },
      13. { "id": 255, "name": "structure block" },
      14. { "id": 217, "name": "structure void" }
      15. ],
      16. "pointsToDeleteChunk": 1000,
      17. "defaultMismatchPoints": 140,
      18. "pointsForBlockMismatch": [
      19. {
      20. "block1": [ 0 ],
      21. "defaultPoints": 180,
      22. "block2": [
      23. {
      24. "blocks": [ { "id": 8, "data": 0 }, { "id": 9 , "data": 0 }, { "id": 10 , "data": 0 }, { "id": 11 , "data": 0 } ],
      25. "description": "water/lava source different",
      26. "points": 118
      27. },
      28. {
      29. "blocks": [ 8, 9, 10, 11 ],
      30. "description": "water or lava flows differently",
      31. "points": 1
      32. },
      33. {
      34. "blocks": [ 17, 18, 31, 32, 37, 38, 39, 40, 161, 162, 175 ],
      35. "description": "vegetation different",
      36. "points": 6
      37. }
      38. ]
      39. },
      40. {
      41. "block1": [ 1, 3, 13, 14, 15, 16, 21, 56, 73, 74, 97, 129 ],
      42. "block2": [
      43. {
      44. "blocks": [ 1, 3, 13, 14, 15, 16, 21, 56, 73, 74, 97, 129 ],
      45. "description": "mismatch between blocks that can occur in veins underground",
      46. "points": 1
      47. }
      48. ]
      49. },
      50. {
      51. "block1": [ 1 ],
      52. "block2": [
      53. {
      54. "blocks": [ { "id": 8, "data": 0 }, { "id": 9, "data": 0 } ],
      55. "description": "water source and stone mismatch",
      56. "points": 1
      57. }
      58. ]
      59. },
      60. {
      61. "block1": [ 2 ],
      62. "block2": [
      63. {
      64. "blocks": [ 3 ],
      65. "description": "grass/dirt mismatch",
      66. "points": 1
      67. }
      68. ]
      69. },
      70. {
      71. "block1": [ 4 ],
      72. "block2": [
      73. {
      74. "blocks": [ 8, 9, 10, 11 ],
      75. "description": "cobble and water/lava mismatch",
      76. "points": 1
      77. }
      78. ]
      79. },
      80. {
      81. "block1": [ 8, 9 ],
      82. "block2": [
      83. {
      84. "blocks": [ 8, 9 ],
      85. "description": "water ID",
      86. "points": 0
      87. }
      88. ]
      89. },
      90. {
      91. "block1": [ 10, 11 ],
      92. "block2": [
      93. {
      94. "blocks": [ 10, 11 ],
      95. "description": "lava ID",
      96. "points": 0
      97. },
      98. {
      99. "blocks": [ 49 ],
      100. "description": "lava / obsidian mismatch",
      101. "points": 0
      102. }
      103. ]
      104. },
      105. {
      106. "block1": [ 17, 18, 31, 32, 37, 38, 39, 40, 161, 162, 175 ],
      107. "block2": [
      108. {
      109. "blocks": [ 17, 18, 31, 32, 37, 38, 39, 40, 161, 162, 175 ],
      110. "description": "vegetation different",
      111. "points": 1
      112. }
      113. ]
      114. }
      115. ]
      116. }


      Hier ein beispielhafter Auszug aus einem logfile. Gleiche Unterschiede in eimem Chunk nun werden gestacked, und es wird die gesamtpunktzahl und die Anzahl der Vorkommnisse ausgegeben. Dadurch wird die Datei weniger zugespammt.
      logfile Auszug

      Quellcode

      1. Chunk (-32, -32):
      2. 2 points for 2x mismatch between blocks that can occur in veins underground, Found 13, expected 16
      3. 4 points for 4x mismatch between blocks that can occur in veins underground, Found 16, expected 15
      4. deleted with score: 6
      5. Chunk (-32, -31):
      6. deleted with score: 0
      7. Chunk (-32, -30):
      8. 1062 points for 9x water/lava source different, Found 0, expected 11
      9. 0 points for 1x lava ID, Found 10, expected 11
      10. kept with score: 1062
      11. Chunk (-32, -29):
      12. deleted with score: 0
      13. Chunk (-32, -28):
      14. 3 points for 3x mismatch between blocks that can occur in veins underground, Found 16, expected 13
      15. 1 points for 1x mismatch between blocks that can occur in veins underground, Found 15, expected 13
      16. deleted with score: 4
      17. Chunk (-32, -27):
      18. deleted with score: 0
      19. Chunk (-32, -26):
      20. 0 points for 1x lava ID, Found 11, expected 10
      21. 118 points for 1x water/lava source different, Found 0, expected 9
      22. 180 points for 1x block mismatch, Found 0, expected 9
      23. 0 points for 2x water ID, Found 8, expected 9
      24. 1 points for 1x mismatch between blocks that can occur in veins underground, Found 16, expected 15
      25. deleted with score: 299
      26. Chunk (-121, -14):
      27. Found end portal frame (Id: 120) and keeping chunk.
      28. kept with score: 2147483647
      29. Chunk (-121, -10):
      30. 120 points for 120x mismatch between blocks that can occur in veins underground, Found 1, expected 13
      31. 85 points for 85x mismatch between blocks that can occur in veins underground, Found 1, expected 16
      32. 102 points for 102x mismatch between blocks that can occur in veins underground, Found 1, expected 3
      33. 18 points for 18x mismatch between blocks that can occur in veins underground, Found 1, expected 73
      34. 49 points for 49x mismatch between blocks that can occur in veins underground, Found 1, expected 15
      35. 211 points for 211x mismatch between blocks that can occur in veins underground, Found 13, expected 1
      36. 4 points for 4x mismatch between blocks that can occur in veins underground, Found 13, expected 3
      37. 7 points for 7x mismatch between blocks that can occur in veins underground, Found 56, expected 1
      38. 1 points for 1x mismatch between blocks that can occur in veins underground, Found 56, expected 73
      39. 56 points for 56x mismatch between blocks that can occur in veins underground, Found 15, expected 1
      40. 3 points for 3x mismatch between blocks that can occur in veins underground, Found 15, expected 73
      41. 8 points for 8x mismatch between blocks that can occur in veins underground, Found 73, expected 1
      42. 2520 points for 14x block mismatch, Found 13, expected 0
      43. 2 points for 2x mismatch between blocks that can occur in veins underground, Found 21, expected 1
      44. 2520 points for 14x block mismatch, Found 0, expected 1
      45. 42 points for 42x mismatch between blocks that can occur in veins underground, Found 16, expected 1
      46. 2 points for 2x mismatch between blocks that can occur in veins underground, Found 15, expected 16
      47. 72 points for 72x mismatch between blocks that can occur in veins underground, Found 3, expected 1
      48. 18 points for 3x vegetation different, Found 0, expected 31
      49. 18 points for 3x vegetation different, Found 31, expected 0
      50. 5 points for 5x grass/dirt mismatch, Found 2, expected 3
      51. 2 points for 2x grass/dirt mismatch, Found 3, expected 2
      52. 140 points for 1x block mismatch, Found 162, expected 2
      53. kept with score: 6005

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „NeunEinser“ ()

      MonaLisa schrieb:

      Mir ist beim Lesen deines letzten Beitrags durch den Kopf gegangen: Vielleich würde sich auch ein oder mehrere Ausschlussbereiche anbieten.
      Eigentlich weiß man ja wo man etwas gebaut hat, dies könnte ggf. durch Eingabe von Eckkoordinaten von dem ganzen Vergleich ausgeschlossen werden.


      Also die Idee an sich ist nicht schlecht, ich befürchte aber, dass das Feature wohl vom Einrichten des Users her erheblich länger dauern würde,
      als dass Tool einfach drüber laufen zu lassen und das Tool es selber herausfinden zu lassen. (reine Spekulation :whistling: :$: )

      Aber auch unter einem anderen Ansatz wäre so eine "Ausschlussoption" sicherlich angebracht.
      Nämlich will man ja vielleicht bestimmte Chunks einfach nicht löschen lassen, auch wenn man da an sich noch nichts geändert hat.
      Gründe dafür könnten z.B. die Einführungen von neuen Blöcken sein, die einen Bereich dann anders aussehen lassen könnten.
      (Also jetzt "Farblich" gesehen nicht Topografisch)
      Bzw. könnten Chunks durchs Raster fallen, weil die Änderungen nicht ausreichend sind den Chunk zu erhalten, man aber eben die Änderungen doch erhalten möchte.
      (Ohne jetzt global die Gewichtung für alles ändern zu wollen.)

      Das Gegenteil wäre aber vielleicht auch eine Überlegung wert.
      Eine Option wo man angeben kann, diese Chunks sollen auf jeden Fall gelöscht werden.
      Z.B. hat man irgend wie was experimentiert was aber ein Reinfall war, auf Entdeckungstour ist ein Creeper explodiert, oder weiß der Geier. ;)
      (Vielleicht könnte es aber auch Chunks geben, die das Tool einfach nicht löschen will, obwohl man da vielleicht noch nicht mal drinnen war.)

      Ich glaube zwar, dass die Eingabe dieser Koordinaten recht mühsam sein können und man bei einmaligem Nutzen doch dann lieber
      zu "alten" mitteln greift, aber wenn man vielleicht seine Einstellungen immer mehr verfeinern will, oder auch denkt vielleicht brauche ich
      das ganze ja für weitere Versionen dann noch mal, dann können solche Optionen durchaus sehr nützlich sein.

      Strike schrieb:

      Also die Idee an sich ist nicht schlecht, ich befürchte aber, dass das Feature wohl vom Einrichten des Users her erheblich länger dauern würde,


      Es könnte ja optional sein.
      Ein paar Eckkoordinaten würden ja reichen um einen Bereich zu bestimmen, so aufwendig fände ich es gar nicht.
      Hauptsächlich habe ich auch daran gedacht, dass dies ggf. auch die Performance steigern könnte, denn das Tool müsste ja dann bestimmte Bereiche gar nicht bearbeiten.

      MonaLisa schrieb:

      Hauptsächlich habe ich auch daran gedacht, dass dies ggf. auch die Performance steigern könnte, denn das Tool müsste ja dann bestimmte Bereiche gar nicht bearbeiten.
      Länger als eine Minute dauert es bei meiner aktuellen Welt nicht. Eine Schutzzone mag aber nicht verkehrt sein, wenn Chunks falschermaßen gelöscht werden.

      Strike schrieb:

      Das Gegenteil wäre aber vielleicht auch eine Überlegung wert.
      Eine Option wo man angeben kann, diese Chunks sollen auf jeden Fall gelöscht werden.
      Z.B. hat man irgend wie was experimentiert was aber ein Reinfall war, auf Entdeckungstour ist ein Creeper explodiert, oder weiß der Geier.
      (Vielleicht könnte es aber auch Chunks geben, die das Tool einfach nicht löschen will, obwohl man da vielleicht noch nicht mal drinnen war.)

      Meinst du mit Eckkoordinaten? Ich glaube, das ist mit mcedit dann doch etwas komfortabler. Und ich spreche auch offen die Empfehlung aus, mit mcedit noch "Restchunks" zu löschen.
      Denn der Satz in Klammern ist bisher noch das größte Problem und ich arbeite gerade verschärft daran, die Ursachen auszuschließen. Ein Seed ist sehr imperfekt.

    Du bist nicht angemeldet.
    Anmelden oder Registrieren