用Java写一个Bukkit120的 玩家长时间不没动作在头顶显示一个HolographicDisplays文字消息玩家退出的时候自动消失
你可以使用HolographicDisplays插件来实现这个功能。下面是一个示例代码:
首先,你需要在你的项目中导入HolographicDisplays插件的API库。
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
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;
public class Main extends JavaPlugin {
@Override
public void onEnable() {
// 注册事件监听器
getServer().getPluginManager().registerEvents(new PlayerMoveListener(), this);
}
private class PlayerMoveListener implements Listener {
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
Player player = event.getPlayer();
// 创建一个 Hologram
Hologram hologram = HologramsAPI.createHologram(Main.this, player.getLocation().add(0, 2, 0));
// 设置 Hologram 的文本消息
hologram.appendTextLine("你已经很久没有行动了!");
// 使用 BukkitRunnable 执行计时器,延迟 30 秒后删除 Hologram
new BukkitRunnable() {
@Override
public void run() {
hologram.delete();
}
}.runTaskLater(Main.this, 20 * 30);
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
Player player = event.getPlayer();
// 获取玩家的所有 Hologram
for (Hologram hologram : HologramsAPI.getHolograms(Main.this)) {
// 如果 Hologram 的位置和玩家的位置相同,删除 Hologram
if (hologram.getLocation().equals(player.getLocation().add(0, 2, 0))) {
hologram.delete();
}
}
}
}
}
这个示例代码中,我们创建了一个事件监听器 PlayerMoveListener,在玩家移动时触发。当玩家移动时,我们会在玩家头顶创建一个 Hologram,并在其中添加一行文本消息。然后,我们使用 BukkitRunnable 来设置一个延迟计时器,在 30 秒后删除 Hologram。
另外,我们还创建了一个 PlayerQuitListener 来处理玩家退出事件。在玩家退出时,我们会检查所有 Hologram,并删除与该玩家位置相同的 Hologram。
请确保你已经正确安装了 HolographicDisplays 插件,并将上述代码放入你的插件主类中。记得在 plugin.yml 中添加必要的依赖项和事件监听器
原文地址: https://www.cveoy.top/t/topic/iojF 著作权归作者所有。请勿转载和采集!