package net.knarcraft.placeholdersigns; import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.Translator; import net.knarcraft.knarlib.property.ColorConversion; import net.knarcraft.placeholdersigns.command.CopySignCommand; import net.knarcraft.placeholdersigns.command.EditSignCommand; import net.knarcraft.placeholdersigns.command.UnWaxSignCommand; import net.knarcraft.placeholdersigns.command.ViewSignCommand; import net.knarcraft.placeholdersigns.config.PlaceholderSignMessage; import net.knarcraft.placeholdersigns.handler.PlaceholderSignHandler; import net.knarcraft.placeholdersigns.handler.PlaceholderSignRequestHandler; import net.knarcraft.placeholdersigns.listener.SignBreakListener; import net.knarcraft.placeholdersigns.listener.SignClickListener; import net.knarcraft.placeholdersigns.listener.SignTextListener; import net.knarcraft.placeholdersigns.runnable.SignUpdate; import org.bukkit.Bukkit; import org.bukkit.command.CommandExecutor; import org.bukkit.command.PluginCommand; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; import java.util.logging.Level; /** * This plugin's main class */ public final class PlaceholderSigns extends JavaPlugin { private static PlaceholderSigns instance; private PlaceholderSignHandler signHandler; private PlaceholderSignRequestHandler requestHandler; private StringFormatter stringFormatter; /** * Gets an instance of this plugin * * @return
A plugin instance
*/ @NotNull public static PlaceholderSigns getInstance() { return instance; } /** * Gets this instance's placeholder sign handler * * @returnThe sign handler
*/ @NotNull public PlaceholderSignHandler getSignHandler() { return this.signHandler; } @NotNull public PlaceholderSignRequestHandler getRequestHandler() { return this.requestHandler; } @NotNull public StringFormatter getStringFormatter() { return this.stringFormatter; } @Override public void onEnable() { instance = this; getConfig().options().copyDefaults(true); saveConfig(); Translator translator = new Translator(); translator.registerMessageCategory(PlaceholderSignMessage.SUCCESS_CLICK_SIGN_TO_EDIT); translator.setColorConversion(ColorConversion.RGB); translator.loadLanguages(this.getDataFolder(), "en", getConfig().getString("language", "en")); this.stringFormatter = new StringFormatter(this.getDescription().getName(), translator); this.stringFormatter.setColorConversion(ColorConversion.RGB); this.stringFormatter.setNamePrefix("#A5682A[&r&l"); this.stringFormatter.setNameSuffix("&r#A5682A]"); this.signHandler = new PlaceholderSignHandler(); this.signHandler.load(); this.requestHandler = new PlaceholderSignRequestHandler(); if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") == null) { getLogger().log(Level.WARNING, "Could not find PlaceholderAPI! This plugin is required."); Bukkit.getPluginManager().disablePlugin(this); return; } // Update signs' placeholders every second Bukkit.getScheduler().runTaskTimer(this, new SignUpdate(this.signHandler), 20 * 10, 20 * 5); Bukkit.getPluginManager().registerEvents(new SignBreakListener(), this); Bukkit.getPluginManager().registerEvents(new SignTextListener(), this); Bukkit.getPluginManager().registerEvents(new SignClickListener(), this); registerCommand("setSignLine", new EditSignCommand()); registerCommand("viewSign", new ViewSignCommand()); registerCommand("copySign", new CopySignCommand()); registerCommand("unWaxSign", new UnWaxSignCommand()); } @Override public void onDisable() { // Plugin shutdown logic } /** * Registers a command executor * * @param commandNameThe name of the command
* @param executorThe command's executor
*/ private void registerCommand(@NotNull String commandName, @NotNull CommandExecutor executor) { PluginCommand command = Bukkit.getPluginCommand(commandName); if (command != null) { command.setExecutor(executor); } else { getLogger().log(Level.SEVERE, "Unable to register command " + commandName); } } }