用Java写一个Bukkit120的 玩家打开Gui的时候 Gui内第43格不为空的时候 则发送一条消息
你可以使用以下代码来实现你的需求:
首先,在你的插件主类中添加以下代码:
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
public class YourPlugin extends JavaPlugin implements Listener {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onInventoryOpen(InventoryOpenEvent event) {
Player player = (Player) event.getPlayer();
Inventory inventory = event.getInventory();
if (inventory != null && inventory.getName().equals("YourGuiName")) {
ItemStack item = inventory.getItem(42);
if (item != null && item.getType() != Material.AIR) {
player.sendMessage("The slot 43 is not empty.");
}
}
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
Player player = (Player) event.getWhoClicked();
Inventory inventory = event.getInventory();
if (inventory != null && inventory.getName().equals("YourGuiName")) {
ItemStack item = inventory.getItem(42);
if (item != null && item.getType() != Material.AIR) {
player.sendMessage("The slot 43 is not empty.");
}
}
}
}
然后,你需要创建一个GUI界面供玩家打开。例如:
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
public class YourPlugin extends JavaPlugin {
@Override
public void onEnable() {
// 在你的插件启用时创建GUI界面
createGUI();
}
private void createGUI() {
Inventory gui = Bukkit.createInventory(null, 54, "YourGuiName");
// 在第43个槽位放置一个物品
ItemStack item = new ItemStack(Material.DIAMOND);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("Example Item");
item.setItemMeta(meta);
gui.setItem(42, item);
// 注册一个命令来打开GUI
getCommand("opengui").setExecutor((sender, command, label, args) -> {
if (sender instanceof Player) {
Player player = (Player) sender;
player.openInventory(gui);
}
return true;
});
}
}
现在,当玩家打开GUI并且第43个槽位不为空时,将会发送一条消息给玩家。你可以根据你的需求修改消息内容和GUI界面的设置
原文地址: https://www.cveoy.top/t/topic/ilQp 著作权归作者所有。请勿转载和采集!