Bukkit 1.20.1 玩家飞行时间插件:每日30分钟,精确到秒

这个 Bukkit 插件限制玩家每天的飞行时间为30分钟,并提供以下功能:

  • 精确到秒的倒计时: 玩家可以实时查看剩余的飞行时间,精确到秒。- 飞行时间限制: 当玩家的飞行时间达到30分钟后,将自动禁用飞行模式。- 剩余时间查询: 玩家可以使用 /flighttime 命令查询剩余的飞行时间。

代码

以下是插件的 Java 代码:javaimport org.bukkit.Bukkit;import org.bukkit.ChatColor;import org.bukkit.command.Command;import org.bukkit.command.CommandSender;import org.bukkit.entity.Player;import org.bukkit.event.EventHandler;import org.bukkit.event.Listener;import org.bukkit.event.player.PlayerJoinEvent;import org.bukkit.event.player.PlayerToggleFlightEvent;import org.bukkit.plugin.java.JavaPlugin;import org.bukkit.scheduler.BukkitRunnable;

import java.util.HashMap;import java.util.Map;import java.util.UUID;

public class FlightTimeCounter extends JavaPlugin implements Listener {

private Map<UUID, Integer> flightTimeMap;

@Override    public void onEnable() {        flightTimeMap = new HashMap<>();        getServer().getPluginManager().registerEvents(this, this);        startCountdownTask();    }

@Override    public void onDisable() {        flightTimeMap.clear();    }

@EventHandler    public void onPlayerJoin(PlayerJoinEvent event) {        Player player = event.getPlayer();        flightTimeMap.put(player.getUniqueId(), 0);    }

@EventHandler    public void onPlayerToggleFlight(PlayerToggleFlightEvent event) {        Player player = event.getPlayer();        if (player.getAllowFlight()) {            if (flightTimeMap.containsKey(player.getUniqueId())) {                int flightTime = flightTimeMap.get(player.getUniqueId());                if (flightTime < 1800) {                    flightTimeMap.put(player.getUniqueId(), flightTime + 1);                } else {                    player.setAllowFlight(false);                    player.setFlying(false);                    player.sendMessage(ChatColor.RED + '你的飞行时间已经用完了!');                }            }        }    }

@Override    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {        if (command.getName().equalsIgnoreCase('flighttime')) {            if (sender instanceof Player) {                Player player = (Player) sender;                if (flightTimeMap.containsKey(player.getUniqueId())) {                    int flightTime = flightTimeMap.get(player.getUniqueId());                    int remainingTime = 1800 - flightTime;                    int minutes = remainingTime / 60;                    int seconds = remainingTime % 60;                    player.sendMessage(ChatColor.GREEN + '你还有 ' + minutes + ' 分钟 ' + seconds + ' 秒的飞行时间');                }            } else {                sender.sendMessage(ChatColor.RED + '只有玩家可以执行此命令!');            }            return true;        }        return false;    }

private void startCountdownTask() {        new BukkitRunnable() {            @Override            public void run() {                for (Player player : Bukkit.getOnlinePlayers()) {                    if (flightTimeMap.containsKey(player.getUniqueId())) {                        int flightTime = flightTimeMap.get(player.getUniqueId());                        if (flightTime < 1800) {                            flightTimeMap.put(player.getUniqueId(), flightTime + 1);                        }                    }                }            }        }.runTaskTimer(this, 20L, 20L);    }}

使用方法

  1. 下载代码并编译成 .jar 文件。2. 将 .jar 文件放入 Bukkit 服务器的 plugins 文件夹中。3. 启动服务器。4. 玩家可以使用 /flighttime 命令查询剩余的飞行时间。

注意: 此插件需要在 Bukkit 1.20.1 版本或更高版本上运行。

Bukkit 1.20.1 玩家飞行时间插件 - 每日30分钟精确到秒

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

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