有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

爪哇雷艇禁飞

目标是在玩家键入/fly时启用飞行,在玩家键入/dfly时禁用飞行,但当我执行/dfly时,什么都不会发生

    package ts.fl.me;

import org.bukkit.Bukkit;
import org.bukkit.Color;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {
    public void onEnable() {
        getLogger().info("plugin started yaya");
    }

    public void onDisable() {
        getLogger().info("plugin stoped:(");
    }

    public boolean onCommand(CommandSender sender, Command cmd, String lable, String args[]) {
        if (sender instanceof Player) {
            Player player = (Player) sender;
            if (cmd.getName().equalsIgnoreCase("fly")) {
                String fly = "fly " + player.getName();
                Bukkit.dispatchCommand(Bukkit.getConsoleSender(), fly);
                player.setAllowFlight(true);
                player.setFlying(true);
                player.sendMessage(Color.RED + "you are now flying mate");
            }

        }
        if (sender instanceof Player) {
            Player player = (Player) sender;
            if (cmd.getName().equalsIgnoreCase("dfly")) {
                if(player.isFlying()){
                    String dfly = "dfly " + player.getName();
                    Bukkit.dispatchCommand(Bukkit.getConsoleSender(), dfly);
                    player.setAllowFlight(false);
                    player.setFlying(false);
                    player.sendMessage("you are no longer flying!");

                }
            }

        }
        return false;

    }


}

共 (2) 个答案

  1. # 1 楼答案

    举一个我做的例子:D

    @SuppressWarnings("rawtypes")
    public boolean onCommandFly(CommandSender sender, Command cmd, String label, String[] args) {
        if (label.equalsIgnoreCase("fly")) { 
            Player p = (Player) sender;
            if(sender instanceof Player) {
                if(p.hasPermission("smpenhance.fly")) {
                    if(args.length == 1) {
                        if (args.length > 1) {
                            p.sendMessage(prefix + ChatColor.translateAlternateColorCodes('&', prefix + " &fToo many arguments!"));
                        } else {
                            if(p.isFlying() == true) {
                                Player po = Bukkit.getPlayer(args[0]);
                                po.setAllowFlight(false);
                                po.setFlying(false);
                                p.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &fFlight disabled for &b" + po + "&r"));
                            } else {
                                Player po = Bukkit.getPlayer(args[0]);
                                po.setAllowFlight(true);
                                po.setFlying(true);
                                p.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &fFlight enabled for &b" + po + "&r"));
                            }
                        }
                    } else {
                        if(p.isFlying() == true) {
                            p.setAllowFlight(false);
                            p.setFlying(false);
                            p.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &fFlight disabled"));
                        } else {
                            p.setAllowFlight(true);
                            p.setFlying(true);
                            p.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &fFlight enabled"));
                        }
                        p.setAllowFlight(true);
                        p.setFlying(true);
                        p.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &fFlight enabled"));
                    }
                    
                    
                } else {
                    p.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &4&lSORRY BUT NO PERMS DUDE!"));
                }
            } else {
                System.out.println(prefix + ChatColor.translateAlternateColorCodes('&', "&4Player only command!"));
            }
        }
        return false;
    }
    
  2. # 2 楼答案

    对于dfly命令(根据您的代码),玩家的飞行许可只有在当前正在飞行时才会被撤销。因此,如果一个玩家没有飞行(例如在地面上),但有飞行的能力,dfly命令将不会做任何事情,这就是我假设你所说的在使用该命令时没有发生任何事情的意思

    如果你想让dfly命令也剥夺玩家的飞行许可,即使他们目前没有飞行(但有能力这么做),你可以简单地删除“if (player.isFlying())”条件。这将反映fly命令的相同行为,该命令在给予玩家许可之前不会检查玩家当前是否在飞行