Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Помогите Проверьте правильность кода, пожалуйста!

Discussion in 'Разработка плагинов для новичков' started by Gold_Heli, Apr 24, 2021.

  1. Автор темы
    Gold_Heli

    Gold_Heli Активный участник Пользователь

    Trophy Points:
    61
    Имя в Minecraft:
    Gold_Heli
    Привет, можете помочь с кодом? Выдаёт в игре ошибку.
    Код:
    Code:
    package rp.main;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    
    public class CommandDO implements CommandExecutor {
    
        private Province_RP plugin;
    
        public CommandDO(Province_RP plugin) {
            this.plugin = plugin;
            
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(args.length == 0) {
                return false;
            }
            Player p = Bukkit.getPlayer(sender);
            Text t = args;
            p.getLocation().getNearbyPlayers(15).forEach(p -> p.sendMessage(Chat.Color.RED + t + "(" + p + ")" ));
            return true;
        }
    
    }
    
    Не судите строго, я ещё учусь)
     
  2. Хостинг MineCraft
    <
  3. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Trophy Points:
    68
    Имя в Minecraft:
    LOVEC3327
    Ну так ты ошибку то скинь
     
  4. Автор темы
    Gold_Heli

    Gold_Heli Активный участник Пользователь

    Trophy Points:
    61
    Имя в Minecraft:
    Gold_Heli
    upload_2021-4-24_18-9-52.png
     
  5. Автор темы
    Gold_Heli

    Gold_Heli Активный участник Пользователь

    Trophy Points:
    61
    Имя в Minecraft:
    Gold_Heli
    Поясню: когда игрок вводит команду /do <текст> плагин должен отправить это сообщение игрокам в радиусе 15 блоков от него, покрасить сообщение в красный цвет и указать в конце имя игрока, который отправил сообщение.
     
  6. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Trophy Points:
    68
    Имя в Minecraft:
    LOVEC3327
  7. Автор темы
    Gold_Heli

    Gold_Heli Активный участник Пользователь

    Trophy Points:
    61
    Имя в Minecraft:
    Gold_Heli
    Code:
    [18:52:23] [Server thread/INFO]: Gold_Heli issued server command: /do hello
    [18:52:23] [Server thread/ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'do' in plugin Province_RP v1.0
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:148) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:742) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.PlayerConnection.handleCommand(PlayerConnection.java:1738) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.PlayerConnection.c(PlayerConnection.java:1595) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1548) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(SourceFile:36) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(SourceFile:9) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(SourceFile:144) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(SourceFile:118) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:900) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:893) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(SourceFile:127) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:877) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:816) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:155) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
    Caused by: java.lang.Error: Unresolved compilation problems:
            Player cannot be resolved to a type
            The method getPlayer(String) in the type Bukkit is not applicable for the arguments (CommandSender)
            Text cannot be resolved to a type
    
            at rp.main.CommandDO.onCommand(CommandDO.java:22) ~[?:?]
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            ... 19 more
     
  8. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Trophy Points:
    68
    Имя в Minecraft:
    LOVEC3327
    getPlayer не принимает в качестве параметра CommandSender.
     
  9. Автор темы
    Gold_Heli

    Gold_Heli Активный участник Пользователь

    Trophy Points:
    61
    Имя в Minecraft:
    Gold_Heli
    Окей, я это исправил, теперь осталась ошибка "The method getNearbyPlayers(int) is undefined for the type Location"
    Code:
    package rp.main;
    
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    
    
    public class CommandDO implements CommandExecutor {
    
        private Province_RP plugin;
    
        public CommandDO(Province_RP plugin) {
            this.plugin = plugin;
            
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(args.length == 0) {
                return false;
            }
            Player p = Bukkit.getPlayer(label);
            p.getLocation().getNearbyPlayers(15).forEach(p -> p.sendMessage(Chat.Color.RED + args + "(" + p + ")" ));
            return true;
        }
    
    }
    
     
  10. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Trophy Points:
    68
    Имя в Minecraft:
    LOVEC3327
    Такого метода нету у класса локации.
     
  11. Автор темы
    Gold_Heli

    Gold_Heli Активный участник Пользователь

    Trophy Points:
    61
    Имя в Minecraft:
    Gold_Heli
    Тогда подскажи, пожалуйста, как сделать чтобы сообщение отправлялось на определённом радиусе от игрока?
     
  12. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Trophy Points:
    68
    Имя в Minecraft:
    LOVEC3327
    В зависимости от ядра, которое используешь. На paper - получаешь всех игроков рядом через Location#getNearbyPlayers, а на spigot - World#getNearbyEntities
     
  13. Автор темы
    Gold_Heli

    Gold_Heli Активный участник Пользователь

    Trophy Points:
    61
    Имя в Minecraft:
    Gold_Heli
    А на bukkit?
     
  14. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Trophy Points:
    68
    Имя в Minecraft:
    LOVEC3327
    Так же, как и в кране
     
  15. Автор темы
    Gold_Heli

    Gold_Heli Активный участник Пользователь

    Trophy Points:
    61
    Имя в Minecraft:
    Gold_Heli
    А как с ними правильно работать? Можно пример?
     
  16. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Trophy Points:
    68
    Имя в Minecraft:
    LOVEC3327
    +- так
    PHP:
            player.getWorld().getNearbyEntities(player.getLocation(), 555entity -> entity instanceof Player).forEach(entity -> {
                
    entity.sendMessage("Message");
            });
     
  17. Автор темы
    Gold_Heli

    Gold_Heli Активный участник Пользователь

    Trophy Points:
    61
    Имя в Minecraft:
    Gold_Heli
    Сделал вот так, надеюсь приблизительно правильно.
    Code:
    package rp.main;
    
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    
    
    public class CommandDO implements CommandExecutor {
    
        private Province_RP plugin;
    
        public CommandDO(Province_RP plugin) {
            this.plugin = plugin;
           
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(args.length == 0) {
                return false;
            }
            Player p = Bukkit.getPlayer(label);
            p.getWorld().getNearbyEntities(p.getLocation(), 5, 5, 5, entity -> entity instanceof Player).forEach(entity -> {
                entity.sendMessage(args);
            });
            return true;
        }
    
    }
    
    Ошибка:
    Code:
    [11:06:29] [Server thread/INFO]: Gold_Heli issued server command: /do gfdgd
    [11:06:29] [Server thread/ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'do' in plugin Province_RP v1.0
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:148) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:742) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.PlayerConnection.handleCommand(PlayerConnection.java:1738) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.PlayerConnection.c(PlayerConnection.java:1595) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1548) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(SourceFile:36) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(SourceFile:9) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(SourceFile:144) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(SourceFile:118) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:900) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:893) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(SourceFile:127) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:877) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:816) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:155) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
    Caused by: java.lang.NullPointerException
            at rp.main.CommandDO.onCommand(CommandDO.java:27) ~[?:?]
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[craftbukkit-1.16.5.jar:2991-Bukkit-f3f3094]
            ... 19 more
     
  18. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Trophy Points:
    68
    Имя в Minecraft:
    LOVEC3327

Share This Page