Add Soviet Anthem music disc with sound, recipe, and assets

This commit is contained in:
IM23a-cernik
2025-05-12 13:23:49 +02:00
parent 480e5d2086
commit 2c868cb3e7
14 changed files with 78 additions and 6 deletions
@@ -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.
@@ -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;
@@ -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());
}
}
@@ -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);
@@ -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<Item> STALINIUM_INGOT = ITEMS.register("stalinium_ingot",
() -> new Item(new Item.Properties()));
public static final DeferredItem<Item> 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);
@@ -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<SoundEvent> SOUND_EVENTS =
DeferredRegister.create(BuiltInRegistries.SOUND_EVENT, Stalinium.MODID);
public static final Supplier<SoundEvent> SOVIET_ANTHEM = registerSoundEvent("soviet_anthem");
public static final ResourceKey<JukeboxSong> SOVIET_ANTHEM_KEY = createSong("soviet_anthem");
private static ResourceKey<JukeboxSong> createSong(String name) {
return ResourceKey.create(Registries.JUKEBOX_SONG, ResourceLocation.fromNamespaceAndPath(Stalinium.MODID, name));
}
private static Supplier<SoundEvent> 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);
}
}
@@ -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;
@@ -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;
@@ -1,4 +1,4 @@
package net.krituximon.stalinium.worldgen;
package net.krituximon.stalinium.worldgen;
import net.krituximon.stalinium.Stalinium;
import net.minecraft.core.Holder;
@@ -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"
}
@@ -0,0 +1,10 @@
{
"soviet_anthem": {
"sounds": [
{
"name": "stalinium:soviet_anthem",
"stream": true
}
]
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

@@ -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"
}