diff --git a/src/main/java/ch/njol/skript/effects/EffFeed.java b/src/main/java/ch/njol/skript/effects/EffFeed.java index 0fda08e422a..9caf51012a5 100644 --- a/src/main/java/ch/njol/skript/effects/EffFeed.java +++ b/src/main/java/ch/njol/skript/effects/EffFeed.java @@ -1,17 +1,18 @@ package ch.njol.skript.effects; -import ch.njol.skript.Skript; import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Example; import ch.njol.skript.doc.Name; import ch.njol.skript.doc.Since; import ch.njol.skript.lang.Effect; import ch.njol.skript.lang.Expression; -import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.util.Kleenean; import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; +import org.skriptlang.skript.registration.SyntaxInfo; +import org.skriptlang.skript.registration.SyntaxRegistry; @Name("Feed") @Description("Feeds the specified players.") @@ -20,41 +21,41 @@ @Since("2.2-dev34") public class EffFeed extends Effect { - static { - Skript.registerEffect(EffFeed.class, "feed [the] %players% [by %-number% [beef[s]]]"); - } - - @SuppressWarnings("null") - private Expression players; - @Nullable - private Expression beefs; - - @Override - public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { - players = (Expression) exprs[0]; - beefs = (Expression) exprs[1]; - return true; - } - - @Override - protected void execute(Event e) { - int level = 20; - - if (beefs != null) { - Number n = beefs.getSingle(e); - if (n == null) - return; - level = n.intValue(); - } - for (Player player : players.getArray(e)) { - player.setFoodLevel(player.getFoodLevel() + level); - } - } - - @Override - public String toString(@Nullable Event e, boolean debug) { - return "feed " + players.toString(e, debug) + (beefs != null ? " by " + beefs.toString(e, debug) : ""); - } + public static void register(SyntaxRegistry registry) { + registry.register(SyntaxRegistry.EFFECT, SyntaxInfo.builder(EffFeed.class) + .addPatterns("feed %players% [by %-number% [beef[s]]]") + .supplier(EffFeed::new) + .build()); + } + + private Expression players; + private @Nullable Expression beefs; + + @Override + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { + players = (Expression) exprs[0]; + beefs = (Expression) exprs[1]; + return true; + } + + @Override + protected void execute(Event event) { + int foodAmount = 0; + + if (beefs != null) { + Number n = beefs.getSingle(event); + if (n != null) + foodAmount = n.intValue(); + } + for (Player player : players.getArray(event)) { + player.setFoodLevel(beefs == null ? 20 : player.getFoodLevel() + foodAmount); + } + } + + @Override + public String toString(@Nullable Event event, boolean debug) { + return "feed " + players.toString(event, debug) + (beefs != null ? " by " + beefs.toString(event, debug) : ""); + } } diff --git a/src/main/java/org/skriptlang/skript/bukkit/entity/player/PlayerModule.java b/src/main/java/org/skriptlang/skript/bukkit/entity/player/PlayerModule.java index 74bf611cbc9..560e246032e 100644 --- a/src/main/java/org/skriptlang/skript/bukkit/entity/player/PlayerModule.java +++ b/src/main/java/org/skriptlang/skript/bukkit/entity/player/PlayerModule.java @@ -1,6 +1,7 @@ package org.skriptlang.skript.bukkit.entity.player; import ch.njol.skript.Skript; +import ch.njol.skript.effects.EffFeed; import ch.njol.skript.lang.util.SimpleEvent; import io.papermc.paper.event.player.AsyncChatEvent; import org.skriptlang.skript.addon.AddonModule; @@ -23,6 +24,7 @@ protected void loadSelf(SkriptAddon addon) { register(addon, EffBan::register, EffKick::register, + EffFeed::register, ExprChatFormat::register, ExprChatMessage::register, ExprChatRecipients::register,