From 4b8d344721112e26073cf14b60ffc5a3b02b7629 Mon Sep 17 00:00:00 2001 From: NoClipMonster <50805126+NoClipMonster@users.noreply.github.com> Date: Thu, 9 Jul 2026 09:19:43 +0300 Subject: [PATCH] 1.20.5-1.21 - Prioritize mineable material when multiple matches are found to fix problem of wrong dig time computation (#71) * Enhance BlocksDataGenerator to prioritize mineable material when multiple matches are found to fix problem of wrong dig time computation * Ported the changes from the previous commit to all versions that require this fix. * Forgot to add 1.21.9 --- .../generators/BlocksDataGenerator.java | 6 +++++- .../generators/BlocksDataGenerator.java | 6 +++++- .../generators/BlocksDataGenerator.java | 6 +++++- .../generators/BlocksDataGenerator.java | 6 +++++- .../generators/BlocksDataGenerator.java | 6 +++++- .../generators/BlocksDataGenerator.java | 6 +++++- .../generators/BlocksDataGenerator.java | 6 +++++- .../generators/BlocksDataGenerator.java | 6 +++++- .../generators/BlocksDataGenerator.java | 6 +++++- .../generators/BlocksDataGenerator.java | 6 +++++- 10 files changed, 50 insertions(+), 10 deletions(-) diff --git a/mc/1.20.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java b/mc/1.20.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java index 324b4d9..1de1bd5 100644 --- a/mc/1.20.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java +++ b/mc/1.20.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java @@ -115,7 +115,11 @@ public class BlocksDataGenerator implements IDataGenerator { if (matchingMaterials.isEmpty()) { return "default"; } - return matchingMaterials.getFirst().getMaterialName(); + return matchingMaterials.stream() + .filter(m -> m.getMaterialName().startsWith("mineable/")) + .findFirst() + .map(MaterialsDataGenerator.MaterialInfo::getMaterialName) + .orElseGet(() -> matchingMaterials.getFirst().getMaterialName()); } public static JsonObject generateBlock(List materials, Block block) { diff --git a/mc/1.21.10/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java b/mc/1.21.10/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java index 787fe43..7023cb4 100644 --- a/mc/1.21.10/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java +++ b/mc/1.21.10/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java @@ -115,7 +115,11 @@ public class BlocksDataGenerator implements IDataGenerator { if (matchingMaterials.isEmpty()) { return "default"; } - return matchingMaterials.getFirst().getMaterialName(); + return matchingMaterials.stream() + .filter(m -> m.getMaterialName().startsWith("mineable/")) + .findFirst() + .map(MaterialsDataGenerator.MaterialInfo::getMaterialName) + .orElseGet(() -> matchingMaterials.getFirst().getMaterialName()); } public static JsonObject generateBlock(List materials, Block block) { diff --git a/mc/1.21.11/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java b/mc/1.21.11/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java index cc8b947..80236a5 100644 --- a/mc/1.21.11/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java +++ b/mc/1.21.11/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java @@ -115,7 +115,11 @@ public class BlocksDataGenerator implements IDataGenerator { if (matchingMaterials.isEmpty()) { return "default"; } - return matchingMaterials.getFirst().getMaterialName(); + return matchingMaterials.stream() + .filter(m -> m.getMaterialName().startsWith("mineable/")) + .findFirst() + .map(MaterialsDataGenerator.MaterialInfo::getMaterialName) + .orElseGet(() -> matchingMaterials.getFirst().getMaterialName()); } public static JsonObject generateBlock(List materials, Block block) { diff --git a/mc/1.21.3/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java b/mc/1.21.3/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java index 5e260d0..dfb6a56 100644 --- a/mc/1.21.3/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java +++ b/mc/1.21.3/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java @@ -115,7 +115,11 @@ public class BlocksDataGenerator implements IDataGenerator { if (matchingMaterials.isEmpty()) { return "default"; } - return matchingMaterials.getFirst().getMaterialName(); + return matchingMaterials.stream() + .filter(m -> m.getMaterialName().startsWith("mineable/")) + .findFirst() + .map(MaterialsDataGenerator.MaterialInfo::getMaterialName) + .orElseGet(() -> matchingMaterials.getFirst().getMaterialName()); } public static JsonObject generateBlock(List materials, Block block) { diff --git a/mc/1.21.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java b/mc/1.21.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java index 787fe43..7023cb4 100644 --- a/mc/1.21.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java +++ b/mc/1.21.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java @@ -115,7 +115,11 @@ public class BlocksDataGenerator implements IDataGenerator { if (matchingMaterials.isEmpty()) { return "default"; } - return matchingMaterials.getFirst().getMaterialName(); + return matchingMaterials.stream() + .filter(m -> m.getMaterialName().startsWith("mineable/")) + .findFirst() + .map(MaterialsDataGenerator.MaterialInfo::getMaterialName) + .orElseGet(() -> matchingMaterials.getFirst().getMaterialName()); } public static JsonObject generateBlock(List materials, Block block) { diff --git a/mc/1.21.6/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java b/mc/1.21.6/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java index 787fe43..7023cb4 100644 --- a/mc/1.21.6/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java +++ b/mc/1.21.6/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java @@ -115,7 +115,11 @@ public class BlocksDataGenerator implements IDataGenerator { if (matchingMaterials.isEmpty()) { return "default"; } - return matchingMaterials.getFirst().getMaterialName(); + return matchingMaterials.stream() + .filter(m -> m.getMaterialName().startsWith("mineable/")) + .findFirst() + .map(MaterialsDataGenerator.MaterialInfo::getMaterialName) + .orElseGet(() -> matchingMaterials.getFirst().getMaterialName()); } public static JsonObject generateBlock(List materials, Block block) { diff --git a/mc/1.21.7/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java b/mc/1.21.7/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java index 787fe43..7023cb4 100644 --- a/mc/1.21.7/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java +++ b/mc/1.21.7/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java @@ -115,7 +115,11 @@ public class BlocksDataGenerator implements IDataGenerator { if (matchingMaterials.isEmpty()) { return "default"; } - return matchingMaterials.getFirst().getMaterialName(); + return matchingMaterials.stream() + .filter(m -> m.getMaterialName().startsWith("mineable/")) + .findFirst() + .map(MaterialsDataGenerator.MaterialInfo::getMaterialName) + .orElseGet(() -> matchingMaterials.getFirst().getMaterialName()); } public static JsonObject generateBlock(List materials, Block block) { diff --git a/mc/1.21.8/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java b/mc/1.21.8/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java index 787fe43..7023cb4 100644 --- a/mc/1.21.8/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java +++ b/mc/1.21.8/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java @@ -115,7 +115,11 @@ public class BlocksDataGenerator implements IDataGenerator { if (matchingMaterials.isEmpty()) { return "default"; } - return matchingMaterials.getFirst().getMaterialName(); + return matchingMaterials.stream() + .filter(m -> m.getMaterialName().startsWith("mineable/")) + .findFirst() + .map(MaterialsDataGenerator.MaterialInfo::getMaterialName) + .orElseGet(() -> matchingMaterials.getFirst().getMaterialName()); } public static JsonObject generateBlock(List materials, Block block) { diff --git a/mc/1.21.9/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java b/mc/1.21.9/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java index 787fe43..7023cb4 100644 --- a/mc/1.21.9/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java +++ b/mc/1.21.9/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java @@ -115,7 +115,11 @@ public class BlocksDataGenerator implements IDataGenerator { if (matchingMaterials.isEmpty()) { return "default"; } - return matchingMaterials.getFirst().getMaterialName(); + return matchingMaterials.stream() + .filter(m -> m.getMaterialName().startsWith("mineable/")) + .findFirst() + .map(MaterialsDataGenerator.MaterialInfo::getMaterialName) + .orElseGet(() -> matchingMaterials.getFirst().getMaterialName()); } public static JsonObject generateBlock(List materials, Block block) { diff --git a/mc/1.21/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java b/mc/1.21/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java index 324b4d9..1de1bd5 100644 --- a/mc/1.21/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java +++ b/mc/1.21/src/main/java/dev/u9g/minecraftdatagenerator/generators/BlocksDataGenerator.java @@ -115,7 +115,11 @@ public class BlocksDataGenerator implements IDataGenerator { if (matchingMaterials.isEmpty()) { return "default"; } - return matchingMaterials.getFirst().getMaterialName(); + return matchingMaterials.stream() + .filter(m -> m.getMaterialName().startsWith("mineable/")) + .findFirst() + .map(MaterialsDataGenerator.MaterialInfo::getMaterialName) + .orElseGet(() -> matchingMaterials.getFirst().getMaterialName()); } public static JsonObject generateBlock(List materials, Block block) {