Skip to content

Commit

Permalink
Fix possible NPEs with Hurt and Heal commands
Browse files Browse the repository at this point in the history
  • Loading branch information
Morphan1 committed Jul 29, 2013
1 parent 84ad2c5 commit 3641b2c
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 27 deletions.
@@ -1,5 +1,6 @@
package net.aufdemrand.denizen.scripts.commands.entity;

import java.util.ArrayList;
import java.util.List;

import net.aufdemrand.denizen.exceptions.CommandExecutionException;
Expand Down Expand Up @@ -38,32 +39,32 @@ else if (!scriptEntry.hasObject("entities")
if (!scriptEntry.hasObject("amount"))
scriptEntry.addObject("amount", Integer.MAX_VALUE);

if (!scriptEntry.hasObject("entities")) {
List<dEntity> entities = new ArrayList<dEntity>();
if (scriptEntry.getPlayer() != null)
entities.add(scriptEntry.getPlayer().getDenizenEntity());
else if (scriptEntry.getNPC() != null)
entities.add(scriptEntry.getNPC().getDenizenEntity());
else
throw new InvalidArgumentsException("No valid target entities found.");
scriptEntry.addObject("entities", entities);
}

}

@SuppressWarnings("unchecked")
@Override
public void execute(ScriptEntry scriptEntry) throws CommandExecutionException {

if (!scriptEntry.hasObject("entities")) {
if (scriptEntry.getObject("amount").equals(Integer.MAX_VALUE))
scriptEntry.getPlayer().getDenizenEntity().getLivingEntity().setHealth(scriptEntry.getPlayer().getDenizenEntity().getLivingEntity().getMaxHealth());
else {
Double amount = ((Element) scriptEntry.getObject("amount")).asDouble();
scriptEntry.getPlayer().getDenizenEntity().getLivingEntity().setHealth(scriptEntry.getPlayer().getDenizenEntity().getLivingEntity().getHealth() + amount);
}
}
else {
List<dEntity> entities = (List<dEntity>) scriptEntry.getObject("entities");
List<dEntity> entities = (List<dEntity>) scriptEntry.getObject("entities");

if (scriptEntry.getObject("amount").equals(Integer.MAX_VALUE))
for (dEntity entity : entities)
entity.getLivingEntity().setHealth(entity.getLivingEntity().getMaxHealth());
else {
Double amount = ((Element) scriptEntry.getObject("amount")).asDouble();
for (dEntity entity : entities)
entity.getLivingEntity().setHealth(entity.getLivingEntity().getHealth() + amount);
}
if (scriptEntry.getObject("amount").equals(Integer.MAX_VALUE))
for (dEntity entity : entities)
entity.getLivingEntity().setHealth(entity.getLivingEntity().getMaxHealth());
else {
Double amount = ((Element) scriptEntry.getObject("amount")).asDouble();
for (dEntity entity : entities)
entity.getLivingEntity().setHealth(entity.getLivingEntity().getHealth() + amount);
}

}
}
@@ -1,5 +1,6 @@
package net.aufdemrand.denizen.scripts.commands.entity;

import java.util.ArrayList;
import java.util.List;

import net.aufdemrand.denizen.exceptions.CommandExecutionException;
Expand Down Expand Up @@ -38,21 +39,28 @@ else if (!scriptEntry.hasObject("entities")
if (!scriptEntry.hasObject("amount"))
scriptEntry.addObject("amount", 1.0);

if (!scriptEntry.hasObject("entities")) {
List<dEntity> entities = new ArrayList<dEntity>();
if (scriptEntry.getPlayer() != null)
entities.add(scriptEntry.getPlayer().getDenizenEntity());
else if (scriptEntry.getNPC() != null)
entities.add(scriptEntry.getNPC().getDenizenEntity());
else
throw new InvalidArgumentsException("No valid target entities found.");
scriptEntry.addObject("entities", entities);
}

}

@SuppressWarnings("unchecked")
@Override
public void execute(ScriptEntry scriptEntry) throws CommandExecutionException {

Double amount = ((Element) scriptEntry.getObject("amount")).asDouble();

if (!scriptEntry.hasObject("entities"))
scriptEntry.getPlayer().getDenizenEntity().getLivingEntity().damage(amount);
else {
List<dEntity> entities = (List<dEntity>) scriptEntry.getObject("entities");
for (dEntity entity : entities)
entity.getLivingEntity().damage(amount);
}
List<dEntity> entities = (List<dEntity>) scriptEntry.getObject("entities");

for (dEntity entity : entities)
entity.getLivingEntity().damage(amount);

}
}

0 comments on commit 3641b2c

Please sign in to comment.