Bukkit 1.20.1 自动上锁箱子插件:放置自动上锁,合并自动锁定
以下是一个示例 Java 代码,用于实现当玩家放置箱子后自动上锁并记录,以及当两个箱子合并为大箱子后,如果有一个小箱子上锁则自动上锁:
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.InventoryMoveItemEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
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<>();
Bukkit.getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {
Player player = event.getPlayer();
Block block = event.getBlock();
if (block.getType() == Material.CHEST) {
Chest chest = (Chest) block.getState();
lockedChests.put(chest.getBlock(), false);
player.sendMessage('箱子已放置并自动解锁。');
}
}
@EventHandler
public void onInventoryMoveItem(InventoryMoveItemEvent event) {
Inventory sourceInventory = event.getSource();
Inventory destinationInventory = event.getDestination();
if (sourceInventory.getHolder() instanceof Chest && destinationInventory.getHolder() instanceof Chest) {
Chest sourceChest = (Chest) sourceInventory.getHolder();
Chest destinationChest = (Chest) destinationInventory.getHolder();
if (lockedChests.containsKey(sourceChest.getBlock()) && lockedChests.containsKey(destinationChest.getBlock())) {
boolean sourceChestLocked = lockedChests.get(sourceChest.getBlock());
boolean destinationChestLocked = lockedChests.get(destinationChest.getBlock());
if (sourceChestLocked || destinationChestLocked) {
lockedChests.put(sourceChest.getBlock(), true);
lockedChests.put(destinationChest.getBlock(), true);
event.setCancelled(true);
return;
}
}
}
}
}
请注意,此代码仅为示例,可能需要根据您的具体需求进行修改和调整。此外,您还需要将其编译为插件并将其放置在 Bukkit 服务器的插件文件夹中才能正常运行。
原文地址: http://www.cveoy.top/t/topic/fRZU 著作权归作者所有。请勿转载和采集!