Skip to content

Commit

Permalink
Fic <player> and <npc> mechanics.
Browse files Browse the repository at this point in the history
Fix event matching logic for entities.
Fix some of the error logging.
  • Loading branch information
Talamar1 committed Jun 16, 2015
1 parent a7265d8 commit 79e7db4
Show file tree
Hide file tree
Showing 23 changed files with 221 additions and 50 deletions.
@@ -1,11 +1,14 @@
package net.aufdemrand.denizen.events.scriptevents;


import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.objects.dEntity;
import net.aufdemrand.denizen.objects.dLocation;
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizencore.events.ScriptEvent;
import net.aufdemrand.denizencore.objects.Element;
import net.aufdemrand.denizencore.objects.dObject;
import net.aufdemrand.denizencore.scripts.ScriptEntryData;
import net.aufdemrand.denizencore.scripts.containers.ScriptContainer;
import net.aufdemrand.denizencore.utilities.CoreUtilities;

Expand Down Expand Up @@ -90,6 +93,12 @@ public boolean applyDetermination(ScriptContainer container, String determinatio
return super.applyDetermination(container, determination);
}

@Override
public ScriptEntryData getScriptEntryData() {
// TODO: Store the player / npc?
return new BukkitScriptEntryData(event != null ? dEntity.getPlayerFrom(event.getPlayer()) : null, null);
}

