用Java写一个Bukkit1201 基于ProtocolLib玩家开启飞行的时候出现ActionBar文字消息关闭飞行的时候文字消失
首先,你需要确保已经正确安装了Bukkit 1.20.1和ProtocolLib插件。然后,你可以使用以下代码实现你的需求:
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerGameModeChangeEvent;
import org.bukkit.event.player.PlayerToggleFlightEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class FlightActionBar extends JavaPlugin implements Listener {
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerToggleFlight(PlayerToggleFlightEvent event) {
Player player = event.getPlayer();
if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) {
return;
}
if (event.isFlying()) {
sendActionBar(player, ChatColor.GREEN + "Flying enabled");
} else {
sendActionBar(player, "");
}
}
@EventHandler
public void onPlayerGameModeChange(PlayerGameModeChangeEvent event) {
Player player = event.getPlayer();
if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) {
sendActionBar(player, "");
}
}
private void sendActionBar(Player player, String message) {
player.sendActionBar(message);
}
}
这段代码创建了一个名为FlightActionBar的插件,并注册了两个事件监听器:onPlayerToggleFlight和onPlayerGameModeChange。当玩家切换飞行状态时,会发送ActionBar消息,当玩家的游戏模式变化时,会清除ActionBar消息。
记得将这段代码编译为插件,并将生成的jar文件放入Bukkit服务器的插件文件夹中。启动服务器后,插件将自动监听玩家的飞行状态并发送ActionBar消息。
原文地址: https://www.cveoy.top/t/topic/iqLg 著作权归作者所有。请勿转载和采集!