9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-26 10:29:20 +00:00

improve commands

This commit is contained in:
XiaoMoMi
2025-03-17 05:36:43 +08:00
parent c73ad94242
commit ac79ea2fd5
13 changed files with 122 additions and 72 deletions

View File

@@ -31,11 +31,12 @@ public class BukkitCommandManager extends AbstractCommandManager<CommandSender>
new ReloadCommand(this, plugin),
new GetItemCommand(this, plugin),
new GiveItemCommand(this, plugin),
new ItemBrowserCommand(this, plugin),
new ItemRecipeBrowserPlayerCommand(this, plugin),
new ItemUsageBrowserPlayerCommand(this, plugin),
new ItemRecipeBrowserAdminCommand(this, plugin),
new ItemUsageBrowserAdminCommand(this, plugin),
new ItemBrowserPlayerCommand(this, plugin),
new ItemBrowserAdminCommand(this, plugin),
new SearchRecipePlayerCommand(this, plugin),
new SearchUsagePlayerCommand(this, plugin),
new SearchRecipeAdminCommand(this, plugin),
new SearchUsageAdminCommand(this, plugin),
new TestCommand(this, plugin),
new DebugGetBlockStateRegistryIdCommand(this, plugin),
new DebugGetBlockInternalIdCommand(this, plugin),

View File

@@ -0,0 +1,36 @@
package net.momirealms.craftengine.bukkit.plugin.command.feature;
import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature;
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.incendo.cloud.Command;
import org.incendo.cloud.bukkit.data.MultiplePlayerSelector;
import org.incendo.cloud.bukkit.parser.selector.MultiplePlayerSelectorParser;
public class ItemBrowserAdminCommand extends BukkitCommandFeature<CommandSender> {
public ItemBrowserAdminCommand(CraftEngineCommandManager<CommandSender> commandManager, CraftEngine plugin) {
super(commandManager, plugin);
}
@Override
public Command.Builder<? extends CommandSender> assembleCommand(org.incendo.cloud.CommandManager<CommandSender> manager, Command.Builder<CommandSender> builder) {
return builder
.required("players", MultiplePlayerSelectorParser.multiplePlayerSelectorParser(true))
.handler(context -> {
MultiplePlayerSelector selector = context.get("players");
for (Player player : selector.values()) {
BukkitServerPlayer serverPlayer = plugin().adapt(player);
plugin().itemBrowserManager().open(serverPlayer);
}
});
}
@Override
public String getFeatureID() {
return "item_browser_admin";
}
}

View File

