Bukkit 1.20.1 箱子 HolographicDisplays 文字显示插件
以下是一个用Java编写的示例代码,用于在Bukkit 1.20.1中实现单个箱子放置后在箱子上显示HolographicDisplays文字,并且当两个箱子合并成大箱子后只显示一个HolographicDisplays文字。\n\njava\nimport org.bukkit.Bukkit;\nimport org.bukkit.Location;\nimport org.bukkit.Material;\nimport org.bukkit.block.Block;\nimport org.bukkit.block.BlockFace;\nimport org.bukkit.entity.ArmorStand;\nimport org.bukkit.entity.EntityType;\nimport org.bukkit.entity.Player;\nimport org.bukkit.event.EventHandler;\nimport org.bukkit.event.Listener;\nimport org.bukkit.event.block.BlockPlaceEvent;\nimport org.bukkit.event.player.PlayerInteractEvent;\nimport org.bukkit.plugin.java.JavaPlugin;\n\npublic class HolographicBoxPlugin extends JavaPlugin implements Listener {\n\n @Override\n public void onEnable() {\n Bukkit.getPluginManager().registerEvents(this, this);\n // 你的插件启动时的其他逻辑\n }\n\n @Override\n public void onDisable() {\n // 你的插件停用时的逻辑\n }\n\n @EventHandler\n public void onBlockPlace(BlockPlaceEvent event) {\n Block block = event.getBlock();\n if (block.getType() == Material.CHEST) {\n Player player = event.getPlayer();\n Location chestLocation = block.getLocation();\n\n // 创建HolographicDisplays文字\n ArmorStand hologram = (ArmorStand) chestLocation.getWorld().spawnEntity(chestLocation.add(0.5, 1.8, 0.5), EntityType.ARMOR_STAND);\n hologram.setVisible(false);\n hologram.setCustomNameVisible(true);\n hologram.setCustomName("Holographic Text");\n\n // 将HolographicDisplays文字附加到箱子上\n block.getState().getPersistentDataContainer().set(getKey(), PersistentDataType.STRING, hologram.getUniqueId().toString());\n\n player.sendMessage("成功放置箱子并显示HolographicDisplays文字!");\n }\n }\n\n @EventHandler\n public void onPlayerInteract(PlayerInteractEvent event) {\n Block block = event.getClickedBlock();\n if (block != null && block.getType() == Material.CHEST) {\n Location chestLocation = block.getLocation();\n String hologramId = block.getState().getPersistentDataContainer().get(getKey(), PersistentDataType.STRING);\n if (hologramId != null) {\n ArmorStand hologram = (ArmorStand) chestLocation.getWorld().getEntity(UUID.fromString(hologramId));\n if (hologram != null) {\n event.getPlayer().sendMessage("HolographicDisplays文字: " + hologram.getCustomName());\n }\n }\n }\n }\n\n private NamespacedKey getKey() {\n return new NamespacedKey(this, "hologramId");\n }\n}\n\n\n请确保已经安装了HolographicDisplays插件,并将其添加到您的项目中作为依赖项。此示例代码通过监听 BlockPlaceEvent 事件来处理放置箱子的行为,并在箱子上方放置一个 ArmorStand 实体作为HolographicDisplays文字。它还通过在箱子的 PersistentDataContainer 中存储HolographicDisplays文字的UUID,以便在玩家与箱子互动时可以获取到该文字。\n\n注意,此示例代码仅支持单个箱子放置后的HolographicDisplays文字显示。若要实现两个箱子合并成大箱子后只显示一个HolographicDisplays文字,您需要进一步处理 Chest 方块合并的逻辑,并在合并时将之前的HolographicDisplays文字移除,并在新的大箱子上方放置一个新的HolographicDisplays文字。
原文地址: https://www.cveoy.top/t/topic/pNpK 著作权归作者所有。请勿转载和采集!