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

Плагин [SEC/FIX] DupeFixer v3.2 - фикс дюпов, багов, X-Ray [>=1.9]

Тема в разделе "Неподтвержденные плагины", создана пользователем InterVi, 12 апр 2015.

  1. Левый

    Левый Старожил Пользователь

    Баллы:
    173
    Обновляться
     
  2. Kela-4D

    Kela-4D Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Kelatyh
    у меня 1 сервер версии 165. остальные 5 1710!
     
  3. Левый

    Левый Старожил Пользователь

    Баллы:
    173
    Код:
    [15:57:45 ERROR]: Could not pass event InventoryClickEvent to DupeFixer v1.2
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:338) ~[JavaPluginLoader$1.class:1.7.10-1492.155]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[RegisteredListener.class:1.7.10-1492.155]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507) [SimplePluginManager.class:1.7.10-1492.155]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492) [SimplePluginManager.class:1.7.10-1492.155]
            at net.minecraft.network.NetHandlerPlayServer.func_147351_a(NetHandlerPlayServer.java:2015) [nh.class:?]
            at net.minecraft.network.play.client.C0EPacketClickWindow.func_148833_a(SourceFile:32) [ix.class:?]
            at net.minecraft.network.play.client.C0EPacketClickWindow.func_148833_a(SourceFile:10) [ix.class:?]
            at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244) [ej.class:?]
            at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?]
            at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:991) [MinecraftServer.class:?]
            at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:431) [lt.class:?]
            at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:809) [MinecraftServer.class:?]
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:669) [MinecraftServer.class:?]
            at java.lang.Thread.run(Thread.java:745) [?:1.7.0_80]
    Caused by: java.lang.NullPointerException
            at org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventoryView.getItem(CraftInventoryView.java:64) ~[CraftInventoryView.class:1.7.10-1492.155]
            at org.bukkit.event.inventory.InventoryClickEvent.getCurrentItem(InventoryClickEvent.java:102) ~[InventoryClickEvent.class:1.7.10-1492.155]
            at InterVi.DupeFixer.fixes.onClickInInv(fixes.java:190) ~[?:?]
            at sun.reflect.GeneratedMethodAccessor115.invoke(Unknown Source) ~[?:?]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_80]
            at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_80]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) ~[JavaPluginLoader$1.class:1.7.10-1492.155]
            ... 13 more
    [15:57:45 ERROR]: Could not pass event InventoryClickEvent to WorldGuard v6.1.1-SNAPSHOT
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:338) ~[JavaPluginLoader$1.class:1.7.10-1492.155]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[RegisteredListener.class:1.7.10-1492.155]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507) [SimplePluginManager.class:1.7.10-1492.155]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492) [SimplePluginManager.class:1.7.10-1492.155]
            at net.minecraft.network.NetHandlerPlayServer.func_147351_a(NetHandlerPlayServer.java:2015) [nh.class:?]
            at net.minecraft.network.play.client.C0EPacketClickWindow.func_148833_a(SourceFile:32) [ix.class:?]
            at net.minecraft.network.play.client.C0EPacketClickWindow.func_148833_a(SourceFile:10) [ix.class:?]
            at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244) [ej.class:?]
            at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?]
            at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:991) [MinecraftServer.class:?]
            at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:431) [lt.class:?]
            at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:809) [MinecraftServer.class:?]
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:669) [MinecraftServer.class:?]
            at java.lang.Thread.run(Thread.java:745) [?:1.7.0_80]
    Caused by: java.lang.NullPointerException
            at org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventoryView.getItem(CraftInventoryView.java:64) ~[CraftInventoryView.class:1.7.10-1492.155]
            at org.bukkit.event.inventory.InventoryClickEvent.getCurrentItem(InventoryClickEvent.java:102) ~[InventoryClickEvent.class:1.7.10-1492.155]
            at com.sk89q.worldguard.bukkit.listener.BlacklistListener.onInventoryClick(BlacklistListener.java:264) ~[?:?]
            at sun.reflect.GeneratedMethodAccessor116.invoke(Unknown Source) ~[?:?]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_80]
            at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_80]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) ~[JavaPluginLoader$1.class:1.7.10-1492.155]
            ... 13 more
    [15:57:45 ERROR]: Could not pass event InventoryClickEvent to BanItem v2.8
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:338) ~[JavaPluginLoader$1.class:1.7.10-1492.155]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[RegisteredListener.class:1.7.10-1492.155]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507) [SimplePluginManager.class:1.7.10-1492.155]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492) [SimplePluginManager.class:1.7.10-1492.155]
            at net.minecraft.network.NetHandlerPlayServer.func_147351_a(NetHandlerPlayServer.java:2015) [nh.class:?]
            at net.minecraft.network.play.client.C0EPacketClickWindow.func_148833_a(SourceFile:32) [ix.class:?]
            at net.minecraft.network.play.client.C0EPacketClickWindow.func_148833_a(SourceFile:10) [ix.class:?]
            at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244) [ej.class:?]
            at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?]
            at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:991) [MinecraftServer.class:?]
            at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:431) [lt.class:?]
            at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:809) [MinecraftServer.class:?]
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:669) [MinecraftServer.class:?]
            at java.lang.Thread.run(Thread.java:745) [?:1.7.0_80]
    Caused by: java.lang.NullPointerException
            at org.bukkit.craftbukkit.v1_7_R4.inventory.CraftInventoryView.getItem(CraftInventoryView.java:64) ~[CraftInventoryView.class:1.7.10-1492.155]
            at org.bukkit.event.inventory.InventoryClickEvent.getCurrentItem(InventoryClickEvent.java:102) ~[InventoryClickEvent.class:1.7.10-1492.155]
            at com.abcalvin.BanItem.PlayerListener.onClick(PlayerListener.java:78) ~[?:?]
            at sun.reflect.GeneratedMethodAccessor117.invoke(Unknown Source) ~[?:?]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_80]
            at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_80]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) ~[JavaPluginLoader$1.class:1.7.10-1492.155]
            ... 13 more
    [15:57:45 WARN]: Failed to handle packet for /195.49.201.150:50338
    java.lang.IndexOutOfBoundsException: Index: 50, Size: 45
            at java.util.ArrayList.rangeCheck(ArrayList.java:635) ~[?:1.7.0_80]
            at java.util.ArrayList.get(ArrayList.java:411) ~[?:1.7.0_80]
            at net.minecraft.inventory.Container.func_75144_a(Container.java:391) ~[zs.class:?]
            at net.minecraft.network.NetHandlerPlayServer.func_147351_a(NetHandlerPlayServer.java:2021) ~[nh.class:?]
            at net.minecraft.network.play.client.C0EPacketClickWindow.func_148833_a(SourceFile:32) ~[ix.class:?]
            at net.minecraft.network.play.client.C0EPacketClickWindow.func_148833_a(SourceFile:10) ~[ix.class:?]
            at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244) ~[ej.class:?]
            at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?]
            at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:991) [MinecraftServer.class:?]
            at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:431) [lt.class:?]
            at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:809) [MinecraftServer.class:?]
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:669) [MinecraftServer.class:?]
            at java.lang.Thread.run(Thread.java:745) [?:1.7.0_80]
    
    Часто срёт в консоли
     
  4. Автор темы
    InterVi

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

    Баллы:
    173
    а остальные плагины чего срут? что-то подозрительно
     
  5. Левый

    Левый Старожил Пользователь

    Баллы:
    173
    а больше ничего и не срёт
     
  6. Автор темы
    InterVi

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

    Баллы:
    173
    ты лог вообще читал?
     
  7. Левый

    Левый Старожил Пользователь

    Баллы:
    173
    ну так я тебе и скинул всё что срёт
    если бы туда не входило
    [15:57:45 ERROR]: Could not pass event InventoryClickEvent to DupeFixer v1.2
    org.bukkit.event.EventException
    то я бы не написал в эту тему
     
  8. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    А причём тут автор, если у тебя и другие плагины с ошибками в консоли?
     
  9. Левый

    Левый Старожил Пользователь

    Баллы:
    173
    ну так им я тоже скажу и они мне тоже скажут, чтоб я писал авторам других плагинов
     
  10. Автор темы
    InterVi

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

    Баллы:
    173
    У тебя с ядром что-то, возможно даже дело в версии. Я не знаю как построена система ивентов на старых ядрах, я работал по API 1.7.9
     
  11. Левый

    Левый Старожил Пользователь

    Баллы:
    173
    Ядро kcauldron последней версии
     
  12. alexandrage

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

    Баллы:
    173
    java.lang.NullPointerException
    Клик по пустой ячейки, видимо не проверяется на null.
    Мои глаза опухли от кода плагина :D. Слово говнокод, это еще мягко сказано. Это всем говнокодам говнокод.
     
    Последнее редактирование: 22 сен 2015
  13. Автор темы
    InterVi

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

    Баллы:
    173
    Ты про табы или про что?
    на 190 строчке сейчас вот это:
    Код:
    if (main.conf.dupefix && main.conf.reminf && event.getCurrentItem() != null && !event.isCancelled()) {
    мне тоже интересно как ты такой краш получил :D

    Новая версия уже на подходе.
     
  14. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Зачем ты проверяешь в каждом слушателе включенность "фикса дюпов"? Ведь проще в onEnable() проверять выключенность.

    Код:
    @EventHandler(priority = EventPriority.LOW)
        public void onClickInInv(InventoryClickEvent event) {
            if (main.conf.dupefix && main.conf.reminf && event.getCurrentItem() != null && !event.isCancelled()) { //фикс дюпа с бесконечными предметами
                Player player = (Player) event.getWhoClicked();
                ItemStack inv[] = player.getInventory().getContents();
                if (!player.isOp() | !player.hasPermission("dupefixer.exemtp")) {
                for (int i = 0; i < inv.length; i++) {
                if (inv[i] != null) {
                int amount = inv[i].getAmount();
                if (amount <= 0) { //если предмет багнутый
                    player.getInventory().clear(i); //удаляем его
                    String itemm = inv[i].getType().toString();
                    String mir = player.getLocation().getWorld().getName();
                    int x = player.getLocation().getBlockX();
                    int y = player.getLocation().getBlockY();
                    int z = player.getLocation().getBlockZ();
                    String name = player.getPlayerListName();
                    String loc = mir + " - " + x + " " + y + " " + z;
                    if (main.conf.duptocons == true) main.log.info("у игрока " + name + " нашелся багнутый предмет " + itemm + " (дюп), на " + loc);
        }}}}}}
    Начнём с того, что если количество предмета меньше нуля, то он сам исчезает из инвентаря при любом интеракте.
    И данный метод ничего не фиксит. Если я храню данный предмет в сундуке, то я его просто дропну оттуда, и потом подберу его, закрыв инвентарь с сундуком. А обратно я его могу положить при помощи воронки. Правда, такое можно было проделать давным давно.
    "if (main.conf.duptocons == true)" - тебе самому не смешно?
    103: "if (main.conf.dupefix == true && main.conf.bpot == true && !event.isCancelled()) {"
    111: "if (main.conf.duptocons == true && mem.isVal(loc.hashCode()) == false && main.conf.dupepot == true)"
    Да везде. Зачем проверять булеву булевой на значение булевой?

    Короче, вместо тысячи слов, твой код в моей редакции. http://puu.sh/kjPmS/3e4110f712.zip
    Туда я поместил некоторые советы из этой темы (нет, я не переписал с нуля плагин), некоторые пожелания от меня, более правильная реализация логгера и проверки включенности плагина, ну и по мелочи.
    Я очень надеюсь на то, что ты хотя бы что нибудь впитаешь из этого.
     
  15. Автор темы
    InterVi

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

    Баллы:
    173
    Юзер отключил в конфиге, onEnable() при перезагрузке конфига повторно не вызовется.
    Нифига, есть способ поместить его в дроппер, а из него выплевывать генератором импульсов пока не наступит отрицательный предел int. Подбираемые предметы конечно же будут уходить в плюс, т.е. будут нормальными. На ютубе глянь. Может пофиксили в новых версиях, но плагин еще и на 1.7, так что людям это нужно.
    И что? При попытке куда-то положить предмет он исчезнет, т.к. вызовется ItemClickEvent. Если получить такой предмет где-то в сундуке и сразу оттуда воронкой в дроппер, тоже не факт что выйдет. Буду рад если кто-то проверит на 1.7 и 1.8 версиях.
    Нет. Это уже дело вкуса, не важно как ты пишешь, делается одно и тоже. Без равно просто сокращенный вид. Мне раньше нравилось через равно проверять.
    Ну вот нафига, спрашивается? Я новую версию уже пишу прямо сейчас, сказал же что на подходе. И раньше уже говорил что уберу всю пакость, там подробно даже написали что именно не так. Еще и выпилил половину... не у всех последняя версия 1.8.8 с фиксами. На ютубе глянь, почти все эти дюпы работают на 1.7-1.8 (насчет застревания в блоке не уверен).
     
  16. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Проще тогда удалить плагин. К тому же, тебе не один раз писали, что твой велосипедный конфиг никуда не годится.
    Может проще предотвращать появление предметов, количество которых меньше одной штуки?
    На дроп совсем другой эвент. Совсем-совсем.
    Это не возможно читать. Хоть и компилятор Java знает, что программист идиот и делает свой байт-код, который лишь основывается на твоём коде, но мы не компиляторы, так то.
    Когда я начал строчить ответ, твоего поста не было.
    Наверное лучше всё-таки обновить ядро, не? Конечно, я не призываю тех, кто на 1.5.2/1.6.4/1.7.10 обновляться до 1.8.8, но те, у кого 1.8.8 обязаны обновляться до последней версии хотя бы раз в две недели.
    Я почти уверен, что на последних версиях ядра ничего из этого не работает.
     
  17. Автор темы
    InterVi

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

    Баллы:
    173
    Еще как годится, хотя недочеты есть. Ты куда смотришь вообще? Там же FileConfiguration используется. Пукан лучше потуши свой.
    Перепиши сервер Minecraft, тогда все будет ок.
    Да, другой. Но как ты собрался класть предмет не вызывая InvontoryClickEvent? Тебе сначала надо ухищрением предмет получить, а потом его переложить. Хотя обработку дроппера добавлю на всякий случай.
    На 1.8 может быть, но 1.8 не у всех. Дюп быстрыми кликами работает, хоть и визуальный. На первых версиях 1.8 работал дюп цветов, рельс и вагонеткой. Уверен что вагонетка все еще актуальна.
     
  18. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Как заору с "пукан потуши".
    Ты полагаешь, что для предотвращения отрицательных значений amount надо что то переписывать?
    Сделай это нормально. Не для себя пишешь.
    Визуальщина не дюп. На первых версиях 1.8 сейчас никто не сидит. Вагонетку надо будет проверить, ибо самого давно интересует сей баг.
     
  19. Автор темы
    InterVi

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

    Баллы:
    173
    Дюпы работают, значит надо. Дюп воронками тоже все еще работает.
    Сидят, новые версии могут быть не совместимы с модами / плагинами. В помощи была одна тема, когда после обновления вылезли проблемы. Не говоря уже о тех кто на 1.7 остался.

    Левые придирки пошли, я на эту хрень больше не буду отвечать.
     
  20. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Эх. А я ведь почти докапался до истины. Твоё дело короч.
    Пожалуй, ради вас двоих сделаю ман "Что такое хорошо, а что такое для себя". Ибо оба городите огороды из велосипедов. За сим ретируюсь из треда.
     

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