feat(core-bukkit): 添加指令: /lore info

This commit is contained in:
2023-11-04 21:43:47 +08:00
parent 2f5293da7f
commit 58d489aa27
3 changed files with 104 additions and 0 deletions

View File

@@ -19,6 +19,7 @@ public final class LoreCommand extends ParentCommand {
addChildCommand(LoreNameCommand.INSTANCE); addChildCommand(LoreNameCommand.INSTANCE);
addChildCommand(LoreCustomModelDataCommand.INSTANCE); addChildCommand(LoreCustomModelDataCommand.INSTANCE);
addChildCommand(LoreFlagCommand.INSTANCE); addChildCommand(LoreFlagCommand.INSTANCE);
addChildCommand(LoreInfoCommand.INSTANCE);
} }
@Override @Override

View File

@@ -0,0 +1,83 @@
package cn.hamster3.mc.plugin.core.bukkit.command.lore.sub;
import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand;
import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage;
import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
import java.util.List;
public class LoreInfoCommand extends ChildCommand {
public static final LoreInfoCommand INSTANCE = new LoreInfoCommand();
private LoreInfoCommand() {
}
@Override
public @NotNull String getName() {
return "info";
}
@Override
public @NotNull String getUsage() {
return "info";
}
@Override
public boolean hasPermission(@NotNull CommandSender sender) {
return true;
}
@Override
public @NotNull String getDescription() {
return "查看手持物品的信息";
}
@SuppressWarnings("deprecation")
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
if (!(sender instanceof Player)) {
CoreMessage.COMMAND_MUST_USED_BY_PLAYER.show(sender);
return true;
}
Player player = (Player) sender;
ItemStack stack = player.getItemInHand();
if (CoreBukkitUtils.isEmptyItemStack(stack)) {
CoreMessage.COMMAND_LORE_HAND_EMPTY.show(player);
return true;
}
sender.sendMessage("§a物品名称" + CoreBukkitUtils.getItemNameComponent(stack));
ItemMeta meta = stack.getItemMeta();
if (meta == null) {
sender.sendMessage("§a物品自定义模型 ID: 无");
sender.sendMessage("§a物品 lore: 无");
return true;
}
if (meta.hasCustomModelData()) {
sender.sendMessage("§a物品自定义模型 ID: " + meta.getCustomModelData());
} else {
sender.sendMessage("§a物品自定义模型 ID: 无");
}
List<String> lore = meta.getLore();
if (lore != null) {
sender.sendMessage("§a物品 lore: ");
for (int i = 0; i < lore.size(); i++) {
String s = lore.get(i);
sender.sendMessage("§a" + i + ". §f" + s);
}
} else {
sender.sendMessage("§a物品 lore: 无");
}
return true;
}
@Override
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
return null;
}
}

View File

@@ -5,6 +5,7 @@ import cn.hamster3.mc.plugin.core.common.data.DisplayMessage;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import de.tr7zw.changeme.nbtapi.NBTContainer; import de.tr7zw.changeme.nbtapi.NBTContainer;
import de.tr7zw.changeme.nbtapi.NBTItem; import de.tr7zw.changeme.nbtapi.NBTItem;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import net.kyori.adventure.title.Title; import net.kyori.adventure.title.Title;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@@ -244,6 +245,25 @@ public final class CoreBukkitUtils {
return config; return config;
} }
public static Component getItemNameComponent(ItemStack stack) {
if (isEmptyItemStack(stack)) {
return Component.translatable("block.minecraft.air");
}
ItemMeta meta = stack.getItemMeta();
if (meta != null) {
if (meta.hasDisplayName()) {
return Component.text(meta.getDisplayName());
}
}
Material type = stack.getType();
if (type.isBlock()) {
return Component.translatable("block.minecraft." + type.name().toLowerCase());
} else {
return Component.translatable("item.minecraft." + type.name().toLowerCase());
}
}
@NotNull @NotNull
public static YamlConfiguration getPluginConfig(@NotNull Plugin plugin, @NotNull String filename) { public static YamlConfiguration getPluginConfig(@NotNull Plugin plugin, @NotNull String filename) {
File file = new File(plugin.getDataFolder(), filename); File file = new File(plugin.getDataFolder(), filename);