package me.sashegdev.fabled_hearts; import com.mojang.logging.LogUtils; import me.sashegdev.fabled_hearts.client.DebugClientHandler; import me.sashegdev.fabled_hearts.dialog.DialogLoader; import me.sashegdev.fabled_hearts.dialog.DialogManager; import me.sashegdev.fabled_hearts.entity.ellie.EllieEntity; import me.sashegdev.fabled_hearts.entity.ellie.EllieRenderer; import me.sashegdev.fabled_hearts.network.ModNetworking; import me.sashegdev.fabled_hearts.registry.ModEntities; import me.sashegdev.fabled_hearts.registry.ModItems; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; import net.minecraftforge.client.event.RegisterKeyMappingsEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.AddReloadListenerEvent; import net.minecraftforge.event.entity.EntityAttributeCreationEvent; import net.minecraftforge.event.level.BlockEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import org.slf4j.Logger; import software.bernie.geckolib.GeckoLib; @Mod(Main.MODID) public class Main { public static final String MODID = "fabled_hearts"; public static final Logger LOGGER = LogUtils.getLogger(); public Main() { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); GeckoLib.initialize(); new DialogManager(); ModEntities.register(modEventBus); ModItems.register(modEventBus); modEventBus.addListener(this::commonSetup); modEventBus.register(CommonHandler.class); modEventBus.register(ClientHandler.class); MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(new ForgeHandler()); } private void commonSetup(FMLCommonSetupEvent event) { event.enqueueWork(ModNetworking::register); } @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) public static class CommonHandler { @SubscribeEvent public static void registerAttributes(EntityAttributeCreationEvent event) { event.put(ModEntities.ELLIE.get(), EllieEntity.createAttributes().build()); } } @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) public static class ClientHandler { @SubscribeEvent public static void registerRenderers(EntityRenderersEvent.RegisterRenderers event) { event.registerEntityRenderer(ModEntities.ELLIE.get(), EllieRenderer::new); } @SubscribeEvent public static void onClientSetup(FMLClientSetupEvent event) { DebugClientHandler.init(); } @SubscribeEvent public static void registerKeyMappings(RegisterKeyMappingsEvent event) { DebugClientHandler.registerKeyMapping(event); } } public static class ForgeHandler { @SubscribeEvent public void onAddReloadListeners(AddReloadListenerEvent event) { event.addListener(new DialogLoader()); } @SubscribeEvent public void onBlockBreak(BlockEvent.BreakEvent event) { if (!event.getLevel().isClientSide()) { var pos = event.getPos(); event.getLevel().getEntitiesOfClass( EllieEntity.class, new net.minecraft.world.phys.AABB(pos).inflate(3), e -> e.isBedAtOrAdjacent(pos) || (e.getBedPos() != null && e.getBedPos().equals(pos)) ).forEach(e -> { if (e.isSleeping()) e.wakeUp(); e.forgetBed(); }); } } } }