package com.massivecraft.factions.zcore; import java.lang.reflect.Modifier; import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; import com.massivecraft.mcore.util.Txt; import com.massivecraft.mcore.xlib.gson.Gson; import com.massivecraft.mcore.xlib.gson.GsonBuilder; public abstract class MPlugin extends JavaPlugin { // Persist related public Gson gson; // -------------------------------------------- // // ENABLE // -------------------------------------------- // private long timeEnableStart; public boolean preEnable() { log("=== ENABLE START ==="); timeEnableStart = System.currentTimeMillis(); // Ensure basefolder exists! this.getDataFolder().mkdirs(); this.gson = this.getGsonBuilder().create(); return true; } public void postEnable() { log("=== ENABLE DONE (Took "+(System.currentTimeMillis()-timeEnableStart)+"ms) ==="); } public void onDisable() { log("Disabled"); } public void suicide() { log("Now I suicide!"); this.getServer().getPluginManager().disablePlugin(this); } // -------------------------------------------- // // Some inits... // You are supposed to override these in the plugin if you aren't satisfied with the defaults // The goal is that you always will be satisfied though. // -------------------------------------------- // public GsonBuilder getGsonBuilder() { return new GsonBuilder() .setPrettyPrinting() .disableHtmlEscaping() .serializeNulls() .excludeFieldsWithModifiers(Modifier.TRANSIENT, Modifier.VOLATILE); } // -------------------------------------------- // // LOGGING // -------------------------------------------- // public void log(Object msg) { log(Level.INFO, msg); } public void log(String str, Object... args) { log(Level.INFO, Txt.parse(str, args)); } public void log(Level level, String str, Object... args) { log(level, Txt.parse(str, args)); } public void log(Level level, Object msg) { Bukkit.getLogger().log(level, "["+this.getDescription().getFullName()+"] "+msg); } }