| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- package me.lethunderhawk.minion;
- import me.lethunderhawk.bazaarflux.util.interfaces.BazaarFluxModule;
- import me.lethunderhawk.main.Main;
- import me.lethunderhawk.minion.command.MinionCommand;
- import me.lethunderhawk.minion.enchantedVariant.item.EnchantedCobblestone;
- import me.lethunderhawk.minion.enchantedVariant.item.EnchantedRedstone;
- import me.lethunderhawk.minion.enchantedVariant.item.abstraction.DisableEnchantedItemPlacingListener;
- import me.lethunderhawk.minion.enchantedVariant.item.abstraction.EnchantedItem;
- import me.lethunderhawk.minion.enchantedVariant.item.abstraction.EnchantedItemRegistry;
- import me.lethunderhawk.minion.enchantedVariant.recipe.RecipeManager;
- import me.lethunderhawk.minion.factory.MinionFactory;
- import me.lethunderhawk.minion.impl.type.CobbleMinionType;
- import me.lethunderhawk.minion.impl.type.RedstoneMinionType;
- import me.lethunderhawk.minion.listener.MinionListener;
- import me.lethunderhawk.minion.manager.MinionManager;
- import me.lethunderhawk.minion.persistence.MinionStorage;
- import me.lethunderhawk.minion.registry.MinionRegistry;
- import me.lethunderhawk.minion.runtime.PlacedMinion;
- import org.bukkit.Material;
- import org.bukkit.event.HandlerList;
- import org.bukkit.inventory.ItemStack;
- import java.util.ArrayList;
- import java.util.List;
- public class MinionModule implements BazaarFluxModule {
- private final Main plugin;
- private List<ItemStack> allMinions;
- private MinionListener minionListener;
- private MinionFactory factory;
- private MinionStorage storage;
- private RecipeManager recipeManager;
- public MinionModule(Main plugin) {
- this.plugin = plugin;
- }
- @Override
- public String getPrefix() {
- return "[Minions]";
- }
- @Override
- public void onEnable() {
- allMinions = new ArrayList<>();
- customRecipes();
- MinionCommand cmd = new MinionCommand(this);
- plugin.getServer().getPluginCommand("minion").setExecutor(cmd);
- plugin.getServer().getPluginCommand("minion").setTabCompleter(cmd);
- this.factory = new MinionFactory(plugin);
- registerMinions();
- loadAllMinions();
- minionListener = new MinionListener(plugin, factory.getMinionItem());
- plugin.getServer().getPluginManager().registerEvents(minionListener, plugin);
- }
- private void customRecipes() {
- this.recipeManager = new RecipeManager(Main.getInstance());
- plugin.getServer().getPluginManager().registerEvents(new DisableEnchantedItemPlacingListener(), plugin);
- registerRecipes();
- clearRecipes();
- }
- private void registerRecipes() {
- EnchantedItem enchantedCobblestone = new EnchantedCobblestone();
- recipeManager.registerRecipe(
- Material.COBBLESTONE,
- enchantedCobblestone.getItemStack()
- );
- EnchantedItemRegistry.registerNoPlaceItem(enchantedCobblestone.getItemIdKey());
- EnchantedItem enchantedRedstone = new EnchantedRedstone();
- recipeManager.registerRecipe(
- Material.REDSTONE,
- enchantedRedstone.getItemStack()
- );
- EnchantedItemRegistry.registerNoPlaceItem(enchantedRedstone.getItemIdKey());
- }
- public void clearRecipes(){
- }
- public void loadAllMinions(){
- storage = new MinionStorage(plugin);
- List<PlacedMinion> minions = storage.loadAll();
- MinionManager.startAndRegisterAll(plugin, minions);
- }
- public List<ItemStack> getAllMinions(){
- return allMinions;
- }
- public void registerMinions(){
- registerCobbleStoneMinions();
- registerRedstoneMinions();
- }
- private void registerRedstoneMinions() {
- MinionRegistry.register(new RedstoneMinionType());
- List<ItemStack> heads = factory.createItems("redstone");
- allMinions.addAll(heads);
- }
- public void registerCobbleStoneMinions(){
- MinionRegistry.register(new CobbleMinionType());
- List<ItemStack> heads = factory.createItems("cobblestone");
- allMinions.addAll(heads);
- }
- public void reload(){
- plugin.getLogger().info("Reloading Minions");
- onDisable();
- onEnable();
- }
- @Override
- public void onDisable() {
- clearRecipes();
- unregisterListeners();
- saveAllMinions();
- }
- private void saveAllMinions() {
- storage.saveAllMinionsToStorage();
- }
- public void unregisterListeners() {
- HandlerList.unregisterAll(minionListener);
- minionListener = null;
- }
- }
|