1
mirror of https://github.com/CarmJos/ScriptItems synced 2024-09-19 13:25:50 +00:00

测试指令

This commit is contained in:
Carm Jos 2022-03-13 14:14:43 +08:00
parent e385888eb9
commit 092a1127aa
6 changed files with 82 additions and 33 deletions

View File

@ -111,6 +111,13 @@
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.github.SaiintBrisson.command-framework</groupId>
<artifactId>bukkit</artifactId>
<version>1.3.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>

View File

@ -3,12 +3,17 @@ package cc.carm.plugin.commanditem;
import cc.carm.lib.easyplugin.EasyPlugin;
import cc.carm.lib.easyplugin.i18n.EasyPluginMessageProvider;
import cc.carm.plugin.commanditem.command.CMDItemsCommand;
import cc.carm.plugin.commanditem.command.ItemSettingsAdapter;
import cc.carm.plugin.commanditem.command.ItemSettingsCompleter;
import cc.carm.plugin.commanditem.configuration.PluginConfig;
import cc.carm.plugin.commanditem.hooker.GHUpdateChecker;
import cc.carm.plugin.commanditem.item.ItemSettings;
import cc.carm.plugin.commanditem.listener.ItemListener;
import cc.carm.plugin.commanditem.manager.ConfigManager;
import cc.carm.plugin.commanditem.manager.ItemsManager;
import cc.carm.plugin.commanditem.util.JarResourceUtils;
import me.saiintbrisson.bukkit.command.BukkitFrame;
import me.saiintbrisson.bukkit.command.executor.BukkitSchedulerExecutor;
import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit;
@ -44,14 +49,18 @@ public class Main extends EasyPlugin {
this.itemsManager.initialize();
info("注册指令...");
registerCommand("CommandItem", new CMDItemsCommand());
BukkitFrame frame = new BukkitFrame(this);
frame.setExecutor(new BukkitSchedulerExecutor(this));
frame.registerAdapter(ItemSettings.class, new ItemSettingsAdapter());
frame.registerCompleter("settings", new ItemSettingsCompleter());
frame.registerCommands(new CMDItemsCommand());
info("注册监听器...");
regListener(new ItemListener());
if (PluginConfig.METRICS.get()) {
info("启用统计数据...");
new Metrics(this, 14459);
new Metrics(this, 14560);
}
if (PluginConfig.CHECK_UPDATE.get()) {

View File

@ -1,43 +1,44 @@
package cc.carm.plugin.commanditem.command;
import cc.carm.plugin.commanditem.CommandItemAPI;
import cc.carm.plugin.commanditem.item.ItemSettings;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import me.saiintbrisson.minecraft.command.annotation.Command;
import me.saiintbrisson.minecraft.command.annotation.Completer;
import me.saiintbrisson.minecraft.command.command.Context;
import me.saiintbrisson.minecraft.command.target.CommandTarget;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class CMDItemsCommand implements CommandExecutor, TabCompleter {
public class CMDItemsCommand {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
@NotNull String alias, @NotNull String[] args) {
if (sender instanceof Player) {
Player player = (Player) sender;
ItemSettings settings = CommandItemAPI.getItemsManager().listItemSettings().values().stream().findFirst().orElse(null);
if (settings != null) {
player.getInventory().addItem(settings.generateItem(1));
}
}
return true;
@Command(
name = "CommandItem", aliases = "cmdItem",
description = "CommandItem的主要指令。",
usage = "/CommandItem help",
permission = "CommandItem.admin"
)
public void main(Context<CommandSender> sender) {
help(sender);
}
@Nullable
@Override
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command,
@NotNull String alias, @NotNull String[] args) {
List<String> allCompletes = new ArrayList<>();
return allCompletes.stream()
.filter(s -> StringUtil.startsWithIgnoreCase(s, args[args.length - 1]))
.limit(10).collect(Collectors.toList());
@Command(name = "CommandItem.help")
public void help(Context<CommandSender> sender) {
sender.getSender().sendMessage("§a§lCommandItem §f§l指令帮助");
}
@Command(name = "CommandItem.apply", target = CommandTarget.PLAYER)
@Completer(name = "settings")
public void apply(Context<Player> sender,
ItemSettings settings) {
Player player = sender.getSender();
if (player.getInventory().getItemInMainHand().getType() != Material.AIR) {
ItemStack applied = settings.applyItem(player.getInventory().getItemInMainHand());
player.getInventory().setItemInMainHand(applied);
}
player.sendMessage("应用成功");
}
}

View File

@ -0,0 +1,14 @@
package cc.carm.plugin.commanditem.command;
import cc.carm.plugin.commanditem.CommandItemAPI;
import cc.carm.plugin.commanditem.item.ItemSettings;
import me.saiintbrisson.minecraft.command.argument.TypeAdapter;
public class ItemSettingsAdapter implements TypeAdapter<ItemSettings> {
@Override
public ItemSettings convert(String s) {
return CommandItemAPI.getItemsManager().getItemSettings(s);
}
}

View File

@ -0,0 +1,18 @@
package cc.carm.plugin.commanditem.command;
import cc.carm.plugin.commanditem.CommandItemAPI;
import me.saiintbrisson.minecraft.command.command.Context;
import me.saiintbrisson.minecraft.command.executor.CompleterExecutor;
import org.bukkit.command.CommandSender;
import java.util.ArrayList;
import java.util.List;
public class ItemSettingsCompleter implements CompleterExecutor<CommandSender> {
@Override
public List<String> execute(Context<CommandSender> context) {
return new ArrayList<>(CommandItemAPI.getItemsManager().listItemSettings().keySet());
}
}

View File

@ -2,6 +2,7 @@ package cc.carm.plugin.commanditem.item;
import cc.carm.plugin.commanditem.CommandItemAPI;
import cc.carm.plugin.commanditem.manager.ConfigManager;
import me.saiintbrisson.minecraft.command.argument.TypeAdapter;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
@ -109,5 +110,4 @@ public class ItemSettings {
ConfigManager.readListMap(config.getConfigurationSection("actions"), ItemActionGroup::read)
);
}
}