首先,你需要确保已经正确安装了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的插件,并注册了两个事件监听器:onPlayerToggleFlightonPlayerGameModeChange。当玩家切换飞行状态时,会发送ActionBar消息,当玩家的游戏模式变化时,会清除ActionBar消息。

记得将这段代码编译为插件,并将生成的jar文件放入Bukkit服务器的插件文件夹中。启动服务器后,插件将自动监听玩家的飞行状态并发送ActionBar消息。

用Java写一个Bukkit1201 基于ProtocolLib玩家开启飞行的时候出现ActionBar文字消息关闭飞行的时候文字消失

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

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