以下是使用Java编写的一个示例代码,它实现了在玩家放置箱子后,在箱子上方显示一条HolographicDisplays文字,并且当两个箱子合并后,文字自动居中。

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;

import com.gmail.filoghost.holographicdisplays.api.Hologram;
import com.gmail.filoghost.holographicdisplays.api.HologramsAPI;
import com.gmail.filoghost.holographicdisplays.api.line.TextLine;

public class HolographicDisplaysExample extends JavaPlugin implements Listener {

    private Hologram hologram;

    @Override
    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(this, this);
    }

    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.CHEST) {
            Block chestBlock = event.getClickedBlock();
            BlockFace chestFace = event.getBlockFace();
            Location hologramLocation = chestBlock.getLocation().add(0.5, 1.5, 0.5).add(chestFace.getModX() * 0.6, 0, chestFace.getModZ() * 0.6);
            
            if (hologram == null) {
                hologram = HologramsAPI.createHologram(this, hologramLocation);
                TextLine textLine = hologram.appendTextLine('Hello, world!');
                textLine.setAllowPlaceholders(true);
            } else {
                hologram.teleport(hologramLocation);
            }
            
            // 检查是否有另一个箱子与当前箱子相邻
            Location neighborLocation = chestBlock.getRelative(chestFace).getLocation();
            Block neighborBlock = neighborLocation.getBlock();
            if (neighborBlock.getType() == Material.CHEST) {
                // 合并箱子后,将文字居中
                mergeChests(chestBlock, neighborBlock);
            }
        }
    }
    
    private void mergeChests(Block chest1, Block chest2) {
        Location centerLocation = chest1.getLocation().add(chest2.getLocation()).multiply(0.5);
        hologram.teleport(centerLocation.add(0.5, 1.5, 0.5));
    }
}

请确保你已经正确安装了HolographicDisplays 3.0.3插件,并且在你的插件中添加了对应的依赖。

HolographicDisplays 3.0.3教程:在箱子上方显示文字并合并箱子居中

原文地址: https://www.cveoy.top/t/topic/fRlt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录