From a21f47e193c4ab41ebe82ea66436be655fa579fe Mon Sep 17 00:00:00 2001 From: Maroon28 <74205260+Maroon28@users.noreply.github.com> Date: Sat, 7 Aug 2021 14:58:04 +0200 Subject: [PATCH] Don't remove monster weapons. Changes the way monster equipment is handled from clearing _all_ items to clearing just the armor contents. This means that monsters that naturally spawn with weapons won't need their weapons added back in. It also means that monsters that _occasionally_ spawn naturally with weapons now may do that in arenas. This is deemed acceptable, because: - occasional weapons don't have as much of an impact as occasional armor, - the forwards compatibility aspect is too valuable to pass up on, and - should occasional weapons become too much of an issue, they can be conditionally removed, i.e. we can implement the _inverse_ behavior of what we had previously. Fixes #641 Fixes #686 Co-authored-by: Andreas Troelsen --- changelog.md | 2 ++ .../com/garbagemule/MobArena/waves/MACreature.java | 10 ++-------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/changelog.md b/changelog.md index 454c40d..9f70c35 100644 --- a/changelog.md +++ b/changelog.md @@ -18,9 +18,11 @@ These changes will (most likely) be included in the next version. ### Changed - MobArena now targets the Minecraft 1.17 version of the Spigot API (but still works on 1.13-1.16). This should make it easier to tackle feature requests and bug reports related to modern Minecraft. +- Monsters are no longer stripped of the _weapons_ they spawn with naturally, only their _armor_. This should improve forwards compatibility with new weapon-reliant monsters. - The regex pattern for the player list command is now less greedy, so it will only match on `/ma players`, `/ma playerlist`, and `/ma player-list`. The previous pattern matched on anything that starts with `player`, which rendered the `/ma player-stats` command in MobArenaStats impossible to invoke. ### Fixed +- Pillagers and vindicators no longer spawn without their much-needed weapons. - Reward groups with `nothing` in them no longer cause errors when earned/granted. ## [0.106] - 2021-05-09 diff --git a/src/main/java/com/garbagemule/MobArena/waves/MACreature.java b/src/main/java/com/garbagemule/MobArena/waves/MACreature.java index 99bdfa7..774c2ce 100644 --- a/src/main/java/com/garbagemule/MobArena/waves/MACreature.java +++ b/src/main/java/com/garbagemule/MobArena/waves/MACreature.java @@ -30,6 +30,7 @@ public class MACreature { private static final Map map = new HashMap<>(); private static final List colors = Arrays.asList(DyeColor.values()); + private static final ItemStack[] NO_ARMOR = new ItemStack[0]; static { registerEntityTypeValues(); @@ -88,8 +89,8 @@ public class MACreature { public LivingEntity spawn(Arena arena, World world, Location loc) { LivingEntity e = (LivingEntity) world.spawnEntity(loc, type); - e.getEquipment().clear(); e.setCanPickupItems(false); + e.getEquipment().setArmorContents(NO_ARMOR); switch (this.name) { case "sheep": @@ -128,10 +129,6 @@ public class MACreature { case "magmacubehuge": ((Slime) e).setSize(4); break; - case "skeleton": - case "stray": - e.getEquipment().setItemInMainHand(new ItemStack(Material.BOW, 1)); - break; case "babyzombievillager": case "babyzombie": ((Zombie) e).setBaby(true); @@ -149,9 +146,6 @@ public class MACreature { case "killerbunny": ((Rabbit) e).setRabbitType(Rabbit.Type.THE_KILLER_BUNNY); break; - case "witherskeleton": - e.getEquipment().setItemInMainHand(new ItemStack(Material.STONE_SWORD, 1)); - break; default: break; }