Проблема при спавне энтити на сервере

Версия Minecraft
1.7.10
34
0
Дело такое, на клиенте энтити спавнится, на сервере сразу выкидывает с сервера с тем что EntityPlayerMP, хотя я не знаю почему так, регистрирую энтити так: EntityRegistry.registerModEntity(EntityHeatVision.class , "HeatVison", 1025, Main.modInstance, 100, 100, true); загружаю в FMLInitializationEvent, спавнится энтити когда игрок в костюме по нажатию кнопки вообщем Часть лога

Java:
net.minecraft.util.ReportedException: Ticking player
    at net.minecraft.entity.player.EntityPlayerMP.func_71127_g(EntityPlayerMP.java:477) ~[mw.class:?]
    at net.minecraft.network.NetHandlerPlayServer.func_147347_a(NetHandlerPlayServer.java:488) ~[nh.class:?]
    at net.minecraft.network.play.client.C03PacketPlayer.func_148833_a(C03PacketPlayer.java:36) ~[jd.class:?]
    at net.minecraft.network.play.client.C03PacketPlayer.func_148833_a(C03PacketPlayer.java:101) ~[jd.class:?]
    at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:245) ~[ej.class:?]
    at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:181) [nc.class:?]
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:1023) [MinecraftServer.class:?]
    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:432) [lt.class:?]
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:841) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:693) [MinecraftServer.class:?]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_271]
Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/entity/EntityClientPlayerMP
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
иии?

По той одной полезной строчке крашлога, что ты нам дал, мы видим, что ты делаешь на сервере что-то связанное с клиентским (то бишь несуществующем на сервере) классом EntityClientPlayerMP.

Не видя того куска кода, где ты это делаешь, мы тебе не скажем что именно делаешь не так

Вангую, проверяешь нажатие кнопки на сервере
Плюсую, скорее всего это; для того чтобы правильно сделать такое, надо по нажатию кнопки на клиенте(!) слать пакет на сервер и там его ловить-обрабатывать, и я сомневаюсь что ты это всё проделал.
 
34
0
Плюсую, скорее всего это; для того чтобы правильно сделать такое, надо по нажатию кнопки на клиенте(!) слать пакет на сервер и там его ловить-обрабатывать, и я сомневаюсь что ты это всё проделал.
Это не я проделывал, а это в либе (моде) другом, в нём всё работает, пытался делать также как там, но увы, скинуть как проделано не могу сорцов того мода нет
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Ну так если ты пытаешься "проделывать так же как там", то у тебя есть твой код, привет
И в нём какая-то проблема, которую мы могли бы тебе помочь найти, если бы мы его увидели

И даже если пытаешься использовать какое-то его апи, в котором пакеты и кейбинды и так далее обрабатываются без тебя, не можешь ты этого делать без какого-то своего кода, который мы тебя и просим показать, если ты хочешь чтобы мы тебе помогли (причём за просто так)

Всё разжевывать надо
 
34
0
Всё разжевывать надо
:)

Ладно с костюмом чуть позже, я попробовал другим путём сделал предмет который спавнит энтити по нажатию пкм, но в этом случае вообще крашнул сервер
часть краша:
Java:
net/minecraft/client/entity/EntityClientPlayerMP
    at net.my.addon.weapons.Test.func_77659_a(Test.java:64)
    at net.minecraft.item.ItemStack.func_77957_a(ItemStack.java:185)
    at net.minecraft.server.management.ItemInWorldManager.func_73085_a(ItemInWorldManager.java:385)
    at net.minecraft.network.NetHandlerPlayServer.func_147346_a(NetHandlerPlayServer.java:833)
    at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:60)
    at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:9)
    at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:245)
код предмета: ItemBlaster не мой!

