Quelle machine pour mon "gros" serveur ?
-
Le problème c’est que le crash arrive quand le serveur commence à ne plus suivre (100 personnes) donc bon maintenir ce nombre de joueurs sur un serveur forge où il n’y a rien à faire x) et qu’est-ce qui te donne cette impression ?
-
Ton crash n’a rien à voir avec un manque de puissance.
C’est un problème dans flan’s mod.Par contre la connexion c’est surement du 900 mb/s et non mo/s.
Et Windows serveur … Sérieusement ? -
@‘robin4002’:
Ton crash n’a rien à voir avec un manque de puissance.
C’est un problème dans flan’s mod.Par contre la connexion c’est surement du 900 mb/s et non mo/s.
Et Windows serveur … Sérieusement ?Salut Robin,
Je pense qu’avec l’immense quantité de savoir que tu as, tu pourrais me préciser cette erreur de Flan’s Mod s’il te plaît ? L’erreur n’arrive QUE lorsqu’il y a beaucoup de joueurs et le crash-report pointe toujours “au hasard” sur toutes les classes des Entités, mêmes les miennes que j’ai codé, je suis vraiment intéressé par résoudre cette erreur et je suis complètement bloqué, si besoin est je suis prêt à t’envoyer mon code source en privé.
Merci d’avance,
Ps: Je ne suis pas un génie niveau hébergement de serveurs donc bon je préfère l’interface Windows pour l’instant (je commence à m’adapter à Linux) et Windows Server 2012 R2 est “complètement équivalent” à Windows 10 donc ça me suffit. Si tu as d’autres suggestions

-
J’avais déjà regardé ce truc, c’est au niveau du spawn de mob de cauldron que ça plante.
Tu devrais essayer de passer sous Thermos pour commencer : https://github.com/CyberdyneCC/Thermos -
Ou tu refais flan’s mais comme tu le dis : Plus ya de personnes plus ça crash non ?
Regarde donc qui se connecte avanec le crash voir si il n’y a pas un rapport
Ensuite plus il a de joueurs plus il y en d’entity plus il y a de chance de crash -
Après c’est vrai que ton hébergeur actuelle semble moyen. Une vrai machine serait plus adapté.
Par contre la gamme hosting d’ovh avec les Xeon D n’est pas du tout approprié pour Minecraft. -
Qu’est-ce qui est approprié d’après toi du coup s’il te plaît ?

-
Le mieux c’est d’avoir un processeur récent avec une haute fréquence.
-
Sinon ça c’est bien que je ne me trompe pas quand même ^^
I7 4790K 4.0Ghz (64 bits)
32 Go de RAM
500 Go de SSD?
-
ça oui c’est pas mal.
-
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…