/*
* SteakGUI.java
*
* Copyright (c) 2015 ITSTAKE
*
* 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, either version 3 of the License, or
*
* (at your option) any later version.
*
* 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 tk.itstake.steakgui;
import ninja.amp.ampmenus.MenuListener;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import tk.itstake.steakgui.command.MainCommand;
import tk.itstake.steakgui.menueditor.ItemEditor;
import tk.itstake.steakgui.menueditor.ItemStackEditor;
import tk.itstake.steakgui.menueditor.MenuSetting;
import tk.itstake.steakgui.menueditor.taskeditor.*;
import tk.itstake.steakgui.gui.Menu;
import tk.itstake.steakgui.util.UpdateChecker;
import tk.itstake.steakgui.util.VaultHooker;
import tk.itstake.steakgui.variable.VariableConverter;
import tk.itstake.util.ConfigHandler;
import tk.itstake.util.LanguageHandler;
import tk.itstake.util.MessageHandler;
import java.util.ArrayList;
/**
* Created by bexco on 2015-07-24.
*/
public class SteakGUI extends JavaPlugin implements Listener {
MessageHandler mh = new MessageHandler();
private ArrayList<String> pluginList = new ArrayList<>();
public void addToPluginList(String name) {
pluginList.add(name);
}
public ArrayList<String> getPluginList() {
return pluginList;
}
public static LanguageHandler lh = new LanguageHandler();
public static Plugin p = null;
@Override
public void onEnable() {
p = this;
if(!this.getDataFolder().exists()) {
this.getDataFolder().mkdir();
}
ConfigHandler.loadConfig();
lh.languageLoad();
mh.sendConsoleMessage(lh.getLanguage("console.onenable", new String[]{this.getDescription().getVersion()}));
MenuListener.getInstance().register(this);
if(getServer().getPluginManager().getPlugin("Vault") != null) {
VaultHooker hooker = new VaultHooker();
} else {
mh.sendConsoleMessage(lh.getLanguage("novault"));
getPluginLoader().disablePlugin(this);
}
getServer().getPluginManager().registerEvents(this, this);
getServer().getPluginManager().registerEvents(new MenuSetting(), this);
getServer().getPluginManager().registerEvents(new ItemEditor(), this);
getServer().getPluginManager().registerEvents(new CommandTaskEditor(), this);
getServer().getPluginManager().registerEvents(new OpenMenuTaskEditor(), this);
getServer().getPluginManager().registerEvents(new MessageTaskEditor(), this);
getServer().getPluginManager().registerEvents(new SoundTaskEditor(), this);
getServer().getPluginManager().registerEvents(new BroadcastTaskEditor(), this);
getServer().getPluginManager().registerEvents(new ItemStackEditor(), this);
getServer().getPluginManager().registerEvents(new BuyTaskEditor(), this);
getServer().getPluginManager().registerEvents(new SellTaskEditor(), this);
getServer().getPluginManager().registerEvents(new GiveTaskEditor(), this);
getServer().getPluginManager().registerEvents(new TakeTaskEditor(), this);
UpdateChecker update = new UpdateChecker();
update.updateCheck();
getServer().getPluginManager().registerEvents(update, this);
}
@Override
public void onDisable() {
mh.sendConsoleMessage(lh.getLanguage("console.ondisable", new String[]{this.getDescription().getVersion()}));
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
return MainCommand.runCmd(sender, cmd, label, args);
}
@EventHandler(priority = EventPriority.MONITOR)
public void onCommandPreprocess(PlayerCommandPreprocessEvent event) {
if(!event.isCancelled()) {
if (event.getPlayer().hasMetadata("SGCmd")) {
event.getPlayer().performCommand(event.getMessage().substring(1));
event.getPlayer().removeMetadata("SGCmd", this);
}
}
}
public static String convertMessage(String message) {
return convertMessage(message, null, null);
}
public static String convertMessage(String message, Menu menu, Player player) {
message = ChatColor.translateAlternateColorCodes('&', message);
if(menu != null && player != null){
message = VariableConverter.convert(message, menu, player);
}
return message;
}
}