Bukkit 1.20.1 箱子保护插件:保护你的宝藏!

想要在你的 Minecraft 服务器上保护你的宝贵物品吗?这个 Bukkit 1.20.1 箱子保护插件教程将教你如何使用 Java 编写一个插件,记录箱子的所有者,并阻止除所有者以外的任何人打开它。

代码示例:javaimport 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.configuration.file.FileConfiguration;import org.bukkit.configuration.file.YamlConfiguration;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.plugin.java.JavaPlugin;

import java.io.File;import java.io.IOException;

public class ChestProtectionPlugin extends JavaPlugin implements Listener {

private FileConfiguration dataConfig;    private File dataFile;

@Override    public void onEnable() {        // 注册事件监听器        Bukkit.getPluginManager().registerEvents(this, this);

    // 加载或创建数据文件        dataFile = new File(getDataFolder(), 'data.yml');        if (!dataFile.exists()) {            saveResource('data.yml', false);        }        dataConfig = YamlConfiguration.loadConfiguration(dataFile);    }

@EventHandler    public void onBlockPlace(BlockPlaceEvent event) {        Block block = event.getBlockPlaced();        if (block.getType() == Material.CHEST) {            Chest chest = (Chest) block.getState();            Player player = event.getPlayer();            String chestOwner = player.getUniqueId().toString();            dataConfig.set(chest.getLocation().toString(), chestOwner);            saveDataConfig();        }    }

@EventHandler    public void onInventoryOpen(InventoryOpenEvent event) {        BlockState blockState = event.getInventory().getLocation().getBlock().getState();        if (blockState instanceof Chest) {            Chest chest = (Chest) blockState;            Player player = (Player) event.getPlayer();            String chestOwner = dataConfig.getString(chest.getLocation().toString());            String playerID = player.getUniqueId().toString();            if (chestOwner != null && !chestOwner.equals(playerID)) {                event.setCancelled(true);                player.sendMessage('你没有权限打开这个箱子!');            }        }    }

private void saveDataConfig() {        try {            dataConfig.save(dataFile);        } catch (IOException e) {            getLogger().severe('无法保存数据文件: ' + e.getMessage());        }
Bukkit 1.20.1 箱子保护插件:防止他人打开你的箱子

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

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