Помогите Игроку не выдаётся fly

Статус
Закрыто для дальнейших ответов.

CreeperPro35

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
_SEVENTYNINE_
Код (команды):

Код:
@Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(sender instanceof Player) {
            if(((Player) sender).isFlying()) {
                ((Player) sender).setFlying(false);
                return true;
            } else {
                ((Player) sender).getAllowFlight();
                ((Player) sender).setFlying(true);
                return true;
            }
        } else {
            sender.sendMessage("no");
            return true;
        }
    }

Что должно происходить: при вводе команды проверяется, активирован ли у игрока fly. Если нет, то игроку выдаётся fly, если нет, соотвественно, убирается.

Что происходит: при попытке выполнить команду игроку пишется сообщение
An internal error occurred while attempting to perform this command

В консоли же выдаётся (allow-flight=true в server.properties)

Код:
[18:47:40] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'mas' in plugin Mascarpone v0.1
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServer.java:625) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.PlayerConnection.handleCommand(PlayerConnection.java:1058) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:919) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(SourceFile:37) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(SourceFile:9) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_191]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_191]
    at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:656) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:284) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:609) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:517) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_191]
Caused by: java.lang.IllegalArgumentException: Cannot make player fly if getAllowFlight() is false
    at org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer.setFlying(CraftPlayer.java:1149) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at ru.mascarpone.seventy.Cmds.onCommand(Cmds.java:27) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3][/SPOILER]
    ... 14 more

ps

При попытке заменить обычный формат чата через евент (AsyncPlayerChatEvent), ничего не происходит (тот же формат чата)

Код:

Код:
public void onPlayerChat (AsyncPlayerChatEvent e) {
            Player p = e.getPlayer();
            e.setFormat(ChatColor.DARK_GREEN + p.getDisplayName() + e.getMessage());
        }

Заранее спасибо!
 
Перед #setFlying(true) добавь #setAllowFlight(true), то же самое с false
 
Спасибо, есть решения по поводу второй проблемы?
Код:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if ((sender instanceof Player)) {
            Player p = (Player) sender;
            if (p.hasPermission("fly.allow")) {
                boolean fly = p.getAllowFlight();
                if (fly) {
                    p.setAllowFlight(false);
                    p.setFlying(false);
                } else {
                    p.setAllowFlight(true);
                }
            }
        }
        return false;
    }
 
@EventHandler добавил? Зарегистрировал Listener?
Код:
package ru.mascarpone.seventy;

import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;

public class ChatListener implements Listener {
    
    @EventHandler
    public void onPlayerChat (AsyncPlayerChatEvent e) {
        Player p = e.getPlayer();
        e.setFormat(ChatColor.RED + p.getDisplayName() + ": " + e.getMessage());
    }
}

(Это в отдельном классе)
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх