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

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

Статус
Закрыто для дальнейших ответов.

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
 
А еще: Я открываю игроку нивентарь через player.openInventory();
Далее пробовал открыть новый инвентарь опять же через openInventory(), раньше это работало даже без updateInventory(), но сейчас даже с ним не работает. Потом пробовал сначала закрыть инвентарь, а потом уже открыть новый + updateInventory и это не помогло.
@Shevchik, @ptnk, @makssof, @serega6531, @BeLkA

P.S. Так уже повелось призывать всех программистов :D
 
1. Переписать под новую версию
2. Ничего не понял.
 
В новом ВГ поменяли апи. В вики можно почитать, как получить регионы
 
В новом ВГ поменяли апи. В вики можно почитать, как получить регионы
Понял, ща посмотрю.
2. Ничего не понял.
Ну у меня есть гуи, созданное с помощью инвентаря, мне нужно заменить предметы в инвентаре. Делал я так:
1. Не закрывая старый инвентарь, открываю новый и делаю updateInventory - при этом инвентарь на сервере обновляется, т.е. в нем лежат уже другие итемы а у игрока не обновляется.
2. Закрываю старый инвентарь, открываю новый и опять же делаю updateInventory - и получается такая же ситуация как в первом случае.

P.s. Это в minecraft 1.8 такая хрень.
 
1. Получение регионов старым способ тоже работает, но всё равно нужно компилить под WG6.
2. Потому что это так теперь работает на клиенте. Выставляй новые итемы в инвентаре вместо того чтобы переоткрывать его.
 
2. Потому что это так теперь работает на клиенте. Выставляй новые итемы в инвентаре вместо того чтобы переоткрывать его.
Ок, спасибо
У меня эти манипуляции с инвентарем производятся при InventoryClickEvent, и я по вашей подсказке меняю предметы в инвентаре(inventory.setContents) и опять же делаю updateInventory но результат тот же.
 
Тогда надо через тик апдейт инвентаря вызывать.
 
Тогда надо через тик апдейт инвентаря вызывать.
Я так и думал, попробую.
Ничего не помогает. Вот блин капризный клиент 1.8. Может кто знающий подскажет готовое решение?
 
Значит что-то не так, показывай код.
 
Значит что-то не так, показывай код.
Java:
@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);
     ...
    }
Java:
public class DialogsManager {
  public static void openQuestDialog(Inventory inventory, ...){
        Inventory dialogview = Bukkit.createInventory(null, 54, npcName);
        inventory.setContents(dialogview.getContents());   
    }
}
 
Ты каждый раз открываешь инвентарь, это так не работает.
Точнее не так, ты даже не открываешь новый инвентарь.
 
Последнее редактирование:
Ты даже не устанавливаешь, ты каждый раз создаёшь новый инвентарь.
Ну а как? Устанавливать итемы через setItem?
Делаю так:
Java:
@EventHandler(priority=EventPriority.HIGHEST)
public void onInventoryClick(InventoryClickEvent event){
    DialogsManager.showDialog(event.getInventory(), ...);
}
Java:
public static void showDialog(Inventory dialogview, ...){
    ItemStack bg = new ItemStack(1);
    for (int i = 1; i < 54; i++){
            dialogview.setItem(i,  bg);
     }
}
Но все равно не работает...
 
Ну после всей процедуры я делаю апдейт.
ChestCommands на 1.8 работает, пытался копаться в исходниках, но не нашел кода обновления инвентаря.
Никто что ли не сталкивался с этой проблемой? Я уже даже пытаюсь закрывать инвентарь и открывать новый через 3 тика, на клиенте даже видно как инвентарь закрывается и тут же открывается, но итемы не обновляются. Может сервер еще отправляет ид инвентаря и клиент просто из кэша восстанавливает те же итемы, или такого нет?
Up!
Капец, я лупень, я немного не тот параметр в свои методы передавал....
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх