package com.alttd.fishingevent; import com.alttd.fishingevent.commands.FishCommand; import com.alttd.fishingevent.config.Config; import com.alttd.fishingevent.config.Fishes; import com.alttd.fishingevent.config.Messages; import com.alttd.fishingevent.config.NPCLocationConfig; import com.alttd.fishingevent.fish_generator.FishGenerator; import com.alttd.fishingevent.gui.GUIListener; import com.alttd.fishingevent.listeners.CatchFish; import com.alttd.fishingevent.npc.NPCManager; import com.alttd.fishingevent.objects.RarityManager; import com.alttd.fishingevent.points.LoadTask; import com.alttd.fishingevent.points.PointsManagement; import com.alttd.fishingevent.points.SaveTask; import com.alttd.fishingevent.scoreboard.ScoreboardManager; import com.alttd.fishingevent.util.Logger; import dev.sergiferry.playernpc.api.NPCLib; import org.bukkit.Bukkit; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; import java.util.concurrent.TimeUnit; public final class FishingEvent extends JavaPlugin { private Logger logger; private SaveTask saveTask; @Override public void onEnable() { this.logger = new Logger(getLogger()); if (!loadNPCLib()) { logger.severe("NPC Lib failed to load, shutting down plugin..."); Bukkit.getPluginManager().disablePlugin(this); return; } reloadFishConfigs(); registerEvents(getServer().getPluginManager()); ScoreboardManager.getInstance(); if (new LoadTask(PointsManagement.getInstance(), this, logger).loadOldPointsData()) logger.info("Loaded old points data"); saveTask = new SaveTask(PointsManagement.getInstance(), this, logger); Bukkit.getScheduler().runTaskTimerAsynchronously(this, saveTask, TimeUnit.MINUTES.toSeconds(1) * 20, TimeUnit.MINUTES.toSeconds(1) * 20); registerCommands(); NPCManager.spawnNPCs(this, logger); } private boolean loadNPCLib() { NPCLib instance = NPCLib.getInstance(); if (instance == null) return false; NPCLib.PluginManager pluginManager = instance.registerPlugin(this); return pluginManager != null; } @Override public void onDisable() { saveTask.run(); } private void registerEvents(@NotNull PluginManager pluginManager) { pluginManager.registerEvents(new CatchFish(this, logger, new FishGenerator(new RarityManager(Config.RARITY.RARITY_SET), logger), PointsManagement.getInstance()), this); pluginManager.registerEvents(new GUIListener(), this); } private void registerCommands() { new FishCommand(this, logger); } public void reloadFishConfigs() { Config.reload(this, logger); Fishes.reload(this, logger); Messages.reload(this, logger); NPCLocationConfig.reload(this, logger); } }