{/n/'title/': /'Bukkit 1.20.1 指令打开末影箱 Java 插件/',/n/'description/': /'使用 Java 编写 Bukkit 插件,在 1.20.1 的 Minecraft 服务器上使用指令打开玩家的末影箱。插件会创建一个临时物品栏,允许玩家查看末影箱内容,并在关闭物品栏时将物品掉落到玩家位置。/',/n/'keywords/': /'Bukkit, Minecraft, 1.20.1, 插件, Java, 末影箱, 指令, Ender Chest, Command, Inventory/',/n/'content/': /'///'import org.bukkit.Bukkit;//nimport org.bukkit.Material;//nimport org.bukkit.block.Block;//nimport org.bukkit.command.Command;//nimport org.bukkit.command.CommandSender;//nimport org.bukkit.entity.Player;//nimport org.bukkit.event.EventHandler;//nimport org.bukkit.event.Listener;//nimport org.bukkit.event.inventory.InventoryClickEvent;//nimport org.bukkit.event.inventory.InventoryCloseEvent;//nimport org.bukkit.event.player.PlayerQuitEvent;//nimport org.bukkit.inventory.Inventory;//nimport org.bukkit.inventory.ItemStack;//nimport org.bukkit.inventory.meta.ItemMeta;//nimport org.bukkit.plugin.java.JavaPlugin;//n//nimport java.util.HashMap;//nimport java.util.Map;//nimport java.util.UUID;//n//npublic class EnderChestPlugin extends JavaPlugin implements Listener {//n private Map<UUID, Inventory> enderChests;//n//n @Override//n public void onEnable() {//n enderChests = new HashMap<>();//n Bukkit.getPluginManager().registerEvents(this, this);//n }//n//n @Override//n public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {//n if (command.getName().equalsIgnoreCase(/'enderchest/')) {//n if (!(sender instanceof Player)) {//n sender.sendMessage(/'Only players can use this command./');//n return true;//n }//n//n Player player = (Player) sender;//n openEnderChest(player);//n return true;//n }//n return false;//n }//n//n @EventHandler//n public void onInventoryClick(InventoryClickEvent event) {//n if (event.getInventory().getType() == Inventory.Type.ENDER_CHEST) {//n Player player = (Player) event.getWhoClicked();//n if (enderChests.containsKey(player.getUniqueId())) {//n event.setCancelled(true);//n }//n }//n }//n//n @EventHandler//n public void onInventoryClose(InventoryCloseEvent event) {//n if (event.getInventory().getType() == Inventory.Type.ENDER_CHEST) {//n Player player = (Player) event.getPlayer();//n if (enderChests.containsKey(player.getUniqueId())) {//n Inventory enderChest = enderChests.get(player.getUniqueId());//n for (int i = 0; i < enderChest.getSize(); i++) {//n ItemStack item = enderChest.getItem(i);//n if (item != null && item.getType() != Material.AIR) {//n player.getWorld().dropItemNaturally(player.getLocation(), item);//n }//n }//n//n enderChests.remove(player.getUniqueId());//n }//n }//n }//n//n @EventHandler//n public void onPlayerQuit(PlayerQuitEvent event) {//n Player player = event.getPlayer();//n if (enderChests.containsKey(player.getUniqueId())) {//n Inventory enderChest = enderChests.get(player.getUniqueId());//n for (int i = 0; i < enderChest.getSize(); i++) {//n ItemStack item = enderChest.getItem(i);//n if (item != null && item.getType() != Material.AIR) {//n player.getWorld().dropItemNaturally(player.getLocation(), item);//n }//n }//n//n enderChests.remove(player.getUniqueId());//n }//n }//n//n private void openEnderChest(Player player) {//n Inventory enderChest = Bukkit.createInventory(player, 27, /'Ender Chest/');//n//n for (int i = 0; i < enderChest.getSize(); i++) {//n ItemStack glassPane = new ItemStack(Material.GRAY_STAINED_GLASS_PANE);//n ItemMeta glassPaneMeta = glassPane.getItemMeta();//n glassPaneMeta.setDisplayName(/' /');//n glassPane.setItemMeta(glassPaneMeta);//n enderChest.setItem(i, glassPane);//n }//n//n player.openInventory(enderChest);//n enderChests.put(player.getUniqueId(), enderChest);//n }//n}//n/

Bukkit 1.20.1 指令打开末影箱 Java 插件

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

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