1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Стартап Помощь новичкам и тем, кто мало писал плагины. (+ LifeHack'и)

Тема в разделе "Разработка плагинов для новичков", создана пользователем ANTI_GREEFER, 1 дек 2013.

  1. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Сам не тестировал, но примерно так. Два способа, выбирай любой:
    PHP:
    ItemMeta meta stack.getItemMeta();
    String key "some.translatable.key";
    Object param1 player.getName();
    Object param2 world.getName();

    ArrayList<BaseComponent[]> lines = new ArrayList<>();
    lines.add(new BaseComponent[]{new TranslatableComponent(keyparam1param2)});
    lines.add(new ComponentBuilder(new TranslatableComponent(keyparam1param2)).create());
    meta.setLoreComponents(lines);
     
  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    new ComponentBuilder().append(companent).event(event).color(color).create();
     
  3. HauserGrim

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

    Баллы:
    96
    <3
     
  4. HauserGrim

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

    Баллы:
    96
    На всякий случай сообщу, что выдаёт ключи материалов блоков как итемов. То есть, чтобы починить, достаточно реплейснуть слово item на block блокам. Я в начале не сразу догадался, почему часть предметов не показывает нормально.
     
  5. imilka

    imilka Ньюби

    Баллы:
    1
    Категория плагина: Donate

    Предлагаемое название: RegionAdder

    Версия сервера: 1.12.2+

    Что я хочу: При выполнение команды (/addrg) игрок получает алмазик, и по какому он рг тыкнет им. в тот РГ его записывает. Тоесть он может ломать строить там и т.д но только в мемберы. Также должны быть ограничения, 20 минут.

    Идеи для команд:

    /addrg - выдает алмаз с помощью которого можно добавится в регион
    /addrg reload - перезагрузка конфига

    Идеи пермишенов:
    a.addrg
    a.reload
     
  6. GoldHeli

    GoldHeli Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Gold_Heli
    Привет, помогите пожалуйста с кодом: выдаёт ошибку
    Код:
    [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
    В eclipse ошибок нет.
    Суть плагина: при вводе команды /do должно отправляться сообщение на радиусе 5 блоков от игрока, который написал эту команду.
    Код:
    PHP:
    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 senderCommand cmdString labelString[] args) {
            if(
    args.length == 0) {
                return 
    false;
            }
            
    Player p Bukkit.getPlayer(label);
            
    p.getWorld().getNearbyEntities(p.getLocation(), 555entity -> entity instanceof Player).forEach(entity -> {
                
    entity.sendMessage(args);
            });
            return 
    true;
        }

    }
     
  7. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    NPE (null) на строке 27.
    Tы пытаешься получить игрока из названия команды. Если ты хочешь получить игрока, вводившего команду, нужно кастануть sender в Player.
    PHP:
    if (!(sender instanceof Player)) {
        
    sender.sendMessage("Команду может использовать лишь игрок!");
        return 
    false;
    }
    Player p = (Playersender;
     
  8. Conorfish

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

    Баллы:
    76
    Вроде Player твой, немного null
    (И когда стало можно отправлять игроку сообщение, как массив?)
     
  9. _MRDen3000YT_

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

    Баллы:
    76
    Давно уж. Тогда еще динозавры ходили.
     
  10. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    По крайней мере в последних можно.
     
  11. _MRDen3000YT_

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

    Баллы:
    76
    И на 1.12.2 можно, и на 1.9 вроде тоже можно было.
     
  12. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    О, даже на 1.8...
     
  13. GoldHeli

    GoldHeli Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Gold_Heli
    А как ещё? Разрешаю называть меня глупым)

    Кстати, как запихать переменную в sendMessage?
     
    Последнее редактирование: 28 апр 2021
  14. GoldHeli

    GoldHeli Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Gold_Heli
    Сделал, вроде работает, но как выводить ник игрока в чат?
    Код:
    PHP:
    package rp.main;


    import org.bukkit.ChatColor;
    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 senderCommand cmdString labelString[] args) {
            if(
    args.length == 0) {
                return 
    false;
            }
            
    String s args[0];
            
    Player p = (Playersender;
            
    p.getWorld().getNearbyEntities(p.getLocation(), 555entity -> entity instanceof Player).forEach(entity -> {
                
    entity.sendMessage(ChatColor.LIGHT_PURPLE "(" ")");
            });
            return 
    true;
        }

    }
     

    Вложения:

  15. Lemar98

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

    Баллы:
    76
    Вместо p выводи p.getName()
     
  16. GoldHeli

    GoldHeli Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Gold_Heli
    Окей, а как сделать чтобы выводило все аргументы, а не первый?
     
  17. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    String.join(" ", args)
     
  18. GoldHeli

    GoldHeli Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Gold_Heli
    Круто, спасибо, последнее, как сделать рандом с шансом 50 на 50?
     
  19. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    if (ThreadLocalRandom.current().nextBoolean())
     
  20. GoldHeli

    GoldHeli Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Gold_Heli
    А как это в код прилепить?
     

Поделиться этой страницей