Badel2 / slime_seed_finder

https://badel2.github.io/slime_seed_finder
GNU General Public License v3.0
49 stars 4 forks source link

MC v1.16.4 - Parser error `kind: invalid digit` when biome array is included in seedInfo.json #16

Closed ASchneider-GitHub closed 3 years ago

ASchneider-GitHub commented 3 years ago

Currently when attempting to run slime_seed_finder find -i seedInfo.json -o seeds.json the following error message is outputted:

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: ParseIntError { kind: InvalidDigit }', /$HOME/slime_seed_finder/src/seed_info.rs:316:51
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace```

This only occurs when the "biomes" array is included. If it's excluded, the program finds 753 possible seeds. I was hoping including the biomes would narrow down the results. I'm also unsure of whether or not I'm supposed to use BLOCK coordinates, or CHUNK coordinates, when entering biome data. Any advice? Any explanation of what's failing here? The seedInfo.json I'm using is show below.

{
  "version": "1.16.4",
  "seedInfo": "0.1",
  "biomes": {
    "1": [[486, 2538]],
    "7": [[396, 2589], [227, 2814], [-342, 3144]],
    "4": [[384, 2601], [-301, 3167]],
    "3": [[339, 2673], [-129, 3017]],
    "16": [[1323, 3262]],
    "2": [[-1133, 3121]],
    "17": [[-1199, 3095]],
    "34": [[134, 2869]],
    "18": [[-466, 3179]],
    "131": [[-750, 3065]],
    "27": [[-1024, 3087]],
    "28:": [[-931, 3035]]
  },
  "slimeChunks": [
    [-1, -1],
    [-2, -1],
    [-5, -1],
    [-14, -1],
    [-5, -2],
    [-6, -2],
    [-15, -2],
    [-19, -2],
    [-5, -3],
    [-8, -3],
    [-11, -3],
    [-12, -3],
    [-16, -3],
    [-16, -4],
    [-3, -5],
    [-13, -5],
    [-18, -5],
    [-12, -6],
    [-15, -6],
    [4, -1],
    [3, -4],
    [6, -2],
    [9, -1],
    [10, -3],
    [13, -2],
    [14, -1],
    [19, -1],
    [20, -4],
    [10, -5],
    [12, -6],
    [17, -5],
    [-1, 1],
    [-7, 0],
    [-9, 0],
    [-17, 0],
    [-8, 3],
    [-11, 2],
    [-13, 2],
    [-7, 5],
    [-6, 5],
    [-5, 7],
    [-3, 8],
    [-9, 8],
    [-11, 7],
    [-14, 7],
    [-14, 6],
    [-16, 6],
    [-18, 7],
    [1, 0],
    [5, 1],
    [11, 0],
    [16, 0],
    [17, 0],
    [17, 1],
    [16, 1],
    [1, 3],
    [2, 3],
    [18, 2],
    [10, 5],
    [9, 5],
    [9, 8],
    [8, 7],
    [16, 4],
    [16, 8]
  ],
  "negative": {
    "slimeChunks": [
      [-19, -5],
      [-19, -3],
      [-19, -4],
      [-19, -1],
      [-19, 1],
      [-19, 0],
      [-19, 2],
      [-19, 3],
      [-19, 4],
      [-19, 6],
      [-19, 7],
      [-17, 7],
      [-16, 7],
      [-15, 7],
      [-15, 6],
      [-18, 6],
      [-17, 6],
      [-17, 5],
      [-19, 5],
      [-18, 5],
      [-18, 4],
      [-17, 4],
      [-17, 3],
      [-18, 3],
      [-18, 2],
      [-17, 2],
      [-17, 1],
      [-18, 1],
      [-18, 0],
      [-18, -1],
      [-17, -1],
      [-17, -2],
      [-18, -2],
      [-18, -3],
      [-18, -4],
      [-17, -4],
      [-17, -3],
      [-17, -5],
      [-17, -6],
      [-18, -6],
      [-19, -6],
      [-16, -6],
      [-14, -6],
      [-13, -6],
      [-14, -5],
      [-16, -5],
      [-15, -5],
      [-15, -4],
      [-15, -3],
      [-14, -3],
      [-14, -4],
      [-13, -4],
      [-13, -3],
      [-12, -4],
      [-12, -5],
      [-11, -4],
      [-11, -5],
      [-11, -6],
      [-10, -6],
      [-9, -6],
      [-8, -6],
      [-7, -6],
      [-6, -6],
      [-5, -6],
      [-4, -6],
      [-3, -6],
      [-1, -6],
      [-2, -6],
      [0, -6],
      [1, -6],
      [3, -6],
      [2, -6],
      [4, -6],
      [6, -6],
      [5, -6],
      [7, -6],
      [8, -6],
      [9, -6],
      [10, -6],
      [11, -6],
      [13, -6],
      [15, -6],
      [14, -6],
      [16, -6],
      [17, -6],
      [18, -6],
      [19, -6],
      [20, -6],
      [20, -5],
      [20, -3],
      [20, -2],
      [20, -1],
      [20, 0],
      [20, 1],
      [20, 2],
      [20, 3],
      [20, 4],
      [20, 5],
      [20, 6],
      [20, 7],
      [20, 8],
      [19, 8],
      [18, 8],
      [17, 8],
      [15, 8],
      [14, 8],
      [13, 8],
      [12, 8],
      [11, 8],
      [10, 8],
      [8, 8],
      [7, 8],
      [6, 8],
      [5, 8],
      [3, 8],
      [4, 8],
      [2, 8],
      [1, 8],
      [0, 8],
      [-1, 8],
      [-2, 8],
      [-4, 8],
      [-5, 8],
      [-6, 8],
      [-7, 8],
      [-8, 8],
      [-10, 8],
      [-11, 8],
      [-12, 8],
      [-13, 8],
      [-14, 8],
      [-15, 8],
      [-16, 8],
      [-17, 8],
      [-18, 8],
      [-19, 8],
      [-11, -2],
      [-12, -2],
      [-13, -2],
      [-14, -2],
      [-16, -2],
      [-16, -1],
      [-15, -1],
      [-13, -1],
      [-12, -1],
      [-11, -1],
      [-11, 0],
      [-11, 1],
      [-12, 1],
      [-12, 0],
      [-13, 0],
      [-13, 1],
      [-14, 1],
      [-15, 1],
      [-16, 1],
      [-16, 0],
      [-15, 0],
      [-14, 0],
      [-12, 2],
      [-12, 3],
      [-11, 3],
      [-14, 3],
      [-13, 3],
      [-14, 2],
      [-15, 2],
      [-15, 3],
      [-16, 3],
      [-16, 2],
      [-16, 4],
      [-16, 5],
      [-15, 5],
      [-15, 4],
      [-14, 4],
      [-14, 5],
      [-13, 7],
      [-12, 7],
      [-12, 6],
      [-13, 6],
      [-13, 5],
      [-13, 4],
      [-12, 4],
      [-12, 5],
      [-11, 4],
      [-11, 5],
      [-11, 6],
      [-10, 7],
      [-9, 7],
      [-8, 7],
      [-7, 7],
      [-6, 7],
      [-6, 6],
      [-7, 6],
      [-8, 6],
      [-9, 6],
      [-10, 6],
      [-10, 5],
      [-9, 5],
      [-8, 5],
      [-8, 4],
      [-9, 4],
      [-10, 4],
      [-10, 3],
      [-9, 3],
      [-9, 2],
      [-10, 2],
      [-10, 1],
      [-9, 1],
      [-8, 1],
      [-8, 2],
      [-8, 0],
      [-8, -1],
      [-9, -1],
      [-10, -1],
      [-10, 0],
      [-10, -5],
      [-9, -5],
      [-8, -5],
      [-8, -4],
      [-8, -2],
      [-9, -2],
      [-10, -2],
      [-10, -3],
      [-10, -4],
      [-9, -4],
      [-9, -3],
      [-7, 4],
      [-6, 4],
      [-6, 3],
      [-7, 3],
      [-7, 2],
      [-7, 1],
      [-6, 1],
      [-6, 2],
      [-6, 0],
      [-6, -1],
      [-7, -1],
      [-7, -2],
      [-7, -3],
      [-6, -3],
      [-6, -4],
      [-7, -4],
      [-7, -5],
      [-6, -5],
      [-5, -5],
      [-5, -4],
      [-4, -5],
      [-4, -4],
      [-4, -3],
      [-4, -2],
      [-4, -1],
      [-4, 0],
      [-4, 1],
      [-4, 2],
      [-4, 3],
      [-4, 4],
      [-4, 5],
      [-4, 6],
      [-4, 7],
      [-5, 6],
      [-5, 5],
      [-5, 4],
      [-5, 3],
      [-5, 2],
      [-5, 1],
      [-5, 0],
      [-3, 7],
      [-1, 7],
      [-2, 7],
      [0, 7],
      [2, 7],
      [1, 7],
      [3, 7],
      [4, 7],
      [5, 7],
      [6, 7],
      [7, 7],
      [7, 6],
      [8, 6],
      [8, 5],
      [7, 5],
      [7, 4],
      [8, 4],
      [8, 3],
      [7, 3],
      [7, 2],
      [8, 2],
      [8, 1],
      [7, 1],
      [7, 0],
      [8, 0],
      [8, -1],
      [7, -1],
      [7, -2],
      [8, -2],
      [8, -3],
      [7, -4],
      [7, -3],
      [8, -4],
      [8, -5],
      [7, -5],
      [6, -5],
      [6, -4],
      [6, -3],
      [6, -1],
      [6, 0],
      [6, 1],
      [6, 2],
      [6, 3],
      [6, 4],
      [6, 5],
      [6, 6],
      [5, 6],
      [4, 6],
      [3, 6],
      [2, 6],
      [1, 6],
      [0, 6],
      [-1, 6],
      [-2, 6],
      [-3, 6],
      [-3, 5],
      [-2, 5],
      [0, 5],
      [-1, 5],
      [1, 5],
      [2, 5],
      [3, 5],
      [4, 5],
      [5, 5],
      [5, 4],
      [5, 3],
      [5, 2],
      [4, 2],
      [4, 3],
      [4, 4],
      [3, 4],
      [3, 3],
      [3, 2],
      [2, 2],
      [1, 2],
      [0, 2],
      [-1, 2],
      [-2, 2],
      [-3, 2],
      [-3, 3],
      [-3, 4],
      [-2, 4],
      [-2, 3],
      [-1, 3],
      [-1, 4],
      [0, 3],
      [0, 4],
      [1, 4],
      [2, 4],
      [0, 1],
      [1, 1],
      [2, 1],
      [3, 1],
      [4, 1],
      [-3, 1],
      [-2, 1],
      [-2, 0],
      [-3, 0],
      [-1, 0],
      [0, 0],
      [2, 0],
      [3, 0],
      [4, 0],
      [5, 0],
      [5, -2],
      [5, -1],
      [5, -3],
      [5, -4],
      [5, -5],
      [4, -5],
      [4, -4],
      [4, -3],
      [4, -2],
      [-3, -1],
      [-3, -2],
      [-3, -3],
      [-3, -4],
      [-2, -4],
      [-2, -5],
      [-2, -3],
      [-2, -2],
      [-1, -2],
      [0, -2],
      [0, -1],
      [1, -1],
      [2, -1],
      [3, -1],
      [3, -2],
      [2, -2],
      [1, -2],
      [3, -3],
      [2, -3],
      [2, -4],
      [2, -5],
      [3, -5],
      [1, -5],
      [1, -4],
      [1, -3],
      [0, -3],
      [-1, -3],
      [-1, -4],
      [-1, -5],
      [0, -5],
      [0, -4],
      [9, 7],
      [9, 6],
      [10, 6],
      [10, 7],
      [11, 7],
      [11, 6],
      [12, 6],
      [12, 7],
      [14, 7],
      [13, 7],
      [13, 6],
      [14, 6],
      [15, 6],
      [15, 7],
      [16, 7],
      [17, 7],
      [19, 7],
      [18, 7],
      [19, 6],
      [18, 6],
      [17, 6],
      [16, 6],
      [10, 4],
      [10, 3],
      [10, 2],
      [10, 1],
      [10, 0],
      [10, -1],
      [10, -2],
      [10, -4],
      [9, -5],
      [9, -4],
      [9, -3],
      [9, -2],
      [9, 0],
      [9, 1],
      [9, 2],
      [9, 3],
      [9, 4],
      [11, 1],
      [11, 2],
      [11, 3],
      [11, 4],
      [11, 5],
      [12, 5],
      [13, 5],
      [14, 5],
      [15, 5],
      [16, 5],
      [18, 5],
      [17, 5],
      [19, 5],
      [19, 4],
      [19, 3],
      [18, 3],
      [17, 3],
      [17, 4],
      [18, 4],
      [16, 3],
      [15, 3],
      [15, 4],
      [14, 4],
      [14, 3],
      [13, 3],
      [12, 3],
      [12, 4],
      [13, 4],
      [19, 2],
      [19, 1],
      [19, 0],
      [18, 0],
      [18, 1],
      [18, -1],
      [18, -2],
      [19, -2],
      [19, -3],
      [18, -3],
      [18, -5],
      [19, -5],
      [19, -4],
      [18, -4],
      [17, -4],
      [16, -4],
      [16, -5],
      [15, -5],
      [15, -4],
      [14, -4],
      [14, -5],
      [13, -5],
      [13, -4],
      [12, -4],
      [12, -5],
      [11, -5],
      [11, -4],
      [11, -3],
      [12, -3],
      [13, -3],
      [15, -3],
      [14, -3],
      [16, -3],
      [17, -3],
      [17, -2],
      [17, -1],
      [16, -1],
      [16, -2],
      [15, -2],
      [15, -1],
      [14, -2],
      [14, 1],
      [14, 0],
      [15, 0],
      [15, 1],
      [15, 2],
      [16, 2],
      [17, 2],
      [14, 2],
      [13, 2],
      [12, 2],
      [12, 1],
      [13, 1],
      [13, 0],
      [12, 0],
      [12, -1],
      [12, -2],
      [11, -2],
      [11, -1],
      [13, -1]
    ]
  }
}
Badel2 commented 3 years ago

Hi, this error means that there is a problem in one of the keys of the "biomes" map. In your case it's easy to see, here:

-    "28:": [[-931, 3035]]
+    "28": [[-931, 3035]]

I'm also unsure of whether or not I'm supposed to use BLOCK coordinates, or CHUNK coordinates, when entering biome data.

Biome data is block coordinates, because there may be more than one biome per chunk. But everything else in the seedInfo is chunk coordinates. I think the best strategy is to take the coordinates at a biome border, then move 200 blocks, find another biome border, and so on.

However, there is a problem. I don't remember if using slime chunks + biomes is implemented. If it's not, I can easily add a command that uses a list of biomes and a list of possible seeds, and prints the seeds that match all the biomes.

ASchneider-GitHub commented 3 years ago

My mistake for missing such an obvious issue. I fixed it, and it ran just fine, although it still spit out the same amount of 64bit seeds. It seems that comparing biomes to coordinates for a given seed wasn't implemented. If you do end up putting that feature into the code, please let me know! I might also try using the JAR file for Amidst v4.6 to create a simulated version of a world given a seed, and then use it's getBiomeData method to pull the biome type for given coordinates. We'll see if that pans out.

Badel2 commented 3 years ago

Ok, already implemented the new command: filter-biomes. Usage example:

slime_seed_finder find -i seedInfo.json -o candidates.json
slime_seed_finder filter-biomes -i seedInfo.json --candidate-seeds candidates.json -o seeds.json

So just update and see if it works :)

ASchneider-GitHub commented 3 years ago

Success! Using the slime chunks gave a list of 750 possible 64bit seeds. Using the filter-biomes to then compare the candidate seeds against the gathered biome information brought it down to one possibility. I plugged that seed into MC and it was a perfect match. Your update works like a charm! Thanks!

Badel2 commented 3 years ago

Nice!