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

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

Код:
[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]
Часто срёт в консоли
 
ты лог вообще читал?
ну так я тебе и скинул всё что срёт
если бы туда не входило
[15:57:45 ERROR]: Could not pass event InventoryClickEvent to DupeFixer v1.2
org.bukkit.event.EventException
то я бы не написал в эту тему
 
ну так я тебе и скинул всё что срёт
если бы туда не входило
[15:57:45 ERROR]: Could not pass event InventoryClickEvent to DupeFixer v1.2
org.bukkit.event.EventException
то я бы не написал в эту тему
А причём тут автор, если у тебя и другие плагины с ошибками в консоли?
 
У тебя с ядром что-то, возможно даже дело в версии. Я не знаю как построена система ивентов на старых ядрах, я работал по API 1.7.9
 
Код:
[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]
Часто срёт в консоли
java.lang.NullPointerException
Клик по пустой ячейки, видимо не проверяется на null.
Мои глаза опухли от кода плагина :D. Слово говнокод, это еще мягко сказано. Это всем говнокодам говнокод.
 
Последнее редактирование:
Мои глаза опыхли от кода плагина :D. Слово говнокод, это еще мягко сказано. Это всем говнокодам говнокод.
Ты про табы или про что?
на 190 строчке сейчас вот это:
Код:
if (main.conf.dupefix && main.conf.reminf && event.getCurrentItem() != null && !event.isCancelled()) {
мне тоже интересно как ты такой краш получил :D

Новая версия уже на подходе.
 
Зачем ты проверяешь в каждом слушателе включенность "фикса дюпов"? Ведь проще в onEnable() проверять выключенность.

Java:
@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
Туда я поместил некоторые советы из этой темы (нет, я не переписал с нуля плагин), некоторые пожелания от меня, более правильная реализация логгера и проверки включенности плагина, ну и по мелочи.
Я очень надеюсь на то, что ты хотя бы что нибудь впитаешь из этого.
 
Зачем ты проверяешь в каждом слушателе включенность "фикса дюпов"? Ведь проще в onEnable() проверять выключенность.
Юзер отключил в конфиге, onEnable() при перезагрузке конфига повторно не вызовется.
Начнём с того, что если количество предмета меньше нуля, то он сам исчезает из инвентаря при любом интеракте.
Нифига, есть способ поместить его в дроппер, а из него выплевывать генератором импульсов пока не наступит отрицательный предел int. Подбираемые предметы конечно же будут уходить в плюс, т.е. будут нормальными. На ютубе глянь. Может пофиксили в новых версиях, но плагин еще и на 1.7, так что людям это нужно.
И данный метод ничего не фиксит. Если я храню данный предмет в сундуке, то я его просто дропну оттуда, и потом подберу его, закрыв инвентарь с сундуком. А обратно я его могу положить при помощи воронки
И что? При попытке куда-то положить предмет он исчезнет, т.к. вызовется ItemClickEvent. Если получить такой предмет где-то в сундуке и сразу оттуда воронкой в дроппер, тоже не факт что выйдет. Буду рад если кто-то проверит на 1.7 и 1.8 версиях.
"if (main.conf.duptocons == true)" - тебе самому не смешно?
Нет. Это уже дело вкуса, не важно как ты пишешь, делается одно и тоже. Без равно просто сокращенный вид. Мне раньше нравилось через равно проверять.
Короче, вместо тысячи слов, твой код в моей редакции. http://puu.sh/kjPmS/3e4110f712.zip
Ну вот нафига, спрашивается? Я новую версию уже пишу прямо сейчас, сказал же что на подходе. И раньше уже говорил что уберу всю пакость, там подробно даже написали что именно не так. Еще и выпилил половину... не у всех последняя версия 1.8.8 с фиксами. На ютубе глянь, почти все эти дюпы работают на 1.7-1.8 (насчет застревания в блоке не уверен).
 
Юзер отключил в конфиге, onEnable() при перезагрузке конфига повторно не вызовется.
Проще тогда удалить плагин. К тому же, тебе не один раз писали, что твой велосипедный конфиг никуда не годится.
Нифига, есть способ поместить его в дроппер, а из него выплевывать генератором импульсов пока не наступит отрицательный предел int. Подбираемые предметы конечно же будут уходить в плюс, т.е. будут нормальными. На ютубе глянь. Может пофиксили в новых версиях, но плагин еще и на 1.7, так что людям это нужно.
Может проще предотвращать появление предметов, количество которых меньше одной штуки?
И что? При попытке куда-то положить предмет он исчезнет, т.к. вызовется ItemClickEvent. Если получить такой предмет где-то в сундуке и сразу оттуда воронкой в дроппер, тоже не факт что выйдет. Буду рад если кто-то проверит на 1.7 и 1.8 версиях.
На дроп совсем другой эвент. Совсем-совсем.
Нет. Это уже дело вкуса, не важно как ты пишешь, делается одно и тоже. Без равно просто сокращенный вид. Мне раньше нравилось через равно проверять.
Это не возможно читать. Хоть и компилятор Java знает, что программист идиот и делает свой байт-код, который лишь основывается на твоём коде, но мы не компиляторы, так то.
Ну вот нафига, спрашивается? Я новую версию уже пишу прямо сейчас, сказал же что на подходе.
Когда я начал строчить ответ, твоего поста не было.
Еще и выпилил половину... не у всех последняя версия 1.8.8 с фиксами.
Наверное лучше всё-таки обновить ядро, не? Конечно, я не призываю тех, кто на 1.5.2/1.6.4/1.7.10 обновляться до 1.8.8, но те, у кого 1.8.8 обязаны обновляться до последней версии хотя бы раз в две недели.
На ютубе глянь, почти все эти дюпы работают на 1.7-1.8 (насчет застревания в блоке не уверен).
Я почти уверен, что на последних версиях ядра ничего из этого не работает.
 
Проще тогда удалить плагин. К тому же, тебе не один раз писали, что твой велосипедный конфиг никуда не годится.
Еще как годится, хотя недочеты есть. Ты куда смотришь вообще? Там же FileConfiguration используется. Пукан лучше потуши свой.
Может проще предотвращать появление предметов, количество которых меньше одной штуки?
Перепиши сервер Minecraft, тогда все будет ок.
На дроп совсем другой эвент. Совсем-совсем.
Да, другой. Но как ты собрался класть предмет не вызывая InvontoryClickEvent? Тебе сначала надо ухищрением предмет получить, а потом его переложить. Хотя обработку дроппера добавлю на всякий случай.
Я почти уверен, что на последних версиях ядра ничего из этого не работает.
На 1.8 может быть, но 1.8 не у всех. Дюп быстрыми кликами работает, хоть и визуальный. На первых версиях 1.8 работал дюп цветов, рельс и вагонеткой. Уверен что вагонетка все еще актуальна.
 
Еще как годится, хотя недочеты есть. Ты куда смотришь вообще? Там же FileConfiguration используется. Пукан лучше потуши свой.
Как заору с "пукан потуши".
Перепиши сервер Minecraft, тогда все будет ок.
Ты полагаешь, что для предотвращения отрицательных значений amount надо что то переписывать?
Да, другой. Но как ты собрался класть предмет не вызывая InvontoryClickEvent? Тебе сначала надо ухищрением предмет получить, а потом его переложить. Хотя обработку дроппера добавлю на всякий случай.
Сделай это нормально. Не для себя пишешь.
На 1.8 может быть, но 1.8 не у всех. Дюп быстрыми кликами работает, хоть и визуальный. На первых версиях 1.8 работал дюп цветов, рельс и вагонеткой. Уверен что вагонетка все еще актуальна.
Визуальщина не дюп. На первых версиях 1.8 сейчас никто не сидит. Вагонетку надо будет проверить, ибо самого давно интересует сей баг.
 
Ты полагаешь, что для предотвращения отрицательных значений amount надо что то переписывать?
Дюпы работают, значит надо. Дюп воронками тоже все еще работает.
На первых версиях 1.8 сейчас никто не сидит
Сидят, новые версии могут быть не совместимы с модами / плагинами. В помощи была одна тема, когда после обновления вылезли проблемы. Не говоря уже о тех кто на 1.7 остался.

Левые придирки пошли, я на эту хрень больше не буду отвечать.
 
Дюпы работают, значит надо. Дюп воронками тоже все еще работает.

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

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

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

Назад
Верх