Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rewrote "portal created" in ScriptEvent format.
Removed imports that weren't needed from EntityCreatedPortal.
- Loading branch information
Showing
4 changed files
with
110 additions
and
43 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
109 changes: 109 additions & 0 deletions
109
src/main/java/net/aufdemrand/denizen/events/world/PortalCreateScriptEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
package net.aufdemrand.denizen.events.world; | ||
|
||
|
||
import net.aufdemrand.denizen.objects.dLocation; | ||
import net.aufdemrand.denizen.objects.dWorld; | ||
import net.aufdemrand.denizen.utilities.DenizenAPI; | ||
import net.aufdemrand.denizencore.events.ScriptEvent; | ||
import net.aufdemrand.denizencore.objects.Element; | ||
import net.aufdemrand.denizencore.objects.dList; | ||
import net.aufdemrand.denizencore.objects.dObject; | ||
import net.aufdemrand.denizencore.scripts.containers.ScriptContainer; | ||
import net.aufdemrand.denizencore.utilities.CoreUtilities; | ||
import org.bukkit.Bukkit; | ||
import org.bukkit.block.Block; | ||
import org.bukkit.event.EventHandler; | ||
import org.bukkit.event.Listener; | ||
import org.bukkit.event.world.PortalCreateEvent; | ||
|
||
import java.util.HashMap; | ||
|
||
public class PortalCreateScriptEvent extends ScriptEvent implements Listener { | ||
|
||
// <--[event] | ||
// @Events | ||
// portal created (in <world>) (because <reason>) | ||
// | ||
// @Cancellable true | ||
// | ||
// @Triggers when a portal is created in a world. | ||
// | ||
// @Context | ||
// <context.world> returns the dWorld the portal was created in. | ||
// <context.reason> returns an Element of the reason the portal was created. (FIRE or OBC_DESTINATION) | ||
// <context.list> returns a dList of all the blocks that will become portal blocks. | ||
// | ||
// --> | ||
|
||
public PortalCreateScriptEvent() { | ||
instance = this; | ||
} | ||
|
||
public static PortalCreateScriptEvent instance; | ||
public dWorld world; | ||
public Element reason; | ||
public dList list; | ||
public PortalCreateEvent event; | ||
|
||
@Override | ||
public boolean couldMatch(ScriptContainer scriptContainer, String s) { | ||
return CoreUtilities.toLowerCase(s).startsWith("portal created"); | ||
} | ||
|
||
@Override | ||
public boolean matches(ScriptContainer scriptContainer, String s) { | ||
String lower = CoreUtilities.toLowerCase(s); | ||
String wCheck = CoreUtilities.getXthArg(3,lower); | ||
if (wCheck.length() > 0 && !wCheck.equals("world") && !wCheck.equals(CoreUtilities.toLowerCase(world.getName()))) { | ||
return false; | ||
} | ||
String rCheck = CoreUtilities.getXthArg(2,lower).equals("because") ? CoreUtilities.getXthArg(3,lower):CoreUtilities.getXthArg(5,lower); | ||
if (rCheck.length() > 0 && !rCheck.equals(CoreUtilities.toLowerCase(reason.asString()))) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return "PortalCreate"; | ||
} | ||
|
||
@Override | ||
public void init() { | ||
Bukkit.getServer().getPluginManager().registerEvents(this, DenizenAPI.getCurrentInstance()); | ||
} | ||
|
||
@Override | ||
public void destroy() { | ||
PortalCreateEvent.getHandlerList().unregister(this); | ||
} | ||
|
||
@Override | ||
public boolean applyDetermination(ScriptContainer container, String determination) { | ||
return super.applyDetermination(container, determination); | ||
} | ||
|
||
@Override | ||
public HashMap<String, dObject> getContext() { | ||
HashMap<String, dObject> context = super.getContext(); | ||
context.put("world", world); | ||
context.put("reason", reason); | ||
context.put("list", list); | ||
return context; | ||
} | ||
|
||
@EventHandler | ||
public void onPortalCreate(PortalCreateEvent event) { | ||
world = new dWorld(event.getWorld()); | ||
reason = new Element(event.getReason().toString()); | ||
list = new dList(); | ||
for (Block block : event.getBlocks()) { | ||
list.add(new dLocation(block.getLocation()).identify()); | ||
} | ||
this.event = event; | ||
cancelled = event.isCancelled(); | ||
fire(); | ||
event.setCancelled(cancelled); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters