diff --git a/1.13/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java b/1.13/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java new file mode 100644 index 0000000..3dddd48 --- /dev/null +++ b/1.13/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java @@ -0,0 +1,32 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.LanguageAccessor; +import net.minecraft.util.Language; + +import java.util.Map; + +public class AttributesDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "attributes"; + } + + @Override + public JsonElement generateDataJson() { + Map translations = ((LanguageAccessor) new Language()).translations(); + JsonArray arr = new JsonArray(); + for (Map.Entry translation : translations.entrySet()) { + String key = translation.getKey(); + if (!key.startsWith("attribute.name.")) continue; + JsonObject obj = new JsonObject(); + key = key.replace("attribute.name.", ""); + obj.addProperty("name", key.split("\\.")[1]); + obj.addProperty("resource", key); + arr.add(obj); + } + return arr; + } +} diff --git a/1.13/src/main/java/dev/u9g/minecraftdatagenerator/mixin/LanguageAccessor.java b/1.13/src/main/java/dev/u9g/minecraftdatagenerator/mixin/LanguageAccessor.java new file mode 100644 index 0000000..7bfd95f --- /dev/null +++ b/1.13/src/main/java/dev/u9g/minecraftdatagenerator/mixin/LanguageAccessor.java @@ -0,0 +1,13 @@ +package dev.u9g.minecraftdatagenerator.mixin; + +import net.minecraft.util.Language; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(Language.class) +public interface LanguageAccessor { + @Accessor("translations") + Map translations(); +} diff --git a/1.13/src/main/resources/minecraft-data-generator.mixins.json b/1.13/src/main/resources/minecraft-data-generator.mixins.json index 12957a1..5565d37 100644 --- a/1.13/src/main/resources/minecraft-data-generator.mixins.json +++ b/1.13/src/main/resources/minecraft-data-generator.mixins.json @@ -4,6 +4,7 @@ "package": "dev.u9g.minecraftdatagenerator.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "LanguageAccessor", "MiningToolItemAccessor", "ReadyMixin", "StatusEffectAccessor" diff --git a/1.14/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java b/1.14/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java new file mode 100644 index 0000000..3dddd48 --- /dev/null +++ b/1.14/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java @@ -0,0 +1,32 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.LanguageAccessor; +import net.minecraft.util.Language; + +import java.util.Map; + +public class AttributesDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "attributes"; + } + + @Override + public JsonElement generateDataJson() { + Map translations = ((LanguageAccessor) new Language()).translations(); + JsonArray arr = new JsonArray(); + for (Map.Entry translation : translations.entrySet()) { + String key = translation.getKey(); + if (!key.startsWith("attribute.name.")) continue; + JsonObject obj = new JsonObject(); + key = key.replace("attribute.name.", ""); + obj.addProperty("name", key.split("\\.")[1]); + obj.addProperty("resource", key); + arr.add(obj); + } + return arr; + } +} diff --git a/1.14/src/main/java/dev/u9g/minecraftdatagenerator/mixin/LanguageAccessor.java b/1.14/src/main/java/dev/u9g/minecraftdatagenerator/mixin/LanguageAccessor.java new file mode 100644 index 0000000..7bfd95f --- /dev/null +++ b/1.14/src/main/java/dev/u9g/minecraftdatagenerator/mixin/LanguageAccessor.java @@ -0,0 +1,13 @@ +package dev.u9g.minecraftdatagenerator.mixin; + +import net.minecraft.util.Language; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(Language.class) +public interface LanguageAccessor { + @Accessor("translations") + Map translations(); +} diff --git a/1.14/src/main/resources/minecraft-data-generator.mixins.json b/1.14/src/main/resources/minecraft-data-generator.mixins.json index ea255f5..78ccd4f 100644 --- a/1.14/src/main/resources/minecraft-data-generator.mixins.json +++ b/1.14/src/main/resources/minecraft-data-generator.mixins.json @@ -4,6 +4,7 @@ "package": "dev.u9g.minecraftdatagenerator.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "LanguageAccessor", "MiningToolItemAccessor", "ReadyMixin", "StatusEffectAccessor" diff --git a/1.15/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java b/1.15/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java new file mode 100644 index 0000000..3dddd48 --- /dev/null +++ b/1.15/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java @@ -0,0 +1,32 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.LanguageAccessor; +import net.minecraft.util.Language; + +import java.util.Map; + +public class AttributesDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "attributes"; + } + + @Override + public JsonElement generateDataJson() { + Map translations = ((LanguageAccessor) new Language()).translations(); + JsonArray arr = new JsonArray(); + for (Map.Entry translation : translations.entrySet()) { + String key = translation.getKey(); + if (!key.startsWith("attribute.name.")) continue; + JsonObject obj = new JsonObject(); + key = key.replace("attribute.name.", ""); + obj.addProperty("name", key.split("\\.")[1]); + obj.addProperty("resource", key); + arr.add(obj); + } + return arr; + } +} diff --git a/1.15/src/main/java/dev/u9g/minecraftdatagenerator/mixin/LanguageAccessor.java b/1.15/src/main/java/dev/u9g/minecraftdatagenerator/mixin/LanguageAccessor.java new file mode 100644 index 0000000..7bfd95f --- /dev/null +++ b/1.15/src/main/java/dev/u9g/minecraftdatagenerator/mixin/LanguageAccessor.java @@ -0,0 +1,13 @@ +package dev.u9g.minecraftdatagenerator.mixin; + +import net.minecraft.util.Language; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(Language.class) +public interface LanguageAccessor { + @Accessor("translations") + Map translations(); +} diff --git a/1.15/src/main/resources/minecraft-data-generator.mixins.json b/1.15/src/main/resources/minecraft-data-generator.mixins.json index ea255f5..78ccd4f 100644 --- a/1.15/src/main/resources/minecraft-data-generator.mixins.json +++ b/1.15/src/main/resources/minecraft-data-generator.mixins.json @@ -4,6 +4,7 @@ "package": "dev.u9g.minecraftdatagenerator.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "LanguageAccessor", "MiningToolItemAccessor", "ReadyMixin", "StatusEffectAccessor" diff --git a/1.16/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java b/1.16/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java new file mode 100644 index 0000000..ef2ef93 --- /dev/null +++ b/1.16/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java @@ -0,0 +1,30 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.ClampedEntityAttributeAccessor; +import net.minecraft.entity.attribute.EntityAttribute; +import net.minecraft.util.registry.Registry; + +public class AttributesDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "attributes"; + } + + @Override + public JsonElement generateDataJson() { + JsonArray arr = new JsonArray(); + for (EntityAttribute attribute : Registry.ATTRIBUTE) { + JsonObject obj = new JsonObject(); + obj.addProperty("name", Registry.ATTRIBUTE.getId(attribute).getPath().split("\\.")[1]); + obj.addProperty("resource", Registry.ATTRIBUTE.getId(attribute).getPath()); + obj.addProperty("min", ((ClampedEntityAttributeAccessor) attribute).getMinValue()); + obj.addProperty("max", ((ClampedEntityAttributeAccessor) attribute).getMaxValue()); + obj.addProperty("default", attribute.getDefaultValue()); + arr.add(obj); + } + return arr; + } +} diff --git a/1.16/src/main/java/dev/u9g/minecraftdatagenerator/mixin/ClampedEntityAttributeAccessor.java b/1.16/src/main/java/dev/u9g/minecraftdatagenerator/mixin/ClampedEntityAttributeAccessor.java new file mode 100644 index 0000000..6f46af5 --- /dev/null +++ b/1.16/src/main/java/dev/u9g/minecraftdatagenerator/mixin/ClampedEntityAttributeAccessor.java @@ -0,0 +1,14 @@ +package dev.u9g.minecraftdatagenerator.mixin; + +import net.minecraft.entity.attribute.ClampedEntityAttribute; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ClampedEntityAttribute.class) +public interface ClampedEntityAttributeAccessor { + @Accessor("minValue") + double getMinValue(); + + @Accessor("maxValue") + double getMaxValue(); +} diff --git a/1.16/src/main/resources/minecraft-data-generator.mixins.json b/1.16/src/main/resources/minecraft-data-generator.mixins.json index 7154c90..1bf67a5 100644 --- a/1.16/src/main/resources/minecraft-data-generator.mixins.json +++ b/1.16/src/main/resources/minecraft-data-generator.mixins.json @@ -5,6 +5,7 @@ "compatibilityLevel": "JAVA_17", "mixins": [ "BiomeEffectsAccessor", + "ClampedEntityAttributeAccessor", "EULAMixin", "MiningToolItemAccessor", "ReadyMixin", diff --git a/1.17/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java b/1.17/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java new file mode 100644 index 0000000..ae09543 --- /dev/null +++ b/1.17/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java @@ -0,0 +1,30 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.minecraft.entity.attribute.ClampedEntityAttribute; +import net.minecraft.entity.attribute.EntityAttribute; +import net.minecraft.util.registry.Registry; + +public class AttributesDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "attributes"; + } + + @Override + public JsonElement generateDataJson() { + JsonArray arr = new JsonArray(); + for (EntityAttribute attribute : Registry.ATTRIBUTE) { + JsonObject obj = new JsonObject(); + obj.addProperty("name", Registry.ATTRIBUTE.getId(attribute).getPath().split("\\.")[1]); + obj.addProperty("resource", Registry.ATTRIBUTE.getId(attribute).getPath()); + obj.addProperty("min", ((ClampedEntityAttribute) attribute).getMinValue()); + obj.addProperty("max", ((ClampedEntityAttribute) attribute).getMaxValue()); + obj.addProperty("default", attribute.getDefaultValue()); + arr.add(obj); + } + return arr; + } +} diff --git a/1.18/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java b/1.18/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java new file mode 100644 index 0000000..ae09543 --- /dev/null +++ b/1.18/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java @@ -0,0 +1,30 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.minecraft.entity.attribute.ClampedEntityAttribute; +import net.minecraft.entity.attribute.EntityAttribute; +import net.minecraft.util.registry.Registry; + +public class AttributesDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "attributes"; + } + + @Override + public JsonElement generateDataJson() { + JsonArray arr = new JsonArray(); + for (EntityAttribute attribute : Registry.ATTRIBUTE) { + JsonObject obj = new JsonObject(); + obj.addProperty("name", Registry.ATTRIBUTE.getId(attribute).getPath().split("\\.")[1]); + obj.addProperty("resource", Registry.ATTRIBUTE.getId(attribute).getPath()); + obj.addProperty("min", ((ClampedEntityAttribute) attribute).getMinValue()); + obj.addProperty("max", ((ClampedEntityAttribute) attribute).getMaxValue()); + obj.addProperty("default", attribute.getDefaultValue()); + arr.add(obj); + } + return arr; + } +} diff --git a/1.19.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java b/1.19.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java new file mode 100644 index 0000000..ae09543 --- /dev/null +++ b/1.19.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java @@ -0,0 +1,30 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.minecraft.entity.attribute.ClampedEntityAttribute; +import net.minecraft.entity.attribute.EntityAttribute; +import net.minecraft.util.registry.Registry; + +public class AttributesDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "attributes"; + } + + @Override + public JsonElement generateDataJson() { + JsonArray arr = new JsonArray(); + for (EntityAttribute attribute : Registry.ATTRIBUTE) { + JsonObject obj = new JsonObject(); + obj.addProperty("name", Registry.ATTRIBUTE.getId(attribute).getPath().split("\\.")[1]); + obj.addProperty("resource", Registry.ATTRIBUTE.getId(attribute).getPath()); + obj.addProperty("min", ((ClampedEntityAttribute) attribute).getMinValue()); + obj.addProperty("max", ((ClampedEntityAttribute) attribute).getMaxValue()); + obj.addProperty("default", attribute.getDefaultValue()); + arr.add(obj); + } + return arr; + } +} diff --git a/1.19/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java b/1.19/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java new file mode 100644 index 0000000..ae09543 --- /dev/null +++ b/1.19/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java @@ -0,0 +1,30 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.minecraft.entity.attribute.ClampedEntityAttribute; +import net.minecraft.entity.attribute.EntityAttribute; +import net.minecraft.util.registry.Registry; + +public class AttributesDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "attributes"; + } + + @Override + public JsonElement generateDataJson() { + JsonArray arr = new JsonArray(); + for (EntityAttribute attribute : Registry.ATTRIBUTE) { + JsonObject obj = new JsonObject(); + obj.addProperty("name", Registry.ATTRIBUTE.getId(attribute).getPath().split("\\.")[1]); + obj.addProperty("resource", Registry.ATTRIBUTE.getId(attribute).getPath()); + obj.addProperty("min", ((ClampedEntityAttribute) attribute).getMinValue()); + obj.addProperty("max", ((ClampedEntityAttribute) attribute).getMaxValue()); + obj.addProperty("default", attribute.getDefaultValue()); + arr.add(obj); + } + return arr; + } +} diff --git a/1.20.4/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java b/1.20.4/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java new file mode 100644 index 0000000..1132573 --- /dev/null +++ b/1.20.4/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java @@ -0,0 +1,32 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.util.DGU; +import net.minecraft.entity.attribute.ClampedEntityAttribute; +import net.minecraft.entity.attribute.EntityAttribute; +import net.minecraft.registry.RegistryKeys; + +public class AttributesDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "attributes"; + } + + @Override + public JsonElement generateDataJson() { + JsonArray arr = new JsonArray(); + var registry = DGU.getWorld().getRegistryManager().get(RegistryKeys.ATTRIBUTE); + for (EntityAttribute attribute : registry) { + JsonObject obj = new JsonObject(); + obj.addProperty("name", registry.getId(attribute).getPath().split("\\.")[1]); + obj.addProperty("resource", registry.getId(attribute).getPath()); + obj.addProperty("min", ((ClampedEntityAttribute) attribute).getMinValue()); + obj.addProperty("max", ((ClampedEntityAttribute) attribute).getMaxValue()); + obj.addProperty("default", attribute.getDefaultValue()); + arr.add(obj); + } + return arr; + } +} diff --git a/1.20.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java b/1.20.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java new file mode 100644 index 0000000..1132573 --- /dev/null +++ b/1.20.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java @@ -0,0 +1,32 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.util.DGU; +import net.minecraft.entity.attribute.ClampedEntityAttribute; +import net.minecraft.entity.attribute.EntityAttribute; +import net.minecraft.registry.RegistryKeys; + +public class AttributesDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "attributes"; + } + + @Override + public JsonElement generateDataJson() { + JsonArray arr = new JsonArray(); + var registry = DGU.getWorld().getRegistryManager().get(RegistryKeys.ATTRIBUTE); + for (EntityAttribute attribute : registry) { + JsonObject obj = new JsonObject(); + obj.addProperty("name", registry.getId(attribute).getPath().split("\\.")[1]); + obj.addProperty("resource", registry.getId(attribute).getPath()); + obj.addProperty("min", ((ClampedEntityAttribute) attribute).getMinValue()); + obj.addProperty("max", ((ClampedEntityAttribute) attribute).getMaxValue()); + obj.addProperty("default", attribute.getDefaultValue()); + arr.add(obj); + } + return arr; + } +} diff --git a/1.20/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java b/1.20/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java new file mode 100644 index 0000000..1132573 --- /dev/null +++ b/1.20/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java @@ -0,0 +1,32 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.util.DGU; +import net.minecraft.entity.attribute.ClampedEntityAttribute; +import net.minecraft.entity.attribute.EntityAttribute; +import net.minecraft.registry.RegistryKeys; + +public class AttributesDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "attributes"; + } + + @Override + public JsonElement generateDataJson() { + JsonArray arr = new JsonArray(); + var registry = DGU.getWorld().getRegistryManager().get(RegistryKeys.ATTRIBUTE); + for (EntityAttribute attribute : registry) { + JsonObject obj = new JsonObject(); + obj.addProperty("name", registry.getId(attribute).getPath().split("\\.")[1]); + obj.addProperty("resource", registry.getId(attribute).getPath()); + obj.addProperty("min", ((ClampedEntityAttribute) attribute).getMinValue()); + obj.addProperty("max", ((ClampedEntityAttribute) attribute).getMaxValue()); + obj.addProperty("default", attribute.getDefaultValue()); + arr.add(obj); + } + return arr; + } +} diff --git a/1.21.3/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java b/1.21.3/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java new file mode 100644 index 0000000..8054ecd --- /dev/null +++ b/1.21.3/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java @@ -0,0 +1,34 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.util.DGU; +import net.minecraft.entity.attribute.ClampedEntityAttribute; +import net.minecraft.entity.attribute.EntityAttribute; +import net.minecraft.registry.RegistryKeys; + +import java.util.Objects; + +public class AttributesDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "attributes"; + } + + @Override + public JsonElement generateDataJson() { + JsonArray arr = new JsonArray(); + var registry = DGU.getWorld().getRegistryManager().getOrThrow(RegistryKeys.ATTRIBUTE); + for (EntityAttribute attribute : registry) { + JsonObject obj = new JsonObject(); + obj.addProperty("name", Objects.requireNonNull(registry.getId(attribute)).toShortTranslationKey()); + obj.addProperty("resource", Objects.requireNonNull(registry.getId(attribute)).toTranslationKey()); + obj.addProperty("min", ((ClampedEntityAttribute) attribute).getMinValue()); + obj.addProperty("max", ((ClampedEntityAttribute) attribute).getMaxValue()); + obj.addProperty("default", attribute.getDefaultValue()); + arr.add(obj); + } + return arr; + } +} \ No newline at end of file diff --git a/1.21/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java b/1.21/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java new file mode 100644 index 0000000..1132573 --- /dev/null +++ b/1.21/src/main/java/dev/u9g/minecraftdatagenerator/generators/AttributesDataGenerator.java @@ -0,0 +1,32 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.util.DGU; +import net.minecraft.entity.attribute.ClampedEntityAttribute; +import net.minecraft.entity.attribute.EntityAttribute; +import net.minecraft.registry.RegistryKeys; + +public class AttributesDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "attributes"; + } + + @Override + public JsonElement generateDataJson() { + JsonArray arr = new JsonArray(); + var registry = DGU.getWorld().getRegistryManager().get(RegistryKeys.ATTRIBUTE); + for (EntityAttribute attribute : registry) { + JsonObject obj = new JsonObject(); + obj.addProperty("name", registry.getId(attribute).getPath().split("\\.")[1]); + obj.addProperty("resource", registry.getId(attribute).getPath()); + obj.addProperty("min", ((ClampedEntityAttribute) attribute).getMinValue()); + obj.addProperty("max", ((ClampedEntityAttribute) attribute).getMaxValue()); + obj.addProperty("default", attribute.getDefaultValue()); + arr.add(obj); + } + return arr; + } +}