diff --git a/pom.xml b/pom.xml index 6d8dc7b..36fb08e 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ com.rsscripting rs-mobstand - 1.0.5 + 1.1.0 RS-MobStand diff --git a/src/main/java/com/rsscripting/mobstand/gui/StandMenu.java b/src/main/java/com/rsscripting/mobstand/gui/StandMenu.java index a947628..0565e7e 100644 --- a/src/main/java/com/rsscripting/mobstand/gui/StandMenu.java +++ b/src/main/java/com/rsscripting/mobstand/gui/StandMenu.java @@ -33,7 +33,7 @@ public class StandMenu { new RSMenuHolder( "MAIN" ), - 18, + 27, MENU_TITLE ); @@ -66,6 +66,9 @@ public class StandMenu { boolean paused = standManager.isPaused(armorStand); + boolean arms = + armorStand.hasArms(); + ItemStack filler = new ItemStack(Material.WHITE_STAINED_GLASS_PANE); @@ -362,6 +365,53 @@ public class StandMenu { inventory.setItem(11, gravityItem); +// Arms toggle + ItemStack armsItem = + new ItemStack( + Material.IRON_SWORD + ); + + ItemMeta armsMeta = + armsItem.getItemMeta(); + + if (armsMeta != null) { + + armsMeta.setDisplayName( + (arms + ? ChatColor.GREEN + : ChatColor.RED) + + "Arms" + ); + + armsMeta.setLore(List.of( + ChatColor.GRAY + "Current: " + + (arms + ? ChatColor.GREEN + "Enabled" + : ChatColor.RED + "Disabled"), + "", + ChatColor.YELLOW + "Click to toggle." + )); + + if (arms) { + + armsMeta.addEnchant( + Enchantment.UNBREAKING, + 1, + true + ); + + armsMeta.addItemFlags( + ItemFlag.HIDE_ENCHANTS + ); + + } + + armsItem.setItemMeta(armsMeta); + + } + + inventory.setItem(22, armsItem); + player.openInventory(inventory); } diff --git a/src/main/java/com/rsscripting/mobstand/listeners/MenuListener.java b/src/main/java/com/rsscripting/mobstand/listeners/MenuListener.java index 62d802d..a3576b4 100644 --- a/src/main/java/com/rsscripting/mobstand/listeners/MenuListener.java +++ b/src/main/java/com/rsscripting/mobstand/listeners/MenuListener.java @@ -828,6 +828,34 @@ public class MenuListener implements Listener { return; } + + // Arms toggle + if (event.getSlot() == 22) { + + boolean arms = + armorStand.hasArms(); + + arms = !arms; + + armorStand.setArms(arms); + + player.sendMessage( + arms + ? ChatColor.GREEN + + "MobStand arms enabled." + : ChatColor.GREEN + + "MobStand arms disabled." + ); + + StandMenu.open( + plugin, + player, + armorStand + ); + + return; + } + // Open leave Alive Menu if (event.getSlot() == 13) { diff --git a/src/main/java/com/rsscripting/mobstand/managers/StandManager.java b/src/main/java/com/rsscripting/mobstand/managers/StandManager.java index e7669c9..6bc8899 100644 --- a/src/main/java/com/rsscripting/mobstand/managers/StandManager.java +++ b/src/main/java/com/rsscripting/mobstand/managers/StandManager.java @@ -302,6 +302,8 @@ public class StandManager { armorStand.setCustomNameVisible(false); + armorStand.setArms(false); + armorStand.setGravity(true); } diff --git a/src/main/java/com/rsscripting/mobstand/tasks/SlaughterTask.java b/src/main/java/com/rsscripting/mobstand/tasks/SlaughterTask.java index e1e0a16..a7eb94c 100644 --- a/src/main/java/com/rsscripting/mobstand/tasks/SlaughterTask.java +++ b/src/main/java/com/rsscripting/mobstand/tasks/SlaughterTask.java @@ -124,6 +124,12 @@ public class SlaughterTask extends BukkitRunnable { String entityName = entityType.name(); + boolean configuredAdult = + adultMobs.contains(entityName); + + boolean configuredBaby = + babyMobs.contains(entityName); + boolean killAll = false; boolean shouldKill; @@ -134,6 +140,10 @@ public class SlaughterTask extends BukkitRunnable { // Adult mob if (ageable.isAdult()) { + if (!configuredAdult) { + continue; + } + List disabledAdultMobs = standManager.getDisabledAdultMobs( armorStand @@ -161,6 +171,10 @@ public class SlaughterTask extends BukkitRunnable { // Baby mob else { + if (!configuredBaby) { + continue; + } + List disabledBabyMobs = standManager.getDisabledBabyMobs( armorStand @@ -190,6 +204,10 @@ public class SlaughterTask extends BukkitRunnable { // Non-ageable mobs else { + if (!configuredAdult) { + continue; + } + List disabledAdultMobs = standManager.getDisabledAdultMobs( armorStand