Quelle machine pour mon "gros" serveur ?
-
J’ai mis mon serveur sous la dernière version de Thermos (dernière version de Forge 1.7.10) ainsi que mod et pourtant toujours un crash similaire, et même quand il n’y a qu’un joueur de connecté, c’est arrivé
… Des conseils ? 
-
Tu peux renvoyer le rapport de crash ?
Car c’est soit en rapport avec ça : https://github.com/CyberdyneCC/Thermos/blob/master/patches/net/minecraft/entity/EntityTrackerEntry.java.patch#L263
soit avec ça : https://github.com/CyberdyneCC/Thermos/blob/master/patches/net/minecraft/entity/EntityTrackerEntry.java.patch#L276 -
Voici pour le crash-report: http://pastebin.com/WRPAFuCb

-
Donc le deuxième.
Vu le “Report this error to mod author.” ça confirme que le problème vient du mod et non de thermos.Faudrait voir la fonction entière pour comprendre le souci.
-
Cette fonction, EntityTrackerEntry.java:717 ?
-
Thermos force le crash car il ne sait pas quoi faire lorsqu’il reçoit le paquet de l’entité.
Faudrait regarder en détail ce que fait la fonction func_151260_c pour comprendre comment corriger ça au niveau du mod. -
Je suis assez hébété, parce que si je comprends bien la fonction suivante toutes les autres entités qui ne sont pas celles par défaut de Minecraft, c’est censé crasher… Pourtant le crash n’arrive que parfois

