Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Покажите пример создания BaseComponent[], пожалуйста. Не понимаю как сунуть в него содержимое (TextComponent и другие)
Сам не тестировал, но примерно так. Два способа, выбирай любой:
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(key, param1, param2)});
lines.add(new ComponentBuilder(new TranslatableComponent(key, param1, param2)).create());
meta.setLoreComponents(lines);
 
Сам не тестировал, но примерно так. Два способа, выбирай любой:
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(key, param1, param2)});
lines.add(new ComponentBuilder(new TranslatableComponent(key, param1, param2)).create());
meta.setLoreComponents(lines);
new ComponentBuilder().append(companent).event(event).color(color).create();
<3
 
На всякий случай сообщу, что выдаёт ключи материалов блоков как итемов. То есть, чтобы починить, достаточно реплейснуть слово item на block блокам. Я в начале не сразу догадался, почему часть предметов не показывает нормально.
 
На всякий случай сообщу, что выдаёт ключи материалов блоков как итемов. То есть, чтобы починить, достаточно реплейснуть слово item на block блокам. Я в начале не сразу догадался, почему часть предметов не показывает нормально.
Категория плагина: Donate

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

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

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

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

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

Идеи пермишенов:
a.addrg
a.reload
 
Привет, помогите пожалуйста с кодом: выдаёт ошибку
Код:
[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 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;
    }

}
 
Caused by: java.lang.NullPointerException
at rp.main.CommandD:confused:nCommand(CommandDO.java:27) ~[?:?]
NPE (null) на строке 27.
Player p = Bukkit.getPlayer(label);
p.getWorld()
Tы пытаешься получить игрока из названия команды. Если ты хочешь получить игрока, вводившего команду, нужно кастануть sender в Player.
PHP:
if (!(sender instanceof Player)) {
    sender.sendMessage("Команду может использовать лишь игрок!");
    return false;
}
Player p = (Player) sender;
 
Привет, помогите пожалуйста с кодом: выдаёт ошибку
Код:
[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 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;
    }

}
Вроде Player твой, немного null
(И когда стало можно отправлять игроку сообщение, как массив?)
 
Последнее редактирование:
Сделал, вроде работает, но как выводить ник игрока в чат?
Код:
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 sender, Command cmd, String label, String[] args) {
        if(args.length == 0) {
            return false;
        }
        String s = args[0];
        Player p = (Player) sender;
        p.getWorld().getNearbyEntities(p.getLocation(), 5, 5, 5, entity -> entity instanceof Player).forEach(entity -> {
            entity.sendMessage(ChatColor.LIGHT_PURPLE + s + "(" + p + ")");
        });
        return true;
    }

}
 

Вложения:

  • WhatsApp Image 2021-04-29 at 10.09.38.jpeg
    WhatsApp Image 2021-04-29 at 10.09.38.jpeg
    Размер файла
    4,9 КБ
    Просмотров
    5
Сделал, вроде работает, но как выводить ник игрока в чат?
Код:
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 sender, Command cmd, String label, String[] args) {
        if(args.length == 0) {
            return false;
        }
        String s = args[0];
        Player p = (Player) sender;
        p.getWorld().getNearbyEntities(p.getLocation(), 5, 5, 5, entity -> entity instanceof Player).forEach(entity -> {
            entity.sendMessage(ChatColor.LIGHT_PURPLE + s + "(" + p + ")");
        });
        return true;
    }

}
Вместо p выводи p.getName()
 
Окей, а как сделать чтобы выводило все аргументы, а не первый?
 
Круто, спасибо, последнее, как сделать рандом с шансом 50 на 50?
 

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

Назад
Верх