Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,9 @@ public static void init() {
ScriptEvent.registerScriptEvent(TNTPrimesScriptEvent.class);
}
ScriptEvent.registerScriptEvent(UnknownCommandScriptEvent.class);
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_21)) {
ScriptEvent.registerScriptEvent(VaultChangeStateScriptEvent.class);
}
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
ScriptEvent.registerScriptEvent(WardenChangesAngerLevelScriptEvent.class);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.LocationTag;
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 io.papermc.paper.event.block.VaultChangeStateEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class VaultChangeStateScriptEvent extends BukkitScriptEvent implements Listener {

// <--[event]
// @Events
// vault changes state
//
// @Plugin Paper
//
// @Group Block
//
// @Cancellable true
//
// @Location true
//
// @Triggers when a vault block state changes
//
// @Context
// <context.location> returns the LocationTag of the vault block.
// <context.old_state> returns the vault state before the change.
// <context.new_state> returns the vault state after the change.
//
// @Player when the entity who triggered the change is a player.
//
// -->

public VaultChangeStateScriptEvent() {
registerCouldMatcher("vault changes state");
}

public LocationTag location;
public VaultChangeStateEvent event;

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

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(event.getPlayer());
}

@Override
public ObjectTag getContext(String name) {
return switch (name) {
case "old_state" -> new ElementTag(event.getCurrentState());
case "new_state" -> new ElementTag(event.getNewState());
case "location" -> location;
default -> super.getContext(name);
};
}

@EventHandler
public void onVaultChangeStateEvent(VaultChangeStateEvent event) {
location = new LocationTag(event.getBlock().getLocation());
this.event = event;
fire(event);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,14 @@ public static void registerMainEvents() {
ScriptEvent.registerScriptEvent(BlockShearEntityScriptEvent.class);
ScriptEvent.registerScriptEvent(BlockSpreadsScriptEvent.class);
ScriptEvent.registerScriptEvent(BrewingStandFueledScriptEvent.class);
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
ScriptEvent.registerScriptEvent(BrewingStartsScriptEvent.class);
}
ScriptEvent.registerScriptEvent(BrewsScriptEvent.class);
ScriptEvent.registerScriptEvent(CauldronLevelChangeScriptEvent.class);
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_21)) {
ScriptEvent.registerScriptEvent(CrafterCraftsScriptEvent.class);
}
ScriptEvent.registerScriptEvent(DragonEggMovesScriptEvent.class);
ScriptEvent.registerScriptEvent(FurnaceBurnsItemScriptEvent.class);
ScriptEvent.registerScriptEvent(FurnaceStartsSmeltingScriptEvent.class);
Expand All @@ -95,11 +101,10 @@ public static void registerMainEvents() {
ScriptEvent.registerScriptEvent(RedstoneScriptEvent.class);
ScriptEvent.registerScriptEvent(SpongeAbsorbsScriptEvent.class);
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
ScriptEvent.registerScriptEvent(BrewingStartsScriptEvent.class);
ScriptEvent.registerScriptEvent(TNTPrimesScriptEvent.class);
}
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_21)) {
ScriptEvent.registerScriptEvent(CrafterCraftsScriptEvent.class);
ScriptEvent.registerScriptEvent(VaultDisplayItemScriptEvent.class);
}

// Entity events
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package com.denizenscript.denizen.events.block;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.VaultDisplayItemEvent;

public class VaultDisplayItemScriptEvent extends BukkitScriptEvent implements Listener {

// <--[event]
// @Events
// vault displays <item>
//
// @Group Block
//
// @Location true
//
// @Cancellable true
//
// @Triggers when a vault block displays an item.
//
// @Context
// <context.location> returns the LocationTag of the vault block.
// <context.item> returns the ItemTag being displayed.
//
// @Determine
// ItemTag to set the item being displayed.
//
// -->

public VaultDisplayItemScriptEvent() {
registerCouldMatcher("vault displays <item>");
this.<VaultDisplayItemScriptEvent, ItemTag>registerDetermination(null, ItemTag.class, (evt, context, item) -> {
this.item = item;
evt.event.setDisplayItem(item.getItemStack());
});
}

public LocationTag location;
public ItemTag item;
public VaultDisplayItemEvent event;

@Override
public boolean matches(ScriptPath path) {
if (!runInCheck(path, location)) {
return false;
}
if (!path.tryArgObject(2, item)) {
return false;
}
return super.matches(path);
}

@Override
public ObjectTag getContext(String name) {
return switch (name) {
case "item" -> item;
case "location" -> location;
default -> super.getContext(name);
};
}

@EventHandler
public void onVaultDisplayItemEvent(VaultDisplayItemEvent event) {
location = new LocationTag(event.getBlock().getLocation());
item = new ItemTag(event.getDisplayItem());
this.event = event;
fire(event);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,9 @@ public static void registerMainProperties() {
PropertyParser.registerProperty(MaterialLightable.class, MaterialTag.class);
PropertyParser.registerProperty(MaterialMode.class, MaterialTag.class);
PropertyParser.registerProperty(MaterialNote.class, MaterialTag.class);
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_21)) {
PropertyParser.registerProperty(MaterialOminous.class, MaterialTag.class);
}
PropertyParser.registerProperty(MaterialPersistent.class, MaterialTag.class);
PropertyParser.registerProperty(MaterialPower.class, MaterialTag.class);
PropertyParser.registerProperty(MaterialShape.class, MaterialTag.class);
Expand Down
Loading