private Packet func_151260_c() { if (this.myEntity.isDead) { logger.warn("Fetching addPacket for removed entity"); } Packet pkt = FMLNetworkHandler.getEntitySpawningPacket(this.myEntity); if (pkt != null) { return pkt; } if (this.myEntity instanceof EntityItem) { return new S0EPacketSpawnObject(this.myEntity, 2, 1); } else if (this.myEntity instanceof EntityPlayerMP) { return new S0CPacketSpawnPlayer((EntityPlayer)this.myEntity); } else if (this.myEntity instanceof EntityMinecart) { EntityMinecart entityminecart = (EntityMinecart)this.myEntity; return new S0EPacketSpawnObject(this.myEntity, 10, entityminecart.getMinecartType()); } else if (this.myEntity instanceof EntityBoat) { return new S0EPacketSpawnObject(this.myEntity, 1); } else if (!(this.myEntity instanceof IAnimals) && !(this.myEntity instanceof EntityDragon)) { if (this.myEntity instanceof EntityFishHook) { EntityPlayer entityplayer = ((EntityFishHook)this.myEntity).field_146042_b; return new S0EPacketSpawnObject(this.myEntity, 90, entityplayer != null ? entityplayer.getEntityId() : this.myEntity.getEntityId()); } else if (this.myEntity instanceof EntityArrow) { Entity entity = ((EntityArrow)this.myEntity).shootingEntity; return new S0EPacketSpawnObject(this.myEntity, 60, entity != null ? entity.getEntityId() : this.myEntity.getEntityId()); } else if (this.myEntity instanceof EntitySnowball) { return new S0EPacketSpawnObject(this.myEntity, 61); } else if (this.myEntity instanceof EntityPotion) { return new S0EPacketSpawnObject(this.myEntity, 73, ((EntityPotion)this.myEntity).getPotionDamage()); } else if (this.myEntity instanceof EntityExpBottle) { return new S0EPacketSpawnObject(this.myEntity, 75); } else if (this.myEntity instanceof EntityEnderPearl) { return new S0EPacketSpawnObject(this.myEntity, 65); } else if (this.myEntity instanceof EntityEnderEye) { return new S0EPacketSpawnObject(this.myEntity, 72); } else if (this.myEntity instanceof EntityFireworkRocket) { return new S0EPacketSpawnObject(this.myEntity, 76); } else { S0EPacketSpawnObject s0epacketspawnobject; if (this.myEntity instanceof EntityFireball) { EntityFireball entityfireball = (EntityFireball)this.myEntity; s0epacketspawnobject = null; byte b0 = 63; if (this.myEntity instanceof EntitySmallFireball) { b0 = 64; } else if (this.myEntity instanceof EntityWitherSkull) { b0 = 66; } if (entityfireball.shootingEntity != null) { s0epacketspawnobject = new S0EPacketSpawnObject(this.myEntity, b0, ((EntityFireball)this.myEntity).shootingEntity.getEntityId()); } else { s0epacketspawnobject = new S0EPacketSpawnObject(this.myEntity, b0, 0); } s0epacketspawnobject.func_149003_d((int)(entityfireball.accelerationX * 8000.0D)); s0epacketspawnobject.func_149000_e((int)(entityfireball.accelerationY * 8000.0D)); s0epacketspawnobject.func_149007_f((int)(entityfireball.accelerationZ * 8000.0D)); return s0epacketspawnobject; } else if (this.myEntity instanceof EntityEgg) { return new S0EPacketSpawnObject(this.myEntity, 62); } else if (this.myEntity instanceof EntityTNTPrimed) { return new S0EPacketSpawnObject(this.myEntity, 50); } else if (this.myEntity instanceof EntityEnderCrystal) { return new S0EPacketSpawnObject(this.myEntity, 51); } else if (this.myEntity instanceof EntityFallingBlock) { EntityFallingBlock entityfallingblock = (EntityFallingBlock)this.myEntity; return new S0EPacketSpawnObject(this.myEntity, 70, Block.getIdFromBlock(entityfallingblock.func_145805_f()) | entityfallingblock.field_145814_a << 16); } else if (this.myEntity instanceof EntityPainting) { return new S10PacketSpawnPainting((EntityPainting)this.myEntity); } else if (this.myEntity instanceof EntityItemFrame) { EntityItemFrame entityitemframe = (EntityItemFrame)this.myEntity; s0epacketspawnobject = new S0EPacketSpawnObject(this.myEntity, 71, entityitemframe.hangingDirection); s0epacketspawnobject.func_148996_a(MathHelper.floor_float((float)(entityitemframe.field_146063_b * 32))); s0epacketspawnobject.func_148995_b(MathHelper.floor_float((float)(entityitemframe.field_146064_c * 32))); s0epacketspawnobject.func_149005_c(MathHelper.floor_float((float)(entityitemframe.field_146062_d * 32))); return s0epacketspawnobject; } else if (this.myEntity instanceof EntityLeashKnot) { EntityLeashKnot entityleashknot = (EntityLeashKnot)this.myEntity; s0epacketspawnobject = new S0EPacketSpawnObject(this.myEntity, 77); s0epacketspawnobject.func_148996_a(MathHelper.floor_float((float)(entityleashknot.field_146063_b * 32))); s0epacketspawnobject.func_148995_b(MathHelper.floor_float((float)(entityleashknot.field_146064_c * 32))); s0epacketspawnobject.func_149005_c(MathHelper.floor_float((float)(entityleashknot.field_146062_d * 32))); return s0epacketspawnobject; } else if (this.myEntity instanceof EntityXPOrb) { return new S11PacketSpawnExperienceOrb((EntityXPOrb)this.myEntity); } else { // Crash bonjour throw new IllegalArgumentException("Don\'t know how to add " + this.myEntity.getClass() + "!"); } } } else { // Cette portion de code est lue pour les entités des mods ? this.lastHeadMotion = MathHelper.floor_float(this.myEntity.getRotationYawHead() * 256.0F / 360.0F); return new S0FPacketSpawnMob((EntityLivingBase)this.myEntity); } }De plus je commence à manier GitHub, est-ce que c’est une bonne idée de déclarer une Issue sur le projet Thermos ?
Merci -
Tu peux mais attends toi au message "vous pouvez cordialement allez vous faire ****** " (sous-entendu)
-
Non, cette fonction n’est pas sensé crashé pour tous les entités autre que celles de minecraft.
Regardes bien :Packet pkt = FMLNetworkHandler.getEntitySpawningPacket(this.myEntity); if (pkt != null) { return pkt; }Et cette fonction fait ça :
public static Packet getEntitySpawningPacket(Entity entity) { EntityRegistration er = EntityRegistry.instance().lookupModSpawn(entity.getClass(), false); if (er == null) { return null; } if (er.usesVanillaSpawning()) { return null; } return channelPair.get(Side.SERVER).generatePacketFrom(new FMLMessage.EntitySpawnMessage(er, entity, er.getContainer())); }Conclusion :
ça crash car fr.altiscraft.benjaminloison.common.guns.EntityBullet n’est pas enregistré.
Bref, le souci vient de ton mod et non de thermos. -
Et une idée de pourquoi parfois ça fonctionne et parfois ça plante ?
Parce que je génère l’EntityBullet pas de soucis mais une fois sur 100 ça plante… Et ce n’est pas un défaut spécifique à l’EntityBullet puisque la classe qui fait crashé change à chaque fois, EntityWheel, Entity…
-
Aucune idée.
L’entité est-elle enregistré ? -
Oui, si tu veux vérifier je t’ai envoyé un message privé avec le code source (à ne pas donner), j’ai séparé mon mod en un côté client et un côté serveur et tout est bien enregistré comme il faut, comme dans le code source de Flan’s Mod (qui plante lui aussi !)
-
Je ne sais pas trop d’où vient exactement le problème alors

-
Inrésolvable. Après discussions avec le staff de Thermos (Cauldron en gros) ils m’ont dit que le problème était de leur côté mais qu’ils ne peuvent rien faire non plus à cause de problème de compilation avec des codes sur des serveurs qui n’existent plus.
J’ai essayé de décompiler… rien à faire. J’ai réussi à mettre en place des restart automatiques quand ça plante etc mais bon j’ai donc décidé avec de nombreux bugs comme ça qu’on ne peut pas résoudre de me lancer dans l’aventure de créer un jeu vidéo semblable au gameplay disponible sur mon serveur. (Et ça avance d’enfer :))