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

Плагин [FUN/RPG/TP]DragonItem - вещи дракона с абилками и анимацией![1.7.2-1.12]

Что за ошибка?

[16:24:15] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to DragoItem v5.0
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[Spigot.jar:git-Spigot-65e8124-79e55b6]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[Spigot.jar:git-Spigot-65e8124-79e55b6]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:499) [Spigot.jar:git-Spigot-65e8124-79e55b6]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484) [Spigot.jar:git-Spigot-65e8124-79e55b6]
at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:234) [Spigot.jar:git-Spigot-65e8124-79e55b6]
at net.minecraft.server.v1_12_R1.PlayerInteractManager.a(PlayerInteractManager.java:458) [Spigot.jar:git-Spigot-65e8124-79e55b6]
at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:945) [Spigot.jar:git-Spigot-65e8124-79e55b6]
at net.minecraft.server.v1_12_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:37) [Spigot.jar:git-Spigot-65e8124-79e55b6]
at net.minecraft.server.v1_12_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:1) [Spigot.jar:git-Spigot-65e8124-79e55b6]
at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [Spigot.jar:git-Spigot-65e8124-79e55b6]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_92]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_92]
at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [Spigot.jar:git-Spigot-65e8124-79e55b6]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [Spigot.jar:git-Spigot-65e8124-79e55b6]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [Spigot.jar:git-Spigot-65e8124-79e55b6]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [Spigot.jar:git-Spigot-65e8124-79e55b6]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [Spigot.jar:git-Spigot-65e8124-79e55b6]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_92]
Caused by: java.lang.NullPointerException
at Drago.main.DragoCross.prbog(DragoCross.java:121) ~[?:?]
at Drago.main.DragoCross.Cross(DragoCross.java:108) ~[?:?]
at Drago.main.DragoCross.Cross_use_on_himself(DragoCross.java:45) ~[?:?]
at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_92]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_92]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[Spigot.jar:git-Spigot-65e8124-79e55b6]
... 17 more
 
Версия 5.2 добавлена на Bukkit. Скоро загружу русскую версию.
 
Ой мда... Не знаю, че ты там так глобально обновляешь, что сразу за месяц 1.0->5.0, но ок. Предложения по коду:
  1. Java:
    meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, this.ench("leggings", "PROTECTION_ENVIRONMENTAL"), true);
    meta.addEnchant(Enchantment.PROTECTION_EXPLOSIONS, this.ench("leggings", "PROTECTION_EXPLOSIONS"), true);
    meta.addEnchant(Enchantment.PROTECTION_FIRE, this.ench("leggings", "PROTECTION_FIRE"), true);
    meta.addEnchant(Enchantment.PROTECTION_PROJECTILE, this.ench("leggings", "PROTECTION_PROJECTILE"), true);
    meta.addEnchant(Enchantment.DURABILITY, this.ench("leggings", "DURABILITY"), true);
    meta.addEnchant(Enchantment.THORNS, this.ench("leggings", "THORNS"), true);
    Чтобы такого избежать, предлагаю создание билдера предметов. Вроде методы таких классов называются конвейерными.

    Java:
    class Test {
    
        private String text;
    
        Test(String text) {
            this.text = text;
        }
    
        Test() {
            this.text = new String();
        }
    
        public Test append(String text) {
            this.text += text;
            return this;
        }
    
        public String build() {
            return text;
        }
    
    }

    За место текста ставишь туда итемстак, фигачишь себе методов хоть миллион, но предметы можно будет делать в одну строку спокойно. Тут не у меня еврейская душенка, а просто легче использовать.

  2. Создать метод создания крафта с предметом, ShapedRecipe как параметрами, т.е.
    Java:
    public void registerCraft(ItemStack item, ShapedRecipe recipe) {
        // ...
    }

  3. Замена альтернативного символа цвета (перевел так altColorChar) не через
    Java:
    public String color(String s) {
        s = s.replace("&", "§");
        return s;
    }
    А через уже существующий в бакките без тебя класс ChatColor, а точнее метод translateAlternateColorCodes. Пример использования:
    Java:
    String text = "&aЗеленый текст.";
    text = ChatColor.translateAlternateColorCodes('&', text);

  4. Обновляемся до Java 8 (Stream API). Тоже твой метод замены всех цветов в листе
    Java:
    public List<String> color(List<String> str) {
        for (String s : str) {
            s = s.replace("&", "§");
        }
    
        return str;
    }
    Через Stream API:
    Java:
    public List<String> color(List<String> str) {
        return str.stream().map(s -> ChatColor.translateAlternateColorCodes('&', s)).collect(Collectors.toList());
    }
    Многие части твоего кода можно абсолютно также уменьшить через Stream API. Советую к изучению.

  5. Ну а также много другого (лень читать весь твой код). 5-ый пункт могу написать лишь чисто по замечаниям относительно ВСЕХ твоих классов.
    Стандарт оформления кода (стандарт кодирования, стиль программирования) (англ. coding standards, coding convention или programming style) — набор правил и соглашений, используемых при написании исходного кода на некотором языке программирования. Наличие общего стиля программирования облегчает понимание и поддержание исходного кода, написанного более чем одним программистом, а также упрощает взаимодействие нескольких человек при разработке программного обеспечения.
    У всех свои предпочтения, но реально, переходя от мелких разработок лучше начать и соблюдать правила оформления.
А теперь хочу подметить, что все выводы сделал на основе 1 класса. Реально, дальше читать было лень. Не-чи-та-бель-но.
 
Будут обновления?а то русской версии 5.3 на баките не вижу.
 
Анимация дракона не отключается.
 
Обнова будет когда нибудь?
 

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

Назад
Верх