要判断玩家手持的物品是否是木棍,并且木棍具有 NBT 标签'canFly',可以使用以下代码:

import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.tags.CustomItemTagContainer;
import org.bukkit.inventory.meta.tags.ItemTagType;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

    @Override
    public void onEnable() {
        getServer().getPluginManager().registerEvents(new MyListener(), this);
    }
}

class MyListener implements org.bukkit.event.Listener {

    @org.bukkit.event.EventHandler
    public void onPlayerInteract(org.bukkit.event.player.PlayerInteractEvent event) {
        Player player = event.getPlayer();
        ItemStack item = player.getInventory().getItemInMainHand();

        if (item.getType() == Material.STICK) {
            ItemMeta meta = item.getItemMeta();
            CustomItemTagContainer container = meta.getCustomTagContainer();

            if (container.hasCustomTag(ItemTagType.STRING, 'canFly')) {
                String canFly = container.getCustomTag(ItemTagType.STRING, 'canFly');
                if (canFly.equals('true')) {
                    // 玩家手持的是具有'canFly'标签的木棍
                    player.sendMessage('你手持的是可以飞行的木棍!');
                }
            }
        }
    }
}

这段代码创建了一个 Spigot 插件,监听玩家的交互事件。在onPlayerInteract方法中,首先获取玩家手持的物品。然后,判断物品类型是否为木棍(Material.STICK)。如果是木棍,获取物品的元数据(ItemMeta),然后获取自定义标签容器(CustomItemTagContainer)。最后,判断容器中是否存在名为'canFly'的字符串标签,并且其值为'true'。如果满足条件,则向玩家发送一条消息。

请注意,此代码仅适用于 Minecraft 1.16 版本的 Spigot API。如果你使用的是其他版本的 Minecraft 和 Spigot,请根据对应版本的 API 进行适当的修改。


原文地址: https://www.cveoy.top/t/topic/fOEJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录