package com.mrkayjaydee.playhours; import com.mojang.logging.LogUtils; import com.mrkayjaydee.playhours.command.HoursCommand; import com.mrkayjaydee.playhours.config.ConfigEventHandler; import com.mrkayjaydee.playhours.config.ServerConfig; import com.mrkayjaydee.playhours.events.LoginGuard; import com.mrkayjaydee.playhours.events.TickScheduler; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegisterCommandsEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import org.slf4j.Logger; /** * PlayHours - Server-side mod for enforcing operating hours. * Provides schedule-based access control with warnings, auto-kick, and admin commands. * Compatible with LuckPerms for permissions (soft dependency). */ @Mod(PlayHoursMod.MODID) public class PlayHoursMod { public static final String MODID = "playhours"; public static final Logger LOGGER = LogUtils.getLogger(); /** * Mod constructor. Registers config, events, and command handlers. */ public PlayHoursMod() { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); modEventBus.register(ConfigEventHandler.class); // Register as COMMON so the file is created under /config (root), not per-world ModLoadingContext.get().registerConfig(net.minecraftforge.fml.config.ModConfig.Type.COMMON, ServerConfig.SPEC, MODID + ".toml"); modEventBus.addListener(this::onCommonSetup); // Register gameplay/event listeners MinecraftForge.EVENT_BUS.register(new LoginGuard()); MinecraftForge.EVENT_BUS.register(new TickScheduler()); MinecraftForge.EVENT_BUS.register(this); LOGGER.info("PlayHours loading... (modId={})", MODID); } @SubscribeEvent public void onRegisterCommands(RegisterCommandsEvent event) { LOGGER.info("Registering /hours command tree"); HoursCommand.register(event.getDispatcher()); } private void onCommonSetup(final FMLCommonSetupEvent event) { LOGGER.info("PlayHours common setup initialized"); } }