EpicKnarvik97 598b6c9cb9
All checks were successful
KnarCraft/PlaceholderSigns/pipeline/head This commit looks good
Adds commands for viewing placeholders on a sign
2024-04-22 02:26:08 +02:00

123 lines
4.5 KiB
Java

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.EditSignCommand;
import net.knarcraft.placeholdersigns.command.ViewPlaceholderSignCommand;
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 <p>A plugin instance</p>
*/
@NotNull
public static PlaceholderSigns getInstance() {
return instance;
}
/**
* Gets this instance's placeholder sign handler
*
* @return <p>The sign handler</p>
*/
@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("editSign", new EditSignCommand());
registerCommand("viewSign", new ViewSignCommand(false));
registerCommand("viewSignRaw", new ViewSignCommand(true));
registerCommand("viewPlaceholderSign", new ViewPlaceholderSignCommand(false));
registerCommand("viewPlaceholderSignRaw", new ViewPlaceholderSignCommand(true));
}
@Override
public void onDisable() {
// Plugin shutdown logic
}
/**
* Registers a command executor
*
* @param commandName <p>The name of the command</p>
* @param executor <p>The command's executor</p>
*/
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);
}
}
}