Skip to content

Commit bbefbc8

Browse files
Continue porting syntax
1 parent b3f068d commit bbefbc8

14 files changed

Lines changed: 293 additions & 223 deletions

File tree

src/main/java/ch/njol/skript/Skript.java

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,14 @@
4444
import org.bukkit.event.Event;
4545
import org.bukkit.event.EventHandler;
4646
import org.bukkit.event.Listener;
47-
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
4847
import org.bukkit.event.player.PlayerJoinEvent;
4948
import org.bukkit.event.server.PluginDisableEvent;
50-
import org.bukkit.event.server.ServerCommandEvent;
5149
import org.bukkit.event.server.ServerLoadEvent;
5250
import org.bukkit.plugin.Plugin;
5351
import org.bukkit.plugin.PluginDescriptionFile;
5452
import org.bukkit.plugin.java.JavaPlugin;
5553
import org.jetbrains.annotations.ApiStatus;
54+
import org.jetbrains.annotations.NotNull;
5655
import org.jetbrains.annotations.Nullable;
5756
import org.jetbrains.annotations.UnknownNullability;
5857
import org.jetbrains.annotations.Unmodifiable;
@@ -63,6 +62,7 @@
6362
import org.skriptlang.skript.addon.AddonModule;
6463
import org.skriptlang.skript.bukkit.BukkitModule;
6564
import org.skriptlang.skript.bukkit.SkriptMetrics;
65+
import org.skriptlang.skript.bukkit.command.elements.effects.EffCommand;
6666
import org.skriptlang.skript.bukkit.lang.eventvalue.EventValueRegistry;
6767
import org.skriptlang.skript.bukkit.log.runtime.BukkitRuntimeErrorConsumer;
6868
import org.skriptlang.skript.bukkit.registration.BukkitSyntaxInfos;
@@ -80,7 +80,9 @@
8080
import org.skriptlang.skript.lang.script.Script;
8181
import org.skriptlang.skript.lang.structure.Structure;
8282
import org.skriptlang.skript.lang.structure.StructureInfo;
83+
import org.skriptlang.skript.log.runtime.ErrorSource;
8384
import org.skriptlang.skript.log.runtime.RuntimeErrorManager;
85+
import org.skriptlang.skript.log.runtime.RuntimeErrorProducer;
8486
import org.skriptlang.skript.registration.DefaultSyntaxInfos;
8587
import org.skriptlang.skript.registration.SyntaxInfo;
8688
import org.skriptlang.skript.registration.SyntaxRegistry;
@@ -1811,26 +1813,24 @@ public static <E extends Structure> void registerStructure(
18111813
* @param sender
18121814
* @param command
18131815
* @return Whether the command was run
1816+
* @deprecated There is no replacement for this method.
18141817
*/
1815-
public static boolean dispatchCommand(final CommandSender sender, final String command) {
1816-
try {
1817-
if (sender instanceof Player) {
1818-
final PlayerCommandPreprocessEvent e = new PlayerCommandPreprocessEvent((Player) sender, "/" + command);
1819-
Bukkit.getPluginManager().callEvent(e);
1820-
if (e.isCancelled() || !e.getMessage().startsWith("/"))
1821-
return false;
1822-
return Bukkit.dispatchCommand(e.getPlayer(), e.getMessage().substring(1));
1823-
} else {
1824-
final ServerCommandEvent e = new ServerCommandEvent(sender, command);
1825-
Bukkit.getPluginManager().callEvent(e);
1826-
if (e.getCommand().isEmpty() || e.isCancelled())
1827-
return false;
1828-
return Bukkit.dispatchCommand(e.getSender(), e.getCommand());
1818+
@Deprecated(since = "INSERT VERSION", forRemoval = true)
1819+
public static boolean dispatchCommand(CommandSender sender, String command) {
1820+
return EffCommand.dispatchCommand(sender, command, new RuntimeErrorProducer() {
1821+
@Override
1822+
public @NotNull ErrorSource getErrorSource() {
1823+
throw new UnsupportedOperationException();
18291824
}
1830-
} catch (final Exception ex) {
1831-
ex.printStackTrace(); // just like Bukkit
1832-
return false;
1833-
}
1825+
@Override
1826+
public void error(String message) { }
1827+
@Override
1828+
public void error(String message, String highlight) { }
1829+
@Override
1830+
public void warning(String message) { }
1831+
@Override
1832+
public void warning(String message, String highlight) { }
1833+
});
18341834
}
18351835

18361836
// ================ LOGGING ================

src/main/java/ch/njol/skript/conditions/CondIsSkriptCommand.java

Lines changed: 0 additions & 34 deletions
This file was deleted.

src/main/java/ch/njol/skript/effects/EffCommand.java

Lines changed: 0 additions & 95 deletions
This file was deleted.

src/main/java/org/skriptlang/skript/bukkit/command/CommandModule.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55
import org.skriptlang.skript.addon.HierarchicalAddonModule;
66
import org.skriptlang.skript.addon.SkriptAddon;
77
import org.skriptlang.skript.bukkit.command.custom.ScriptCommandRegistrar;
8+
import org.skriptlang.skript.bukkit.command.elements.conditions.CondIsScriptCommand;
89
import org.skriptlang.skript.bukkit.command.elements.effects.EffCancelCooldown;
10+
import org.skriptlang.skript.bukkit.command.elements.effects.EffCommand;
911
import org.skriptlang.skript.bukkit.command.elements.expressions.ExprArgument;
1012
import org.skriptlang.skript.bukkit.command.elements.expressions.ExprCmdCooldownInfo;
13+
import org.skriptlang.skript.bukkit.command.elements.expressions.ExprCommand;
1114
import org.skriptlang.skript.bukkit.command.elements.expressions.ExprCommandInfo;
1215
import org.skriptlang.skript.bukkit.command.elements.structures.StructCommand;
1316

@@ -22,9 +25,12 @@ protected void loadSelf(SkriptAddon addon) {
2225
ScriptCommandRegistrar.init(Skript.getInstance());
2326

2427
register(addon,
28+
CondIsScriptCommand::register,
2529
EffCancelCooldown::register,
30+
EffCommand::register,
2631
ExprArgument::register,
2732
ExprCmdCooldownInfo::register,
33+
ExprCommand::register,
2834
ExprCommandInfo::register,
2935
syntaxRegistry -> StructCommand.register(addon, syntaxRegistry)
3036
);

src/main/java/org/skriptlang/skript/bukkit/command/custom/ScriptCommandEvent.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@
1414
public class ScriptCommandEvent extends Event {
1515

1616
private final String label;
17+
private final String rawInput;
1718
private final CommandSender sender;
1819
private final ScriptCommandExecutor executor;
1920

2021
final Map<String, Object> arguments = new HashMap<>();
2122

22-
public ScriptCommandEvent(String label, CommandSender sender, ScriptCommandExecutor executor) {
23+
public ScriptCommandEvent(String label, String rawInput, CommandSender sender, ScriptCommandExecutor executor) {
2324
this.label = label;
25+
this.rawInput = rawInput;
2426
this.sender = sender;
2527
this.executor = executor;
2628
}
@@ -29,6 +31,10 @@ public String getLabel() {
2931
return label;
3032
}
3133

34+
public String getRawInput() {
35+
return rawInput;
36+
}
37+
3238
public CommandSender getSender() {
3339
return sender;
3440
}

src/main/java/org/skriptlang/skript/bukkit/command/custom/ScriptCommandExecutor.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import com.mojang.brigadier.context.CommandContext;
77
import com.mojang.brigadier.exceptions.CommandSyntaxException;
88
import com.mojang.brigadier.tree.ArgumentCommandNode;
9-
import com.mojang.brigadier.tree.LiteralCommandNode;
10-
import com.mojang.brigadier.tree.RootCommandNode;
119
import io.papermc.paper.command.brigadier.CommandSourceStack;
1210
import io.papermc.paper.command.brigadier.argument.resolvers.ArgumentResolver;
1311
import org.bukkit.command.CommandSender;
@@ -56,7 +54,7 @@ public ScriptCommandExecutor(Trigger trigger, List<ArgumentData<?>> arguments, @
5654
public int execute(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
5755
CommandSender sender = context.getSource().getSender();
5856
ScriptCommandEvent commandEvent =
59-
new ScriptCommandEvent(context.getNodes().getFirst().getNode().getName(), sender, this);
57+
new ScriptCommandEvent(context.getNodes().getFirst().getNode().getName(), context.getInput(), sender, this);
6058

6159
// final validations
6260
if (cooldownManager != null && !cooldownManager.checkExecution(commandEvent, sender)) {
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.skriptlang.skript.bukkit.command.elements.conditions;
2+
3+
import ch.njol.skript.conditions.base.PropertyCondition;
4+
import ch.njol.skript.doc.Description;
5+
import ch.njol.skript.doc.Example;
6+
import ch.njol.skript.doc.Name;
7+
import ch.njol.skript.doc.Since;
8+
import org.skriptlang.skript.bukkit.command.custom.ScriptCommandRegistrar;
9+
import org.skriptlang.skript.registration.SyntaxRegistry;
10+
11+
@Name("Is a Script Command")
12+
@Description("Checks whether a command (string label) is a script command (one registered in a script).")
13+
@Example("""
14+
on command:
15+
command is not a script command
16+
# do something only for non-custom commands
17+
""")
18+
@Since("2.6")
19+
public class CondIsScriptCommand extends PropertyCondition<String> {
20+
21+
public static void register(SyntaxRegistry syntaxRegistry) {
22+
syntaxRegistry.register(SyntaxRegistry.CONDITION,
23+
infoBuilder(CondIsScriptCommand.class, PropertyType.BE, "[a] s(c|k)ript (command|cmd)", "string")
24+
.supplier(CondIsScriptCommand::new)
25+
.build());
26+
}
27+
28+
@Override
29+
public boolean check(String command) {
30+
return ScriptCommandRegistrar.getCommand(command) != null;
31+
}
32+
33+
@Override
34+
protected String getPropertyName() {
35+
return "script command";
36+
}
37+
38+
}

0 commit comments

Comments
 (0)