Bukkit 1.20.1 箱子自动上锁插件
Bukkit 1.20.1 箱子自动上锁插件
这是一个用 Java 编写的 Bukkit 插件,实现了以下功能:
- 玩家放置箱子后自动上锁
- 当两个箱子合并成大箱子后,只要有一个箱子受保护,则全部受保护
以下是插件代码:
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.Chest;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.inventory.InventoryMoveItemEvent;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.HashMap;
import java.util.Map;
public class ChestLockPlugin extends JavaPlugin implements Listener {
private Map<Block, Boolean> lockedChests;
@Override
public void onEnable() {
lockedChests = new HashMap<>();
getServer().getPluginManager().registerEvents(this, this);
}
@Override
public void onDisable() {
lockedChests.clear();
}
@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {
Block block = event.getBlock();
if (block.getType() == Material.CHEST) {
Chest chest = (Chest) block.getState();
lockedChests.put(chest.getBlock(), true);
}
}
@EventHandler
public void onInventoryMoveItem(InventoryMoveItemEvent event) {
InventoryHolder sourceHolder = event.getSource().getHolder();
InventoryHolder destinationHolder = event.getDestination().getHolder();
if (sourceHolder instanceof Chest && destinationHolder instanceof Chest) {
Chest sourceChest = (Chest) sourceHolder;
Chest destinationChest = (Chest) destinationHolder;
boolean sourceLocked = isChestLocked(sourceChest.getBlock());
boolean destinationLocked = isChestLocked(destinationChest.getBlock());
if (sourceLocked || destinationLocked) {
event.setCancelled(true);
}
}
}
private boolean isChestLocked(Block block) {
BlockState state = block.getState();
if (state instanceof Chest) {
Chest chest = (Chest) state;
return lockedChests.containsKey(chest.getBlock());
}
return false;
}
}
使用方法:
- 将以上代码保存为
ChestLockPlugin.java文件。 - 使用 Java 开发工具包 (JDK) 编译该文件,生成
ChestLockPlugin.jar文件。 - 将
ChestLockPlugin.jar文件放入您的 Bukkit 1.20.1 服务器的plugins文件夹中。 - 启动服务器,插件将自动生效。
功能说明:
- 当玩家放置一个箱子时,插件会自动将其锁定。
- 当两个箱子合并成一个大箱子时,如果其中一个箱子被锁定,则整个大箱子都会被锁定,阻止玩家在箱子之间移动物品。
注意:
- 此插件仅适用于 Bukkit 1.20.1 版本。
- 确保您的服务器已安装 Java 开发工具包 (JDK) 以编译插件。
原文地址: http://www.cveoy.top/t/topic/fR0g 著作权归作者所有。请勿转载和采集!