Skip to content

Commit

Permalink
clean up of entity create portal event, relates to #2043
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Oct 13, 2019
1 parent b049235 commit d4ceea2
Showing 1 changed file with 19 additions and 22 deletions.
Expand Up @@ -3,11 +3,12 @@
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.BukkitScriptEntryData;
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ListTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.denizenscript.denizencore.scripts.containers.ScriptContainer;
import com.denizenscript.denizencore.utilities.CoreUtilities;
import org.bukkit.block.BlockState;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityCreatePortalEvent;
Expand All @@ -20,15 +21,17 @@ public class EntityCreatePortalScriptEvent extends BukkitScriptEvent implements
// <entity> creates portal
//
// @Regex ^on [^\s]+ creates portal$
//
// @Switch in <area>
//
// @Cancellable true
//
// @Triggers when an entity creates a portal.
// @Triggers when an entity creates a portal. Generally, prefer <@link event portal created> instead of this.
//
// @Context
// <context.entity> returns the EntityTag that created the portal.
// <context.portal_type> returns the type of portal: CUSTOM, ENDER, NETHER.
// <context.portal_type> returns the type of portal: CUSTOM, ENDER, or NETHER.
// <context.blocks> returns a list of block locations where the portal is being created.
//
// @Player if the entity that created the portal is a player.
//
Expand All @@ -40,25 +43,21 @@ public EntityCreatePortalScriptEvent() {

public static EntityCreatePortalScriptEvent instance;
public EntityTag entity;
public ElementTag portal_type;
public EntityCreatePortalEvent event;

@Override
public boolean couldMatch(ScriptContainer scriptContainer, String s) {
return CoreUtilities.toLowerCase(s).contains("creates portal");
public boolean couldMatch(ScriptPath path) {
return path.eventLower.contains("creates portal");
}

@Override
public boolean matches(ScriptPath path) {

if (!tryEntity(entity, path.eventArgLowerAt(0))) {
return false;
}

if (!runInCheck(path, entity.getLocation())) {
return false;
}

return true;
}

Expand All @@ -69,8 +68,8 @@ public String getName() {

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

@Override
Expand All @@ -79,23 +78,21 @@ public ObjectTag getContext(String name) {
return entity;
}
else if (name.equals("portal_type")) {
return portal_type;
return new ElementTag(event.getPortalType().toString());
}
else if (name.equals("blocks")) {
ListTag blocks = new ListTag();
for (BlockState block : event.getBlocks()) {
blocks.add(new LocationTag(block.getBlock().getLocation()).identifySimple());
}
return blocks;
}
return super.getContext(name);
}

@EventHandler
public void onEntityCreatesPortal(EntityCreatePortalEvent event) {
entity = new EntityTag(event.getEntity());
portal_type = new ElementTag(event.getPortalType().toString());
// TODO: Add this back?
/*
blocks = new ListTag();
for (int i=0; i < event.getBlocks().size(); i++) {
LocationTag tempLoc = new LocationTag(event.getBlocks().get(i).getBlock().getLocation());
blocks.add(tempLoc.identifySimple());
}
*/
this.event = event;
fire(event);
}
Expand Down

0 comments on commit d4ceea2

Please sign in to comment.