以下是一个示例的Java代码,用于实现在Bukkit 1.20.1服务器中,当玩家放置箱子后记录放置者ID,并禁止非放置者打开箱子。当两个箱子合并成一个时,只记录一个放置者ID,同时非放置者也不能打开大箱子。

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.Chest;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.HashMap;
import java.util.UUID;

public class ChestProtectionPlugin extends JavaPlugin implements Listener {
    private HashMap<Block, UUID> placedChests;

    @Override
    public void onEnable() {
        placedChests = new HashMap<>();
        Bukkit.getPluginManager().registerEvents(this, this);
    }

    @EventHandler
    public void onBlockPlace(BlockPlaceEvent event) {
        Block block = event.getBlock();
        Player player = event.getPlayer();

        if (block.getType() == Material.CHEST) {
            Chest chest = (Chest) block.getState();
            placedChests.put(block, player.getUniqueId());
        }
    }

    @EventHandler
    public void onInventoryOpen(InventoryOpenEvent event) {
        if (event.getInventory().getType() == org.bukkit.event.inventory.InventoryType.CHEST) {
            BlockState blockState = event.getInventory().getLocation().getBlock().getState();
            if (blockState instanceof Chest) {
                Chest chest = (Chest) blockState;
                UUID placerId = placedChests.get(chest.getBlock());

                if (placerId != null) {
                    Player player = (Player) event.getPlayer();
                    if (!player.getUniqueId().equals(placerId)) {
                        event.setCancelled(true);
                    }
                }
            }
        }
    }
}

你可以将上述代码保存为一个Java文件,并在Bukkit服务器中作为一个插件加载。该插件将会在玩家放置箱子时记录放置者ID,并在非放置者尝试打开箱子时禁止打开。当两个箱子合并成一个时,只记录一个放置者ID,并且非放置者也不能打开大箱子。

Bukkit 1.20.1 玩家放置箱子保护插件:记录放置者ID,禁止非放置者打开

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

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