diff --git a/src/main/java/net/krituximon/stalinium/Stalinium.java b/src/main/java/net/krituximon/stalinium/Stalinium.java index 6fe1683..e4c1c80 100644 --- a/src/main/java/net/krituximon/stalinium/Stalinium.java +++ b/src/main/java/net/krituximon/stalinium/Stalinium.java @@ -2,6 +2,7 @@ package net.krituximon.stalinium; import net.krituximon.stalinium.block.ModBlocks; import net.krituximon.stalinium.item.ModItems; +import net.krituximon.stalinium.sound.ModSounds; import org.slf4j.Logger; import com.mojang.logging.LogUtils; @@ -41,6 +42,7 @@ public class Stalinium ModItems.register(modEventBus); ModBlocks.register(modEventBus); + ModSounds.register(modEventBus); // Register ourselves for server and other game events we are interested in. // Note that this is necessary if and only if we want *this* class (Stalinium) to respond directly to events. diff --git a/src/main/java/net/krituximon/stalinium/datagen/ModDatapackProvider.java b/src/main/java/net/krituximon/stalinium/datagen/ModDatapackProvider.java index 2b7db97..2dd792e 100644 --- a/src/main/java/net/krituximon/stalinium/datagen/ModDatapackProvider.java +++ b/src/main/java/net/krituximon/stalinium/datagen/ModDatapackProvider.java @@ -1,4 +1,4 @@ -package net.krituximon.stalinium.datagen; +package net.krituximon.stalinium.datagen; import net.krituximon.stalinium.Stalinium; import net.krituximon.stalinium.worldgen.ModBiomeModifiers; diff --git a/src/main/java/net/krituximon/stalinium/datagen/ModItemModelProvider.java b/src/main/java/net/krituximon/stalinium/datagen/ModItemModelProvider.java index 532775e..81c8e40 100644 --- a/src/main/java/net/krituximon/stalinium/datagen/ModItemModelProvider.java +++ b/src/main/java/net/krituximon/stalinium/datagen/ModItemModelProvider.java @@ -14,5 +14,6 @@ public class ModItemModelProvider extends ItemModelProvider { @Override protected void registerModels() { basicItem(ModItems.STALINIUM_INGOT.get()); + basicItem(ModItems.SOVIET_ANTHEM_MUSIC_DISC.get()); } } diff --git a/src/main/java/net/krituximon/stalinium/datagen/ModRecipeProvider.java b/src/main/java/net/krituximon/stalinium/datagen/ModRecipeProvider.java index 0c9ad88..4c728ce 100644 --- a/src/main/java/net/krituximon/stalinium/datagen/ModRecipeProvider.java +++ b/src/main/java/net/krituximon/stalinium/datagen/ModRecipeProvider.java @@ -5,6 +5,7 @@ import net.krituximon.stalinium.item.ModItems; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.*; +import net.minecraft.world.item.Items; import net.neoforged.neoforge.common.conditions.IConditionBuilder; import java.util.List; @@ -24,6 +25,14 @@ public class ModRecipeProvider extends RecipeProvider implements IConditionBuild .define('B', ModItems.STALINIUM_INGOT.get()) .unlockedBy("has_stalinium", has(ModItems.STALINIUM_INGOT)).save(recipeOutput); + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.SOVIET_ANTHEM_MUSIC_DISC.get()) + .pattern("BBB") + .pattern("BSB") + .pattern("BBB") + .define('B', ModItems.STALINIUM_INGOT.get()) + .define('S', Items.GOLD_BLOCK) + .unlockedBy("has_stalinium", has(ModItems.STALINIUM_INGOT)).save(recipeOutput); + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ModItems.STALINIUM_INGOT.get(), 9) .requires(ModBlocks.STALINIUM_BLOCK) .unlockedBy("has_stalinium_block", has(ModBlocks.STALINIUM_BLOCK)).save(recipeOutput); diff --git a/src/main/java/net/krituximon/stalinium/item/ModItems.java b/src/main/java/net/krituximon/stalinium/item/ModItems.java index f74ee42..d7b7b62 100644 --- a/src/main/java/net/krituximon/stalinium/item/ModItems.java +++ b/src/main/java/net/krituximon/stalinium/item/ModItems.java @@ -1,6 +1,7 @@ package net.krituximon.stalinium.item; import net.krituximon.stalinium.Stalinium; +import net.krituximon.stalinium.sound.ModSounds; import net.minecraft.world.item.Item; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredItem; @@ -12,6 +13,9 @@ public class ModItems { public static final DeferredItem STALINIUM_INGOT = ITEMS.register("stalinium_ingot", () -> new Item(new Item.Properties())); + public static final DeferredItem SOVIET_ANTHEM_MUSIC_DISC = ITEMS.register("soviet_anthem_music_disc", + () -> new Item(new Item.Properties().jukeboxPlayable(ModSounds.SOVIET_ANTHEM_KEY).stacksTo(1))); + public static void register(IEventBus eventBus) { ITEMS.register(eventBus); diff --git a/src/main/java/net/krituximon/stalinium/sound/ModSounds.java b/src/main/java/net/krituximon/stalinium/sound/ModSounds.java new file mode 100644 index 0000000..a2d87a9 --- /dev/null +++ b/src/main/java/net/krituximon/stalinium/sound/ModSounds.java @@ -0,0 +1,35 @@ +package net.krituximon.stalinium.sound; + +import net.krituximon.stalinium.Stalinium; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.item.JukeboxSong; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredRegister; + +import java.util.function.Supplier; + +public class ModSounds { + public static final DeferredRegister SOUND_EVENTS = + DeferredRegister.create(BuiltInRegistries.SOUND_EVENT, Stalinium.MODID); + + public static final Supplier SOVIET_ANTHEM = registerSoundEvent("soviet_anthem"); + public static final ResourceKey SOVIET_ANTHEM_KEY = createSong("soviet_anthem"); + + + private static ResourceKey createSong(String name) { + return ResourceKey.create(Registries.JUKEBOX_SONG, ResourceLocation.fromNamespaceAndPath(Stalinium.MODID, name)); + } + + private static Supplier registerSoundEvent(String name) { + ResourceLocation id = ResourceLocation.fromNamespaceAndPath(Stalinium.MODID, name); + return SOUND_EVENTS.register(name, () -> SoundEvent.createVariableRangeEvent(id)); + } + + public static void register(IEventBus eventBus) { + SOUND_EVENTS.register(eventBus); + } +} diff --git a/src/main/java/net/krituximon/stalinium/worldgen/ModBiomeModifiers.java b/src/main/java/net/krituximon/stalinium/worldgen/ModBiomeModifiers.java index 7560317..55f3306 100644 --- a/src/main/java/net/krituximon/stalinium/worldgen/ModBiomeModifiers.java +++ b/src/main/java/net/krituximon/stalinium/worldgen/ModBiomeModifiers.java @@ -1,4 +1,4 @@ -package net.krituximon.stalinium.worldgen; +package net.krituximon.stalinium.worldgen; import net.krituximon.stalinium.Stalinium; import net.minecraft.core.registries.Registries; diff --git a/src/main/java/net/krituximon/stalinium/worldgen/ModConfiguredFeatures.java b/src/main/java/net/krituximon/stalinium/worldgen/ModConfiguredFeatures.java index 4976cb9..4e45d06 100644 --- a/src/main/java/net/krituximon/stalinium/worldgen/ModConfiguredFeatures.java +++ b/src/main/java/net/krituximon/stalinium/worldgen/ModConfiguredFeatures.java @@ -1,4 +1,4 @@ -package net.krituximon.stalinium.worldgen; +package net.krituximon.stalinium.worldgen; import net.krituximon.stalinium.Stalinium; import net.minecraft.core.registries.Registries; diff --git a/src/main/java/net/krituximon/stalinium/worldgen/ModPlacedFeatures.java b/src/main/java/net/krituximon/stalinium/worldgen/ModPlacedFeatures.java index e22a897..f9d3428 100644 --- a/src/main/java/net/krituximon/stalinium/worldgen/ModPlacedFeatures.java +++ b/src/main/java/net/krituximon/stalinium/worldgen/ModPlacedFeatures.java @@ -1,4 +1,4 @@ -package net.krituximon.stalinium.worldgen; +package net.krituximon.stalinium.worldgen; import net.krituximon.stalinium.Stalinium; import net.minecraft.core.Holder; diff --git a/src/main/resources/assets/stalinium/lang/en_us.json b/src/main/resources/assets/stalinium/lang/en_us.json index 96814a3..ff8da5a 100644 --- a/src/main/resources/assets/stalinium/lang/en_us.json +++ b/src/main/resources/assets/stalinium/lang/en_us.json @@ -1,5 +1,8 @@ { - "item.stalinium.uranium_ingot": "Stalinium Ingot", + "item.stalinium.stalinium_ingot": "Stalinium Ingot", - "block.stalinium.uranium_block": "Block of Stalinium" + "item.stalinium.soviet_anthem_music_disc": "Soviet Anthem Music Disc", + "item.stalinium.soviet_anthem_music_disc.desc": "Orchestra of the Ministry of Defense of the USSR - Soviet Union national anthem", + + "block.stalinium.stalinium_block": "Block of Stalinium" } diff --git a/src/main/resources/assets/stalinium/sounds.json b/src/main/resources/assets/stalinium/sounds.json new file mode 100644 index 0000000..6511aea --- /dev/null +++ b/src/main/resources/assets/stalinium/sounds.json @@ -0,0 +1,10 @@ +{ + "soviet_anthem": { + "sounds": [ + { + "name": "stalinium:soviet_anthem", + "stream": true + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/stalinium/sounds/soviet_anthem.ogg b/src/main/resources/assets/stalinium/sounds/soviet_anthem.ogg new file mode 100644 index 0000000..63fbdbd Binary files /dev/null and b/src/main/resources/assets/stalinium/sounds/soviet_anthem.ogg differ diff --git a/src/main/resources/assets/stalinium/textures/item/soviet_anthem_music_disc.png b/src/main/resources/assets/stalinium/textures/item/soviet_anthem_music_disc.png new file mode 100644 index 0000000..9f3a829 Binary files /dev/null and b/src/main/resources/assets/stalinium/textures/item/soviet_anthem_music_disc.png differ diff --git a/src/main/resources/data/stalinium/jukebox_song/soviet_anthem.json b/src/main/resources/data/stalinium/jukebox_song/soviet_anthem.json new file mode 100644 index 0000000..0636b98 --- /dev/null +++ b/src/main/resources/data/stalinium/jukebox_song/soviet_anthem.json @@ -0,0 +1,8 @@ +{ + "comparator_output": 15, + "description": { + "translate": "item.stalinium.soviet_anthem_music_disc.desc" + }, + "length_in_seconds": 224.0, + "sound_event": "stalinium:soviet_anthem" +} \ No newline at end of file