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

Решено Краш java.lang.AbstractMethodError

Тема в разделе "[Архив] Помощь", создана пользователем LordBekketPro, 3 авг 2014.

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

    LordBekketPro Активный участник Пользователь

    Баллы:
    88
    Пытаюсь сделать фикс для лазера для обычной версии IC2 (не экспериментальной), переписываю один файлик - EntityMiningLaser.java, добавляю такие строчки (пример):

    Код:
    //prepare variables
                        String shootername = this.owner.getEntityName();
                        org.bukkit.entity.Entity entityhit = BukkitReflectionUtils.getBukkitEntity(movingobjectposition.entityHit);
                        //call event
                        IC2LaserHitEntityEvent ic2laserhitentityevent = new IC2LaserHitEntityEvent(shootername, entityhit);
                        org.bukkit.Bukkit.getPluginManager().callEvent(ic2laserhitentityevent);
                        //do entity damage only if event is not cancelled
                        if (!ic2laserhitentityevent.isCancelled()) {
                            entity.setFire(damage * (smelt ? 2 : 1));
                            if(movingobjectposition.entityHit.attackEntityFrom((new EntityDamageSourceIndirect("arrow", this, owner)).setProjectile(), damage) && (owner instanceof EntityPlayer) && ((movingobjectposition.entityHit instanceof EntityDragon) && ((EntityDragon)movingobjectposition.entityHit).func_110143_aJ() <= 0.0F || (movingobjectposition.entityHit instanceof EntityDragonPart) && (((EntityDragonPart)movingobjectposition.entityHit).entityDragonObj instanceof EntityDragon) && ((EntityLivingBase)((EntityDragonPart)movingobjectposition.entityHit).entityDragonObj).func_110143_aJ() <= 0.0F))
                                IC2.achievements.issueAchievement((EntityPlayer)owner, "killDragonMiningLaser");
                        }
    Заменяю файл в моде, ставлю его на сервер, захожу, беру в руки лазер, жму ПКМ и сервер крашится:

    Код:
    Time: 8/3/14 1:55 PM
    Description: Exception in server tick loop
    
    java.lang.AbstractMethodError
        at net.minecraft.entity.Entity.<init>(Entity.java:323)
        at ic2.core.item.tool.EntityMiningLaser.<init>(EntityMiningLaser.java:72)
        at ic2.core.item.tool.EntityMiningLaser.<init>(EntityMiningLaser.java:67)
        at ic2.core.item.tool.EntityMiningLaser.<init>(EntityMiningLaser.java:56)
        at ic2.core.item.tool.ItemToolMiningLaser.func_77659_a(ItemToolMiningLaser.java:67)
        at net.minecraft.item.ItemStack.func_77957_a(ItemStack.java:178)
        at net.minecraft.item.ItemInWorldManager.func_73085_a(ItemInWorldManager.java:499)
        at net.minecraft.item.ItemInWorldManager.func_73078_a(ItemInWorldManager.java:607)
        at net.minecraft.network.NetServerHandler.func_72472_a(NetServerHandler.java:882)
        at net.minecraft.network.packet.Packet15Place.func_73279_a(Packet15Place.java:79)
        at net.minecraft.network.TcpConnection.func_74428_b(TcpConnection.java:464)
        at net.minecraft.network.NetServerHandler.func_72570_d(NetServerHandler.java:231)
        at net.minecraft.network.NetworkListenThread.func_71747_b(NetworkListenThread.java:54)
        at net.minecraft.server.dedicated.DedicatedServerListenThread.func_71747_b(DedicatedServerListenThread.java:34)
        at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:872)
        at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:318)
        at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:741)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:625)
        at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
    Что я не так делаю? Вроде и обфусцирую, и код кроме этих эвентов не трогаю, сами эвенты тоже вкладываю в архив (папку customevents из фикса Шевчика для 1.6.4 экспериментальной - думаю тут не имеет значения, для какой версии, эвенты-то вроде одинаковые, да и краш я думаю не по их вине).

    Как исправить эту ошибку? Судя по её названию, ошибка в каком-то абстрактном классе, только что-то я не понимаю, где именно
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    LordBekketPro

    LordBekketPro Активный участник Пользователь

    Баллы:
    88
    Я так понимаю, ругается вот на эти 2 строчки (одну из них) в файле ItemToolMiningLaser.class:
    Код:
    world.func_72838_d(new EntityMiningLaser(world, entityplayer, 4F, 5F, 1, false));
    IC2.network.initiateItemEvent(entityplayer, itemstack, 1, true);
    Но ведь я ничего больше не трогал в файле EntityMiningLaser.java, странно что он теперь ошибку выдаёт[DOUBLEPOST=1407065020,1407062997][/DOUBLEPOST]Все же я думаю, в коде никаких ошибок нет, я где-то не так компилирую или не туда кладу файлы, не то обфусцирую... Не понимаю. Такая же проблема была, когда я карьер пытался пофиксить - тоже был краш, код тоже был в порядке.[DOUBLEPOST=1407065544][/DOUBLEPOST]Обнаружил, что MCPC+ в jarнике нет файла net.minecraft.entity.Entity... Так и должно быть? Хотя если файла нет, как же сервер может ругаться на него, похоже так и должно быть[DOUBLEPOST=1407068150][/DOUBLEPOST]Кажется, нашел нестыковки в коде между моим классом и стандартным классом. Похоже что мой класс "недообфусцировался"... Обфусцировал через бон, но видимо не так... Как быть?[DOUBLEPOST=1407070834][/DOUBLEPOST]Всё, решил проблему, тему можно удалить
     
Статус темы:
Закрыта.

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