Bukkit 1.20.1 玩家飞行时间插件 - 每日30分钟精确到秒
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); }}
使用方法
- 下载代码并编译成
.jar文件。2. 将.jar文件放入 Bukkit 服务器的plugins文件夹中。3. 启动服务器。4. 玩家可以使用/flighttime命令查询剩余的飞行时间。
注意: 此插件需要在 Bukkit 1.20.1 版本或更高版本上运行。
原文地址: https://www.cveoy.top/t/topic/fv4E 著作权归作者所有。请勿转载和采集!