From ba44c807ab3ed9a013daf6fdb34c80937f0ba45f Mon Sep 17 00:00:00 2001 From: SpaceEmotion Date: Sat, 3 Aug 2013 12:51:07 +0200 Subject: [PATCH] Added the "RAINY" requirement, changed "STORMY" requirement to also recognize the thunder. Changed the "REMOVE" command to use the default server world instead of "world", also added an entity null check --- .../commands/entity/RemoveCommand.java | 19 ++++++++++------ .../requirements/RequirementRegistry.java | 3 +++ .../requirements/core/RainyRequirement.java | 22 +++++++++++++++++++ .../requirements/core/StormRequirement.java | 5 ++++- 4 files changed, 41 insertions(+), 8 deletions(-) create mode 100644 src/main/java/net/aufdemrand/denizen/scripts/requirements/core/RainyRequirement.java diff --git a/src/main/java/net/aufdemrand/denizen/scripts/commands/entity/RemoveCommand.java b/src/main/java/net/aufdemrand/denizen/scripts/commands/entity/RemoveCommand.java index 0317896701..d1a2c56684 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/commands/entity/RemoveCommand.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/commands/entity/RemoveCommand.java @@ -1,8 +1,5 @@ package net.aufdemrand.denizen.scripts.commands.entity; -import java.util.List; -import org.bukkit.entity.Entity; - import net.aufdemrand.denizen.exceptions.CommandExecutionException; import net.aufdemrand.denizen.exceptions.InvalidArgumentsException; import net.aufdemrand.denizen.objects.Element; @@ -15,6 +12,10 @@ import net.aufdemrand.denizen.utilities.debugging.dB; import net.aufdemrand.denizen.utilities.debugging.dB.Messages; import net.aufdemrand.denizen.utilities.depends.WorldGuardUtilities; +import org.bukkit.Bukkit; +import org.bukkit.entity.Entity; + +import java.util.List; /** * Delete certain entities or all entities of a type. @@ -55,12 +56,12 @@ else if (!scriptEntry.hasObject("world") throw new InvalidArgumentsException(Messages.ERROR_MISSING_OTHER, "ENTITIES"); // If the world has not been specified, try to use the NPC's or player's - // world, or default to "world" if necessary + // world, or default to the specified world in the server properties if necessary scriptEntry.defaultObject("world", scriptEntry.hasNPC() ? new dWorld(scriptEntry.getNPC().getWorld()) : null, scriptEntry.hasPlayer() ? new dWorld(scriptEntry.getPlayer().getWorld()) : null, - dWorld.valueOf("world")); + new dWorld(Bukkit.getWorlds().get(0))); } @SuppressWarnings("unchecked") @@ -81,13 +82,17 @@ public void execute(final ScriptEntry scriptEntry) throws CommandExecutionExcept // Go through all of our entities and remove them for (dEntity entity : entities) { + // NP check to prevent errors from happening + if(entity == null) { + continue; + } conditionsMet = true; // If this is a specific spawned entity, and all // other applicable conditions are met, remove it - if (entity.isGeneric() == false) { + if (entity.isGeneric()) { if (region != null) { conditionsMet = WorldGuardUtilities.inRegion @@ -95,7 +100,7 @@ public void execute(final ScriptEntry scriptEntry) throws CommandExecutionExcept region.asString()); } - if (conditionsMet == true) { + if (conditionsMet) { if (entity.isNPC()) { entity.getNPC().destroy(); diff --git a/src/main/java/net/aufdemrand/denizen/scripts/requirements/RequirementRegistry.java b/src/main/java/net/aufdemrand/denizen/scripts/requirements/RequirementRegistry.java index 28e8d3eec4..7977a24e67 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/requirements/RequirementRegistry.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/requirements/RequirementRegistry.java @@ -107,6 +107,9 @@ public void registerCoreMembers() { registerCoreMember(SunnyRequirement.class, "SUNNY", "sunny", 0); + + registerCoreMember(RainyRequirement.class, + "RAINY", "rainy", 0); registerCoreMember(TimeRequirement.class, "TIME", "time [dawn/day/dusk/night]", 1); diff --git a/src/main/java/net/aufdemrand/denizen/scripts/requirements/core/RainyRequirement.java b/src/main/java/net/aufdemrand/denizen/scripts/requirements/core/RainyRequirement.java new file mode 100644 index 0000000000..6ef9164b14 --- /dev/null +++ b/src/main/java/net/aufdemrand/denizen/scripts/requirements/core/RainyRequirement.java @@ -0,0 +1,22 @@ +package net.aufdemrand.denizen.scripts.requirements.core; + +import net.aufdemrand.denizen.exceptions.RequirementCheckException; +import net.aufdemrand.denizen.scripts.requirements.AbstractRequirement; +import net.aufdemrand.denizen.scripts.requirements.RequirementsContext; +import org.bukkit.World; + +import java.util.List; + +/** + * Returns whether or not it's raining in the world where the player is. + */ +public class RainyRequirement extends AbstractRequirement { + + @Override + public boolean check(RequirementsContext context, List args) throws RequirementCheckException { + World world = context.getPlayer().getPlayerEntity().getWorld(); + + return world.hasStorm() && !world.isThundering(); + } + +} diff --git a/src/main/java/net/aufdemrand/denizen/scripts/requirements/core/StormRequirement.java b/src/main/java/net/aufdemrand/denizen/scripts/requirements/core/StormRequirement.java index 3adfcd6040..924be7f077 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/requirements/core/StormRequirement.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/requirements/core/StormRequirement.java @@ -3,6 +3,7 @@ import net.aufdemrand.denizen.exceptions.RequirementCheckException; import net.aufdemrand.denizen.scripts.requirements.AbstractRequirement; import net.aufdemrand.denizen.scripts.requirements.RequirementsContext; +import org.bukkit.World; import java.util.List; @@ -13,6 +14,8 @@ public class StormRequirement extends AbstractRequirement { @Override public boolean check(RequirementsContext context, List args) throws RequirementCheckException { - return context.getPlayer().getPlayerEntity().getWorld().hasStorm(); + World world = context.getPlayer().getPlayerEntity().getWorld(); + + return world.hasStorm() && world.isThundering(); } }