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 @@ -41,6 +41,7 @@
import org.bukkit.event.player.PlayerExpCooldownChangeEvent.ChangeReason;
import org.bukkit.event.player.PlayerQuitEvent.QuitReason;
import org.bukkit.event.player.PlayerResourcePackStatusEvent.Status;
import org.bukkit.event.player.PlayerRespawnEvent.RespawnReason;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.inventory.BlockInventoryHolder;
import org.bukkit.inventory.EquipmentSlot;
Expand Down Expand Up @@ -781,6 +782,12 @@ protected boolean canBeInstantiated() {
.description("The spawn reason in a <a href='#spawn'>spawn</a> event.")
.since("2.3"));

Classes.registerClass(new EnumClassInfo<>(RespawnReason.class, "respawnreason", "respawn reasons")
.user("respawn(ing)? ?reasons?")
.name("Respawn Reason")
.description("The respawn reason in a <a href='#respawn'>respawn</a> event.")
.since("INSERT VERSION"));

if (Skript.classExists("com.destroystokyo.paper.event.server.PaperServerListPingEvent")) {
Classes.registerClass(new ClassInfo<>(CachedServerIcon.class, "cachedservericon")
.user("server ?icons?")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
import org.bukkit.event.player.*;
import org.bukkit.event.player.PlayerExpCooldownChangeEvent.ChangeReason;
import org.bukkit.event.player.PlayerQuitEvent.QuitReason;
import org.bukkit.event.player.PlayerRespawnEvent.RespawnReason;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.event.server.ServerCommandEvent;
import org.bukkit.event.vehicle.*;
Expand All @@ -63,6 +64,7 @@
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.lang.converter.Converter;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
Expand Down Expand Up @@ -547,6 +549,21 @@ else if (hand == EquipmentSlot.OFF_HAND)
}
//CreatureSpawnEvent
EventValues.registerEventValue(CreatureSpawnEvent.class, SpawnReason.class, CreatureSpawnEvent::getSpawnReason);
//PlayerRespawnEvent - 1.21.5+ added AbstractRespawnEvent as a base class, where prior to that, getRespawnReason was in PlayerRespawnEvent
if (Skript.classExists("org.bukkit.event.player.AbstractRespawnEvent")) {
EventValues.registerEventValue(PlayerRespawnEvent.class, RespawnReason.class, PlayerRespawnEvent::getRespawnReason);
} else {
try {
Method method = PlayerRespawnEvent.class.getMethod("getRespawnReason");
EventValues.registerEventValue(PlayerRespawnEvent.class, RespawnReason.class, event -> {
try {
return (RespawnReason) method.invoke(event);
} catch (Exception e) {
return null;
}
});
} catch (NoSuchMethodException ignored) {}
}
//FireworkExplodeEvent
EventValues.registerEventValue(FireworkExplodeEvent.class, Firework.class, FireworkExplodeEvent::getEntity);
EventValues.registerEventValue(FireworkExplodeEvent.class, FireworkEffect.class, event -> {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/ch/njol/skript/events/SimpleEvents.java
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ public class SimpleEvents {
"on disconnect:")
.since("1.0 (simple disconnection)");
Skript.registerEvent("Respawn", SimpleEvent.class, PlayerRespawnEvent.class, "[player] respawn[ing]")
.description("Called when a player respawns. You should prefer this event over the <a href='#death'>death event</a> as the player is technically alive when this event is called.")
.description("Called when a player respawns via death or entering the end portal in the end. You should prefer this event over the <a href='#death'>death event</a> as the player is technically alive when this event is called.")
.examples("on respawn:")
.since("1.0");
Skript.registerEvent("Sneak Toggle", SimpleEvent.class, PlayerToggleSneakEvent.class, "[player] toggl(e|ing) sneak", "[player] sneak toggl(e|ing)")
Expand Down
29 changes: 29 additions & 0 deletions src/main/java/ch/njol/skript/expressions/ExprRespawnReason.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package ch.njol.skript.expressions;

import org.bukkit.event.player.PlayerRespawnEvent.RespawnReason;

import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.Since;
import ch.njol.skript.expressions.base.EventValueExpression;

@Name("Respawn Reason")
@Description("The <a href='#respawnreason'>respawn reason</a> in a <a href='#respawn'>respawn</a> event.")
@Examples("""
on respawn:
if respawn reason is end portal:
broadcast "%player% took the end portal to the overworld!"
""")
@Since("INSERT VERSION")
public class ExprRespawnReason extends EventValueExpression<RespawnReason> {

static {
register(ExprRespawnReason.class, RespawnReason.class, "respawn[ing] reason");
}

public ExprRespawnReason() {
super(RespawnReason.class);
}

}
7 changes: 7 additions & 0 deletions src/main/resources/lang/default.lang
Original file line number Diff line number Diff line change
Expand Up @@ -2535,6 +2535,12 @@ spawn reasons:
rehydration: rehydration, rehydrated
build_coppergolem: build copper golem, built copper golem

# -- Respawn Reasons --
respawn reasons:
death: death
end_portal: end portal
plugin: plugin

# -- Difficulties --
difficulties:
easy: easy
Expand Down Expand Up @@ -3085,6 +3091,7 @@ types:
inventorytype: inventory type¦s @an
metadataholder: metadata holder¦s @a
spawnreason: spawn reason¦s @a
respawnreason: respawn reason¦s @a
cachedservericon: server icon¦s @a
difficulty: difficult¦y¦ies @a
fireworkeffect: firework effect¦s @a
Expand Down