Bukkit 1.20.1 箱子保护插件:防止他人打开你的箱子
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()); }
原文地址: http://www.cveoy.top/t/topic/fR5H 著作权归作者所有。请勿转载和采集!