feat: add ambient music and test jukebox disc

- Moved ambient music to Minecraft's default list.
- Added a test jukebox disc as a template for future discs.
- Removed obsolete commented code related to ambient music to clean up the codebase.
This commit is contained in:
Zhamty 2024-10-22 18:49:08 +01:00
parent 602c4d2feb
commit 0e9afe919f
6 changed files with 87 additions and 63 deletions

View File

@ -7,6 +7,7 @@ import gay.pridecraft.joy.entity.spawn.SpawnModifier;
import gay.pridecraft.joy.item.ModItemGroups;
import gay.pridecraft.joy.item.ModItems;
import gay.pridecraft.joy.particle.ModParticles;
import gay.pridecraft.joy.sound.ModSoundEvents;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry;
import net.minecraft.entity.attribute.EntityAttributes;
@ -14,16 +15,9 @@ import net.minecraft.entity.mob.MobEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Random;
public class Joy implements ModInitializer {
public static final String MOD_ID = "joy";
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
// public static final Identifier MUSIC_GAME = Identifier.of(MOD_ID, "music.ambient");
// public static SoundEvent MUSIC_GAME_EVENT = SoundEvent.of(MUSIC_GAME);
private int tickCounter = 0;
private final Random random = new Random();
@Override
public void onInitialize() {
ModParticles.registerParticles();
@ -31,6 +25,7 @@ public class Joy implements ModInitializer {
ModItems.registerModItems();
ModBlocks.registerModBlocks();
ModEntities.registerBlockEntities();
ModSoundEvents.registerModSoundEvents();
// this is now has to be done in a mixin.
// ModPaintings.registerPaintings();
@ -38,36 +33,10 @@ public class Joy implements ModInitializer {
if (Config.mobSpawning) {
SpawnModifier.modifySpawning();
}
/* MidnightConfig.init(Joy.MOD_ID, Config.class);
Registry.register(Registries.SOUND_EVENT, MUSIC_GAME, MUSIC_GAME_EVENT);
SoundInstance music = PositionedSoundInstance.music(MUSIC_GAME_EVENT);
ClientTickEvents.END_CLIENT_TICK.register(client -> {
if (!(client.currentScreen instanceof TitleScreen)) return;
if (client.getSoundManager().isPlaying(music)) return;
client.getSoundManager().play(music);
});
ClientTickEvents.END_CLIENT_TICK.register(client -> {
if (client.world != null && !client.isPaused() && client.player != null) {
tickCounter++;
if (tickCounter >= getRandomInterval()) {
client.getSoundManager().play(music);
tickCounter = 0;
}
}
}); */
// MidnightConfig.init(Joy.MOD_ID, Config.class);
registerEntityAttributes();
}
private int getRandomInterval() {
return 12000 + random.nextInt(24000);
}
private void registerEntityAttributes() {
FabricDefaultAttributeRegistry.register(ModEntities.SOCK_FOX, MobEntity.createMobAttributes()
.add(EntityAttributes.GENERIC_ATTACK_DAMAGE, 2.0)

View File

@ -1,7 +1,6 @@
package gay.pridecraft.joy.item;
import gay.pridecraft.joy.Joy;
import gay.pridecraft.joy.entity.ModEntities;
import gay.pridecraft.joy.item.custom.CustomElytraItem;
import gay.pridecraft.joy.item.custom.CustomSpawnEggItem;
@ -9,9 +8,15 @@ import net.minecraft.item.BrushItem;
import net.minecraft.item.Item;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.util.Identifier;
import net.minecraft.util.Rarity;
import static gay.pridecraft.joy.Joy.*;
public class ModItems {
public static final Item PRIDE_ELYTRA = registerItem("pride_elytra",
new CustomElytraItem(new Item.Settings().maxCount(1)));
@ -26,9 +31,12 @@ public class ModItems {
public static final Item AXOLOTL_SPAWN_EGG = registerItem("axolotl_spawn_egg", new CustomSpawnEggItem(ModEntities.AXOLOTL, 16499171, 0xff80bf, new Item.Settings()));
public static final Item FROG_SPAWN_EGG = registerItem("frog_spawn_egg", new CustomSpawnEggItem(ModEntities.FROG, 13661252, 0xff80bf, new Item.Settings()));
public static final Item SNIFFER_SPAWN_EGG = registerItem("sniffer_spawn_egg", new CustomSpawnEggItem(ModEntities.SNIFFER, 8855049, 0xff80bf, new Item.Settings()));
// Test disc item that can be used as template in case someone wants to create one. Note: it's not added to any item group, only obtainable via commands.
public static final Item TEST_DISC = registerItem("test_disc", new Item(new Item.Settings().maxCount(1).rarity(Rarity.RARE).jukeboxPlayable(RegistryKey.of(RegistryKeys.JUKEBOX_SONG, Identifier.of(MOD_ID, "douglas")))));
private static Item registerItem(String name, Item item) {
return Registry.register(Registries.ITEM, Identifier.of(Joy.MOD_ID, name), item);
return Registry.register(Registries.ITEM, Identifier.of(MOD_ID, name), item);
}
public static void registerModItems() {

View File

@ -0,0 +1,27 @@
package gay.pridecraft.joy.sound;
import gay.pridecraft.joy.Joy;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.sound.SoundEvent;
import net.minecraft.util.Identifier;
public class ModSoundEvents {
public static final RegistryEntry.Reference<SoundEvent> DOUGLAS = registerReference("music_disc.douglas");
private static SoundEvent registerSound(String id) {
Identifier identifier = Identifier.of(Joy.MOD_ID, id);
return Registry.register(Registries.SOUND_EVENT, identifier, SoundEvent.of(identifier));
}
private static RegistryEntry.Reference<SoundEvent> registerReference(String id) {
Identifier identifier = Identifier.of(Joy.MOD_ID, id);
return Registry.registerReference(Registries.SOUND_EVENT, identifier, SoundEvent.of(identifier));
}
public static void registerModSoundEvents() {
// Joy.LOGGER.info("Making the gay sounds from" + Joy.MOD_ID);
}
}

View File

@ -1,34 +1,10 @@
{
"music.menu": {
"music_disc.douglas": {
"sounds": [
{
"name": "music/menu/joy",
"stream": true
},
{
"name": "music/menu/reminiscence",
"name": "joy:music/game/creative/douglas",
"stream": true
}
]
},
"music.game": {
"sounds": [
{
"name": "music/game/melancolie",
"stream": true
},
{
"name": "music/game/regina",
"stream": true
}
]
},
"music.creative": {
"sounds": [
{
"name": "music/game/creative/douglas",
"stream": true
}
]
}
}
}

View File

@ -0,0 +1,34 @@
{
"music.menu": {
"sounds": [
{
"name": "joy:music/menu/joy",
"stream": true
},
{
"name": "joy:music/menu/reminiscence",
"stream": true
}
]
},
"music.game": {
"sounds": [
{
"name": "joy:music/game/melancolie",
"stream": true
},
{
"name": "joy:music/game/regina",
"stream": true
}
]
},
"music.creative": {
"sounds": [
{
"name": "joy:music/game/creative/douglas",
"stream": true
}
]
}
}

View File

@ -0,0 +1,10 @@
{
"comparator_output": 14,
"description": {
"translate": "music_disc.joy.douglas"
},
"length_in_seconds": 176.0,
"sound_event": {
"sound_id": "joy:music_disc.douglas"
}
}