diff --git a/src/main/java/com/massivecraft/factions/FactionsPlugin.java b/src/main/java/com/massivecraft/factions/FactionsPlugin.java index 0a36bb71..66decfdb 100755 --- a/src/main/java/com/massivecraft/factions/FactionsPlugin.java +++ b/src/main/java/com/massivecraft/factions/FactionsPlugin.java @@ -31,7 +31,6 @@ import com.massivecraft.factions.zcore.MPlugin; import com.massivecraft.factions.zcore.fperms.Access; import com.massivecraft.factions.zcore.fperms.Permissable; import com.massivecraft.factions.zcore.fperms.PermissableAction; -import com.massivecraft.factions.zcore.fupgrades.FUpgradesGUI; import com.massivecraft.factions.zcore.fupgrades.UpgradesListener; import com.massivecraft.factions.zcore.util.TextUtil; import me.lucko.commodore.CommodoreProvider; @@ -288,7 +287,6 @@ public class FactionsPlugin extends MPlugin { new FactionsEntityListener(), new FactionsExploitListener(), new FactionsBlockListener(), - new FUpgradesGUI(), new UpgradesListener(), new MissionHandler(this), new FChestListener(), @@ -317,14 +315,10 @@ public class FactionsPlugin extends MPlugin { json = "[]"; } reserveObjects = this.getGsonBuilder().create().fromJson(json, new ListParameterizedType(ReserveObject.class)); - if (reserveObjects == null) { - reserveObjects = new ArrayList<>(); - } - } - catch (Exception e) { + if (reserveObjects == null) reserveObjects = new ArrayList<>(); + } catch (Exception e) { e.printStackTrace(); } - if (getDescription().getFullName().contains("BETA")) { divider(); System.out.println("You are using a BETA version of the plugin!"); diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdUpgrades.java b/src/main/java/com/massivecraft/factions/cmd/CmdUpgrades.java index 57203f6a..c911546c 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdUpgrades.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdUpgrades.java @@ -2,7 +2,7 @@ package com.massivecraft.factions.cmd; import com.massivecraft.factions.FactionsPlugin; import com.massivecraft.factions.struct.Permission; -import com.massivecraft.factions.zcore.fupgrades.FUpgradesGUI; +import com.massivecraft.factions.zcore.fupgrades.FUpgradeFrame; import com.massivecraft.factions.zcore.util.TL; public class CmdUpgrades extends FCommand { @@ -19,7 +19,6 @@ public class CmdUpgrades extends FCommand { .playerOnly() .memberOnly() .build(); - } @Override @@ -28,7 +27,7 @@ public class CmdUpgrades extends FCommand { context.fPlayer.msg(TL.COMMAND_UPGRADES_DISABLED); return; } - new FUpgradesGUI().openMainMenu(context.fPlayer); + new FUpgradeFrame(context.faction).buildGUI(context.fPlayer); } @Override diff --git a/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java b/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java index e265bdd7..ef15f805 100644 --- a/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java +++ b/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java @@ -575,7 +575,6 @@ public class FactionsPlayerListener implements Listener { if (CmdFly.particleTask == null) CmdFly.startParticles(); } - //inspect @EventHandler diff --git a/src/main/java/com/massivecraft/factions/zcore/fupgrades/FUpgradeFrame.java b/src/main/java/com/massivecraft/factions/zcore/fupgrades/FUpgradeFrame.java new file mode 100644 index 00000000..9329017b --- /dev/null +++ b/src/main/java/com/massivecraft/factions/zcore/fupgrades/FUpgradeFrame.java @@ -0,0 +1,113 @@ +package com.massivecraft.factions.zcore.fupgrades; + +import com.github.stefvanschie.inventoryframework.Gui; +import com.github.stefvanschie.inventoryframework.GuiItem; +import com.github.stefvanschie.inventoryframework.pane.PaginatedPane; +import com.massivecraft.factions.FPlayer; +import com.massivecraft.factions.FPlayers; +import com.massivecraft.factions.Faction; +import com.massivecraft.factions.FactionsPlugin; +import com.massivecraft.factions.util.XMaterial; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Saser + */ +public class FUpgradeFrame { + + private Gui gui; + + public FUpgradeFrame(Faction f) { + this.gui = new Gui(FactionsPlugin.getInstance(), + FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.rows", 5), + FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Title").replace("{faction}", f.getTag())); + } + + public void buildGUI(FPlayer fplayer) { + PaginatedPane pane = new PaginatedPane(0, 0, 9, this.gui.getRows()); + List GUIItems = new ArrayList<>(); + ItemStack dummy = buildDummyItem(); + for (int x = 0; x <= this.gui.getRows() * 9 - 1; ++x) + GUIItems.add(new GuiItem(dummy, (e) -> e.setCancelled(true))); + + for (UpgradeType value : UpgradeType.values()) { + if (value.getSlot() != -1) { + GUIItems.set(value.getSlot(), new GuiItem(value.buildAsset(fplayer.getFaction()), (e) -> { + e.setCancelled(true); + FPlayer fme = FPlayers.getInstance().getByPlayer((Player) e.getWhoClicked()); + if (fme.getFaction().getUpgrade(value) != value.getMaxLevel()) { + int cost = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu." + value.toString() + ".Cost.level-" + (fme.getFaction().getUpgrade(value) + 1)); + if (fme.hasMoney(cost)) { + fme.takeMoney(cost); + if (value == UpgradeType.CHEST) + updateChests(fme.getFaction()); + + if (value == UpgradeType.POWER) + updateFactionPowerBoost(fme.getFaction()); + + if (value == UpgradeType.TNT) + updateTNT(fme.getFaction()); + + if (value == UpgradeType.WARP) + updateWarps(fme.getFaction()); + + fme.getFaction().setUpgrade(value, fme.getFaction().getUpgrade(value) + 1); + this.buildGUI(fme); + } + } + })); + } + } + pane.populateWithGuiItems(GUIItems); + gui.addPane(pane); + gui.update(); + gui.show(fplayer.getPlayer()); + } + + private void updateWarps(Faction faction) { + int level = faction.getUpgrade(UpgradeType.WARP); + int size = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Warps.warp-limit.level-" + (level + 1)); + faction.setWarpsLimit(size); + } + + private void updateTNT(Faction faction) { + int level = faction.getUpgrade(UpgradeType.TNT); + int size = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.TNT.tnt-limit.level-" + (level + 1)); + faction.setTntBankLimit(size); + } + + private void updateChests(Faction faction) { + String invName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fchest.Inventory-Title")); + for (Player player : faction.getOnlinePlayers()) { + if (player.getOpenInventory().getTitle().equalsIgnoreCase(invName)) player.closeInventory(); + } + int level = faction.getUpgrade(UpgradeType.CHEST); + int size = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Chest.Chest-Size.level-" + (level + 1)); + faction.setChestSize(size * 9); + } + + private void updateFactionPowerBoost(Faction f) { + double boost = FactionsPlugin.getInstance().getConfig().getDouble("fupgrades.MainMenu.Power.Power-Boost.level-" + (f.getUpgrade(UpgradeType.POWER) + 1)); + if (boost < 0.0) return; + f.setPowerBoost(f.getPower() + boost); + } + + + private ItemStack buildDummyItem() { + ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fupgrades.MainMenu.DummyItem"); + ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).parseItem(); + ItemMeta meta = item.getItemMeta(); + if (meta != null) { + meta.setLore(FactionsPlugin.getInstance().colorList(config.getStringList("Lore"))); + meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name"))); + item.setItemMeta(meta); + } + return item; + } +} diff --git a/src/main/java/com/massivecraft/factions/zcore/fupgrades/FUpgradesGUI.java b/src/main/java/com/massivecraft/factions/zcore/fupgrades/FUpgradesGUI.java deleted file mode 100644 index 898ad478..00000000 --- a/src/main/java/com/massivecraft/factions/zcore/fupgrades/FUpgradesGUI.java +++ /dev/null @@ -1,667 +0,0 @@ -package com.massivecraft.factions.zcore.fupgrades; - -import com.massivecraft.factions.FPlayer; -import com.massivecraft.factions.FPlayers; -import com.massivecraft.factions.Faction; -import com.massivecraft.factions.FactionsPlugin; -import com.massivecraft.factions.util.XMaterial; -import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.enchantments.Enchantment; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import java.util.List; - - -public class FUpgradesGUI implements Listener { - - /** - * @author Illyria Team - */ - - public void openMainMenu(FPlayer fme) { - Inventory inventory = Bukkit.createInventory(null, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.DummyItem.rows") * 9, FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Title").replace("{faction}", fme.getFaction().getTag()))); - ItemStack dummyItem = XMaterial.matchXMaterial(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.DummyItem.Type")).parseItem(); - ItemMeta meta = dummyItem.getItemMeta(); - meta.setLore(FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fupgrades.MainMenu.DummyItem.Lore"))); - meta.setDisplayName(FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.DummyItem.Name"))); - dummyItem.setItemMeta(meta); - - for (int fill = 0; fill < FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.DummyItem.rows") * 9; ++fill) { - inventory.setItem(fill, dummyItem); - } - - ItemStack[] items = buildItems(fme); - List cropSlots = FactionsPlugin.getInstance().getConfig().getIntegerList("fupgrades.MainMenu.Crops.CropItem.slots"); - List spawnerSlots = FactionsPlugin.getInstance().getConfig().getIntegerList("fupgrades.MainMenu.Spawners.SpawnerItem.slots"); - List expSlots = FactionsPlugin.getInstance().getConfig().getIntegerList("fupgrades.MainMenu.EXP.EXPItem.slots"); - List chestSlots = FactionsPlugin.getInstance().getConfig().getIntegerList("fupgrades.MainMenu.Chest.ChestItem.slots"); - List powerSlots = FactionsPlugin.getInstance().getConfig().getIntegerList("fupgrades.MainMenu.Power.PowerItem.slots"); - List redSlots = FactionsPlugin.getInstance().getConfig().getIntegerList("fupgrades.MainMenu.Redstone.RedstoneItem.slots"); - List memberSlots = FactionsPlugin.getInstance().getConfig().getIntegerList("fupgrades.MainMenu.Members.MembersItem.slots"); - List reductSlots = FactionsPlugin.getInstance().getConfig().getIntegerList("fupgrades.MainMenu.DamageReduct.ReduceItem.slots"); - List increaseSlots = FactionsPlugin.getInstance().getConfig().getIntegerList("fupgrades.MainMenu.DamageIncrease.IncreaseItem.slots"); - List tntSlots = FactionsPlugin.getInstance().getConfig().getIntegerList("fupgrades.MainMenu.TNT.TntItem.slots"); - List warpSlots = FactionsPlugin.getInstance().getConfig().getIntegerList("fupgrades.MainMenu.Warps.WarpItem.slots"); - List armorSlots = FactionsPlugin.getInstance().getConfig().getIntegerList("fupgrades.MainMenu.Armor.ArmorItem.slots"); - - for (Integer cropSlot : cropSlots) if (cropSlot != -1) inventory.setItem(cropSlot, items[2]); - - for (Integer spawnerSlot : spawnerSlots) if (spawnerSlot != -1) inventory.setItem(spawnerSlot, items[1]); - - for (Integer expSlot : expSlots) if (expSlot != -1) inventory.setItem(expSlot, items[0]); - - for (Integer chestSlot : chestSlots) if (chestSlot != -1) inventory.setItem(chestSlot, items[3]); - - for (Integer powerSlot : powerSlots) if (powerSlot != -1) inventory.setItem(powerSlot, items[4]); - - for (Integer redSlot : redSlots) if (redSlot != -1) inventory.setItem(redSlot, items[5]); - - for (Integer memberSlot : memberSlots) if (memberSlot != -1) inventory.setItem(memberSlot, items[6]); - - for (Integer reduceSlot : reductSlots) if (reduceSlot != -1) inventory.setItem(reduceSlot, items[7]); - - for (Integer increaseSlot : increaseSlots) if (increaseSlot != -1) inventory.setItem(increaseSlot, items[8]); - - for(Integer tntSlot : tntSlots) if(tntSlot != -1) inventory.setItem(tntSlot, items[9]); - - for(Integer warpSlot : warpSlots) if(warpSlot != -1) inventory.setItem(warpSlot, items[10]); - - for(Integer armorSlot : armorSlots) if(armorSlot != -1) inventory.setItem(armorSlot, items[11]); - - fme.getPlayer().openInventory(inventory); - } - - @EventHandler - public void onClick(InventoryClickEvent e) { - if (e.getClickedInventory() == null || e.getCurrentItem() == null || e.getCurrentItem().getItemMeta() == null || e.getCursor() == null) - return; - - FPlayer fme = FPlayers.getInstance().getByPlayer((Player) e.getWhoClicked()); - if (e.getView().getTitle().equalsIgnoreCase(FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Title").replace("{faction}", fme.getFaction().getTag())))) { - e.setCancelled(true); - ItemStack[] items = buildItems(fme); - ItemStack cropItem = items[2]; - ItemStack expItem = items[0]; - ItemStack chestitem = items[3]; - ItemStack spawnerItem = items[1]; - ItemStack powerItem = items[4]; - ItemStack redItem = items[5]; - ItemStack memberItem = items[6]; - ItemStack reduceItem = items[7]; - ItemStack increaseItem = items[8]; - ItemStack tntItem = items[9]; - ItemStack warpItem = items[10]; - ItemStack armorItem = items[11]; - - if (e.getCurrentItem().equals(cropItem)) { - int cropLevel = fme.getFaction().getUpgrade(UpgradeType.CROP); - switch (cropLevel) { - case 3: - return; - case 2: - upgradeItem(fme, UpgradeType.CROP, 3, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Crops.Cost.level-3")); - break; - case 1: - upgradeItem(fme, UpgradeType.CROP, 2, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Crops.Cost.level-2")); - break; - case 0: - upgradeItem(fme, UpgradeType.CROP, 1, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Crops.Cost.level-1")); - break; - } - } else if (e.getCurrentItem().equals(powerItem)) { - int powerLevel = fme.getFaction().getUpgrade(UpgradeType.POWER); - switch (powerLevel) { - case 3: - return; - case 2: - upgradeItem(fme, UpgradeType.POWER, 3, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Power.Cost.level-3")); - updatePower(fme.getFaction()); - break; - case 1: - upgradeItem(fme, UpgradeType.POWER, 2, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Power.Cost.level-2")); - updatePower(fme.getFaction()); - break; - case 0: - upgradeItem(fme, UpgradeType.POWER, 1, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Power.Cost.level-1")); - updatePower(fme.getFaction()); - break; - } - } else if (e.getCurrentItem().equals(spawnerItem)) { - int spawnerLevel = fme.getFaction().getUpgrade(UpgradeType.SPAWNER); - switch (spawnerLevel) { - case 3: - return; - case 2: - upgradeItem(fme, UpgradeType.SPAWNER, 3, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Spawners.Cost.level-3")); - break; - case 1: - upgradeItem(fme, UpgradeType.SPAWNER, 2, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Spawners.Cost.level-2")); - break; - case 0: - upgradeItem(fme, UpgradeType.SPAWNER, 1, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Spawners.Cost.level-1")); - break; - } - } else if (e.getCurrentItem().equals(expItem)) { - int expLevel = fme.getFaction().getUpgrade(UpgradeType.EXP); - - switch (expLevel) { - case 3: - return; - case 2: - upgradeItem(fme, UpgradeType.EXP, 3, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.EXP.Cost.level-3")); - break; - case 1: - upgradeItem(fme, UpgradeType.EXP, 2, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.EXP.Cost.level-2")); - break; - case 0: - upgradeItem(fme, UpgradeType.EXP, 1, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.EXP.Cost.level-1")); - break; - } - } else if (e.getCurrentItem().equals(redItem)) { - int redLevel = fme.getFaction().getUpgrade(UpgradeType.REDSTONE); - switch (redLevel) { - case 1: - return; - case 0: - upgradeItem(fme, UpgradeType.REDSTONE, 1, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Redstone.Cost")); - break; - } - } else if (e.getCurrentItem().equals(chestitem)) { - int chestLevel = fme.getFaction().getUpgrade(UpgradeType.CHEST); - switch (chestLevel) { - case 3: - return; - case 2: { - if (upgradeItem(fme, UpgradeType.CHEST, 3, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Chest.Cost.level-3"))) - updateChests(fme.getFaction()); - break; - } - case 1: { - if (upgradeItem(fme, UpgradeType.CHEST, 2, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Chest.Cost.level-2"))) - updateChests(fme.getFaction()); - break; - } - case 0: { - if (upgradeItem(fme, UpgradeType.CHEST, 1, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Chest.Cost.level-1"))) - updateChests(fme.getFaction()); - break; - } - } - } else if (e.getCurrentItem().equals(armorItem)) { - int armorLevel = fme.getFaction().getUpgrade(UpgradeType.REINFORCEDARMOR); - switch (armorLevel) { - case 3: - return; - case 2: { - if (upgradeItem(fme, UpgradeType.REINFORCEDARMOR, 3, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Armor.Cost.level-3"))) - break; - } - case 1: { - if (upgradeItem(fme, UpgradeType.REINFORCEDARMOR, 2, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Armor.Cost.level-2"))) - break; - } - case 0: { - if (upgradeItem(fme, UpgradeType.REINFORCEDARMOR, 1, FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Armor.Cost.level-1"))) - break; - } - } - } else if (e.getCurrentItem().equals(memberItem)) { - int memberLevel = fme.getFaction().getUpgrade(UpgradeType.MEMBERS) + 1; - if (!FactionsPlugin.getInstance().getConfig().isSet("fupgrades.MainMenu.Members.Cost.level-" + memberLevel)) { - return; - } - int cost = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Members.Cost.level-" + memberLevel); - if (hasMoney(fme, cost)) { - fme.getFaction().setUpgrade(UpgradeType.MEMBERS, memberLevel); - fme.getPlayer().closeInventory(); - takeMoney(fme, cost); - } - } else if (e.getCurrentItem().equals(reduceItem)) { - int reduceLevel = fme.getFaction().getUpgrade(UpgradeType.DAMAGEDECREASE) + 1; - if (!FactionsPlugin.getInstance().getConfig().isSet("fupgrades.MainMenu.DamageReduct.Cost.level-" + reduceLevel)) { - return; - } - int cost = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.DamageReduct.Cost.level-" + reduceLevel); - if (hasMoney(fme, cost)) { - fme.getFaction().setUpgrade(UpgradeType.DAMAGEDECREASE, reduceLevel); - fme.getPlayer().closeInventory(); - takeMoney(fme, cost); - } - } else if (e.getCurrentItem().equals(increaseItem)) { - int increaseLevel = fme.getFaction().getUpgrade(UpgradeType.DAMAGEINCREASE) + 1; - if (!FactionsPlugin.getInstance().getConfig().isSet("fupgrades.MainMenu.DamageIncrease.Cost.level-" + increaseLevel)) { - return; - } - int cost = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.DamageIncrease.Cost.level-" + increaseLevel); - if (hasMoney(fme, cost)) { - fme.getFaction().setUpgrade(UpgradeType.DAMAGEINCREASE, increaseLevel); - fme.getPlayer().closeInventory(); - takeMoney(fme, cost); - } - } else if(e.getCurrentItem().equals(tntItem)){ - int tntLevel = fme.getFaction().getUpgrade(UpgradeType.TNT) + 1; - if (!FactionsPlugin.getInstance().getConfig().isSet("fupgrades.MainMenu.TNT.Cost.level-" + tntLevel)) { - return; - } - int cost = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.TNT.Cost.level-" + tntLevel); - if (hasMoney(fme, cost)) { - fme.getFaction().setUpgrade(UpgradeType.TNT, tntLevel); - fme.getPlayer().closeInventory(); - takeMoney(fme, cost); - updateTntBanks(fme.getFaction()); - } - } else if(e.getCurrentItem().equals(warpItem)){ - int warpLevel = fme.getFaction().getUpgrade(UpgradeType.WARP) + 1; - if (!FactionsPlugin.getInstance().getConfig().isSet("fupgrades.MainMenu.Warps.Cost.level-" + warpLevel)) { - return; - } - int cost = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Warps.Cost.level-" + warpLevel); - if (hasMoney(fme, cost)) { - fme.getFaction().setUpgrade(UpgradeType.WARP, warpLevel); - fme.getPlayer().closeInventory(); - takeMoney(fme, cost); - setWarpLimit(fme.getFaction()); - } - } - } - } - - private void updateChests(Faction faction) { - String invName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fchest.Inventory-Title")); - - for (HumanEntity player : faction.getChestInventory().getViewers()) { - if (player.getOpenInventory().getTitle() != null && player.getOpenInventory().getTitle().equalsIgnoreCase(invName)) - player.closeInventory(); - } - - int level = faction.getUpgrade(UpgradeType.CHEST); - int size = FactionsPlugin.getInstance().getConfig().getInt("fchest.Default-Size"); - - switch (level) { - case 1: - size = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Chest.Chest-Size.level-1"); - break; - case 2: - size = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Chest.Chest-Size.level-2"); - break; - case 3: - size = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Chest.Chest-Size.level-3"); - break; - } - faction.setChestSize(size * 9); - } - - - private void updatePower(Faction faction) { - int level = faction.getUpgrade(UpgradeType.POWER); - double power = 0.0; - - switch (level) { - case 1: - power = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Power.Power-Boost.level-1"); - break; - case 2: - power = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Power.Power-Boost.level-2"); - break; - case 3: - power = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Power.Power-Boost.level-3"); - break; - } - faction.setPowerBoost(power); - } - - @SuppressWarnings("Duplicates") - private ItemStack[] buildItems(FPlayer fme) { - byte expData = (byte) (FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.EXP.EXPItem.Damage")); - Material expMaterial = XMaterial.parseMaterial(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.EXP.EXPItem.Type"), expData); - int expAmt = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.EXP.EXPItem.Amount"); - String expName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.EXP.EXPItem.Name")); - List expLore = FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fupgrades.MainMenu.EXP.EXPItem.Lore")); - int expLevel = fme.getFaction().getUpgrade(UpgradeType.EXP); - - for (int i = 0; i <= expLore.size() - 1; i++) - expLore.set(i, expLore.get(i).replace("{level}", expLevel + "")); - - ItemStack expItem = FactionsPlugin.getInstance().createItem(expMaterial, expAmt, expData, expName, expLore); - - if (expLevel >= 1) { - ItemMeta itemMeta = expItem.getItemMeta(); - if (!FactionsPlugin.getInstance().mc17) { - itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - } - itemMeta.addEnchant(Enchantment.DURABILITY, 3, true); - - expItem.setItemMeta(itemMeta); - expItem.setAmount(expLevel); - } - - byte spawnerData = (byte) (FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Spawners.SpawnerItem.Damage")); - Material spawnerMaterial = XMaterial.parseMaterial(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Spawners.SpawnerItem.Type"), spawnerData); - int spawnerAmt = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Spawners.SpawnerItem.Amount"); - String spawnerName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Spawners.SpawnerItem.Name")); - List spawnerLore = FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fupgrades.MainMenu.Spawners.SpawnerItem.Lore")); - int spawnerLevel = fme.getFaction().getUpgrade(UpgradeType.SPAWNER); - - for (int i = 0; i <= spawnerLore.size() - 1; i++) { - spawnerLore.set(i, spawnerLore.get(i).replace("{level}", spawnerLevel + "")); - } - - - byte cropData = (byte) (FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Crops.CropItem.Damage")); - Material cropMaterial = XMaterial.parseMaterial(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Crops.CropItem.Type"), cropData); - int cropAmt = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Crops.CropItem.Amount"); - String cropName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Crops.CropItem.Name")); - List cropLore = FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fupgrades.MainMenu.Crops.CropItem.Lore")); - int cropLevel = fme.getFaction().getUpgrade(UpgradeType.CROP); - - for (int i = 0; i <= cropLore.size() - 1; i++) { - String line = cropLore.get(i); - line = line.replace("{level}", cropLevel + ""); - cropLore.set(i, line); - } - - ItemStack cropItem = FactionsPlugin.getInstance().createItem(cropMaterial, cropAmt, cropData, cropName, cropLore); - cropItem.getItemMeta().setLore(cropLore); - - if (cropLevel >= 1) { - ItemMeta itemMeta = cropItem.getItemMeta(); - if (!FactionsPlugin.getInstance().mc17) { - itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - } - itemMeta.addEnchant(Enchantment.DURABILITY, 3, true); - cropItem.setItemMeta(itemMeta); - cropItem.setAmount(cropLevel); - } - - ItemStack spawnerItem = FactionsPlugin.getInstance().createItem(spawnerMaterial, spawnerAmt, spawnerData, spawnerName, spawnerLore); - spawnerItem.getItemMeta().setLore(spawnerLore); - if (spawnerLevel >= 1) { - ItemMeta itemMeta = spawnerItem.getItemMeta(); - if (!FactionsPlugin.getInstance().mc17) { - itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - } - itemMeta.addEnchant(Enchantment.DURABILITY, 3, true); - - spawnerItem.setItemMeta(itemMeta); - spawnerItem.setAmount(spawnerLevel); - } - byte chestData = (byte) (FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Chest.ChestItem.Damage")); - Material chestMaterial = XMaterial.parseMaterial(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Chest.ChestItem.Type"), chestData); - int chestAmt = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Chest.ChestItem.Amount"); - String chestName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Chest.ChestItem.Name", "&e&lUpgrade Chest Size")); - List chestLore = FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fupgrades.MainMenu.Chest.ChestItem.Lore")); - int chestlevel = fme.getFaction().getUpgrade(UpgradeType.CHEST); - - for (int i = 0; i <= chestLore.size() - 1; i++) { - String line = chestLore.get(i); - line = line.replace("{level}", chestlevel + ""); - chestLore.set(i, line); - } - - ItemStack chestItem = FactionsPlugin.getInstance().createItem(chestMaterial, chestAmt, chestData, chestName, chestLore); - - if (chestlevel >= 1) { - ItemMeta itemMeta = chestItem.getItemMeta(); - if (!FactionsPlugin.getInstance().mc17) { - itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - } - itemMeta.addEnchant(Enchantment.DURABILITY, 3, true); - - chestItem.setItemMeta(itemMeta); - chestItem.setAmount(chestlevel); - } - - byte memberData = (byte) (FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Members.MembersItem.Damage")); - Material memberMaterial = XMaterial.parseMaterial(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Members.MembersItem.Type"), memberData); - int memberAmt = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Members.MembersItem.Amount"); - String memberName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Members.MembersItem.Name", "&e&lUpgrade Member Size")); - List memberLore = FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fupgrades.MainMenu.Members.MembersItem.Lore")); - int memberlevel = fme.getFaction().getUpgrade(UpgradeType.MEMBERS); - - for (int i = 0; i <= memberLore.size() - 1; i++) { - String line = memberLore.get(i); - line = line.replace("{level}", memberlevel + ""); - memberLore.set(i, line); - } - - ItemStack memberItem = FactionsPlugin.getInstance().createItem(memberMaterial, memberAmt, memberData, memberName, memberLore); - - if (memberlevel >= 1) { - ItemMeta itemMeta = memberItem.getItemMeta(); - if (!FactionsPlugin.getInstance().mc17) { - itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - } - itemMeta.addEnchant(Enchantment.DURABILITY, 3, true); - - memberItem.setItemMeta(itemMeta); - memberItem.setAmount(memberlevel); - } - - byte powerData = (byte) (FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Power.PowerItem.Damage")); - Material powerMaterial = XMaterial.parseMaterial(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Power.PowerItem.Type"), powerData); - int powerAmt = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Power.PowerItem.Amount"); - String powerName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Power.PowerItem.Name")); - List powerLore = FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fupgrades.MainMenu.Power.PowerItem.Lore")); - int powerLevel = fme.getFaction().getUpgrade(UpgradeType.POWER); - - for (int i = 0; i <= powerLore.size() - 1; i++) { - String line = powerLore.get(i); - line = line.replace("{level}", powerLevel + ""); - powerLore.set(i, line); - } - - ItemStack powerItem = FactionsPlugin.getInstance().createItem(powerMaterial, powerAmt, powerData, powerName, powerLore); - powerItem.getItemMeta().setLore(powerLore); - - if (powerLevel >= 1) { - ItemMeta itemMeta = powerItem.getItemMeta(); - if (!FactionsPlugin.getInstance().mc17) { - itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - } - itemMeta.addEnchant(Enchantment.DURABILITY, 3, true); - powerItem.setItemMeta(itemMeta); - - powerItem.setAmount(powerLevel); - } - - byte redData = (byte) (FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Redstone.RedstoneItem.Damage")); - Material redMaterial = XMaterial.parseMaterial(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Redstone.RedstoneItem.Type"), redData); - int redAmt = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Redstone.RedstoneItem.Amount"); - String redName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Redstone.RedstoneItem.Name")); - List redLore = FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fupgrades.MainMenu.Redstone.RedstoneItem.Lore")); - int redLevel = fme.getFaction().getUpgrade(UpgradeType.REDSTONE); - - for (int i = 0; i <= redLore.size() - 1; i++) { - String line = redLore.get(i); - line = line.replace("{level}", redLevel + ""); - redLore.set(i, line); - } - - ItemStack redItem = FactionsPlugin.getInstance().createItem(redMaterial, redAmt, redData, redName, redLore); - redItem.getItemMeta().setLore(redLore); - - if (redLevel >= 1) { - ItemMeta itemMeta = redItem.getItemMeta(); - if (!FactionsPlugin.getInstance().mc17) { - itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - } - itemMeta.addEnchant(Enchantment.DURABILITY, 3, true); - redItem.setItemMeta(itemMeta); - redItem.setAmount(redLevel); - } - - byte reduceData = (byte) (FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.DamageReduct.ReduceItem.Damage")); - Material reduceMaterial = XMaterial.parseMaterial(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.DamageReduct.ReduceItem.Type"), reduceData); - int reduceAmt = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.DamageReduct.ReduceItem.Amount"); - String reduceName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.DamageReduct.ReduceItem.Name")); - List reduceLore = FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fupgrades.MainMenu.DamageReduct.ReduceItem.Lore")); - int reduceLevel = fme.getFaction().getUpgrade(UpgradeType.DAMAGEDECREASE); - - for (int i = 0; i <= reduceLore.size() - 1; i++) { - String line = reduceLore.get(i); - line = line.replace("{level}", reduceLevel + ""); - reduceLore.set(i, line); - } - - ItemStack reduceItem = FactionsPlugin.getInstance().createItem(reduceMaterial, reduceAmt, reduceData, reduceName, reduceLore); - reduceItem.getItemMeta().setLore(reduceLore); - - if (reduceLevel >= 1) { - ItemMeta itemMeta = reduceItem.getItemMeta(); - if (!FactionsPlugin.getInstance().mc17) { - itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - } - itemMeta.addEnchant(Enchantment.DURABILITY, 3, true); - reduceItem.setItemMeta(itemMeta); - - reduceItem.setAmount(reduceLevel); - } - - byte increaseData = (byte) (FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.DamageIncrease.IncreaseItem.Damage")); - Material increaseMaterial = XMaterial.parseMaterial(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.DamageIncrease.IncreaseItem.Type"), increaseData); - int increaseAmt = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.DamageIncrease.IncreaseItem.Amount"); - String increaseName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.DamageIncrease.IncreaseItem.Name")); - List increaseLore = FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fupgrades.MainMenu.DamageIncrease.IncreaseItem.Lore")); - int increaseLevel = fme.getFaction().getUpgrade(UpgradeType.DAMAGEINCREASE); - - for (int i = 0; i <= increaseLore.size() - 1; i++) { - String line = increaseLore.get(i); - line = line.replace("{level}", increaseLevel + ""); - increaseLore.set(i, line); - } - - ItemStack increaseItem = FactionsPlugin.getInstance().createItem(increaseMaterial, increaseAmt, increaseData, increaseName, increaseLore); - increaseItem.getItemMeta().setLore(increaseLore); - - if (increaseLevel >= 1) { - ItemMeta itemMeta = increaseItem.getItemMeta(); - if (!FactionsPlugin.getInstance().mc17) { - itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - } - itemMeta.addEnchant(Enchantment.DURABILITY, 3, true); - increaseItem.setItemMeta(itemMeta); - - increaseItem.setAmount(increaseLevel); - } - byte tntData = (byte) (FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.TNT.TntItem.Damage")); - Material tntMaterial = XMaterial.parseMaterial(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.TNT.TntItem.Type"), tntData); - int tntAmt = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.TNT.TntItem.Amount"); - String tntName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.TNT.TntItem.Name")); - List tntLore = FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fupgrades.MainMenu.TNT.TntItem.Lore")); - int tntLevel = fme.getFaction().getUpgrade(UpgradeType.TNT); - - for (int i = 0; i <= tntLore.size() - 1; i++) { - String line = tntLore.get(i); - line = line.replace("{level}", tntLevel + ""); - tntLore.set(i, line); - } - - ItemStack tntItem = FactionsPlugin.getInstance().createItem(tntMaterial, tntAmt, tntData, tntName, tntLore); - tntItem.getItemMeta().setLore(tntLore); - - if (tntLevel >= 1) { - ItemMeta itemMeta = tntItem.getItemMeta(); - if (!FactionsPlugin.getInstance().mc17) { - itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - } - itemMeta.addEnchant(Enchantment.DURABILITY, 3, true); - tntItem.setItemMeta(itemMeta); - - tntItem.setAmount(tntLevel); - } - byte warpData = (byte) (FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Warps.WarpItem.Damage")); - Material warpMaterial = XMaterial.parseMaterial(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Warps.WarpItem.Type"), warpData); - int warpAmt = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Warps.WarpItem.Amount"); - String warpName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Warps.WarpItem.Name")); - List warpLore = FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fupgrades.MainMenu.Warps.WarpItem.Lore")); - int warpLevel = fme.getFaction().getUpgrade(UpgradeType.WARP); - - for (int i = 0; i <= warpLore.size() - 1; i++) { - String line = warpLore.get(i); - line = line.replace("{level}", warpLevel + ""); - warpLore.set(i, line); - } - - ItemStack warpItem = FactionsPlugin.getInstance().createItem(warpMaterial, warpAmt, warpData, warpName, warpLore); - warpItem.getItemMeta().setLore(warpLore); - - if (warpLevel >= 1) { - ItemMeta itemMeta = warpItem.getItemMeta(); - if (!FactionsPlugin.getInstance().mc17) { - itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - } - itemMeta.addEnchant(Enchantment.DURABILITY, 3, true); - warpItem.setItemMeta(itemMeta); - - warpItem.setAmount(warpLevel); - } - - byte armorData = (byte) (FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Armor.ArmorItem.Damage")); - Material armorMaterial = XMaterial.parseMaterial(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Armor.ArmorItem.Type"), warpData); - int armorAmt = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Armor.ArmorItem.Amount"); - String armorName = FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fupgrades.MainMenu.Armor.ArmorItem.Name")); - List armorLore = FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fupgrades.MainMenu.Armor.ArmorItem.Lore")); - int armorLevel = fme.getFaction().getUpgrade(UpgradeType.REINFORCEDARMOR); - - for (int i = 0; i <= armorLore.size() - 1; i++) { - String line = armorLore.get(i); - line = line.replace("{level}", armorLevel + ""); - armorLore.set(i, line); - } - - ItemStack armorItem = FactionsPlugin.getInstance().createItem(armorMaterial, armorAmt, armorData, armorName, armorLore); - armorItem.getItemMeta().setLore(armorLore); - - if (armorLevel >= 1) { - ItemMeta itemMeta = armorItem.getItemMeta(); - if (!FactionsPlugin.getInstance().mc17) { - itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - } - itemMeta.addEnchant(Enchantment.DURABILITY, 3, true); - armorItem.setItemMeta(itemMeta); - - armorItem.setAmount(armorLevel); - } - - return new ItemStack[]{expItem, spawnerItem, cropItem, chestItem, powerItem, redItem, memberItem, reduceItem, increaseItem, tntItem, warpItem, armorItem}; - } - - private void updateTntBanks(Faction faction) { - int level = faction.getUpgrade(UpgradeType.TNT); - int size = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.TNT.tnt-limit.level-" + (level)); - faction.setTntBankLimit(size); - } - - private void setWarpLimit(Faction faction) { - int level = faction.getUpgrade(UpgradeType.WARP); - int size = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Warps.warp-limit.level-" + (level)); - faction.setWarpsLimit(size); - } - - private boolean hasMoney(FPlayer fme, int amt) { - return fme.hasMoney(amt); - } - - private boolean takeMoney(FPlayer fme, int amt) { - return fme.takeMoney(amt); - } - - private boolean upgradeItem(FPlayer fme, UpgradeType upgrade, int level, int cost) { - if (hasMoney(fme, cost)) { - if (!takeMoney(fme, cost)) {return false;} - fme.getFaction().setUpgrade(upgrade, level); - fme.getPlayer().closeInventory(); - return true; - } - return false; - } -} diff --git a/src/main/java/com/massivecraft/factions/zcore/fupgrades/UpgradeType.java b/src/main/java/com/massivecraft/factions/zcore/fupgrades/UpgradeType.java index 8d31e440..188ae2bd 100644 --- a/src/main/java/com/massivecraft/factions/zcore/fupgrades/UpgradeType.java +++ b/src/main/java/com/massivecraft/factions/zcore/fupgrades/UpgradeType.java @@ -1,32 +1,82 @@ package com.massivecraft.factions.zcore.fupgrades; +import com.massivecraft.factions.Faction; +import com.massivecraft.factions.FactionsPlugin; +import com.massivecraft.factions.util.Placeholder; +import com.massivecraft.factions.util.XMaterial; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + public enum UpgradeType { /** * @author Illyria Team */ - CHEST("Chest"), - SPAWNER("Spawner"), - EXP("Exp"), - CROP("Crop"), - POWER("Power"), - REDSTONE("Redstone"), - MEMBERS("Members"), - TNT("TNT"), - WARP("Warps"), - DAMAGEINCREASE("DamageIncrease"), - DAMAGEDECREASE("DamageDecrease"), - REINFORCEDARMOR("ReinforcedArmor"); + CHEST("Chest", 3), + SPAWNER("Spawners", 3), + EXP("EXP", 3), + CROP("Crops", 3), + POWER("Power", 3), + REDSTONE("Redstone", 1), + MEMBERS("Members", 3), + TNT("TNT", 3), + WARP("Warps", 3), + DAMAGEINCREASE("DamageIncrease", 3), + DAMAGEDECREASE("DamageReduct", 3), + REINFORCEDARMOR("Armor", 3); private String id; + private int maxLevel; - UpgradeType(String id) { + UpgradeType(String id, int maxLevel) { this.id = id; + this.maxLevel = maxLevel; } @Override public String toString() { return this.id; } + + public int getSlot() { + return FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu." + this.id + ".DisplayItem.Slot"); + } + + public int getMaxLevel() { + return this.maxLevel; + } + + public ItemStack buildAsset(Faction f) { + ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fupgrades.MainMenu." + this.id + ".DisplayItem"); + ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).parseItem(); + int level = f.getUpgrade(this); + ItemMeta meta = item.getItemMeta(); + if (meta != null) { + meta.setLore(FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().replacePlaceholders(config.getStringList("Lore"), new Placeholder("{level}", level + "")))); + meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name"))); + item.setItemMeta(meta); + } + return this.updateLevelStatus(item, level); + } + + private ItemStack updateLevelStatus(ItemStack item, int level) { + if (level >= 2) { + item.setAmount(level); + } + return item; + } + + private ItemStack enchant(ItemStack item) { + ItemMeta itemMeta = item.getItemMeta(); + if (itemMeta != null) { + itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); + itemMeta.addEnchant(Enchantment.DURABILITY, 1, true); + item.setItemMeta(itemMeta); + } + return item; + } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index c42cea04..ae1850bd 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -900,9 +900,9 @@ fchest: fupgrades: Enabled: true MainMenu: + Rows: 5 Title: '&8&l{faction}''s Upgrade Menu' DummyItem: - rows: 5 Name: '&f' Type: BLACK_STAINED_GLASS_PANE Lore: @@ -916,11 +916,9 @@ fupgrades: level-1: 250000 level-2: 500000 level-3: 750000 - CropItem: + DisplayItem: Name: '&c&lGrowth Speed' Type: WHEAT - Amount: 1 - Damage: 0 Lore: - '&7&oIncrease growth &c&ospeed&7&o of crops in &c&oclaims.' - '&7&oChance to Grow Two Levels.' @@ -937,8 +935,7 @@ fupgrades: - '&4&l* &cLevel 3: &f$750,000' - '' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))' - slots: - - 31 + Slot: 31 EXP: EXP-Boost: level-1: 1.5 @@ -948,11 +945,9 @@ fupgrades: level-1: 2000000 level-2: 4000000 level-3: 6000000 - EXPItem: + DisplayItem: Name: '&c&lEXP Drop Rate' Type: EXP_BOTTLE - Amount: 1 - Damage: 0 Lore: - '&7&oIncreased Vanilla &e&oEXP&7&o gained from &c&omonsters&7&o.' - '&7&oYour current level is &e&l&o{level}' @@ -968,8 +963,7 @@ fupgrades: - '&4&l* &cLevel 3: &f$6,000,000' - '' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))' - slots: - - 32 + Slot: 32 Power: Power-Boost: level-1: 100.0 @@ -979,11 +973,9 @@ fupgrades: level-1: 1000000 level-2: 2000000 level-3: 3000000 - PowerItem: + DisplayItem: Name: '&c&lFaction Power' Type: NETHER_STAR - Amount: 1 - Damage: 0 Lore: - '&a&oIncrease&7&o the amount of &c&opower' - '&7&oyour &a&ofaction has&7&o.' @@ -1000,15 +992,13 @@ fupgrades: - '&4&l* &cLevel 3: &f$3,000,000' - '' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))' - slots: - - 22 + Slot: 22 Redstone: - Cost: 1000000 - RedstoneItem: + Cost: + level-1: 1000000 + DisplayItem: Name: '&c&lUnbreakable Redstone' Type: REDSTONE - Amount: 1 - Damage: 0 Lore: - '&7&oPrevents &e&owater&7&o from being' - '&7&oable to break &c&oredstone' @@ -1016,8 +1006,7 @@ fupgrades: - '&4&l* &cCost: &f$1,000,000' - '' - '&7&o(( Tip: &f&oLeft-click&7&o to &c&oupgrade&7&o ))' - slots: - - 23 + Slot: 23 Spawners: Spawner-Boost: # This is a Percentage so .10 means 10% lowered spawner delay! @@ -1028,11 +1017,9 @@ fupgrades: level-1: 1000000 level-2: 2000000 level-3: 3000000 - SpawnerItem: + DisplayItem: Name: '&c&lSpawn Rate' Type: MOB_SPAWNER - Amount: 1 - Damage: 0 Lore: - '&c&oDecreased&7&o mob spawner delay in &a&oclaims&7&o.' - '&7&oYour current level is &e&l&o{level}' @@ -1048,8 +1035,7 @@ fupgrades: - '&4&l* &cLevel 3: &f$3,000,000' - '' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))' - slots: - - 30 + Slot: 30 DamageReduct: DamageReductPercent: level-1: 3 @@ -1059,11 +1045,9 @@ fupgrades: level-1: 2000000 level-2: 4000000 level-3: 6000000 - ReduceItem: + DisplayItem: Name: '&c&lDamage Reduction' Type: GOLD_CHESTPLATE - Amount: 1 - Damage: 0 Lore: - '&a&oReduce&7&o the amount of &a&odamage taken&7&o in faction claims.' - '&7&oYour current level is &e&l&o{level}' @@ -1079,8 +1063,7 @@ fupgrades: - '&4&l* &cLevel 3: &f$6,000,000' - '' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))' - slots: - - 7 + Slot: 7 DamageIncrease: DamageIncreasePercent: level-1: 3 @@ -1090,11 +1073,9 @@ fupgrades: level-1: 2000000 level-2: 4000000 level-3: 6000000 - IncreaseItem: + DisplayItem: Name: '&c&lDamage Increase' Type: DIAMOND_SWORD - Amount: 1 - Damage: 0 Lore: - '&a&oIncrease&7&o the amount of &a&odamage given&7&o.' - '&7&oYour current level is &e&l&o{level}' @@ -1110,8 +1091,7 @@ fupgrades: - '&4&l* &cLevel 3: &f$6,000,000' - '' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))' - slots: - - 1 + Slot: 1 TNT: tnt-limit: level-1: 500000 @@ -1121,11 +1101,9 @@ fupgrades: level-1: 2000000 level-2: 4000000 level-3: 6000000 - TntItem: + DisplayItem: Name: '&c&lTNT Bank' Type: TNT - Amount: 1 - Damage: 0 Lore: - '&a&oUpgrade&7&o your &a&ofactions tnt&7&o limit.' - '&7&oYour current level is &e&l&o{level}' @@ -1141,8 +1119,7 @@ fupgrades: - '&4&l* &cLevel 3: &f$3,000,000' - '' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))' - slots: - - 21 + Slot: 21 Warps: warp-limit: level-1: 3 @@ -1152,11 +1129,9 @@ fupgrades: level-1: 1000000 level-2: 2000000 level-3: 3000000 - WarpItem: + DisplayItem: Name: '&c&lWarps' Type: EYE_OF_ENDER - Amount: 1 - Damage: 0 Lore: - '&a&oIncrease&7&o the &a&ofaction warp&7&o limit.' - '&7&oYour current level is &e&l&o{level}' @@ -1172,8 +1147,7 @@ fupgrades: - '&4&l* &cLevel 3: &f$3,000,000' - '' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))' - slots: - - 24 + Slot: 24 Chest: Chest-Size: # This is rows @@ -1184,11 +1158,9 @@ fupgrades: level-1: 1000000 level-2: 2000000 level-3: 3000000 - ChestItem: + DisplayItem: Name: '&c&lFaction Chest' Type: CHEST - Amount: 1 - Damage: 0 Lore: - '&a&oIncreased&7&o Faction Chest Size.' - '&7&oYour current level is &e&l&o{level}' @@ -1204,8 +1176,7 @@ fupgrades: - '&4&l* &cLevel 3: &f$3,000,000' - '' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))' - slots: - - 20 + Slot: 20 Members: Members-Limit: level-1: 30 @@ -1215,11 +1186,9 @@ fupgrades: level-1: 1000000 level-2: 2000000 level-3: 3000000 - MembersItem: + DisplayItem: Name: '&c&lFaction Members' Type: PAPER - Amount: 1 - Damage: 0 Lore: - '&a&oIncrease&7&o the &a&ofaction member&7&o limit.' - '&7&oYour current level is &e&l&o{level}' @@ -1235,8 +1204,7 @@ fupgrades: - '&4&l* &cLevel 3: &f$3,000,000' - '' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))' - slots: - - 40 + Slot: 40 Armor: Armor-HP-Drop: # HP Drop is in percent so .10 would mean it would drop 10% of the damage to the armor @@ -1247,11 +1215,9 @@ fupgrades: level-1: 1000000 level-2: 2000000 level-3: 3000000 - ArmorItem: + DisplayItem: Name: '&c&lReinforced Armor' Type: DIAMOND_CHESTPLATE - Amount: 1 - Damage: 0 Lore: - '&a&oDecreases&7&o damage done &a&oto armor&7&o.' - '&7&oYour current level is &e&l&o{level}' @@ -1267,8 +1233,7 @@ fupgrades: - '&4&l* &cLevel 3: &f$3,000,000' - '' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))' - slots: - - 4 + Slot: 4 ############################################################ # +------------------------------------------------------+ #