/* * Copyright (C) 2011-2014 lishid. All rights reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.lishid.orebfuscator; import java.io.IOException; import java.util.logging.Logger; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import com.lishid.orebfuscator.cache.CacheCleaner; import com.lishid.orebfuscator.cache.ObfuscatedDataCache; import com.lishid.orebfuscator.commands.OrebfuscatorCommandExecutor; import com.lishid.orebfuscator.config.ConfigManager; import com.lishid.orebfuscator.config.OrebfuscatorConfig; import com.lishid.orebfuscator.hithack.BlockHitManager; import com.lishid.orebfuscator.hook.ProtocolLibHook; import com.lishid.orebfuscator.listeners.OrebfuscatorBlockListener; import com.lishid.orebfuscator.listeners.OrebfuscatorChunkListener; import com.lishid.orebfuscator.listeners.OrebfuscatorEntityListener; import com.lishid.orebfuscator.listeners.OrebfuscatorPlayerListener; import com.lishid.orebfuscator.nms.INmsManager; import com.lishid.orebfuscator.utils.Globals; /** * Orebfuscator Anti X-RAY * * @author lishid */ public class Orebfuscator extends JavaPlugin { public static final Logger logger = Logger.getLogger("Minecraft.OFC"); public static Orebfuscator instance; public static OrebfuscatorConfig config; public static ConfigManager configManager; public static INmsManager nms; private boolean isProtocolLibFound; public boolean getIsProtocolLibFound() { return this.isProtocolLibFound; } @SuppressWarnings("deprecation") @Override public void onEnable() { // Get plugin manager PluginManager pm = getServer().getPluginManager(); instance = this; nms = createNmsManager(); // Load configurations loadOrebfuscatorConfig(); this.isProtocolLibFound = pm.getPlugin("ProtocolLib") != null; if (!this.isProtocolLibFound) { Orebfuscator.log("ProtocolLib is not found! Plugin cannot be enabled."); return; } // Orebfuscator events pm.registerEvents(new OrebfuscatorPlayerListener(), this); pm.registerEvents(new OrebfuscatorEntityListener(), this); pm.registerEvents(new OrebfuscatorBlockListener(), this); pm.registerEvents(new OrebfuscatorChunkListener(), this); (new ProtocolLibHook()).register(this); // Run CacheCleaner getServer().getScheduler().scheduleAsyncRepeatingTask(this, new CacheCleaner(), 0, config.getCacheCleanRate()); } public void loadOrebfuscatorConfig() { if(config == null) { config = new OrebfuscatorConfig(); configManager = new ConfigManager(this, logger, config); } configManager.load(); ObfuscatedDataCache.resetCacheFolder(); nms.setMaxLoadedCacheFiles(config.getMaxLoadedCacheFiles()); //Make sure cache is cleared if config was changed since last start try { ObfuscatedDataCache.checkCacheAndConfigSynchronized(); } catch (IOException e) { e.printStackTrace(); } } public void reloadOrebfuscatorConfig() { reloadConfig(); loadOrebfuscatorConfig(); } private static INmsManager createNmsManager() { String serverVersion = org.bukkit.Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]; if(serverVersion.equals("v1_11_R1")) { return new com.lishid.orebfuscator.nms.v1_11_R1.NmsManager(); } else if(serverVersion.equals("v1_10_R1")) { return new com.lishid.orebfuscator.nms.v1_10_R1.NmsManager(); } else if(serverVersion.equals("v1_9_R2")) { return new com.lishid.orebfuscator.nms.v1_9_R2.NmsManager(); } else if(serverVersion.equals("v1_9_R1")) { return new com.lishid.orebfuscator.nms.v1_9_R1.NmsManager(); } else return null; } @Override public void onDisable() { ObfuscatedDataCache.closeCacheFiles(); BlockHitManager.clearAll(); getServer().getScheduler().cancelTasks(this); } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { return OrebfuscatorCommandExecutor.onCommand(sender, command, label, args); } public void runTask(Runnable task) { if (this.isEnabled()) { getServer().getScheduler().runTask(this, task); } } /** * Log an information */ public static void log(String text) { logger.info(Globals.LogPrefix + text); } /** * Log an error */ public static void log(Throwable e) { logger.severe(Globals.LogPrefix + e.toString()); e.printStackTrace(); } /** * Send a message to a player */ public static void message(CommandSender target, String message) { target.sendMessage(ChatColor.AQUA + Globals.LogPrefix + message); } }