diff --git a/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java b/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java index d792200..73d8f99 100644 --- a/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java +++ b/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java @@ -116,17 +116,18 @@ public class StackingTask extends BukkitRunnable { if (configurationSection.getInt("Mobs." + initalEntity.getType().name() + ".Max Stack Size") != -1) maxEntityStackSize = configurationSection.getInt("Mobs." + initalEntity.getType().name() + ".Max Stack Size"); - List entityList = Methods.getSimilarEntitesAroundEntity(initalEntity).stream().filter(entity -> - !entity.hasMetadata("no-stack") - && entity.getCustomName() == null - && stackManager.getStack(entity) != null - && removed.contains(entity.getUniqueId())).collect(Collectors.toList()); + List entityList = Methods.getSimilarEntitesAroundEntity(initalEntity); - for (Entity entity : entityList) { + for (Entity entity : new ArrayList<>(entityList)) { + if (removed.contains(entity.getUniqueId())) continue; EntityStack stack = stackManager.getStack(entity); + if (stack == null && entity.getCustomName() != null) { + entityList.remove(entity); + continue; + } //If a stack was found add 1 to this stack. - if ((stack.getAmount() + amtToStack) <= maxEntityStackSize) { + if (stack != null && (stack.getAmount() + amtToStack) <= maxEntityStackSize) { stack.addAmount(amtToStack); stack.updateStack(); removed.add(initalEntity.getUniqueId()); @@ -134,6 +135,7 @@ public class StackingTask extends BukkitRunnable { continue nextEntity; } + } if (initialStack != null) continue; diff --git a/src/main/java/com/songoda/ultimatestacker/utils/Methods.java b/src/main/java/com/songoda/ultimatestacker/utils/Methods.java index 168c370..c7b0fad 100644 --- a/src/main/java/com/songoda/ultimatestacker/utils/Methods.java +++ b/src/main/java/com/songoda/ultimatestacker/utils/Methods.java @@ -41,7 +41,6 @@ public class Methods { UltimateStacker instance = UltimateStacker.getInstance(); EntityStackManager stackManager = instance.getEntityStackManager(); Entity newEntity = newEntity(killed); - killed.setMetadata("no-stack", new FixedMetadataValue(instance, true)); ((LivingEntity) newEntity).getEquipment().clear(); @@ -71,7 +70,8 @@ public class Methods { if (!stackManager.isStacked(killed)) return; killed.setCustomName(null); - killed.setCustomNameVisible(false); + killed.setCustomNameVisible(true); + killed.setCustomName(formatText("&7")); EntityStack stack = stackManager.getStack(killed);