@@ -8,9 +8,9 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.incendo.cloud.Command;
public class ItemBrowserCommand extends BukkitCommandFeature<CommandSender> {
public class ItemBrowserPlayerCommand extends BukkitCommandFeature<CommandSender> {
public ItemBrowserCommand(CraftEngineCommandManager<CommandSender> commandManager, CraftEngine plugin) {
public ItemBrowserPlayerCommand(CraftEngineCommandManager<CommandSender> commandManager, CraftEngine plugin) {
super(commandManager, plugin);
}
@@ -27,6 +27,6 @@ public class ItemBrowserCommand extends BukkitCommandFeature<CommandSender> {
@Override
public String getFeatureID() {
return "item_browser";
return "item_browser_player";
}
}

View File

@@ -25,9 +25,9 @@ import java.util.Collection;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public class ItemRecipeBrowserAdminCommand extends BukkitCommandFeature<CommandSender> {
public class SearchRecipeAdminCommand extends BukkitCommandFeature<CommandSender> {
public ItemRecipeBrowserAdminCommand(CraftEngineCommandManager<CommandSender> commandManager, CraftEngine plugin) {
public SearchRecipeAdminCommand(CraftEngineCommandManager<CommandSender> commandManager, CraftEngine plugin) {
super(commandManager, plugin);
}
@@ -44,15 +44,13 @@ public class ItemRecipeBrowserAdminCommand extends BukkitCommandFeature<CommandS
.handler(context -> {
MultiplePlayerSelector selector = context.get("player");
Collection<Player> players = selector.values();
NamespacedKey namespacedKey = context.get("id");
for (Player player : players) {
BukkitServerPlayer serverPlayer = plugin().adapt(player);
NamespacedKey namespacedKey = context.get("id");
Key itemId = Key.of(namespacedKey.namespace(), namespacedKey.value());
List<Recipe<Object>> inRecipes = plugin().recipeManager().getRecipeByResult(itemId);
if (!inRecipes.isEmpty()) {
plugin().itemBrowserManager().openRecipePage(serverPlayer, null, inRecipes, 0, 0, false);
} else {
handleFeedback(context, MessageConstants.COMMAND_ITEM_RECIPE_BROWSER_RECIPE_NOT_FOUND);
}
}
});
@@ -60,6 +58,6 @@ public class ItemRecipeBrowserAdminCommand extends BukkitCommandFeature<CommandS
@Override
public String getFeatureID() {
return "item_recipe_browser_admin";
return "search_recipe_admin";
}
}

View File

@@ -2,6 +2,8 @@ package net.momirealms.craftengine.bukkit.plugin.command.feature;
import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature;
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.core.entity.player.InteractionHand;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.recipe.Recipe;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager;
@@ -22,9 +24,9 @@ import org.incendo.cloud.suggestion.SuggestionProvider;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public class ItemRecipeBrowserPlayerCommand extends BukkitCommandFeature<CommandSender> {
public class SearchRecipePlayerCommand extends BukkitCommandFeature<CommandSender> {
public ItemRecipeBrowserPlayerCommand(CraftEngineCommandManager<CommandSender> commandManager, CraftEngine plugin) {
public SearchRecipePlayerCommand(CraftEngineCommandManager<CommandSender> commandManager, CraftEngine plugin) {
super(commandManager, plugin);
}
@@ -32,28 +34,26 @@ public class ItemRecipeBrowserPlayerCommand extends BukkitCommandFeature<Command
public Command.Builder<? extends CommandSender> assembleCommand(CommandManager<CommandSender> manager, Command.Builder<CommandSender> builder) {
return builder
.senderType(Player.class)
.required("id", NamespacedKeyParser.namespacedKeyComponent().suggestionProvider(new SuggestionProvider<>() {
@Override
public @NonNull CompletableFuture<? extends @NonNull Iterable<? extends @NonNull Suggestion>> suggestionsFuture(@NonNull CommandContext<Object> context, @NonNull CommandInput input) {
return CompletableFuture.completedFuture(plugin().itemManager().cachedSuggestions());
}
}))
.handler(context -> {
Player player = context.sender();
BukkitServerPlayer serverPlayer = plugin().adapt(player);
NamespacedKey namespacedKey = context.get("id");
Key itemId = Key.of(namespacedKey.namespace(), namespacedKey.value());
Item<?> item = serverPlayer.getItemInHand(InteractionHand.MAIN_HAND);
if (item == null) {
handleFeedback(context, MessageConstants.COMMAND_SEARCH_RECIPE_NO_ITEM);
return;
}
Key itemId = item.id();
List<Recipe<Object>> inRecipes = plugin().recipeManager().getRecipeByResult(itemId);
if (!inRecipes.isEmpty()) {
plugin().itemBrowserManager().openRecipePage(serverPlayer, null, inRecipes, 0, 0, false);
} else {
handleFeedback(context, MessageConstants.COMMAND_ITEM_RECIPE_BROWSER_RECIPE_NOT_FOUND);
handleFeedback(context, MessageConstants.COMMAND_SEARCH_RECIPE_NOT_FOUND);
}
});
}
@Override
public String getFeatureID() {
return "item_recipe_browser_player";
return "search_recipe_player";
}
}

View File

@@ -25,9 +25,9 @@ import java.util.Collection;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public class ItemUsageBrowserAdminCommand extends BukkitCommandFeature<CommandSender> {
public class SearchUsageAdminCommand extends BukkitCommandFeature<CommandSender> {
public ItemUsageBrowserAdminCommand(CraftEngineCommandManager<CommandSender> commandManager, CraftEngine plugin) {
public SearchUsageAdminCommand(CraftEngineCommandManager<CommandSender> commandManager, CraftEngine plugin) {
super(commandManager, plugin);
}
@@ -44,15 +44,13 @@ public class ItemUsageBrowserAdminCommand extends BukkitCommandFeature<CommandSe
.handler(context -> {
MultiplePlayerSelector selector = context.get("player");
Collection<Player> players = selector.values();
NamespacedKey namespacedKey = context.get("id");
for (Player player : players) {
BukkitServerPlayer serverPlayer = plugin().adapt(player);
NamespacedKey namespacedKey = context.get("id");
Key itemId = Key.of(namespacedKey.namespace(), namespacedKey.value());
List<Recipe<Object>> inRecipes = plugin().recipeManager().getRecipeByIngredient(itemId);
if (!inRecipes.isEmpty()) {
plugin().itemBrowserManager().openRecipePage(serverPlayer, null, inRecipes, 0, 0, false);
} else {
handleFeedback(context, MessageConstants.COMMAND_ITEM_USAGE_BROWSER_RECIPE_NOT_FOUND);
}
}
});
@@ -60,6 +58,6 @@ public class ItemUsageBrowserAdminCommand extends BukkitCommandFeature<CommandSe
@Override
public String getFeatureID() {
return "item_usage_browser_admin";
return "search_usage_admin";
}
}

View File

@@ -2,6 +2,8 @@ package net.momirealms.craftengine.bukkit.plugin.command.feature;
import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature;
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.core.entity.player.InteractionHand;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.recipe.Recipe;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager;
@@ -22,9 +24,9 @@ import org.incendo.cloud.suggestion.SuggestionProvider;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public class ItemUsageBrowserPlayerCommand extends BukkitCommandFeature<CommandSender> {
public class SearchUsagePlayerCommand extends BukkitCommandFeature<CommandSender> {
public ItemUsageBrowserPlayerCommand(CraftEngineCommandManager<CommandSender> commandManager, CraftEngine plugin) {
public SearchUsagePlayerCommand(CraftEngineCommandManager<CommandSender> commandManager, CraftEngine plugin) {
super(commandManager, plugin);
}
@@ -32,28 +34,26 @@ public class ItemUsageBrowserPlayerCommand extends BukkitCommandFeature<CommandS
public Command.Builder<? extends CommandSender> assembleCommand(CommandManager<CommandSender> manager, Command.Builder<CommandSender> builder) {
return builder
.senderType(Player.class)
.required("id", NamespacedKeyParser.namespacedKeyComponent().suggestionProvider(new SuggestionProvider<>() {
@Override
public @NonNull CompletableFuture<? extends @NonNull Iterable<? extends @NonNull Suggestion>> suggestionsFuture(@NonNull CommandContext<Object> context, @NonNull CommandInput input) {
return CompletableFuture.completedFuture(plugin().itemManager().cachedSuggestions());
}
}))
.handler(context -> {
Player player = context.sender();
BukkitServerPlayer serverPlayer = plugin().adapt(player);
NamespacedKey namespacedKey = context.get("id");
Key itemId = Key.of(namespacedKey.namespace(), namespacedKey.value());
Item<?> item = serverPlayer.getItemInHand(InteractionHand.MAIN_HAND);
if (item == null) {
handleFeedback(context, MessageConstants.COMMAND_SEARCH_USAGE_NO_ITEM);
return;
}
Key itemId = item.id();
List<Recipe<Object>> inRecipes = plugin().recipeManager().getRecipeByIngredient(itemId);
if (!inRecipes.isEmpty()) {
plugin().itemBrowserManager().openRecipePage(serverPlayer, null, inRecipes, 0, 0, false);
} else {
handleFeedback(context, MessageConstants.COMMAND_ITEM_USAGE_BROWSER_RECIPE_NOT_FOUND);
handleFeedback(context, MessageConstants.COMMAND_SEARCH_USAGE_NOT_FOUND);
}
});
}
@Override
public String getFeatureID() {
return "item_usage_browser_player";
return "search_usage_player";
}
}