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