From 44f49b4ab51fb92f72209d7fdf7c6e42030de8dd Mon Sep 17 00:00:00 2001 From: William Gaylord Date: Sun, 17 Mar 2024 10:13:19 -0500 Subject: [PATCH] Add sound id to name mappings as generator for 1.9 thru 1.20 (#17) * Add sound id to name mappings as generator for 1.9 thru 1.20 * Fix issues in generators * Add generator to all versions. * Fix versions that offset ID by one for network. --- .../generators/DataGenerators.java | 1 + .../generators/SoundsDataGenerator.java | 31 +++++++++++++++++ .../generators/DataGenerators.java | 1 + .../generators/SoundsDataGenerator.java | 31 +++++++++++++++++ .../generators/DataGenerators.java | 1 + .../generators/SoundsDataGenerator.java | 32 ++++++++++++++++++ .../generators/DataGenerators.java | 1 + .../generators/SoundsDataGenerator.java | 33 +++++++++++++++++++ .../mixin/SoundAccessor.java | 12 +++++++ .../minecraft-data-generator.mixins.json | 1 + .../generators/DataGenerators.java | 1 + .../generators/SoundsDataGenerator.java | 33 +++++++++++++++++++ .../mixin/SoundAccessor.java | 13 ++++++++ .../minecraft-data-generator.mixins.json | 1 + .../generators/DataGenerators.java | 1 + .../generators/SoundsDataGenerator.java | 33 +++++++++++++++++++ .../mixin/SoundAccessor.java | 13 ++++++++ .../minecraft-data-generator.mixins.json | 1 + .../generators/DataGenerators.java | 1 + .../generators/SoundsDataGenerator.java | 33 +++++++++++++++++++ .../mixin/SoundAccessor.java | 13 ++++++++ .../minecraft-data-generator.mixins.json | 1 + .../generators/DataGenerators.java | 2 ++ .../generators/SoundsDataGenerator.java | 33 +++++++++++++++++++ .../mixin/SoundAccessor.java | 13 ++++++++ .../minecraft-data-generator.mixins.json | 3 +- .../generators/DataGenerators.java | 1 + .../generators/SoundsDataGenerator.java | 33 +++++++++++++++++++ .../mixin/SoundAccessor.java | 13 ++++++++ .../minecraft-data-generator.mixins.json | 3 +- .../generators/DataGenerators.java | 1 + .../generators/SoundsDataGenerator.java | 32 ++++++++++++++++++ .../generators/DataGenerators.java | 1 + .../generators/SoundsDataGenerator.java | 32 ++++++++++++++++++ .../generators/DataGenerators.java | 1 + .../generators/SoundsDataGenerator.java | 33 +++++++++++++++++++ .../generators/DataGenerators.java | 1 + .../generators/SoundsDataGenerator.java | 31 +++++++++++++++++ .../generators/DataGenerators.java | 1 + .../generators/SoundsDataGenerator.java | 32 ++++++++++++++++++ 40 files changed, 552 insertions(+), 2 deletions(-) create mode 100644 1.10.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java create mode 100644 1.11.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java create mode 100644 1.12.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java create mode 100644 1.13/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java create mode 100644 1.13/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java create mode 100644 1.14/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java create mode 100644 1.14/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java create mode 100644 1.15/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java create mode 100644 1.15/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java create mode 100644 1.16/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java create mode 100644 1.16/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java create mode 100644 1.17/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java create mode 100644 1.17/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java create mode 100644 1.18/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java create mode 100644 1.18/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java create mode 100644 1.19.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java create mode 100644 1.19/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java create mode 100644 1.20/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java create mode 100644 1.9.4/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java create mode 100644 22w19a/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java diff --git a/1.10.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/1.10.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index 249c630..c89d077 100644 --- a/1.10.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/1.10.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -35,6 +35,7 @@ public class DataGenerators { register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); register(new AttributesDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/1.10.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/1.10.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..9429a29 --- /dev/null +++ b/1.10.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,31 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.SoundAccessor; +import net.minecraft.client.sound.SoundEvent; + + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", SoundEvent.REGISTRY.getRawId(soundEvent)); + soundDesc.addProperty("name", ((SoundAccessor) soundEvent).id().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + SoundEvent.REGISTRY.forEach(sound -> resultsArray.add(generateSound(sound))); + return resultsArray; + } +} diff --git a/1.11.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/1.11.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index 249c630..c89d077 100644 --- a/1.11.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/1.11.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -35,6 +35,7 @@ public class DataGenerators { register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); register(new AttributesDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/1.11.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/1.11.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..9429a29 --- /dev/null +++ b/1.11.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,31 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.SoundAccessor; +import net.minecraft.client.sound.SoundEvent; + + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", SoundEvent.REGISTRY.getRawId(soundEvent)); + soundDesc.addProperty("name", ((SoundAccessor) soundEvent).id().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + SoundEvent.REGISTRY.forEach(sound -> resultsArray.add(generateSound(sound))); + return resultsArray; + } +} diff --git a/1.12.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/1.12.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index 249c630..c89d077 100644 --- a/1.12.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/1.12.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -35,6 +35,7 @@ public class DataGenerators { register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); register(new AttributesDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/1.12.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/1.12.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..2fced08 --- /dev/null +++ b/1.12.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,32 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.SoundAccessor; +import net.minecraft.client.sound.SoundEvent; + + + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", SoundEvent.REGISTRY.getRawId(soundEvent)); + soundDesc.addProperty("name", ((SoundAccessor) soundEvent).id().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + SoundEvent.REGISTRY.forEach(sound -> resultsArray.add(generateSound(sound))); + return resultsArray; + } +} diff --git a/1.13/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/1.13/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index e726601..40660b6 100644 --- a/1.13/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/1.13/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -34,6 +34,7 @@ public class DataGenerators { register(new TintsDataGenerator()); register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/1.13/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/1.13/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..a6f3660 --- /dev/null +++ b/1.13/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,33 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.SoundAccessor; +import net.minecraft.client.sound.SoundEvent; +import net.minecraft.util.registry.Registry; + + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(Registry registry, SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", registry.getRawId(soundEvent)); + soundDesc.addProperty("name", ((SoundAccessor)soundEvent).id().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + Registry soundEventRegistry = Registry.SOUND_EVENT; + soundEventRegistry.forEach(sound -> resultsArray.add(generateSound(soundEventRegistry, (SoundEvent) sound))); + return resultsArray; + } +} diff --git a/1.13/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java b/1.13/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java new file mode 100644 index 0000000..fe50591 --- /dev/null +++ b/1.13/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java @@ -0,0 +1,12 @@ +package dev.u9g.minecraftdatagenerator.mixin; + +import net.minecraft.client.sound.SoundEvent; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(SoundEvent.class) +public interface SoundAccessor { + @Accessor("id") + Identifier id(); +} 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 ea255f5..1024905 100644 --- a/1.13/src/main/resources/minecraft-data-generator.mixins.json +++ b/1.13/src/main/resources/minecraft-data-generator.mixins.json @@ -6,6 +6,7 @@ "mixins": [ "MiningToolItemAccessor", "ReadyMixin", + "SoundAccessor", "StatusEffectAccessor" ], "client": [ diff --git a/1.14/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/1.14/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index e726601..40660b6 100644 --- a/1.14/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/1.14/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -34,6 +34,7 @@ public class DataGenerators { register(new TintsDataGenerator()); register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/1.14/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/1.14/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..6fdecd6 --- /dev/null +++ b/1.14/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,33 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.SoundAccessor; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.registry.Registry; + + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(Registry registry, SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", registry.getRawId(soundEvent)); + soundDesc.addProperty("name", ((SoundAccessor)soundEvent).id().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + Registry soundEventRegistry = Registry.SOUND_EVENT; + soundEventRegistry.forEach(sound -> resultsArray.add(generateSound(soundEventRegistry, sound))); + return resultsArray; + } +} diff --git a/1.14/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java b/1.14/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java new file mode 100644 index 0000000..34b44bc --- /dev/null +++ b/1.14/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java @@ -0,0 +1,13 @@ +package dev.u9g.minecraftdatagenerator.mixin; + + +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(SoundEvent.class) +public interface SoundAccessor { + @Accessor("id") + Identifier id(); +} 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..1024905 100644 --- a/1.14/src/main/resources/minecraft-data-generator.mixins.json +++ b/1.14/src/main/resources/minecraft-data-generator.mixins.json @@ -6,6 +6,7 @@ "mixins": [ "MiningToolItemAccessor", "ReadyMixin", + "SoundAccessor", "StatusEffectAccessor" ], "client": [ diff --git a/1.15/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/1.15/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index e726601..40660b6 100644 --- a/1.15/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/1.15/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -34,6 +34,7 @@ public class DataGenerators { register(new TintsDataGenerator()); register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/1.15/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/1.15/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..6fdecd6 --- /dev/null +++ b/1.15/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,33 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.SoundAccessor; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.registry.Registry; + + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(Registry registry, SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", registry.getRawId(soundEvent)); + soundDesc.addProperty("name", ((SoundAccessor)soundEvent).id().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + Registry soundEventRegistry = Registry.SOUND_EVENT; + soundEventRegistry.forEach(sound -> resultsArray.add(generateSound(soundEventRegistry, sound))); + return resultsArray; + } +} diff --git a/1.15/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java b/1.15/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java new file mode 100644 index 0000000..34b44bc --- /dev/null +++ b/1.15/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java @@ -0,0 +1,13 @@ +package dev.u9g.minecraftdatagenerator.mixin; + + +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(SoundEvent.class) +public interface SoundAccessor { + @Accessor("id") + Identifier id(); +} 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..1024905 100644 --- a/1.15/src/main/resources/minecraft-data-generator.mixins.json +++ b/1.15/src/main/resources/minecraft-data-generator.mixins.json @@ -6,6 +6,7 @@ "mixins": [ "MiningToolItemAccessor", "ReadyMixin", + "SoundAccessor", "StatusEffectAccessor" ], "client": [ diff --git a/1.16/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/1.16/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index e726601..40660b6 100644 --- a/1.16/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/1.16/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -34,6 +34,7 @@ public class DataGenerators { register(new TintsDataGenerator()); register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/1.16/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/1.16/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..6fdecd6 --- /dev/null +++ b/1.16/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,33 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.SoundAccessor; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.registry.Registry; + + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(Registry registry, SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", registry.getRawId(soundEvent)); + soundDesc.addProperty("name", ((SoundAccessor)soundEvent).id().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + Registry soundEventRegistry = Registry.SOUND_EVENT; + soundEventRegistry.forEach(sound -> resultsArray.add(generateSound(soundEventRegistry, sound))); + return resultsArray; + } +} diff --git a/1.16/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java b/1.16/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java new file mode 100644 index 0000000..34b44bc --- /dev/null +++ b/1.16/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java @@ -0,0 +1,13 @@ +package dev.u9g.minecraftdatagenerator.mixin; + + +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(SoundEvent.class) +public interface SoundAccessor { + @Accessor("id") + Identifier id(); +} 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..95ede1c 100644 --- a/1.16/src/main/resources/minecraft-data-generator.mixins.json +++ b/1.16/src/main/resources/minecraft-data-generator.mixins.json @@ -8,6 +8,7 @@ "EULAMixin", "MiningToolItemAccessor", "ReadyMixin", + "SoundAccessor", "StatusEffectAccessor" ], "client": [ diff --git a/1.17/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/1.17/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index c47684a..04792b7 100644 --- a/1.17/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/1.17/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -3,6 +3,7 @@ package dev.u9g.minecraftdatagenerator.generators; import com.google.gson.JsonElement; import com.google.gson.internal.Streams; import com.google.gson.stream.JsonWriter; +import org.lwjgl.system.CallbackI; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,6 +35,7 @@ public class DataGenerators { // register(new RecipeDataGenerator()); - On hold until mcdata supports multiple materials for a recipe register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/1.17/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/1.17/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..6fdecd6 --- /dev/null +++ b/1.17/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,33 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.SoundAccessor; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.registry.Registry; + + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(Registry registry, SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", registry.getRawId(soundEvent)); + soundDesc.addProperty("name", ((SoundAccessor)soundEvent).id().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + Registry soundEventRegistry = Registry.SOUND_EVENT; + soundEventRegistry.forEach(sound -> resultsArray.add(generateSound(soundEventRegistry, sound))); + return resultsArray; + } +} diff --git a/1.17/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java b/1.17/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java new file mode 100644 index 0000000..34b44bc --- /dev/null +++ b/1.17/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java @@ -0,0 +1,13 @@ +package dev.u9g.minecraftdatagenerator.mixin; + + +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(SoundEvent.class) +public interface SoundAccessor { + @Accessor("id") + Identifier id(); +} diff --git a/1.17/src/main/resources/minecraft-data-generator.mixins.json b/1.17/src/main/resources/minecraft-data-generator.mixins.json index 0b916b1..d5bc0ee 100644 --- a/1.17/src/main/resources/minecraft-data-generator.mixins.json +++ b/1.17/src/main/resources/minecraft-data-generator.mixins.json @@ -6,7 +6,8 @@ "mixins": [ "ClientPlayerInteractionManagerMixin", "MiningToolItemAccessor", - "ReadyMixin" + "ReadyMixin", + "SoundAccessor" ], "client": [ ], diff --git a/1.18/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/1.18/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index b771fa6..2abb628 100644 --- a/1.18/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/1.18/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -33,6 +33,7 @@ public class DataGenerators { // register(new RecipeDataGenerator()); - On hold until mcdata supports multiple materials for a recipe register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/1.18/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/1.18/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..6fdecd6 --- /dev/null +++ b/1.18/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,33 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.SoundAccessor; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.registry.Registry; + + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(Registry registry, SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", registry.getRawId(soundEvent)); + soundDesc.addProperty("name", ((SoundAccessor)soundEvent).id().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + Registry soundEventRegistry = Registry.SOUND_EVENT; + soundEventRegistry.forEach(sound -> resultsArray.add(generateSound(soundEventRegistry, sound))); + return resultsArray; + } +} diff --git a/1.18/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java b/1.18/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java new file mode 100644 index 0000000..34b44bc --- /dev/null +++ b/1.18/src/main/java/dev/u9g/minecraftdatagenerator/mixin/SoundAccessor.java @@ -0,0 +1,13 @@ +package dev.u9g.minecraftdatagenerator.mixin; + + +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(SoundEvent.class) +public interface SoundAccessor { + @Accessor("id") + Identifier id(); +} diff --git a/1.18/src/main/resources/minecraft-data-generator.mixins.json b/1.18/src/main/resources/minecraft-data-generator.mixins.json index 5d80b76..0867f2e 100644 --- a/1.18/src/main/resources/minecraft-data-generator.mixins.json +++ b/1.18/src/main/resources/minecraft-data-generator.mixins.json @@ -7,7 +7,8 @@ "ClientPlayerInteractionManagerMixin", "EULAMixin", "MiningToolItemAccessor", - "ReadyMixin" + "ReadyMixin", + "SoundAccessor" ], "client": [ ], diff --git a/1.19.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/1.19.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index c47684a..ebf2ed5 100644 --- a/1.19.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/1.19.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -34,6 +34,7 @@ public class DataGenerators { // register(new RecipeDataGenerator()); - On hold until mcdata supports multiple materials for a recipe register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/1.19.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/1.19.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..d063f71 --- /dev/null +++ b/1.19.2/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,32 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.registry.Registry; + + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(Registry registry, SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", registry.getRawId(soundEvent)+1); // the plus 1 is required for 1.19.2+ due to Mojang using 0 in the packet to say that you should read a string id instead. + soundDesc.addProperty("name", soundEvent.getId().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + Registry soundEventRegistry = Registry.SOUND_EVENT; + soundEventRegistry.forEach(sound -> resultsArray.add(generateSound(soundEventRegistry, sound))); + return resultsArray; + } +} diff --git a/1.19/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/1.19/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index c47684a..ebf2ed5 100644 --- a/1.19/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/1.19/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -34,6 +34,7 @@ public class DataGenerators { // register(new RecipeDataGenerator()); - On hold until mcdata supports multiple materials for a recipe register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/1.19/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/1.19/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..edbc986 --- /dev/null +++ b/1.19/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,32 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.registry.Registry; + + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(Registry registry, SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", registry.getRawId(soundEvent)); + soundDesc.addProperty("name", soundEvent.getId().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + Registry soundEventRegistry = Registry.SOUND_EVENT; + soundEventRegistry.forEach(sound -> resultsArray.add(generateSound(soundEventRegistry, sound))); + return resultsArray; + } +} diff --git a/1.20/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/1.20/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index c47684a..ebf2ed5 100644 --- a/1.20/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/1.20/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -34,6 +34,7 @@ public class DataGenerators { // register(new RecipeDataGenerator()); - On hold until mcdata supports multiple materials for a recipe register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/1.20/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/1.20/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..77e54d4 --- /dev/null +++ b/1.20/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,33 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.util.DGU; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.sound.SoundEvent; + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(Registry registry, SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", registry.getRawId(soundEvent)+1); // the plus 1 is required for 1.19.2+ due to Mojang using 0 in the packet to say that you should read a string id instead. + soundDesc.addProperty("name", soundEvent.getId().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + Registry soundEventRegistry = DGU.getWorld().getRegistryManager().get(RegistryKeys.SOUND_EVENT); + soundEventRegistry.forEach(sound -> resultsArray.add(generateSound(soundEventRegistry, sound))); + return resultsArray; + } +} diff --git a/1.9.4/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/1.9.4/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index 249c630..c89d077 100644 --- a/1.9.4/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/1.9.4/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -35,6 +35,7 @@ public class DataGenerators { register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); register(new AttributesDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/1.9.4/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/1.9.4/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..9429a29 --- /dev/null +++ b/1.9.4/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,31 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import dev.u9g.minecraftdatagenerator.mixin.SoundAccessor; +import net.minecraft.client.sound.SoundEvent; + + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", SoundEvent.REGISTRY.getRawId(soundEvent)); + soundDesc.addProperty("name", ((SoundAccessor) soundEvent).id().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + SoundEvent.REGISTRY.forEach(sound -> resultsArray.add(generateSound(sound))); + return resultsArray; + } +} diff --git a/22w19a/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java b/22w19a/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java index 937d7ad..1c755d5 100644 --- a/22w19a/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java +++ b/22w19a/src/main/java/dev/u9g/minecraftdatagenerator/generators/DataGenerators.java @@ -34,6 +34,7 @@ public class DataGenerators { // register(new RecipeDataGenerator()); - On hold until mcdata supports multiple materials for a recipe register(new LanguageDataGenerator()); register(new InstrumentsDataGenerator()); + register(new SoundsDataGenerator()); } public static void register(IDataGenerator generator) { diff --git a/22w19a/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java b/22w19a/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java new file mode 100644 index 0000000..edbc986 --- /dev/null +++ b/22w19a/src/main/java/dev/u9g/minecraftdatagenerator/generators/SoundsDataGenerator.java @@ -0,0 +1,32 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.registry.Registry; + + +public class SoundsDataGenerator implements IDataGenerator { + + public static JsonObject generateSound(Registry registry, SoundEvent soundEvent) { + JsonObject soundDesc = new JsonObject(); + + soundDesc.addProperty("id", registry.getRawId(soundEvent)); + soundDesc.addProperty("name", soundEvent.getId().getPath()); + + return soundDesc; + } + + @Override + public String getDataName() { + return "sounds"; + } + + @Override + public JsonArray generateDataJson() { + JsonArray resultsArray = new JsonArray(); + Registry soundEventRegistry = Registry.SOUND_EVENT; + soundEventRegistry.forEach(sound -> resultsArray.add(generateSound(soundEventRegistry, sound))); + return resultsArray; + } +}