爪哇雷艇禁飞
目标是在玩家键入/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;
}
}
# 1 楼答案
举一个我做的例子:D
# 2 楼答案
对于
dfly
命令(根据您的代码),玩家的飞行许可只有在当前正在飞行时才会被撤销。因此,如果一个玩家没有飞行(例如在地面上),但有飞行的能力,dfly
命令将不会做任何事情,这就是我假设你所说的在使用该命令时没有发生任何事情的意思如果你想让
dfly
命令也剥夺玩家的飞行许可,即使他们目前没有飞行(但有能力这么做),你可以简单地删除“if (player.isFlying())
”条件。这将反映fly
命令的相同行为,该命令在给予玩家许可之前不会检查玩家当前是否在飞行