/*
* Copyright (C) 2013-2016 Gonçalo Baltazar <me@goncalomb.com>
*
* This file is part of NBTEditor.
*
* NBTEditor 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.
*
* NBTEditor 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 NBTEditor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.goncalomb.bukkit.nbteditor;
import java.io.File;
import java.util.logging.Level;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import org.mcstats.Metrics;
import com.goncalomb.bukkit.customitems.api.CustomItemManager;
import com.goncalomb.bukkit.customitems.commands.CommandCustomItems;
import com.goncalomb.bukkit.customitems.items.AntiMatterBomb;
import com.goncalomb.bukkit.customitems.items.BatBomb;
import com.goncalomb.bukkit.customitems.items.EnderBow;
import com.goncalomb.bukkit.customitems.items.EscapePlan;
import com.goncalomb.bukkit.customitems.items.FireBomb;
import com.goncalomb.bukkit.customitems.items.GravitationalAxe;
import com.goncalomb.bukkit.customitems.items.KingsCrown;
import com.goncalomb.bukkit.customitems.items.LightningRod;
import com.goncalomb.bukkit.customitems.items.MoonStick;
import com.goncalomb.bukkit.customitems.items.RepulsionBomb;
import com.goncalomb.bukkit.customitems.items.SimpleMine;
import com.goncalomb.bukkit.customitems.items.SunStick;
import com.goncalomb.bukkit.customitems.items.TorchBow;
import com.goncalomb.bukkit.customitems.items.TreeVaporizer;
import com.goncalomb.bukkit.customitems.items.WitherBow;
import com.goncalomb.bukkit.mylib.command.MyCommandManager;
import com.goncalomb.bukkit.mylib.reflect.BukkitReflect;
import com.goncalomb.bukkit.mylib.reflect.NBTBase;
import com.goncalomb.bukkit.nbteditor.bos.BookOfSouls;
import com.goncalomb.bukkit.nbteditor.commands.CommandBOS;
import com.goncalomb.bukkit.nbteditor.commands.CommandItemStorage;
import com.goncalomb.bukkit.nbteditor.commands.CommandNBTArmor;
import com.goncalomb.bukkit.nbteditor.commands.CommandNBTBook;
import com.goncalomb.bukkit.nbteditor.commands.CommandNBTEnchant;
import com.goncalomb.bukkit.nbteditor.commands.CommandNBTHead;
import com.goncalomb.bukkit.nbteditor.commands.CommandNBTItem;
import com.goncalomb.bukkit.nbteditor.commands.CommandNBTPotion;
import com.goncalomb.bukkit.nbteditor.commands.CommandNBTSpawner;
import com.goncalomb.bukkit.nbteditor.commands.CommandNBTTile;
import com.goncalomb.bukkit.nbteditor.tools.EntityInspectorTool;
import com.goncalomb.bukkit.nbteditor.tools.EntityRemoverTool;
import com.goncalomb.bukkit.nbteditor.tools.SuperLeadTool;
public final class NBTEditor extends JavaPlugin {
private static NBTEditor _instance;
@Override
public void onEnable() {
try {
BukkitReflect.prepareReflection();
NBTBase.prepareReflection();
} catch (Throwable e) {
getLogger().log(Level.SEVERE, "Error preparing reflection objects", e);
getLogger().severe("This version of NBTEditor is not compatible with this version of Bukkit");
return;
}
try {
Metrics metrics = new Metrics(this);
metrics.start();
} catch (Exception e) {
Bukkit.getLogger().log(Level.INFO, "[Metrics] " + e.getMessage());
}
MyCommandManager.register(new CommandBOS(), this);
MyCommandManager.register(new CommandNBTSpawner(), this);
MyCommandManager.register(new CommandNBTItem(), this);
MyCommandManager.register(new CommandNBTEnchant(), this);
MyCommandManager.register(new CommandNBTBook(), this);
MyCommandManager.register(new CommandNBTPotion(), this);
MyCommandManager.register(new CommandNBTArmor(), this);
MyCommandManager.register(new CommandNBTHead(), this);
MyCommandManager.register(new CommandNBTTile(), this);
ItemStorage.setDataFolder(new File(getDataFolder(), "ItemStorage"));
MyCommandManager.register(new CommandItemStorage(), this);
BookOfSouls.initialize(this);
CustomItemManager.register(new EntityInspectorTool(), this, this.getName());
CustomItemManager.register(new EntityRemoverTool(), this, this.getName());
CustomItemManager.register(new SuperLeadTool(), this, this.getName());
saveDefaultConfig();
if (getConfig().getBoolean("customitems.enable-command", true)) {
MyCommandManager.register(new CommandCustomItems(), this);
}
if (getConfig().getBoolean("customitems.enable-items", false)) {
CustomItemManager.register(new BatBomb(), this, "Bombs");
CustomItemManager.register(new FireBomb(), this, "Bombs");
CustomItemManager.register(new RepulsionBomb(), this, "Bombs");
CustomItemManager.register(new LightningRod(), this, "Bombs");
CustomItemManager.register(new EnderBow(), this, "Bows");
CustomItemManager.register(new WitherBow(), this, "Bows");
CustomItemManager.register(new SunStick(), this, "Fireworks");
CustomItemManager.register(new MoonStick(), this, "Fireworks");
CustomItemManager.register(new EscapePlan(), this, "Fireworks");
CustomItemManager.register(new KingsCrown(), this, "Misc");
CustomItemManager.register(new SimpleMine(), this, "Bombs");
CustomItemManager.register(new TorchBow(), this, "Bows");
CustomItemManager.register(new AntiMatterBomb(), this, "Bombs");
CustomItemManager.register(new GravitationalAxe(), this, "Axes");
CustomItemManager.register(new TreeVaporizer(), this, "Axes");
}
_instance = this;
getLogger().info("NBTEditor has been enabled");
}
@Override
public void onDisable() {
_instance = null;
}
public static NBTEditor getInstance() {
return _instance;
}
}