diff --git a/1.21/src/main/java/dev/u9g/minecraftdatagenerator/generators/EnchantmentsDataGenerator.java b/1.21/src/main/java/dev/u9g/minecraftdatagenerator/generators/EnchantmentsDataGenerator.java index 8fd11cd..177b199 100644 --- a/1.21/src/main/java/dev/u9g/minecraftdatagenerator/generators/EnchantmentsDataGenerator.java +++ b/1.21/src/main/java/dev/u9g/minecraftdatagenerator/generators/EnchantmentsDataGenerator.java @@ -7,6 +7,7 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.item.Item; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.tag.EnchantmentTags; import net.minecraft.registry.tag.TagKey; import net.minecraft.registry.entry.RegistryEntryList; import net.minecraft.util.Identifier; @@ -14,7 +15,6 @@ import net.minecraft.registry.entry.RegistryEntry; import java.util.List; -import java.util.Set; public class EnchantmentsDataGenerator implements IDataGenerator { public static String getEnchantmentTargetName(RegistryEntryList target) { @@ -22,16 +22,6 @@ public class EnchantmentsDataGenerator implements IDataGenerator { return tagKey.id().getPath().split("/")[1]; } - private static boolean isEnchantmentInTag(Enchantment enchantment, String tag) { - return DGU.getWorld() - .getRegistryManager() - .get(RegistryKeys.ENCHANTMENT) - .streamTagsAndEntries() - .filter(tagKeyNamedPair -> tagKeyNamedPair.getFirst().id().equals(Identifier.of(tag))) - .flatMap(tagKeyNamedPair -> tagKeyNamedPair.getSecond().stream()) - .anyMatch(enchantmentRegistryEntry -> enchantmentRegistryEntry.value() == enchantment); - } - //Equation enchantment costs follow is a * level + b, so we can easily retrieve a and b by passing zero level private static JsonObject generateEnchantmentMinPowerCoefficients(Enchantment enchantment) { int b = enchantment.getMinPower(0); @@ -55,6 +45,7 @@ public class EnchantmentsDataGenerator implements IDataGenerator { public static JsonObject generateEnchantment(Registry registry, Enchantment enchantment) { JsonObject enchantmentDesc = new JsonObject(); + RegistryEntry enchantmentEntry = registry.getEntry(enchantment); Identifier registryKey = registry.getKey(enchantment).orElseThrow().getValue(); enchantmentDesc.addProperty("id", registry.getRawId(enchantment)); @@ -67,16 +58,12 @@ public class EnchantmentsDataGenerator implements IDataGenerator { enchantmentDesc.add("minCost", generateEnchantmentMinPowerCoefficients(enchantment)); enchantmentDesc.add("maxCost", generateEnchantmentMaxPowerCoefficients(enchantment)); - enchantmentDesc.addProperty("treasureOnly", isEnchantmentInTag(enchantment, "treasure")); + enchantmentDesc.addProperty("treasureOnly", enchantmentEntry.isIn(EnchantmentTags.TREASURE)); - enchantmentDesc.addProperty("curse", isEnchantmentInTag(enchantment, "curse")); + enchantmentDesc.addProperty("curse", enchantmentEntry.isIn(EnchantmentTags.CURSE)); List incompatibleEnchantments = registry.stream() - .filter(other -> { - RegistryEntry enchantmentEntry = registry.getEntry(enchantment); - RegistryEntry otherEntry = registry.getEntry(other); - return !Enchantment.canBeCombined(enchantmentEntry, otherEntry); - }) + .filter(other -> !Enchantment.canBeCombined(enchantmentEntry, registry.getEntry(other))) .filter(other -> other != enchantment) .toList(); @@ -88,8 +75,8 @@ public class EnchantmentsDataGenerator implements IDataGenerator { enchantmentDesc.add("exclude", excludes); enchantmentDesc.addProperty("category", getEnchantmentTargetName(enchantment.getApplicableItems())); enchantmentDesc.addProperty("weight", enchantment.getWeight()); - enchantmentDesc.addProperty("tradeable", isEnchantmentInTag(enchantment, "tradeable")); - enchantmentDesc.addProperty("discoverable", isEnchantmentInTag(enchantment, "on_random_loot")); + enchantmentDesc.addProperty("tradeable", enchantmentEntry.isIn(EnchantmentTags.TRADEABLE)); + enchantmentDesc.addProperty("discoverable", enchantmentEntry.isIn(EnchantmentTags.ON_RANDOM_LOOT)); return enchantmentDesc; } diff --git a/README.md b/README.md index d184795..979dd27 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,6 @@ Then also add it to the `.github/workflows/build.yml` file. Then copy the code of the most recently released version into the new module directory. Then you need to change the values in the `build.gradle` file. At last, you need to fix all code issues that are caused by the new version. -if there are any new curse, treasure, or non-tradeable, or non-discoverable enchantments in the new version, you need to add them manually to the `EnchantmentsDataGenerator` class. For that, use an IDE like IntelliJ IDEA to fix the issues. Once everything compiles, you can commit the changes, push them to your fork and create a pull request. Once your PR was accepted and merged, the new version will be available in the next release.