102 lines
3.9 KiB
Java
102 lines
3.9 KiB
Java
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();
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|