用Java写一个Bukkit120基于HolographicDisplays303的 玩家Shift+右键箱子可以让该箱子上方显示hd文字两个箱子合并后文字只显示一条
以下是一个使用Java编写的Bukkit插件,基于HolographicDisplays 3.0.3版本。该插件实现了当玩家Shift+右键点击箱子时,在该箱子上方显示HolographicDisplays文字,并且当两个箱子合并后,文字只显示一条。
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
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.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
import com.gmail.filoghost.holographicdisplays.api.Hologram;
import com.gmail.filoghost.holographicdisplays.api.HologramsAPI;
import java.util.HashMap;
import java.util.Map;
public class HolographicDisplaysPlugin extends JavaPlugin implements Listener {
private Map<Player, Hologram> playerHolograms;
private Map<Block, Hologram> blockHolograms;
@Override
public void onEnable() {
playerHolograms = new HashMap<>();
blockHolograms = new HashMap<>();
Bukkit.getPluginManager().registerEvents(this, this);
}
@Override
public void onDisable() {
playerHolograms.values().forEach(Hologram::delete);
blockHolograms.values().forEach(Hologram::delete);
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
playerHolograms.put(player, null);
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
Player player = event.getPlayer();
Action action = event.getAction();
if (action == Action.RIGHT_CLICK_BLOCK && player.isSneaking()) {
Block block = event.getClickedBlock();
if (block != null && block.getType() == Material.CHEST) {
Hologram hologram = blockHolograms.get(block);
if (hologram == null) {
hologram = HologramsAPI.createHologram(this, block.getLocation().add(0.5, 1.5, 0.5));
blockHolograms.put(block, hologram);
}
Hologram playerHologram = playerHolograms.get(player);
if (playerHologram != null) {
playerHologram.delete();
}
hologram.appendTextLine("HolographicDisplays Text");
playerHolograms.put(player, hologram);
}
}
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
Player player = event.getPlayer();
Hologram hologram = playerHolograms.remove(player);
if (hologram != null) {
hologram.delete();
}
}
@EventHandler
public void onBlockMerge(BlockMergeEvent event) {
Block mergedBlock = event.getMergedBlock();
Hologram hologram = blockHolograms.remove(mergedBlock);
if (hologram != null) {
hologram.delete();
}
}
}
请确保在项目中添加HolographicDisplays 3.0.3的依赖库,并在Bukkit服务器中启用该插件。插件会在玩家加入服务器时创建一个Hologram对象,并在玩家Shift+右键点击箱子时,在该箱子上方显示HolographicDisplays文字。当两个箱子合并时,文字会合并为一条。
请注意,该代码仅为示例,可能需要根据实际需求进行修改和调整。
原文地址: https://www.cveoy.top/t/topic/ie2W 著作权归作者所有。请勿转载和采集!