From 3aca1005309cee9bd5e2add06b2acbd393b73852 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 10 Dec 2018 19:11:12 +0000 Subject: [PATCH] Build 43 # Added the command '/island value' to get the value (points) earned from a material in the players hand. # Added the permission note 'skyblock.value' to perform the command '/island value'. # Added the configurable option 'Island.Settings.Hunger' to enable/disable the 'Hunger' setting in the 'Island Settings' menu (Disabled by default). # Added the 'Hunger' setting to the 'Island Settings' menu. # Added the placeholder 'skyblock_island_invites' to get the active number of invites for the island. # Added the placeholder 'skyblock_island_coops' to get the number of cooped players at the island. # Added the placeholder 'skyblock_island_coops_total' to get the number of cooped players. # Added economy support for Coins (https://www.spigotmc.org/resources/coins-1-8-x-1-12-x-mysql-sqlite-api.48536/). # Fixed being able to go further than the end index of the help command pages. # Fixed new settings being set to false when being added to the island. --- pom.xml | 7 +- .../me/goodandevil/skyblock/SkyBlock.java | 2 + .../goodandevil/skyblock/api/SkyBlockAPI.java | 2 +- .../skyblock/command/CommandManager.java | 10 + .../command/commands/ValueCommand.java | 119 +++++ .../skyblock/economy/EconomyManager.java | 23 +- .../goodandevil/skyblock/island/Island.java | 3 +- .../skyblock/levelling/LevellingManager.java | 10 + .../goodandevil/skyblock/listeners/Food.java | 36 ++ .../goodandevil/skyblock/menus/Settings.java | 416 +++++++++++++----- .../skyblock/menus/admin/Settings.java | 275 +++++++++--- .../skyblock/placeholder/MVdWPlaceholder.java | 39 ++ .../placeholder/PlaceholderManager.java | 44 ++ src/main/resources/config.yml | 3 + src/main/resources/language.yml | 30 ++ src/main/resources/plugin.yml | 2 +- src/main/resources/settings.yml | 3 +- 17 files changed, 832 insertions(+), 192 deletions(-) create mode 100644 src/main/java/me/goodandevil/skyblock/command/commands/ValueCommand.java create mode 100644 src/main/java/me/goodandevil/skyblock/listeners/Food.java diff --git a/pom.xml b/pom.xml index 391e0d7f..f02a4e65 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ com.songoda SkyBlock 4.0.0 - 42 + 43 clean package @@ -39,6 +39,11 @@ vault LATEST + + net.nifheim.beelzubu + coins + 2.3.2 + org.spigotmc spigot diff --git a/src/main/java/me/goodandevil/skyblock/SkyBlock.java b/src/main/java/me/goodandevil/skyblock/SkyBlock.java index 4135421f..7c6a7471 100644 --- a/src/main/java/me/goodandevil/skyblock/SkyBlock.java +++ b/src/main/java/me/goodandevil/skyblock/SkyBlock.java @@ -25,6 +25,7 @@ import me.goodandevil.skyblock.listeners.Bucket; import me.goodandevil.skyblock.listeners.Chat; import me.goodandevil.skyblock.listeners.Death; import me.goodandevil.skyblock.listeners.Entity; +import me.goodandevil.skyblock.listeners.Food; import me.goodandevil.skyblock.listeners.Interact; import me.goodandevil.skyblock.listeners.Inventory; import me.goodandevil.skyblock.listeners.Item; @@ -139,6 +140,7 @@ public class SkyBlock extends JavaPlugin { pluginManager.registerEvents(new Respawn(this), this); pluginManager.registerEvents(new Chat(this), this); pluginManager.registerEvents(new Spawner(this), this); + pluginManager.registerEvents(new Food(this), this); pluginManager.registerEvents(new Rollback(), this); pluginManager.registerEvents(new Levelling(), this); diff --git a/src/main/java/me/goodandevil/skyblock/api/SkyBlockAPI.java b/src/main/java/me/goodandevil/skyblock/api/SkyBlockAPI.java index a6650a92..9484775a 100644 --- a/src/main/java/me/goodandevil/skyblock/api/SkyBlockAPI.java +++ b/src/main/java/me/goodandevil/skyblock/api/SkyBlockAPI.java @@ -144,7 +144,7 @@ public class SkyBlockAPI { } /** - * Checks if a player has permission at a location at an Island for a Setting + * Checks if a player has permission at a location of an Island for a Setting * * @return true of conditions met, false otherwise */ diff --git a/src/main/java/me/goodandevil/skyblock/command/CommandManager.java b/src/main/java/me/goodandevil/skyblock/command/CommandManager.java index f56da4f7..cf7c84eb 100644 --- a/src/main/java/me/goodandevil/skyblock/command/CommandManager.java +++ b/src/main/java/me/goodandevil/skyblock/command/CommandManager.java @@ -51,6 +51,7 @@ import me.goodandevil.skyblock.command.commands.SettingsCommand; import me.goodandevil.skyblock.command.commands.TeleportCommand; import me.goodandevil.skyblock.command.commands.UnbanCommand; import me.goodandevil.skyblock.command.commands.UpgradeCommand; +import me.goodandevil.skyblock.command.commands.ValueCommand; import me.goodandevil.skyblock.command.commands.VisitCommand; import me.goodandevil.skyblock.command.commands.VisitorsCommand; import me.goodandevil.skyblock.command.commands.VoteCommand; @@ -143,6 +144,8 @@ public class CommandManager implements CommandExecutor, TabCompleter { // configLoad.getString("Command.Island.Rollback.Info.Message")))); subCommands.add(new LevelCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Level.Info.Message")))); + subCommands.add(new ValueCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Command.Island.Value.Info.Message")))); subCommands.add(new SettingsCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Settings.Info.Message")))); subCommands.add(new InformationCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', @@ -454,6 +457,13 @@ public class CommandManager implements CommandExecutor, TabCompleter { boolean showAlises = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) .getFileConfiguration().getBoolean("Command.Help.Aliases.Enable"); + if (nextEndIndex <= -7) { + skyblock.getMessageManager().sendMessage(player, configLoad.getString("Command.Island.Help.Page.Message")); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + String subCommandText = ""; if (type == CommandManager.Type.Admin) { diff --git a/src/main/java/me/goodandevil/skyblock/command/commands/ValueCommand.java b/src/main/java/me/goodandevil/skyblock/command/commands/ValueCommand.java new file mode 100644 index 00000000..7253a197 --- /dev/null +++ b/src/main/java/me/goodandevil/skyblock/command/commands/ValueCommand.java @@ -0,0 +1,119 @@ +package me.goodandevil.skyblock.command.commands; + +import java.io.File; + +import org.apache.commons.lang3.text.WordUtils; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import me.goodandevil.skyblock.SkyBlock; +import me.goodandevil.skyblock.command.CommandManager; +import me.goodandevil.skyblock.command.SubCommand; +import me.goodandevil.skyblock.command.CommandManager.Type; +import me.goodandevil.skyblock.config.FileManager; +import me.goodandevil.skyblock.config.FileManager.Config; +import me.goodandevil.skyblock.levelling.LevellingManager; +import me.goodandevil.skyblock.levelling.Material; +import me.goodandevil.skyblock.message.MessageManager; +import me.goodandevil.skyblock.sound.SoundManager; +import me.goodandevil.skyblock.utils.NumberUtil; +import me.goodandevil.skyblock.utils.version.Materials; +import me.goodandevil.skyblock.utils.version.NMSUtil; +import me.goodandevil.skyblock.utils.version.Sounds; + +public class ValueCommand extends SubCommand { + + private final SkyBlock skyblock; + private String info; + + public ValueCommand(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @SuppressWarnings("deprecation") + @Override + public void onCommandByPlayer(Player player, String[] args) { + LevellingManager levellingManager = skyblock.getLevellingManager(); + MessageManager messageManager = skyblock.getMessageManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (player.hasPermission("skyblock.value") || player.hasPermission("skyblock.*")) { + if (player.getItemInHand() == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Value.Hand.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + Materials materials = null; + + if (NMSUtil.getVersionNumber() < 13) { + materials = Materials.requestMaterials(player.getItemInHand().getType().name(), + (byte) player.getItemInHand().getDurability()); + } else { + materials = Materials.fromString(player.getItemInHand().getType().name()); + } + + if (materials != null && levellingManager.containsMaterials(materials)) { + Material material = levellingManager.getMaterial(materials); + double level = (double) material.getPoints() + / (double) fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getInt("Island.Levelling.Division"); + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Value.Value.Message") + .replace("%material", + WordUtils.capitalizeFully(materials.name().toLowerCase().replace("_", " "))) + .replace("%points", "" + material.getPoints()) + .replace("%level", "" + NumberUtil.formatNumber(level))); + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Value.None.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Value.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "value"; + } + + @Override + public String getInfo() { + return info; + } + + @Override + public SubCommand setInfo(String info) { + this.info = info; + + return this; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } + + @Override + public Type getType() { + return CommandManager.Type.Default; + } +} diff --git a/src/main/java/me/goodandevil/skyblock/economy/EconomyManager.java b/src/main/java/me/goodandevil/skyblock/economy/EconomyManager.java index 52d4298c..6d324441 100644 --- a/src/main/java/me/goodandevil/skyblock/economy/EconomyManager.java +++ b/src/main/java/me/goodandevil/skyblock/economy/EconomyManager.java @@ -5,16 +5,18 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.RegisteredServiceProvider; import net.milkbowl.vault.economy.Economy; +import net.nifheim.beelzebu.coins.CoinsAPI; public class EconomyManager { + private EconomyPlugin economyPlugin; private Economy economy; public EconomyManager() { - setupVault(); + setup(); } - public void setupVault() { + public void setup() { if (Bukkit.getServer().getPluginManager().getPlugin("Vault") != null) { RegisteredServiceProvider registeredServiceProvider = Bukkit.getServer().getServicesManager() .getRegistration(Economy.class); @@ -22,12 +24,18 @@ public class EconomyManager { if (registeredServiceProvider != null) { economy = registeredServiceProvider.getProvider(); } + + economyPlugin = EconomyPlugin.Vault; + } else if (Bukkit.getServer().getPluginManager().getPlugin("Coins") != null) { + economyPlugin = EconomyPlugin.Coins; } } public double getBalance(Player player) { if (economy != null) { return economy.getBalance(player); + } else if (economyPlugin == EconomyPlugin.Coins) { + return CoinsAPI.getCoins(player.getUniqueId()); } return 0.0D; @@ -44,14 +52,23 @@ public class EconomyManager { public void withdraw(Player player, double money) { if (economy != null) { economy.withdrawPlayer(player, money); + } else if (economyPlugin == EconomyPlugin.Coins) { + CoinsAPI.takeCoins(player.getUniqueId(), money); } } public boolean isEconomy() { - if (Bukkit.getServer().getPluginManager().getPlugin("Vault") == null) { + if (Bukkit.getServer().getPluginManager().getPlugin("Vault") == null + && Bukkit.getServer().getPluginManager().getPlugin("Coins") == null) { return false; } return true; } + + public enum EconomyPlugin { + + Vault, Coins; + + } } diff --git a/src/main/java/me/goodandevil/skyblock/island/Island.java b/src/main/java/me/goodandevil/skyblock/island/Island.java index 0d97c39b..999e0c7e 100644 --- a/src/main/java/me/goodandevil/skyblock/island/Island.java +++ b/src/main/java/me/goodandevil/skyblock/island/Island.java @@ -167,7 +167,8 @@ public class Island { for (String settingList : defaultSettingsConfig.getFileConfiguration() .getConfigurationSection("Settings." + roleList.name()).getKeys(false)) { - if (settingsDataConfig == null) { + if (settingsDataConfig == null || settingsDataConfig.getFileConfiguration() + .getString("Settings." + roleList.name() + "." + settingList) == null) { settings.add(new Setting(settingList, defaultSettingsConfig.getFileConfiguration() .getBoolean("Settings." + roleList.name() + "." + settingList))); } else { diff --git a/src/main/java/me/goodandevil/skyblock/levelling/LevellingManager.java b/src/main/java/me/goodandevil/skyblock/levelling/LevellingManager.java index a4eb1955..8de8e8a7 100644 --- a/src/main/java/me/goodandevil/skyblock/levelling/LevellingManager.java +++ b/src/main/java/me/goodandevil/skyblock/levelling/LevellingManager.java @@ -233,6 +233,16 @@ public class LevellingManager { return false; } + public Material getMaterial(Materials materials) { + for (Material materialList : materialStorage) { + if (materialList.getMaterials().name().equals(materials.name())) { + return materialList; + } + } + + return null; + } + public List getMaterials() { return materialStorage; } diff --git a/src/main/java/me/goodandevil/skyblock/listeners/Food.java b/src/main/java/me/goodandevil/skyblock/listeners/Food.java new file mode 100644 index 00000000..ea312da8 --- /dev/null +++ b/src/main/java/me/goodandevil/skyblock/listeners/Food.java @@ -0,0 +1,36 @@ +package me.goodandevil.skyblock.listeners; + +import java.io.File; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.FoodLevelChangeEvent; + +import me.goodandevil.skyblock.SkyBlock; +import me.goodandevil.skyblock.island.IslandRole; +import me.goodandevil.skyblock.island.Location; + +public class Food implements Listener { + + private final SkyBlock skyblock; + + public Food(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @EventHandler + public void onFoodLevelChange(FoodLevelChangeEvent event) { + Player player = (Player) event.getEntity(); + + if (player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) + || player.getWorld().getName() + .equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) { + if (skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable") + && !skyblock.getIslandManager().hasSetting(player.getLocation(), IslandRole.Owner, "Hunger")) { + event.setCancelled(true); + } + } + } +} diff --git a/src/main/java/me/goodandevil/skyblock/menus/Settings.java b/src/main/java/me/goodandevil/skyblock/menus/Settings.java index a978ad43..ec60ea74 100644 --- a/src/main/java/me/goodandevil/skyblock/menus/Settings.java +++ b/src/main/java/me/goodandevil/skyblock/menus/Settings.java @@ -746,133 +746,325 @@ public class Settings { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.PvP.Enable")) { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 9); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(island, role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", - new ItemStack(Material.ITEM_FRAME)), 16); - nInv.addItemStack(createItem(island, role, "Damage", Materials.ROSE_RED.parseItem()), - 17); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 14); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.ROSE_RED.parseItem()), 16); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 17); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 16); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.ROSE_RED.parseItem()), 17); + } } else { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 11); - nInv.addItemStack( - createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); - nInv.addItemStack( - createItem(island, role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", - new ItemStack(Material.ITEM_FRAME)), 16); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 16); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 17); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 13); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 16); + } } } else { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 11); - nInv.addItemStack( - createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); - nInv.addItemStack( - createItem(island, role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(island, role, "Damage", Materials.ROSE_RED.parseItem()), - 16); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.ROSE_RED.parseItem()), 16); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 17); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 13); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.ROSE_RED.parseItem()), 16); + } } else { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 11); - nInv.addItemStack( - createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), 14); - nInv.addItemStack( - createItem(island, role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 15); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 16); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 13); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 16); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 14); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 15); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 16); + } } } } else { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(island, role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 13); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); - nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", - new ItemStack(Material.ITEM_FRAME)), 15); - nInv.addItemStack(createItem(island, role, "Damage", Materials.ROSE_RED.parseItem()), - 16); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 11); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 12); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 14); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.ROSE_RED.parseItem()), 16); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 17); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 14); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.ROSE_RED.parseItem()), 16); + } } else { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(island, role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", - new ItemStack(Material.ITEM_FRAME)), 16); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 14); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 16); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 16); + } } } else { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(island, role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(island, role, "Damage", Materials.ROSE_RED.parseItem()), - 16); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 14); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.ROSE_RED.parseItem()), 15); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 16); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.ROSE_RED.parseItem()), 16); + } } else { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 11); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 12); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); - nInv.addItemStack( - createItem(island, role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 16); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 11); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 12); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 13); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + } } } } diff --git a/src/main/java/me/goodandevil/skyblock/menus/admin/Settings.java b/src/main/java/me/goodandevil/skyblock/menus/admin/Settings.java index 0f24a713..63808b5b 100644 --- a/src/main/java/me/goodandevil/skyblock/menus/admin/Settings.java +++ b/src/main/java/me/goodandevil/skyblock/menus/admin/Settings.java @@ -438,93 +438,224 @@ public class Settings { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.PvP.Enable")) { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 10); - nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack(createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), - 16); - nInv.addItemStack(createItem(role, "Damage", Materials.ROSE_RED.parseItem()), 17); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack(createItem(role, "Damage", Materials.ROSE_RED.parseItem()), 16); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 17); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 16); + nInv.addItemStack(createItem(role, "Damage", Materials.ROSE_RED.parseItem()), 17); + } } else { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 11); - nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); - nInv.addItemStack(createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), - 16); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 16); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 17); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 16); + } } } else { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 11); - nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); - nInv.addItemStack(createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(role, "Damage", Materials.ROSE_RED.parseItem()), 16); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack(createItem(role, "Damage", Materials.ROSE_RED.parseItem()), 16); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 17); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack(createItem(role, "Damage", Materials.ROSE_RED.parseItem()), 16); + } } else { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 11); - nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 14); - nInv.addItemStack(createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 15); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 16); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 16); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 14); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 15); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 16); + } } } } else { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack(createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 13); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); - nInv.addItemStack(createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), - 15); - nInv.addItemStack(createItem(role, "Damage", Materials.ROSE_RED.parseItem()), 16); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 11); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 12); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack(createItem(role, "Damage", Materials.ROSE_RED.parseItem()), 16); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 17); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack(createItem(role, "Damage", Materials.ROSE_RED.parseItem()), 16); + } } else { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack(createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), - 16); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 16); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 16); + } } } else { if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack(createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(role, "Damage", Materials.ROSE_RED.parseItem()), 16); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); + nInv.addItemStack(createItem(role, "Damage", Materials.ROSE_RED.parseItem()), 15); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 16); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack(createItem(role, "Damage", Materials.ROSE_RED.parseItem()), 16); + } } else { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 11); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), 12); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); - nInv.addItemStack(createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), - 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 16); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 11); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 12); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + } } } } diff --git a/src/main/java/me/goodandevil/skyblock/placeholder/MVdWPlaceholder.java b/src/main/java/me/goodandevil/skyblock/placeholder/MVdWPlaceholder.java index c7c4b83f..836ab0c5 100644 --- a/src/main/java/me/goodandevil/skyblock/placeholder/MVdWPlaceholder.java +++ b/src/main/java/me/goodandevil/skyblock/placeholder/MVdWPlaceholder.java @@ -283,6 +283,32 @@ public class MVdWPlaceholder { } }); + PlaceholderAPI.registerPlaceholder(skyblock, "skyblock_island_coops", new PlaceholderReplacer() { + @Override + public String onPlaceholderReplace(PlaceholderReplaceEvent event) { + Player player = event.getPlayer(); + + if (player == null) { + return null; + } + + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); + } + }); + + PlaceholderAPI.registerPlaceholder(skyblock, "skyblock_island_coops_total", new PlaceholderReplacer() { + @Override + public String onPlaceholderReplace(PlaceholderReplaceEvent event) { + Player player = event.getPlayer(); + + if (player == null) { + return null; + } + + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); + } + }); + PlaceholderAPI.registerPlaceholder(skyblock, "skyblock_island_visitors", new PlaceholderReplacer() { @Override public String onPlaceholderReplace(PlaceholderReplaceEvent event) { @@ -295,5 +321,18 @@ public class MVdWPlaceholder { return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); + + PlaceholderAPI.registerPlaceholder(skyblock, "skyblock_island_invites", new PlaceholderReplacer() { + @Override + public String onPlaceholderReplace(PlaceholderReplaceEvent event) { + Player player = event.getPlayer(); + + if (player == null) { + return null; + } + + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); + } + }); } } diff --git a/src/main/java/me/goodandevil/skyblock/placeholder/PlaceholderManager.java b/src/main/java/me/goodandevil/skyblock/placeholder/PlaceholderManager.java index 32384021..d101c952 100644 --- a/src/main/java/me/goodandevil/skyblock/placeholder/PlaceholderManager.java +++ b/src/main/java/me/goodandevil/skyblock/placeholder/PlaceholderManager.java @@ -3,6 +3,7 @@ package me.goodandevil.skyblock.placeholder; import java.io.File; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.UUID; import org.bukkit.Bukkit; @@ -13,6 +14,7 @@ import org.bukkit.plugin.PluginManager; import me.goodandevil.skyblock.SkyBlock; import me.goodandevil.skyblock.config.FileManager.Config; +import me.goodandevil.skyblock.invite.Invite; import me.goodandevil.skyblock.island.Island; import me.goodandevil.skyblock.island.IslandManager; import me.goodandevil.skyblock.island.IslandRole; @@ -212,6 +214,24 @@ public class PlaceholderManager { configLoad.getString("Placeholder.skyblock_island_operators.Non-empty.Message") .replace("%placeholder", "" + island.getRole(IslandRole.Operator).size())); } + } else if (placeholder.equalsIgnoreCase("skyblock_island_coops")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.skyblock_island_coops.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.skyblock_island_coops.Non-empty.Message") + .replace("%placeholder", "" + islandManager.getCoopPlayersAtIsland(island).size())); + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_coops_total")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.skyblock_island_coops_total.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.skyblock_island_coops_total.Non-empty.Message") + .replace("%placeholder", "" + island.getCoopPlayers().size())); + } } else if (placeholder.equalsIgnoreCase("skyblock_island_visitors")) { if (island == null) { return ChatColor.translateAlternateColorCodes('&', @@ -221,6 +241,27 @@ public class PlaceholderManager { configLoad.getString("Placeholder.skyblock_island_visitors.Non-empty.Message") .replace("%placeholder", "" + islandManager.getVisitorsAtIsland(island).size())); } + } else if (placeholder.equalsIgnoreCase("skyblock_island_invites")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.skyblock_island_invites.Empty.Message")); + } else { + Map invites = skyblock.getInviteManager().getInvites(); + int invitedPlayers = 0; + + for (int i = 0; i < invites.size(); i++) { + UUID uuid = (UUID) invites.keySet().toArray()[i]; + Invite invite = invites.get(uuid); + + if (invite.getOwnerUUID().equals(island.getOwnerUUID())) { + invitedPlayers++; + } + } + + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.skyblock_island_invites.Non-empty.Message") + .replace("%placeholder", "" + invitedPlayers)); + } } return ""; @@ -241,7 +282,10 @@ public class PlaceholderManager { placeholders.add("skyblock_island_members_total"); placeholders.add("skyblock_island_members"); placeholders.add("skyblock_island_operators"); + placeholders.add("skyblock_island_coops"); + placeholders.add("skyblock_island_coops_total"); placeholders.add("skyblock_island_visitors"); + placeholders.add("skyblock_island_invites"); return placeholders; } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index d9178b30..bce50028 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -206,6 +206,9 @@ Island: # void damage. Damage: Enable: true + # When disabled, the hunger setting will be removed from the Island Settings menu. + Hunger: + Enable: false Admin: Structure: # Item Material used to select positions for a structure. diff --git a/src/main/resources/language.yml b/src/main/resources/language.yml index 3b2af246..08f87463 100644 --- a/src/main/resources/language.yml +++ b/src/main/resources/language.yml @@ -411,6 +411,17 @@ Command: Minute: "minute(s)" Second: "second(s)" Message: "&bSkyBlock &8| &cError&8: &eYou must wait &c&o%time &ebefore processing an Island level request." + Value: + Info: + Message: "&f&oGets the value of a material in your hand." + Permission: + Message: "&bSkyBlock &8| &cError&8: &eYou don't have permission to get the value of an item." + Hand: + Message: "&bSkyBlock &8| &cError&8: &eYou must be holding an item in your hand." + None: + Message: "&bSkyBlock &8| &cError&8: &eCannot get the value of that material." + Value: + Message: "&bSkyBlock &8| &aInfo&8: &eThe value of the material '&d%material&e' is &d%points &epoints and has a &d%level &elevel increase." Settings: Info: Message: "&f&oOpen the Island Settings menu." @@ -1047,11 +1058,26 @@ Placeholder: Message: "&c0" Non-empty: Message: "&f%placeholder" + skyblock_island_coops: + Empty: + Message: "&c0" + Non-empty: + Message: "&f%placeholder" + skyblock_island_coops_total: + Empty: + Message: "&c0" + Non-empty: + Message: "&f%placeholder" skyblock_island_visitors: Empty: Message: "&c0" Non-empty: Message: "&f%placeholder" + skyblock_island_invites: + Empty: + Message: "&c0" + Non-empty: + Message: "&f%placeholder" Hologram: Leaderboard: Level: @@ -1936,6 +1962,8 @@ Menu: Displayname: "&aKeep Items on Death" Damage: Displayname: "&aDamage" + Hunger: + Displayname: "&aHunger" Default: Item: Setting: @@ -3004,6 +3032,8 @@ Menu: Displayname: "&aKeep Items on Death" Damage: Displayname: "&aDamage" + Hunger: + Displayname: "&aHunger" Default: Item: Setting: diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index eedac8cc..1c39d0bf 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: SkyBlock main: me.goodandevil.skyblock.SkyBlock -version: 42 +version: 43 api-version: 1.13 description: A unique SkyBlock plugin author: GoodAndEvil diff --git a/src/main/resources/settings.yml b/src/main/resources/settings.yml index ce6f8633..7ac9ac80 100644 --- a/src/main/resources/settings.yml +++ b/src/main/resources/settings.yml @@ -154,4 +154,5 @@ Settings: FireSpread: true LeafDecay: true KeepItemsOnDeath: true - Damage: true \ No newline at end of file + Damage: true + Hunger: true \ No newline at end of file