Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Новый worldguard и инвентарь в версии 1.8

Тема в разделе "Разработка плагинов для новичков", создана пользователем CraftCoder, 12 фев 2015.

Статус темы:
Закрыта.
  1. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Начну сначала:
    1. В моем плагине полностью переработана система дамага и слушается эвент EntityDamageByEntityEvent
    2. Потом я обнаружил, что даже при проверке isCancelled в эвенти, при дамаге в без пвп зоне дамаг проходит и сделал проверку флага в регионе, в котором стоит получающий дамаг
    3. Все работало отлично
    4. Обновился до WG6 и WE6 и вылетает такая ошибка:
    Код:
    12.02 19:09:11 [Server] INFO at me.craftcoderr.customnpc.listeners.OnEntityDamageByEntity.onPlayerDamage(OnEntityDamageByEntity.java:75) ~[?:?]
    12.02 19:09:11 [Server] INFO Caused by: java.lang.IncompatibleClassChangeError: Found interface com.sk89q.worldguard.protection.ApplicableRegionSet, but class was expected
    12.02 19:09:11 [Server] INFO at java.lang.Thread.run(Thread.java:744) [?:1.7.0_55]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:526) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:623) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:683) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at java.util.concurrent.FutureTask.run(FutureTask.java:262) [?:1.7.0_55]
    12.02 19:09:11 [Server] INFO at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_55]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.PacketPlayInUseEntity.a(SourceFile:11) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.PacketPlayInUseEntity.a(SourceFile:52) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:1312) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.EntityPlayer.attack(EntityPlayer.java:1060) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.EntityHuman.attack(EntityHuman.java:1002) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.EntityPlayer.damageEntity(EntityPlayer.java:486) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.EntityHuman.damageEntity(EntityHuman.java:801) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.EntityLiving.damageEntity(EntityLiving.java:705) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.EntityHuman.d(EntityHuman.java:860) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at net.minecraft.server.v1_8_R1.EntityLiving.d(EntityLiving.java:1064) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:570) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:451) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:538) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.callEvent(CraftEventFactory.java:85) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:305) ~[spigot1.8-R0.1.jar:git-Spigot-13716d9-0899683]
    12.02 19:09:11 [Server] INFO org.bukkit.event.EventException
    12.02 19:09:11 [Server] INFO [19:09:11 ERROR]: Could not pass event EntityDamageByEntityEvent to CustomNPC v3.0
    
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    А еще: Я открываю игроку нивентарь через player.openInventory();
    Далее пробовал открыть новый инвентарь опять же через openInventory(), раньше это работало даже без updateInventory(), но сейчас даже с ним не работает. Потом пробовал сначала закрыть инвентарь, а потом уже открыть новый + updateInventory и это не помогло.[DOUBLEPOST=1423764309,1423757219][/DOUBLEPOST]@Shevchik, @ptnk, @makssof, @serega6531, @BeLkA

    P.S. Так уже повелось призывать всех программистов :D
     
  4. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    1. Переписать под новую версию
    2. Ничего не понял.
     
  5. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    В новом ВГ поменяли апи. В вики можно почитать, как получить регионы
     
  6. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Понял, ща посмотрю.
    Ну у меня есть гуи, созданное с помощью инвентаря, мне нужно заменить предметы в инвентаре. Делал я так:
    1. Не закрывая старый инвентарь, открываю новый и делаю updateInventory - при этом инвентарь на сервере обновляется, т.е. в нем лежат уже другие итемы а у игрока не обновляется.
    2. Закрываю старый инвентарь, открываю новый и опять же делаю updateInventory - и получается такая же ситуация как в первом случае.

    P.s. Это в minecraft 1.8 такая хрень.
     
  7. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    1. Получение регионов старым способ тоже работает, но всё равно нужно компилить под WG6.
    2. Потому что это так теперь работает на клиенте. Выставляй новые итемы в инвентаре вместо того чтобы переоткрывать его.
     
  8. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Ок, спасибо[DOUBLEPOST=1423850719,1423821242][/DOUBLEPOST]У меня эти манипуляции с инвентарем производятся при InventoryClickEvent, и я по вашей подсказке меняю предметы в инвентаре(inventory.setContents) и опять же делаю updateInventory но результат тот же.
     
  9. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Тогда надо через тик апдейт инвентаря вызывать.
     
  10. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Я так и думал, попробую.[DOUBLEPOST=1423931573,1423851058][/DOUBLEPOST]Ничего не помогает. Вот блин капризный клиент 1.8. Может кто знающий подскажет готовое решение?
     
  11. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Значит что-то не так, показывай код.
     
  12. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Код:
    @EventHandler(priority=EventPriority.HIGHEST)
        public void onInventoryClick(InventoryClickEvent event){
         ...
         DialogsManager.openQuestDialog(event.getInventory(), ...); 
        Bukkit.getScheduler().runTaskLater(CustomNPC.instance, new Runnable() {
                                       
                                        @Override
                                        public void run() {
                                            // TODO Auto-generated method stub
                                            player.updateInventory();
                                        }
                                    }, 1);
         ...
        }
    
    Код:
    public class DialogsManager {
      public static void openQuestDialog(Inventory inventory, ...){
            Inventory dialogview = Bukkit.createInventory(null, 54, npcName);
            inventory.setContents(dialogview.getContents());   
        }
    }
    
     
  13. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Ты каждый раз открываешь инвентарь, это так не работает.
    Точнее не так, ты даже не открываешь новый инвентарь.
     
    Последнее редактирование: 14 фев 2015
  14. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Я же не открываю, а устанавливаю его контент.
     
  15. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Ты даже не устанавливаешь, ты каждый раз создаёшь новый инвентарь.
     
  16. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Ну а как? Устанавливать итемы через setItem?[DOUBLEPOST=1424015055,1423938643][/DOUBLEPOST]Делаю так:
    Код:
    @EventHandler(priority=EventPriority.HIGHEST)
    public void onInventoryClick(InventoryClickEvent event){
        DialogsManager.showDialog(event.getInventory(), ...);
    }
    
    Код:
    public static void showDialog(Inventory dialogview, ...){
        ItemStack bg = new ItemStack(1);
        for (int i = 1; i < 54; i++){
                dialogview.setItem(i,  bg);
         }
    }
    
    Но все равно не работает...
     
  17. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    А после set update.
     
  18. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Ну после всей процедуры я делаю апдейт.[DOUBLEPOST=1424025737,1424016294][/DOUBLEPOST]ChestCommands на 1.8 работает, пытался копаться в исходниках, но не нашел кода обновления инвентаря.[DOUBLEPOST=1424075517][/DOUBLEPOST]Никто что ли не сталкивался с этой проблемой? Я уже даже пытаюсь закрывать инвентарь и открывать новый через 3 тика, на клиенте даже видно как инвентарь закрывается и тут же открывается, но итемы не обновляются. Может сервер еще отправляет ид инвентаря и клиент просто из кэша восстанавливает те же итемы, или такого нет?[DOUBLEPOST=1424190542][/DOUBLEPOST]Up![DOUBLEPOST=1424370167][/DOUBLEPOST]Капец, я лупень, я немного не тот параметр в свои методы передавал....
     
Статус темы:
Закрыта.

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