167 lines
6 KiB
Java
167 lines
6 KiB
Java
package dev.zontreck.essentials;
|
|
|
|
import java.time.Instant;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import java.util.Random;
|
|
import java.util.UUID;
|
|
|
|
import dev.zontreck.ariaslib.util.DelayedExecutorService;
|
|
import dev.zontreck.essentials.client.Keybindings;
|
|
import dev.zontreck.essentials.client.renderer.TimeBoostEntityRenderer;
|
|
import dev.zontreck.essentials.commands.teleport.TeleportActioner;
|
|
import dev.zontreck.essentials.configs.client.AEClientConfig;
|
|
import dev.zontreck.essentials.configs.server.AEServerConfig;
|
|
import dev.zontreck.essentials.entities.ModEntities;
|
|
import dev.zontreck.essentials.events.TeleportEvent;
|
|
import dev.zontreck.essentials.client.renderer.HeartsRenderer;
|
|
import dev.zontreck.essentials.imc.Events;
|
|
import dev.zontreck.essentials.items.CreativeModeTabs;
|
|
import dev.zontreck.essentials.items.ModItems;
|
|
import dev.zontreck.essentials.networking.ModMessages;
|
|
import dev.zontreck.essentials.rtp.RTPCaches;
|
|
import dev.zontreck.essentials.rtp.RTPCachesEventHandlers;
|
|
import dev.zontreck.essentials.util.BackPositionCaches;
|
|
import dev.zontreck.essentials.util.CommandCooldowns;
|
|
import dev.zontreck.libzontreck.util.ChatHelpers;
|
|
import dev.zontreck.libzontreck.util.ServerUtilities;
|
|
import dev.zontreck.libzontreck.vectors.WorldPosition;
|
|
import net.minecraft.client.renderer.entity.EntityRenderers;
|
|
import net.minecraft.server.level.ServerPlayer;
|
|
import net.minecraft.world.entity.player.Player;
|
|
import net.minecraftforge.api.distmarker.Dist;
|
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
|
import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
|
|
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
|
import net.minecraftforge.eventbus.api.EventPriority;
|
|
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
|
import org.slf4j.Logger;
|
|
|
|
import com.mojang.logging.LogUtils;
|
|
|
|
import dev.zontreck.essentials.commands.CommandRegister;
|
|
import dev.zontreck.essentials.homes.Homes;
|
|
import dev.zontreck.essentials.util.EssentialsDatastore;
|
|
import dev.zontreck.essentials.util.ForgeEventsHandler;
|
|
import net.minecraftforge.common.MinecraftForge;
|
|
import net.minecraftforge.event.server.ServerStartedEvent;
|
|
import net.minecraftforge.event.server.ServerStoppingEvent;
|
|
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;
|
|
|
|
@Mod(AriasEssentials.MODID)
|
|
public class AriasEssentials {
|
|
public static final String MODID = "ariasessentials";
|
|
public static final Random random = new Random(Instant.now().getEpochSecond());
|
|
public static final Logger LOGGER = LogUtils.getLogger();
|
|
public static boolean ALIVE;
|
|
public static Map<UUID, Homes> player_homes = new HashMap<>();
|
|
public static boolean DEBUG = true;
|
|
|
|
|
|
|
|
public AriasEssentials()
|
|
{
|
|
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
|
|
bus.addListener(this::setup);
|
|
DelayedExecutorService.setup();
|
|
|
|
AEServerConfig.loadFromFile();
|
|
AEClientConfig.loadFromFile();
|
|
|
|
|
|
|
|
|
|
EssentialsDatastore.initialize();
|
|
MinecraftForge.EVENT_BUS.register(this);
|
|
MinecraftForge.EVENT_BUS.register(new CommandRegister());
|
|
MinecraftForge.EVENT_BUS.register(new ForgeEventsHandler());
|
|
MinecraftForge.EVENT_BUS.register(new RTPCachesEventHandlers());
|
|
MinecraftForge.EVENT_BUS.register(new CommandCooldowns());
|
|
MinecraftForge.EVENT_BUS.register(RTPCachesEventHandlers.class);
|
|
MinecraftForge.EVENT_BUS.register(Events.class);
|
|
|
|
ModItems.register(bus);
|
|
ModEntities.register(bus);
|
|
CreativeModeTabs.register(bus);
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onTeleport(TeleportEvent event)
|
|
{
|
|
if(TeleportActioner.isBlacklistedDimension(event.getContainer().Dimension))
|
|
{
|
|
event.setCanceled(true);
|
|
} else {
|
|
if(AEServerConfig.getInstance().back.Enabled && AEServerConfig.getInstance().back.EnabledForTp)
|
|
BackPositionCaches.Update(event.getContainer().PlayerInst.getUUID(), event.getContainer().OldPosition);
|
|
}
|
|
}
|
|
|
|
public void setup(FMLCommonSetupEvent ev)
|
|
{
|
|
ModMessages.register();
|
|
}
|
|
|
|
|
|
@SubscribeEvent
|
|
public void onServerStart(final ServerStartedEvent ev)
|
|
{
|
|
ALIVE=true;
|
|
DelayedExecutorService.start();
|
|
|
|
}
|
|
|
|
|
|
@SubscribeEvent
|
|
public void onServerStop(final ServerStoppingEvent ev)
|
|
{
|
|
ALIVE=false;
|
|
LOGGER.info("Tearing down Aria's Essentials functions and tasks");
|
|
DelayedExecutorService.stop();
|
|
RTPCaches.Locations.clear();
|
|
}
|
|
|
|
@SubscribeEvent (priority = EventPriority.HIGHEST)
|
|
public void onPlayerDied(final LivingDeathEvent ev)
|
|
{
|
|
if(ev.getEntity() instanceof Player p)
|
|
{
|
|
if(ServerUtilities.isServer())
|
|
{
|
|
ServerPlayer sp = ServerUtilities.getPlayerByID(p.getUUID().toString());
|
|
// Update player back position!
|
|
WorldPosition wp = new WorldPosition(sp);
|
|
BackPositionCaches.Update(sp.getUUID(), wp);
|
|
|
|
ChatHelpers.broadcastTo(p, ChatHelpers.macro(Messages.USE_BACK_INTRO), sp.server);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// You can use EventBusSubscriber to automatically register all static methods in the class annotated with @SubscribeEvent
|
|
@Mod.EventBusSubscriber(modid = AriasEssentials.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
|
|
public static class ClientModEvents {
|
|
@SubscribeEvent
|
|
public static void onClientSetup(FMLClientSetupEvent event) {
|
|
|
|
LOGGER.info("Client setup");
|
|
|
|
EntityRenderers.register(ModEntities.TIAB_ENTITY.get(), TimeBoostEntityRenderer::new);
|
|
MinecraftForge.EVENT_BUS.register(new HeartsRenderer());
|
|
}
|
|
|
|
@OnlyIn(Dist.CLIENT)
|
|
@SubscribeEvent
|
|
public static void onRegisterKeyBinds(RegisterKeyMappingsEvent ev)
|
|
{
|
|
ev.register(Keybindings.AUTOWALK);
|
|
}
|
|
|
|
}
|
|
|
|
}
|