你可以使用以下代码来实现你的需求:

import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener {

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

    @EventHandler
    public void onInventoryOpen(InventoryOpenEvent event) {
        Player player = (Player) event.getPlayer();
        FileConfiguration config = getConfig();

        int itemCount = 0;
        for (String key : config.getKeys(false)) {
            if (config.isItemStack(key)) {
                itemCount++;
            }
        }

        if (itemCount > 45) {
            player.closeInventory();
            player.sendMessage(ChatColor.RED + "物品过多,无法打开 GUI!");
            event.setCancelled(true);
        }
    }
}

在你的插件主类中,注册一个 InventoryOpenEvent 的监听器。当玩家打开一个 GUI 时,会触发这个事件,然后我们在事件处理方法中检查配置文件中物品的数量。如果物品数量超过 45,我们就关闭玩家的 GUI,给玩家发送一条物品过多的消息,并取消事件,阻止 GUI 打开。

请注意,这里假设你已经创建了一个合适的 config.yml 配置文件,并在其中存储了物品数据。你可以使用 getConfig() 方法加载配置文件,并使用 isItemStack() 方法检查每个配置项是否是一个物品。

记得在 plugin.yml 文件中添加合适的插件依赖和启用你的插件

用Java写一个Bukkit1201的 当配置文件内的物品超过45个的时候 Gui禁止打开并发送一条物品过多消息

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

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