From 7ba2e747f6648dc0a9a503731df14ef8f6195006 Mon Sep 17 00:00:00 2001 From: Brianna Date: Mon, 17 Jun 2019 17:48:34 -0400 Subject: [PATCH] Fix for drowned zombies. --- .gitlab-ci.yml | 3 +-- .../listeners/EntityListeners.java | 20 +++++++++++++++++-- .../ultimatestacker/utils/Methods.java | 12 +++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fef8fe6..02bd1fd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,5 +18,4 @@ build: artifacts: name: $name-$version paths: - - "$path/*.jar" - + - "$path/*.jar" \ No newline at end of file diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/EntityListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/EntityListeners.java index 3fcf539..9998c6f 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/EntityListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/EntityListeners.java @@ -7,6 +7,8 @@ import com.songoda.ultimatestacker.spawner.SpawnerStack; import com.songoda.ultimatestacker.utils.Methods; import com.songoda.ultimatestacker.utils.ServerVersion; import com.songoda.ultimatestacker.utils.settings.Setting; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; @@ -17,7 +19,6 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.EntityExplodeEvent; -import org.bukkit.event.entity.EntitySpawnEvent; import org.bukkit.event.entity.ItemSpawnEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.metadata.FixedMetadataValue; @@ -36,7 +37,22 @@ public class EntityListeners implements Listener { @EventHandler public void onSpawn(CreatureSpawnEvent event) { - event.getEntity().setMetadata("US_REASON", new FixedMetadataValue(instance, event.getSpawnReason().name())); + LivingEntity entity = event.getEntity(); + entity.setMetadata("US_REASON", new FixedMetadataValue(instance, event.getSpawnReason().name())); + + if (event.getSpawnReason().name().equals("DROWNED") + && entity.getCustomName() != null + && entity.getCustomName().contains(String.valueOf(ChatColor.COLOR_CHAR))) { + String name = event.getEntity().getCustomName().replace(String.valueOf(ChatColor.COLOR_CHAR), ""); + if (!name.contains(":")) return; + String split = name.split(":")[0]; + int stackSize = Methods.isInt(split) ? Integer.parseInt(split) : 0; + + if (stackSize == 0) return; + Bukkit.getScheduler().scheduleSyncDelayedTask(instance, + () -> instance.getEntityStackManager().addStack(entity, stackSize), 1L); + } + } @EventHandler diff --git a/src/main/java/com/songoda/ultimatestacker/utils/Methods.java b/src/main/java/com/songoda/ultimatestacker/utils/Methods.java index b8bc2d9..366c26e 100644 --- a/src/main/java/com/songoda/ultimatestacker/utils/Methods.java +++ b/src/main/java/com/songoda/ultimatestacker/utils/Methods.java @@ -523,6 +523,18 @@ public class Methods { return text; } + public static boolean isInt(String number) { + if (number == null || number.equals("")) + return false; + try { + Integer.parseInt(number); + } catch (NumberFormatException e) { + return false; + } + return true; + } + + /** * Serializes the location of the block specified. *