geforkt von Mirrors/AxiomPaperPlugin
Fix PluginBrigadierCommand suggestions delegation
Dieser Commit ist enthalten in:
Ursprung
8af375f4b7
Commit
11b4b845b4
@ -1,9 +1,15 @@
|
|||||||
package io.papermc.paperweight.testplugin;
|
package io.papermc.paperweight.testplugin;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.CommandDispatcher;
|
||||||
|
import com.mojang.brigadier.ParseResults;
|
||||||
|
import com.mojang.brigadier.StringReader;
|
||||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
|
import java.util.List;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
import com.mojang.brigadier.suggestion.Suggestion;
|
||||||
import net.minecraft.commands.CommandSourceStack;
|
import net.minecraft.commands.CommandSourceStack;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.PluginIdentifiableCommand;
|
import org.bukkit.command.PluginIdentifiableCommand;
|
||||||
@ -11,6 +17,7 @@ import org.bukkit.craftbukkit.v1_19_R1.CraftServer;
|
|||||||
import org.bukkit.craftbukkit.v1_19_R1.command.VanillaCommandWrapper;
|
import org.bukkit.craftbukkit.v1_19_R1.command.VanillaCommandWrapper;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
import org.checkerframework.framework.qual.DefaultQualifier;
|
import org.checkerframework.framework.qual.DefaultQualifier;
|
||||||
|
|
||||||
@DefaultQualifier(NonNull.class)
|
@DefaultQualifier(NonNull.class)
|
||||||
@ -40,6 +47,17 @@ final class PluginBrigadierCommand extends Command implements PluginIdentifiable
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> tabComplete(final CommandSender sender, final String alias, final String[] args, final @Nullable Location location) {
|
||||||
|
final String joined = String.join(" ", args);
|
||||||
|
final String argsString = joined.isBlank() ? "" : joined;
|
||||||
|
final CommandDispatcher<CommandSourceStack> dispatcher = ((CraftServer) Bukkit.getServer()).getServer().getCommands().getDispatcher();
|
||||||
|
final ParseResults<CommandSourceStack> results = dispatcher.parse(new StringReader(alias + " " + argsString), VanillaCommandWrapper.getListener(sender));
|
||||||
|
return dispatcher.getCompletionSuggestions(results)
|
||||||
|
.thenApply(result -> result.getList().stream().map(Suggestion::getText).toList())
|
||||||
|
.join();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Plugin getPlugin() {
|
public Plugin getPlugin() {
|
||||||
return this.plugin;
|
return this.plugin;
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren