Skip to content
Merged
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
@@ -1,6 +1,7 @@
package org.skriptlang.skript.bukkit.entity.player.elements.events;

import ch.njol.skript.lang.Literal;
import ch.njol.skript.lang.LiteralList;
import ch.njol.skript.lang.SkriptEvent;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.lang.SyntaxStringBuilder;
Expand All @@ -15,11 +16,11 @@

public class EvtPlayerGameModeChange extends SkriptEvent {

public static void register(SyntaxRegistry syntaxRegistry, EventValueRegistry registry) {
public static void register(SyntaxRegistry syntaxRegistry, EventValueRegistry eventValueRegistry) {
syntaxRegistry.register(BukkitSyntaxInfos.Event.KEY, BukkitSyntaxInfos.Event.builder(EvtPlayerGameModeChange.class, "Player GameMode Change")
.supplier(EvtPlayerGameModeChange::new)
.addEvent(PlayerGameModeChangeEvent.class)
.addPatterns("[player] game[ ]mode change [to %gamemode%]")
.addPatterns("[player] game[ ]mode change [to %-gamemodes%]")
.addDescription("""
Called when a player's gamemode is changed. See <a href='#gamemode'>gamemode</a>.
""")
Expand All @@ -35,35 +36,39 @@ public static void register(SyntaxRegistry syntaxRegistry, EventValueRegistry re
.addSince("1.0")
.build());

registry.register(EventValue.builder(PlayerGameModeChangeEvent.class, GameMode.class)
eventValueRegistry.register(EventValue.builder(PlayerGameModeChangeEvent.class, GameMode.class)
.getter(PlayerGameModeChangeEvent::getNewGameMode)
.patterns("gamemode")
.build());
}

private Literal<GameMode> gamemode;
private Literal<GameMode> gamemodes;

@Override
@SuppressWarnings("unchecked")
public boolean init(Literal<?>[] literals, int i, ParseResult parseResult) {
gamemode = (Literal<GameMode>) literals[0];
public boolean init(Literal<?>[] args, int matchedPattern, ParseResult parseResult) {
if (args[0] != null) {
gamemodes = (Literal<GameMode>) args[0];
if (gamemodes.getAnd() && gamemodes instanceof LiteralList<GameMode> list)
list.invertAnd();
}
return true;
}

@Override
public boolean check(Event event) {
if (gamemode == null)
if (gamemodes == null)
return true;
GameMode gamemode = this.gamemode.getSingle(event);

PlayerGameModeChangeEvent playerEvent = (PlayerGameModeChangeEvent) event;
return playerEvent.getNewGameMode().equals(gamemode);
return this.gamemodes.check(event, gamemode -> gamemode.equals(playerEvent.getNewGameMode()));
}

@Override
public String toString(@Nullable Event event, boolean debug) {
return new SyntaxStringBuilder(event, debug)
.append("player gamemode change")
.appendIf(gamemode != null, "to", gamemode)
.appendIf(gamemodes != null, "to", gamemodes)
.toString();
}

Expand Down
Loading