@Override
public HashMap<String, dObject> getContext() {
HashMap<String, dObject> context = super.getContext();
Expand Down
Expand Up @@ -84,9 +84,7 @@ public boolean applyDetermination(ScriptContainer container, String determinatio

@Override
public ScriptEntryData getScriptEntryData() {
// TODO: Store the player / npc?
return new BukkitScriptEntryData(event != null ? dEntity.getPlayerFrom(event.getPlayer()): null,
entity.isNPC() ? entity.getDenizenNPC(): null);
return new BukkitScriptEntryData(event != null ? dEntity.getPlayerFrom(event.getPlayer()): null, null);
}

@Override
Expand Down
@@ -1,5 +1,6 @@
package net.aufdemrand.denizen.events.scriptevents;

import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.objects.dCuboid;
import net.aufdemrand.denizen.objects.dEllipsoid;
import net.aufdemrand.denizen.objects.dEntity;
Expand All @@ -10,14 +11,18 @@
import net.aufdemrand.denizencore.objects.Element;
import net.aufdemrand.denizencore.objects.dList;
import net.aufdemrand.denizencore.objects.dObject;
import net.aufdemrand.denizencore.scripts.ScriptEntryData;
import net.aufdemrand.denizencore.scripts.containers.ScriptContainer;
import net.aufdemrand.denizencore.utilities.CoreUtilities;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.hanging.HangingBreakByEntityEvent;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

public class EntityBreaksHangingScriptEvent extends ScriptEvent implements Listener {

Expand Down Expand Up @@ -57,8 +62,9 @@ public EntityBreaksHangingScriptEvent() {
public boolean couldMatch(ScriptContainer scriptContainer, String s) {
String lower = CoreUtilities.toLowerCase(s);
String entName = CoreUtilities.getXthArg(0, lower);
List<String> types = Arrays.asList("entity", "player", "npc");
return lower.contains("breaks hanging")
&& (entName.equals("entity") || dEntity.matches(entName));
&& (types.contains(entName) || dEntity.matches(entName));
}

@Override
Expand Down Expand Up @@ -123,6 +129,12 @@ public boolean applyDetermination(ScriptContainer container, String determinatio
return super.applyDetermination(container, determination);
}

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(entity.isPlayer() ? dEntity.getPlayerFrom(event.getRemover()): null,
entity.isCitizensNPC() ? dEntity.getNPCFrom(event.getRemover()): null);
}

@Override
public HashMap<String, dObject> getContext() {
HashMap<String, dObject> context = super.getContext();
Expand Down
@@ -1,10 +1,13 @@
package net.aufdemrand.denizen.events.scriptevents;

import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.objects.dEntity;
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizencore.events.ScriptEvent;
import net.aufdemrand.denizencore.objects.Element;
import net.aufdemrand.denizencore.objects.Duration;
import net.aufdemrand.denizencore.objects.aH;
import net.aufdemrand.denizencore.objects.dObject;
import net.aufdemrand.denizencore.scripts.ScriptEntryData;
import net.aufdemrand.denizencore.scripts.containers.ScriptContainer;
import net.aufdemrand.denizencore.utilities.CoreUtilities;

Expand All @@ -13,7 +16,9 @@
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityCombustEvent;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

public class EntityCombustsScriptEvent extends ScriptEvent implements Listener {

Expand All @@ -24,34 +29,41 @@ public class EntityCombustsScriptEvent extends ScriptEvent implements Listener {
//
// @Cancellable true
//
// @Triggers when an entity combusts.
// @Triggers when an entity catches fire.
//
// @Context
// <context.duration> returns how long the entity takes to combust.
// <context.entity> returns the dEntity that combusted.
// <context.entity> returns the entity that caught fire.
// <context.duration> returns the length of the burn.
//
// @Determine
// Element(Number) set the length of duration.
//
// -->

public EntityCombustsScriptEvent() {
instance = this;
}

public static EntityCombustsScriptEvent instance;

public dEntity entity;
public Element duration;
public Duration duration;
private Integer burntime;
public EntityCombustEvent event;

@Override
public boolean couldMatch(ScriptContainer scriptContainer, String s) {
String lower = CoreUtilities.toLowerCase(s);
return lower.contains("combusts");
String cmd = CoreUtilities.getXthArg(1, lower);
String entOne = CoreUtilities.getXthArg(0, lower);
List<String> types = Arrays.asList("entity", "player", "npc");
return (types.contains(entOne) || dEntity.matches(entOne))
&& cmd.equals("combusts");
}

@Override
public boolean matches(ScriptContainer scriptContainer, String s) {
String ent = CoreUtilities.getXthArg(0, s);
return entity.matchesEntity(ent);
String target = CoreUtilities.getXthArg(0,CoreUtilities.toLowerCase(s));
List<String> types = Arrays.asList("entity", "player", "npc");
return (types.contains(target) || entity.matchesEntity(target));
}

@Override
Expand All @@ -71,9 +83,20 @@ public void destroy() {

@Override
public boolean applyDetermination(ScriptContainer container, String determination) {
if (aH.Argument.valueOf(determination)
.matchesPrimitive(aH.PrimitiveType.Integer)) {
burntime = aH.getIntegerFrom(determination);
return true;
}
return super.applyDetermination(container, determination);
}

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(entity.isPlayer() ? dEntity.getPlayerFrom(event.getEntity()): null,
entity.isCitizensNPC() ? dEntity.getNPCFrom(event.getEntity()): null);
}

@Override
public HashMap<String, dObject> getContext() {
HashMap<String, dObject> context = super.getContext();
Expand All @@ -83,13 +106,13 @@ public HashMap<String, dObject> getContext() {
}

@EventHandler
public void onEntityCombust(EntityCombustEvent event) {
public void onEntityCombusts(EntityCombustEvent event) {
entity = new dEntity(event.getEntity());
duration = new Element(event.getDuration());
duration = new Duration(event.getDuration());
cancelled = event.isCancelled();
this.event = event;
fire();
event.setCancelled(cancelled);
event.setDuration(burntime);
}

}
@@ -1,12 +1,14 @@
package net.aufdemrand.denizen.events.scriptevents;

import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.objects.dEntity;
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizen.utilities.debugging.dB;
import net.aufdemrand.denizencore.events.ScriptEvent;
import net.aufdemrand.denizencore.objects.Element;
import net.aufdemrand.denizencore.objects.aH;
import net.aufdemrand.denizencore.objects.dObject;
import net.aufdemrand.denizencore.scripts.ScriptEntryData;
import net.aufdemrand.denizencore.scripts.containers.ScriptContainer;
import net.aufdemrand.denizencore.utilities.CoreUtilities;

Expand Down Expand Up @@ -93,13 +95,6 @@ public boolean couldMatch(ScriptContainer scriptContainer, String s) {

@Override
public boolean matches(ScriptContainer scriptContainer, String s) {
// Check for possibility of death first
if (entity.isValid() && entity.isLivingEntity()) {
if (final_damage.asDouble() >= entity.getLivingEntity().getHealth()) {
return false;
}
}

String lower = CoreUtilities.toLowerCase(s);
String cmd = CoreUtilities.getXthArg(1, lower);
String attacker = cmd.equals("damages") ? CoreUtilities.getXthArg(0, lower): CoreUtilities.getXthArg(3, lower);
Expand All @@ -117,10 +112,8 @@ public boolean matches(ScriptContainer scriptContainer, String s) {
}
}
if (target.length() > 0) {
if (dEntity.matches(target)) {
if (!entity.matchesEntity(target)) {
return false;
}
if (!entity.matchesEntity(target)) {
return false;
}
}

Expand Down Expand Up @@ -151,6 +144,12 @@ public boolean applyDetermination(ScriptContainer container, String determinatio
return super.applyDetermination(container, determination);
}

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(entity.isPlayer() ? dEntity.getPlayerFrom(event.getEntity()): null,
entity.isCitizensNPC() ? dEntity.getNPCFrom(event.getEntity()): null);
}

@Override
public HashMap<String, dObject> getContext() {
HashMap<String, dObject> context = super.getContext();
Expand Down
@@ -1,9 +1,11 @@
package net.aufdemrand.denizen.events.scriptevents;

import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.objects.*;
import net.aufdemrand.denizencore.events.ScriptEvent;
import net.aufdemrand.denizencore.objects.*;
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizencore.scripts.ScriptEntryData;
import net.aufdemrand.denizencore.scripts.containers.ScriptContainer;
import net.aufdemrand.denizencore.utilities.CoreUtilities;

Expand Down Expand Up @@ -142,6 +144,12 @@ else if (!lower.equals("none")) {
return true;
}

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(entity.isPlayer() ? dEntity.getPlayerFrom(event.getEntity()): null,
entity.isCitizensNPC() ? dEntity.getNPCFrom(event.getEntity()): null);
}

@Override
public HashMap<String, dObject> getContext() {
HashMap<String, dObject> context = super.getContext();
Expand Down
@@ -1,9 +1,11 @@
package net.aufdemrand.denizen.events.scriptevents;

import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.objects.dEntity;
import net.aufdemrand.denizencore.events.ScriptEvent;
import net.aufdemrand.denizencore.objects.Element;
import net.aufdemrand.denizencore.objects.dObject;
import net.aufdemrand.denizencore.scripts.ScriptEntryData;
import net.aufdemrand.denizencore.scripts.containers.ScriptContainer;
import net.aufdemrand.denizencore.utilities.CoreUtilities;

Expand Down Expand Up @@ -34,7 +36,6 @@ public EntityDespawnScriptEvent() {
}

public static EntityDespawnScriptEvent instance;

public dEntity entity;
public Element cause;

Expand Down Expand Up @@ -70,6 +71,12 @@ public boolean applyDetermination(ScriptContainer container, String determinatio
return super.applyDetermination(container, determination);
}

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(entity.isPlayer() ? dEntity.getPlayerFrom(entity.getBukkitEntity()): null,
entity.isCitizensNPC() ? dEntity.getNPCFrom(entity.getBukkitEntity()): null);
}

@Override
public HashMap<String, dObject> getContext() {
HashMap<String, dObject> context = super.getContext();
Expand Down
@@ -1,10 +1,12 @@
package net.aufdemrand.denizen.events.scriptevents;

import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.objects.*;
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizen.utilities.debugging.dB;
import net.aufdemrand.denizencore.events.ScriptEvent;
import net.aufdemrand.denizencore.objects.dObject;
import net.aufdemrand.denizencore.scripts.ScriptEntryData;
import net.aufdemrand.denizencore.scripts.containers.ScriptContainer;
import net.aufdemrand.denizencore.utilities.CoreUtilities;

Expand Down Expand Up @@ -62,8 +64,9 @@ public boolean matches(ScriptContainer scriptContainer, String s) {
if (!entity.matchesEntity(CoreUtilities.getXthArg(0, lower))) {
return false;
}
if (!material.identifySimpleNoIdentifier().equals("block")
|| !material.identifySimpleNoIdentifier().equals(CoreUtilities.getXthArg(2, lower))) {
String mat = CoreUtilities.getXthArg(2, lower);
if (!mat.equals("block")
&& !mat.equals(material.identifyNoIdentifier()) && !mat.equals(material.identifySimpleNoIdentifier())) {
return false;
}
if (CoreUtilities.xthArgEquals(3, lower, "in")) {
Expand All @@ -81,7 +84,7 @@ else if (dEllipsoid.matches(it)) {
}
}
else {
dB.echoError("Invalid event 'IN ...' check [BlockPhysics]: '" + s + "' for " + scriptContainer.getName());
dB.echoError("Invalid event 'IN ...' check [" + getName() + "]: '" + s + "' for " + scriptContainer.getName());
return false;
}
}
Expand Down Expand Up @@ -109,6 +112,12 @@ public boolean applyDetermination(ScriptContainer container, String determinatio
return super.applyDetermination(container, determination);
}

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(entity.isPlayer() ? dEntity.getPlayerFrom(event.getEntity()): null,
entity.isCitizensNPC() ? dEntity.getNPCFrom(event.getEntity()): null);
}

@Override
public HashMap<String, dObject> getContext() {
HashMap<String, dObject> context = super.getContext();
Expand Down
@@ -1,11 +1,13 @@
package net.aufdemrand.denizen.events.scriptevents;

import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.objects.*;
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizen.utilities.debugging.dB;
import net.aufdemrand.denizencore.events.ScriptEvent;
import net.aufdemrand.denizencore.objects.dList;
import net.aufdemrand.denizencore.objects.dObject;
import net.aufdemrand.denizencore.scripts.ScriptEntryData;
import net.aufdemrand.denizencore.scripts.containers.ScriptContainer;
import net.aufdemrand.denizencore.utilities.CoreUtilities;
import org.bukkit.Bukkit;
Expand Down Expand Up @@ -84,7 +86,7 @@ else if (dEllipsoid.matches(it)) {
}
}
else {
dB.echoError("Invalid event 'IN ...' check [BlockPhysics]: '" + s + "' for " + scriptContainer.getName());
dB.echoError("Invalid event 'IN ...' check [" + getName() + "]: '" + s + "' for " + scriptContainer.getName());
return false;
}
}
Expand Down Expand Up @@ -112,6 +114,12 @@ public boolean applyDetermination(ScriptContainer container, String determinatio
return super.applyDetermination(container, determination);
}

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(entity.isPlayer() ? dEntity.getPlayerFrom(event.getEntity()): null,
entity.isCitizensNPC() ? dEntity.getNPCFrom(event.getEntity()): null);
}

@Override
public HashMap<String, dObject> getContext() {
HashMap<String, dObject> context = super.getContext();
Expand Down

0 comments on commit 79e7db4

Please sign in to comment.