用Java写一个Bukkit1201 玩家长时间不动进入挂机的时候 头顶显示一个基于DecentHolograms插件的挂机信息详细代码带注释
下面是一个用Java编写的Bukkit1.20.1插件,当玩家长时间不动时,会在头顶显示一个基于DecentHolograms插件的挂机信息。请注意,为了运行这个插件,您需要在Bukkit服务器上安装DecentHolograms插件。
package com.example.hangoutplugin;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.java.JavaPlugin;
import com.gmail.filoghost.holographicdisplays.api.Hologram;
import com.gmail.filoghost.holographicdisplays.api.HologramsAPI;
public class HangoutPlugin extends JavaPlugin implements Listener {
private Hologram hologram;
private int taskId;
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
startCheckingTask();
}
@Override
public void onDisable() {
stopCheckingTask();
hologram.delete();
}
private void startCheckingTask() {
taskId = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
@Override
public void run() {
for (Player player : Bukkit.getOnlinePlayers()) {
Location lastLocation = player.getLocation();
Location currentLocation = player.getLocation();
if (lastLocation.distanceSquared(currentLocation) <= 0.0) {
showHangoutHologram(player);
} else {
hideHangoutHologram(player);
}
lastLocation = currentLocation;
}
}
}, 0L, 20L); // 每秒检查一次玩家是否挂机(20 ticks = 1s)
}
private void stopCheckingTask() {
Bukkit.getScheduler().cancelTask(taskId);
}
private void showHangoutHologram(Player player) {
if (hologram == null) {
hologram = HologramsAPI.createHologram(this, player.getLocation().add(0, 2, 0));
hologram.appendTextLine(ChatColor.YELLOW + "你正在挂机!");
} else {
hologram.teleport(player.getLocation().add(0, 2, 0));
}
}
private void hideHangoutHologram(Player player) {
if (hologram != null) {
hologram.delete();
hologram = null;
}
}
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
Player player = event.getPlayer();
Location lastLocation = event.getFrom();
Location currentLocation = event.getTo();
if (lastLocation.distanceSquared(currentLocation) > 0.0) {
hideHangoutHologram(player);
}
}
}
请注意,上述代码需要在您的项目中包含DecentHolograms插件的库文件。另外,还需要在Bukkit服务器的插件文件夹中放置DecentHolograms插件的jar文件
原文地址: http://www.cveoy.top/t/topic/iofK 著作权归作者所有。请勿转载和采集!