我目前正在为 Minecraft 1.20.6 制作一个插件,我正在尝试设置当您右键单击某个块(又名我的宝箱 ItemStack,但已放置)时,它会与我的自定义库存一起弹出。但我遇到了一个问题,我无法弄清楚如何做到这一点,因此当您单击我的 Chest ItemStack 时(无需右键单击实际的箱子)。
我该怎么做?
首先,您可以使用
block != null
来代替
e.hasBlock()
。
另外,如果是之前放置的方块,您可以将位置保存到配置文件中,然后检查单击的位置是否在此文件中。
这是检查配置的代码:
// this method convert location to string
public static String stringifyLocation(Location loc) {
return loc.getWorld().getName() + "_" + loc.getBlockX() + "_" + loc.getBlockY() + "_" + loc.getBlockZ();
}
// this method check if the chest is one of us
public boolean isMyChest(Location loc) {
return plugin.getConfig().getStringList("shop.blocks_chest").contains(stringifyLocation(
}
@EventHandler
public void onPlace(BlockPlaceEvent e) {
// here make all checks about your chest
if(e.getItemInHand().isSimilar(createChest())) {
List<String> list = plugin.getConfig().getStringList("shop.blocks_chest"); // list of your chests
list.add(stringifyLocation(e.getBlock().getLocation()));
plugin.getConfig().set("shop.blocks_chest", list); // change the value
plugin.saveConfig(); // save in the config.yml
}
}
不要忘记根据您自己已经实现的方法转换此代码。