Java:
public class Test
        extends ItemBlaster {

    public void addInformation(ItemStack ItemStack, EntityPlayer EntityPlayer, List List) {
        List.add(LegendsChatFormat.blue + "Left-Click to shoot");
    }

    public void onPlayerStoppedUsing(ItemStack itemstack, World world, EntityPlayer player, int i) {
        int j = getMaxItemUseDuration(itemstack) - i;
        ArrowLooseEvent event = new ArrowLooseEvent(player, itemstack, j);
        MinecraftForge.EVENT_BUS.post(event);
        if (event.isCanceled()) {
            return;
        }
        j = event.charge;
    }

    public ItemStack onItemRightClick(ItemStack ItemStack, EntityPlayer player) {

        PowerHandler.HeatVision(player, 10);

        return ItemStack;
    }
}
спавн энтити (PowerHandler)
Java:
    public static void HeatVision(EntityPlayer player, int duration) {
            if (!player.worldObj.isRemote) {
                EntityHeatVision entity = new EntityHeatVision(player.worldObj, player, duration);
                entity.setPositionAndRotation(player.posX, player.posY + 1.5F, player.posZ, player.rotationYaw, player.rotationPitch);
                player.worldObj.spawnEntityInWorld(entity);
           
           
        }
    }
 
346
25
94
Вызываешь клиентский класс (EntityClientPlayerMP) на сервере. Естественно ты получишь NoClassDefFoundError только уже на сервере, потому что при тестах на клиенте, в отличие от сервера, класс этот у тебя будет найден и код отработает. По личному опыту скажу, чаще всего получаю эту ошибку, когда создаю переменную с клиентским классом, при этом этот класс будет использоваться на ещё и на сервере. (Аннотация SideOnly не спасёт)
 
34
0
Что пытаешься сделать?
Заспавнить энтити на сервере чтобы не крашнул сервер, или не отключило от него. Я правда не могу понять в чём дело, я даже заменял в моде на который делаю аддон, но это ни к чему не привело
 
34
0
вот часть рендера где используется EntityClientPlayerMP

Java:
     EntityClientPlayerMP entityClientPlayerMP = (Minecraft.getMinecraft()).thePlayer;
    
     if (shooter != null && entity1 != null) {
        
       double d0 = shooter.lastTickPosX + (shooter.posX - shooter.lastTickPosX) * f1;
       double d1 = shooter.lastTickPosY + (shooter.posY - shooter.lastTickPosY) * f1;
       double d2 = shooter.lastTickPosZ + (shooter.posZ - shooter.lastTickPosZ) * f1;
       x = d0 - RenderManager.renderPosX;
       y = d1 - RenderManager.renderPosY;
       z = d2 - RenderManager.renderPosZ;
      
      GL11.glPushMatrix();
      bindEntityTexture(entity);
      GL11.glTranslatef((float)x, (float)((shooter == entityClientPlayerMP) ? -0.1D : ((float)y + 1.2F)), (float)z);
      GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * f1 - 180.0F, 0.0F, 1.0F, 0.0F);
      GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * f1, 510.0F, 0.5F, 1.0F);
      GL11.glDisable(3553);
      GL11.glEnable(3042);
      
       if (shooter != entityClientPlayerMP) {
у меня он используется только в рендерах
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Ну так как так получается, что твои рендеры вызываются на сервере?
На сервере нечего рендерить и там тупо даже нет этого самого класса EntityClientPlayerMP и даже класса Minecraft, о чём ты и получаешь ошибку.
Надо сделать так, чтобы код, вызывающий несуществующие классы на сервере, не вызывался, вот и всё.

И опять же, совершенно непонятно как это вообще возможно в твоём случае, если это рендеры, тут все спят и видят как бы стырить твой невероятный код
 
34
0
Ну так как так получается, что твои рендеры вызываются на сервере?
в том что и дело что не вызываются на сервере
од, вызывающий несуществующие классы на сервере, не вызывался, вот и всё.
в этом и дело что такого нету
как бы стырить твой невероятный код
Чего!?
 
Сверху