package com.rardog.navidromeplayer; import com.rardog.navidromeplayer.block.ModBlocks; import com.rardog.navidromeplayer.block.ModItems; import com.rardog.navidromeplayer.network.NetworkHandler; import com.rardog.navidromeplayer.network.PacketBroadcastPlayback; import com.rardog.navidromeplayer.tileentity.ModTileEntities; import com.rardog.navidromeplayer.tileentity.NavidromePlayerTileEntity; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @Mod(NavidromePlayerMod.MOD_ID) public class NavidromePlayerMod { public static final String MOD_ID = "navidromeplayer"; public static final Logger LOGGER = LogManager.getLogger(); public NavidromePlayerMod() { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); ModBlocks.BLOCKS.register(modEventBus); ModItems.ITEMS.register(modEventBus); ModTileEntities.TILE_ENTITIES.register(modEventBus); modEventBus.addListener(this::commonSetup); modEventBus.addListener(this::clientSetup); MinecraftForge.EVENT_BUS.register(this); } private void commonSetup(final FMLCommonSetupEvent event) { event.enqueueWork(() -> { NavidromePlayerTileEntity.TYPE = ModTileEntities.NAVIDROME_PLAYER.get(); NetworkHandler.register(); LOGGER.info("[NavidromePlayer] Initialized common setup & network protocol."); }); } private void clientSetup(final net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent event) { net.minecraftforge.fml.client.registry.ClientRegistry.bindTileEntityRenderer( ModTileEntities.NAVIDROME_PLAYER.get(), com.rardog.navidromeplayer.client.render.NavidromePlayerRenderer::new ); MinecraftForge.EVENT_BUS.register(com.rardog.navidromeplayer.client.lyrics.LyricsHudOverlay.getInstance()); MinecraftForge.EVENT_BUS.register(new com.rardog.navidromeplayer.client.command.ClientMusicCommands()); LOGGER.info("[NavidromePlayer] Registered tile entity renderer, lyrics HUD overlay, and client music commands."); } @SubscribeEvent public void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) { if (event.getPlayer() instanceof ServerPlayerEntity) { ServerPlayerEntity serverPlayer = (ServerPlayerEntity) event.getPlayer(); PacketBroadcastPlayback active = NavidromePlayerTileEntity.getActiveBroadcast(); if (active != null) { NetworkHandler.sendToPlayer(serverPlayer, active); } } } }