Skip to content

Commit

Permalink
add 'on tnt primes' event, paper only
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Nov 7, 2019
1 parent ab0d5c5 commit af712e9
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 18 deletions.
Expand Up @@ -2,6 +2,7 @@

import com.denizenscript.denizen.paper.events.PlayerEquipsArmorScriptEvent;
import com.denizenscript.denizen.paper.events.PlayerJumpsPaperScriptEventImpl;
import com.denizenscript.denizen.paper.events.TNTPrimesScriptEvent;
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizencore.events.ScriptEvent;

Expand All @@ -11,5 +12,6 @@ public static void init() {
Debug.log("Loading Paper support module...");
ScriptEvent.registerScriptEvent(new PlayerEquipsArmorScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerJumpsPaperScriptEventImpl());
ScriptEvent.registerScriptEvent(new TNTPrimesScriptEvent());
}
}
Expand Up @@ -4,17 +4,12 @@
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizen.utilities.DenizenAPI;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.denizenscript.denizencore.scripts.containers.ScriptContainer;
import com.denizenscript.denizencore.utilities.CoreUtilities;
import com.destroystokyo.paper.event.player.PlayerArmorChangeEvent;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;

import java.util.HashMap;
Expand Down Expand Up @@ -62,9 +57,8 @@ public PlayerEquipsArmorScriptEvent() {
public PlayerTag player;

@Override
public boolean couldMatch(ScriptContainer scriptContainer, String s) {
String lower = CoreUtilities.toLowerCase(s);
return lower.startsWith("player equips ") || lower.startsWith("player unequips ");
public boolean couldMatch(ScriptPath path) {
return path.eventLower.startsWith("player equips ") || path.eventLower.startsWith("player unequips ");
}

@Override
Expand Down Expand Up @@ -101,16 +95,6 @@ else if (!itemCompare.equals("armor") && !tryItem(oldItem, itemCompare)) {
return true;
}

@Override
public void init() {
Bukkit.getServer().getPluginManager().registerEvents(this, DenizenAPI.getCurrentInstance());
}

@Override
public void destroy() {
HandlerList.unregisterAll(this);
}

@Override
public String getName() {
return "PlayerEquipsArmor";
Expand Down
@@ -0,0 +1,89 @@
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.block.TNTPrimeEvent;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class TNTPrimesScriptEvent extends BukkitScriptEvent implements Listener {

// <--[event]
// @Events
// tnt primes
//
// @Regex ^on tnt primes$
//
// @Switch in <area>
//
// @Plugin Paper
//
// @Cancellable true
//
// @Triggers when TNT is activated and will soon explode.
//
// @Context
// <context.entity> returns the entity that primed the TNT, if any.
// <context.location> returns the location of the TNT block being primed.
// <context.reason> returns the reason the TNT was primed. Refer to <@link url https://papermc.io/javadocs/paper/com/destroystokyo/paper/event/block/TNTPrimeEvent.PrimeReason.html>
// -->

public TNTPrimesScriptEvent() {
instance = this;
}

public static TNTPrimesScriptEvent instance;
public TNTPrimeEvent event;
public LocationTag location;

@Override
public boolean couldMatch(ScriptPath path) {
return path.eventLower.startsWith("tnt primes");
}

@Override
public boolean matches(ScriptPath path) {
if (!runInCheck(path, location)) {
return false;
}
return true;
}

@Override
public String getName() {
return "TNTPrimes";
}

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(event.getPrimerEntity() instanceof Player ? new PlayerTag((Player) event.getPrimerEntity()) : null, null);
}

@Override
public ObjectTag getContext(String name) {
if (name.equals("entity") && event.getPrimerEntity() != null) {
return new EntityTag(event.getPrimerEntity());
}
else if (name.equals("location")) {
return location;
}
else if (name.equals("reason")) {
return new ElementTag(event.getReason().name());
}
return super.getContext(name);
}

@EventHandler
public void tntPrimeEvent(TNTPrimeEvent event) {
this.event = event;
location = new LocationTag(event.getBlock().getLocation());
fire(event);
}
}

0 comments on commit af712e9

Please sign in to comment.