Plusieurs problèmes de mise à jour
-
- Je regarde ça

- Pour l’instance, c’est ton entité (donc entity1), et pour les valeurs, faut regarder dans la fonction en private les valeurs qu’elle utilise.
PS: Il y a aussi un moyen (plus compliqué) d’appeler directement la fonction copyDataFromOld, car là, si tu changes plusieurs valeurs, au niveau perfs c’est pas extra ^^
- Je regarde ça
-
Pour la 1, j’ai modifier le post d’au-dessus, regarde l’édit n°2.
Pour la 2, je vais voir
EDIT : je ne change que 3 valeurs par la reflection. Tu pense que ça va beaucoup jouer sur les performances ? -
Pour le playerList, tu dois pouvoir l’avoir via le mcServer.
Vu que le code n’est pas appelé souvent, oui ça ira. -
J’ai testé d’entre dans le portail, mais ça crash. J’ai donc essayé de modifier l’ID pour que ça me mène vers le Nether (pour savoir si c’est ma dimension qui bug) et ça crash pareil. Voilà les logs :
[23:07:26] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: net.minecraft.util.ReportedException: Colliding entity with block at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_92] at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_92] at net.minecraft.util.Util.runTask(Util.java:24) [Util.class:?] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:738) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:683) [MinecraftServer.class:?] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155) [IntegratedServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:532) [MinecraftServer.class:?] at java.lang.Thread.run(Unknown Source) [?:1.8.0_92] Caused by: net.minecraft.util.ReportedException: Colliding entity with block at net.minecraft.entity.Entity.moveEntity(Entity.java:962) ~[Entity.class:?] at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:499) ~[NetHandlerPlayServer.class:?] at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?] at net.minecraft.network.play.client.CPacketPlayer$C06PacketPlayerPosLook.processPacket(CPacketPlayer.java:162) ~[CPacketPlayer$C06PacketPlayerPosLook.class:?] at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) ~[PacketThreadUtil$1.class:?] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_92] at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_92] at net.minecraft.util.Util.runTask(Util.java:23) ~[Util.class:?] … 5 more Caused by: java.lang.NullPointerException at thisishalloween.world.frightful.TeleporterFrightful.placeInExistingPortal(TeleporterFrightful.java:139) ~[TeleporterFrightful.class:?] at thisishalloween.world.frightful.TeleporterFrightful.placeInPortal(TeleporterFrightful.java:43) ~[TeleporterFrightful.class:?] at net.minecraft.server.management.PlayerList.transferEntityToWorld(PlayerList.java:733) ~[PlayerList.class:?] at net.minecraft.server.management.PlayerList.transferPlayerToDimension(PlayerList.java:640) ~[PlayerList.class:?] at thisishalloween.block.BlockPortalFrightful.onEntityCollidedWithBlock(BlockPortalFrightful.java:242) ~[BlockPortalFrightful.class:?] at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1037) ~[Entity.class:?] at net.minecraft.entity.Entity.moveEntity(Entity.java:955) ~[Entity.class:?] at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:499) ~[NetHandlerPlayServer.class:?] at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?] at net.minecraft.network.play.client.CPacketPlayer$C06PacketPlayerPosLook.processPacket(CPacketPlayer.java:162) ~[CPacketPlayer$C06PacketPlayerPosLook.class:?] at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) ~[PacketThreadUtil$1.class:?] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_92] at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_92] at net.minecraft.util.Util.runTask(Util.java:23) ~[Util.class:?] … 5 more [23:07:26] [Server thread/WARN]: Can't keep up! Did the system time change, or is the server overloaded? Running 3689ms behind, skipping 73 tick(s) [23:07:26] [Server thread/INFO] [FML]: Unloading dimension -1Le crash me reporte à deux endroits différents : à cette ligne :```java
d6 = (double)(blockpattern$patternhelper.getPos().getY() + 1) - entityIn.getLastPortalVec().yCoord * (double)blockpattern$patternhelper.func_181119_e();qui est dans la fonction placeInExistingPortal dans le teleporter. Ca me reporte aussi à la ligne qui appelle placeInExistingPortal. Je vous met la fonction en entière :java
public boolean placeInExistingPortal(Entity entityIn, float rotationYaw)
{
int i = 128;
double d0 = -1.0D;
int j = MathHelper.floor_double(entityIn.posX);
int k = MathHelper.floor_double(entityIn.posZ);
boolean flag = true;
BlockPos blockpos = BlockPos.ORIGIN;
long l = ChunkCoordIntPair.chunkXZ2Int(j, k);if (this.destinationCoordinateCache.containsItem(l))
{
Teleporter.PortalPosition teleporter$portalposition = (Teleporter.PortalPosition)this.destinationCoordinateCache.getValueByKey(l);
d0 = 0.0D;
blockpos = teleporter$portalposition;
teleporter$portalposition.lastUpdateTime = this.worldServerInstance.getTotalWorldTime();
flag = false;
}
else
{
BlockPos blockpos3 = new BlockPos(entityIn);for (int i1 = -128; i1 <= 128; ++i1)
{
BlockPos blockpos2;for (int j1 = -128; j1 <= 128; ++j1)
{
for (BlockPos blockpos1 = blockpos3.add(i1, this.worldServerInstance.getActualHeight() - 1 - blockpos3.getY(), j1); blockpos1.getY() >= 0; blockpos1 = blockpos2)
{
blockpos2 = blockpos1.down();if (this.worldServerInstance.getBlockState(blockpos1).getBlock() == CreateBlocks.portalFrightful)
{
while (this.worldServerInstance.getBlockState(blockpos2 = blockpos1.down()).getBlock() == CreateBlocks.portalFrightful)
{
blockpos1 = blockpos2;
}double d1 = blockpos1.distanceSq(blockpos3);
if (d0 < 0.0D || d1 < d0)
{
d0 = d1;
blockpos = blockpos1;
}
}
}
}
}
}if (d0 >= 0.0D)
{
if (flag)
{
this.destinationCoordinateCache.add(l, new Teleporter.PortalPosition(blockpos, this.worldServerInstance.getTotalWorldTime()));
this.destinationCoordinateKeys.add(Long.valueOf(l));
}double d5 = (double)blockpos.getX() + 0.5D;
double d6 = (double)blockpos.getY() + 0.5D;
double d7 = (double)blockpos.getZ() + 0.5D;
BlockPattern.PatternHelper blockpattern$patternhelper = Blocks.portal.func_181089_f(this.worldServerInstance, blockpos);
boolean flag1 = blockpattern$patternhelper.getFinger().rotateY().getAxisDirection() == EnumFacing.AxisDirection.NEGATIVE;
double d2 = blockpattern$patternhelper.getFinger().getAxis() == EnumFacing.Axis.X ? (double)blockpattern$patternhelper.getPos().getZ() : (double)blockpattern$patternhelper.getPos().getX();
d6 = (double)(blockpattern$patternhelper.getPos().getY() + 1) - entityIn.getLastPortalVec().yCoord * (double)blockpattern$patternhelper.func_181119_e();if (flag1)
{
++d2;
}if (blockpattern$patternhelper.getFinger().getAxis() == EnumFacing.Axis.X)
{
d7 = d2 + (1.0D - entityIn.getLastPortalVec().xCoord) * (double)blockpattern$patternhelper.func_181118_d() * (double)blockpattern$patternhelper.getFinger().rotateY().getAxisDirection().getOffset();
}
else
{
d5 = d2 + (1.0D - entityIn.getLastPortalVec().xCoord) * (double)blockpattern$patternhelper.func_181118_d() * (double)blockpattern$patternhelper.getFinger().rotateY().getAxisDirection().getOffset();
}float f = 0.0F;
float f1 = 0.0F;
float f2 = 0.0F;
float f3 = 0.0F;if (blockpattern$patternhelper.getFinger().getOpposite() == entityIn.getTeleportDirection())
{
f = 1.0F;
f1 = 1.0F;
}
else if (blockpattern$patternhelper.getFinger().getOpposite() == entityIn.getTeleportDirection().getOpposite())
{
f = -1.0F;
f1 = -1.0F;
}
else if (blockpattern$patternhelper.getFinger().getOpposite() == entityIn.getTeleportDirection().rotateY())
{
f2 = 1.0F;
f3 = -1.0F;
}
else
{
f2 = -1.0F;
f3 = 1.0F;
}double d3 = entityIn.motionX;
double d4 = entityIn.motionZ;
entityIn.motionX = d3 * (double)f + d4 * (double)f3;
entityIn.motionZ = d3 * (double)f2 + d4 * (double)f1;
entityIn.rotationYaw = rotationYaw - (float)(entityIn.getTeleportDirection().getOpposite().getHorizontalIndex() * 90) + (float)(blockpattern$patternhelper.getFinger().getHorizontalIndex() * 90);if (entityIn instanceof EntityPlayerMP)
{
((EntityPlayerMP)entityIn).playerNetServerHandler.setPlayerLocation(d5, d6, d7, entityIn.rotationYaw, entityIn.rotationPitch);
}
else
{
entityIn.setLocationAndAngles(d5, d6, d7, entityIn.rotationYaw, entityIn.rotationPitch);
}return true;
}
else
{
return false;
}
}EDIT : j'ai testé en utilisant le teleporter de base, ça crash paeil. Même logs. Du coup, c'est bien les modifs que j'ai fait pour contrer le private de copyDataFromOld qui font buguer. Voilà ce que j'ai fait : ```java BlockPos lastPortalPos = new BlockPos(entity.posX, entity.posY, entity.posZ); Vec3d lastPortalVec = entity.getLastPortalVec(); EnumFacing teleportDirection = entity.getTeleportDirection(); entity.timeUntilPortal = entity1.timeUntilPortal; ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity1, lastPortalPos, "lastPortalPos"); ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity1, lastPortalVec, "lastPortalVec"); ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity1, teleportDirection, "teleportDirection"); -
Fais un print de “entityIn.getLastPortalVec()” dans ta fonction placeInExistingPortal. et regarde dans les logs si tu n’a pas une erreur sur le réflexion.
-
Arrêtez de debugger avec des prints …
Tu mets un point d’arret sur la ligne qui pose problème, tu lance en debug et tu fais du pas par pas …
C’est 1000x plus efficace et rapide.Si tu ne sais pas te servir du debuggueur Eclipse, cherche sur internet, ça te changera la vie
-
Salut
Ca doit être la reflection qui bug car[13:49:58] [Server thread/INFO] [STDOUT]: [thisishalloween.world.frightful.TeleporterFrightful:placeInExistingPortal:76]: lastPortalVec : null [13:49:58] [Server thread/INFO] [STDOUT]: [thisishalloween.world.frightful.TeleporterFrightful:placeInExistingPortal:77]: teleportDirection : nulllastPortalVec est nul.
Je vais voir le blockPortal vanilla voir ce qui change@‘RedRelay’:
Tu mets un point d’arret sur la ligne qui pose problème …
Si je sais pas c’est quelle ligne qui bug, ça va être plutôt dur

-
@‘Axaurus’:
@‘RedRelay’:
Tu mets un point d’arret sur la ligne qui pose problème …
Si je sais pas c’est quelle ligne qui bug, ça va être plutôt dur

thisishalloween.world.frightful.TeleporterFrightful.placeInExistingPortal(TeleporterFrightful.java:139)Elle est la ta ligne qui pose problème
-
Les logs disent ça mais c’est pas ça. Il ne faut pas trop se fier au crash report des fois. Par exemple, quand j’ai voulu mettre à jour mon mod en 1.8, j’ai eu un problème pour la dimension. J’avais cru que c’était le teleporter qui buguait (ça m’indiquait la même ligne) mais en fait c’était le worldChunkManager, ça marchait très bien pour m’emmener dans le Nether. Et pis là, j’ai testé en allant dans le Nether en utilisant le teleporter de base et ça crash quand même.
Mais merci quand même
-
Le crash report indique toujours la bonne raison, c’est juste que quelque fois il faut remonter un peu car le problème peut être dû à une autre classe
-
Tu remontes dans la StackTrace alors.
Ça aussi le débuggeur permet de le faire, et c’est monstrueusement plus efficace qu’un syso. -
Salut
J’ai modifier des tas de trucs et le tp marche plus ou moins.
Déjà, je vous donne le code :```java
@Override
public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entityIn)
{
if (entityIn.getRidingEntity() == null && entityIn.getRidingEntity() == null && entityIn.timeUntilPortal <= 0)
{
int id = -1;if (entityIn.dimension == id)
{
id = 0;
}if (entityIn instanceof EntityPlayerMP)
{
EntityPlayerMP player = (EntityPlayerMP) entityIn;
MinecraftServer mcServer = entityIn.getServer();if (player.timeUntilPortal > 0)
{
player.timeUntilPortal = 100;
}
else if (player.dimension != ThisisHalloween.DIMENSION_ID)
{
ThisisHalloween.portal = false;
// mcServer.getPlayerList().transferPlayerToDimension(player, -1, new Teleporter(mcServer.worldServerForDimension(-1)));
//entityIn.changeDimension(-1);
travelToDimension(entityIn, id);
player.timeUntilPortal = 100;
System.out.println(“appel travel”);
ThisisHalloween.portal = true;
}
else
{
mcServer.getPlayerList().transferPlayerToDimension(player, 0, new TeleporterFrightful(mcServer.worldServerForDimension(0)));
// entityIn.changeDimension(0);
player.timeUntilPortal = 100;
}// System.out.println(“appel travel”);
// travelToDimension(entityIn, id);
// player.timeUntilPortal = 100;
}}
}private Entity travelToDimension(Entity entity, int id)
{
if (!entity.worldObj.isRemote && !entity.isDead)
{
if (!net.minecraftforge.common.ForgeHooks.onTravelToDimension(entity, id)) return null;
entity.worldObj.theProfiler.startSection(“changeDimension”);
MinecraftServer minecraftserver = entity.getServer();
int j = entity.dimension;
WorldServer worldserver = minecraftserver.worldServerForDimension(j);
WorldServer worldserver1 = minecraftserver.worldServerForDimension(id);
entity.dimension = id;if (j == 1 && id == 1) {
worldserver1 = minecraftserver.worldServerForDimension(0);
entity.dimension = 0;
}entity.worldObj.removeEntity(entity);
entity.isDead = false;
entity.worldObj.theProfiler.startSection(“reposition”);
BlockPos blockpos;if (id == 1)
{
blockpos = worldserver1.getSpawnCoordinate();
}
else
{
double d0 = entity.posX;
double d1 = entity.posZ;
double d2 = 8.0D;if (id == -1)
{
d0 = MathHelper.clamp_double(d0 / d2, worldserver1.getWorldBorder().minX() + 16.0D, worldserver1.getWorldBorder().maxX() - 16.0D);
d1 = MathHelper.clamp_double(d1 / d2, worldserver1.getWorldBorder().minZ() + 16.0D, worldserver1.getWorldBorder().maxZ() - 16.0D);
}
else if (id == 0)
{
d0 = MathHelper.clamp_double(d0 * d2, worldserver1.getWorldBorder().minX() + 16.0D, worldserver1.getWorldBorder().maxX() - 16.0D);
d1 = MathHelper.clamp_double(d1 * d2, worldserver1.getWorldBorder().minZ() + 16.0D, worldserver1.getWorldBorder().maxZ() - 16.0D);
}d0 = (double)MathHelper.clamp_int((int)d0, -29999872, 29999872);
d1 = (double)MathHelper.clamp_int((int)d1, -29999872, 29999872);
float f = entity.rotationYaw;
entity.setLocationAndAngles(d0, entity.posY, d1, 90.0F, 0.0F);
Teleporter teleporter = worldserver1.getDefaultTeleporter();
teleporter.placeInExistingPortal(entity, f);
blockpos = new BlockPos(entity);
}//TODO minecraftserver.getPlayerList().transferEntityToWorld(entity, j, worldserver, worldserver1, new Teleporter(worldserver1));
worldserver.updateEntityWithOptionalForce(entity, false);
entity.worldObj.theProfiler.endStartSection(“reloading”);
Entity entity1 = EntityList.createEntityByName(EntityList.getEntityString(entity), worldserver1);if (entity1 != null)
{
// entity1.copyDataFromOld(entity);
BlockPos lastPortalPos = new BlockPos(entity.posX, entity.posY, entity.posZ);
Vec3d lastPortalVec = entity.getLastPortalVec();
EnumFacing teleportDirection = entity.getTeleportDirection();entity.timeUntilPortal = entity1.timeUntilPortal;
ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity1, lastPortalPos, “lastPortalPos”);
ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity1, lastPortalVec, “lastPortalVec”);
ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity1, teleportDirection, “teleportDirection”);if (j == 1 && id == 1)
{
BlockPos spawnPoint = worldserver1.getTopSolidOrLiquidBlock(worldserver1.getSpawnPoint());
entity1.moveToBlockPosAndAngles(spawnPoint, entity1.rotationYaw, entity1.rotationPitch);
}
else
{
entity1.moveToBlockPosAndAngles(blockpos, entity1.rotationYaw, entity1.rotationPitch);
}boolean flag = entity1.forceSpawn;
entity1.forceSpawn = true;
worldserver1.spawnEntityInWorld(entity1);
entity1.forceSpawn = flag;
worldserver1.updateEntityWithOptionalForce(entity1, false);
}entity.isDead = true;
entity.worldObj.theProfiler.endSection();
worldserver.resetUpdateEntityTick();
worldserver1.resetUpdateEntityTick();
entity.worldObj.theProfiler.endSection();
return entity1;
}
else
{
System.out.println(“null travel”);
return null;
}}
Ensuite, voilà le problème. Quand j'entre dans le portail, ça me tp, mais pas visuellement. Qu'est ce que je veux dire par là ? Quand je rentre dans le portail, le jeu me croie dans le Nether : les entités qui sont dans l'Overworld ne bouge plus et je ne peux plus intéragir avec mais à part ça tout fonctionne (le temps qui défile, le chat, …), j'ai fait afficher dans la console dans quel dimension je suis et dès que je rentre dans le portail, ça me dit -1\. Et quand je déco/reco, je me retrouve dans le nether. De plus, je vois dans la console que le Nether charge. Par contre, la console me spam à l'infini :[16:01:57] [Server thread/INFO] [FML]: Loading dimension -1 (New World) (net.minecraft.server.integrated.IntegratedServer@574531d4)
[16:01:57] [Server thread/INFO] [FML]: Unloading dimension -1Donc, je pense que vous vous doutez de ma question : pourquoi ça fait ça et comment corriger ? Merci d'avance PS : je précise que j'utilise toujours le teleporter de base, ça ne peut donc pas être ça EDIT : j'ai testé c'est bien la fonction TravelToDimension qui bug. -
Salut
J’ai découvert un autre problème.
Déjà, pour en revenir au problème précédent, (pour ceux qui ont pas vu l’édit) c’est la fonction travelToDimension qui bug, et non OnEntityCollided. Pourtant ce qui est bizarre c’est que cette fonction est carrément copié sur la fonction changeDimension de la classe Entity. Et quand je me tp en utilisant cette fonction, ça marche très bien. Je comprend pas là.Ensuite, pour mon autre problème, ma dimension marche très bien (à part que je spawn dans le sol et que y’a pas de portail. Mais ça, c’est le tp puisque même dans le nether je suis dans le sol) mais quand j’utilise mon biome, c’est le biome océan qui spawn. J’ai regarder et tester, mon biome n’est pas enregistrer. Voilà comment il est initialiser et “enregistrer” : (c’est dans le init de la classe principale) ```java
Evilland = new BiomeGenEvilland((new BiomeGenBase.BiomeProperties(“Evilland”)).setBaseHeight(0.125F).setHeightVariation(0.05F).setRainDisabled().setTemperature(2.0F).setRainfall(0.0F));
BiomeDictionary.registerBiomeType(Evilland, Type.DEAD);
BiomeManager.addBiome(BiomeType.WARM, new BiomeEntry(Evilland, 20));
System.out.println("Evilland registerd ? : " + BiomeDictionary.isBiomeRegistered(Evilland));Grâce à mon message, la console me met false, ce qui veut dire qu'il n'est pas enregistrer. Mais dans BiomeDictionary et BiomeManager, il n'y a rien d'autre qui permet d'enregistrer. J'ai aussi tester d'utiliser l'enregistrement de BiomeGenBase, mais pareil. Merci d'avance -
Pour ton problème de tp, j’essayerais de regarder plus tard si j’ai le time, et pour le biome, il me semble que tu n’es pas obligé de l’enregistré (pour les dimensions déjà existantes), tu as juste besoin de spécifier son utilisation dans le BiomeGenLayer de ta dimension.
-
Pourtant, il est bien renseigné partout où il doit être. Quand je met la plaine, ça marche bien. Mais dès que je met mon biome, ça bug.
-
Montre la classe du biome.
-
Salut
package thisishalloween.world.frightful; import net.minecraft.init.Blocks; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.biome.BiomeGenPlains; import thisishalloween.entity.EntityEvilChicken; import thisishalloween.entity.EntityEvilCow; import thisishalloween.entity.EntityEvilPig; import thisishalloween.entity.EntityEvilSheep; import thisishalloween.entity.EntityGhost; import thisishalloween.entity.EntityMummy; import thisishalloween.entity.EntityVampire; public class BiomeGenEvilland extends BiomeGenBase { public BiomeGenEvilland(BiomeProperties i) { super(i); this.spawnableCaveCreatureList.clear(); this.spawnableWaterCreatureList.clear(); this.spawnableMonsterList.clear(); this.spawnableCreatureList.clear(); this.spawnableMonsterList.add(new SpawnListEntry(EntityEvilPig.class, 40, 8, 10)); this.spawnableMonsterList.add(new SpawnListEntry(EntityEvilSheep.class, 40, 8, 10)); this.spawnableMonsterList.add(new SpawnListEntry(EntityEvilChicken.class, 40, 8, 10)); this.spawnableMonsterList.add(new SpawnListEntry(EntityEvilCow.class, 40, 8, 10)); this.spawnableMonsterList.add(new SpawnListEntry(EntityMummy.class, 50, 1, 4)); this.spawnableMonsterList.add(new SpawnListEntry(EntityVampire.class, 50, 1, 4)); this.spawnableMonsterList.add(new SpawnListEntry(EntityGhost.class, 50, 1, 4)); this.addFlower(Blocks.yellow_flower.getDefaultState(), 10);// … this.topBlock = Blocks.grass.getDefaultState(); this.fillerBlock = Blocks.dirt.getDefaultState(); this.theBiomeDecorator.flowersPerChunk = 4; this.theBiomeDecorator.treesPerChunk = 5; this.theBiomeDecorator.grassPerChunk = 5; this.theBiomeDecorator.mushroomsPerChunk = 2; this.theBiomeDecorator.reedsPerChunk = 2; this.theBiomeDecorator.generateLakes = true; } } -
Salut
Je up ce topic pour vous dire que j’ai enfin réussi à faire marcher mon biome.
J’ai modifier son système (j’ai aussi profiter pour refaire la dimension) :
Dans le init de la classe principale :Evilland = BiomeGenEvilland.instance = new BiomeGenEvilland(); Biome.registerBiome(BiomeGenEvilland.BIOME_ID, BiomeGenEvilland.instance.getBiomeName(), BiomeGenEvilland.instance); ``` et la classe de mon biome : ```java package thisishalloween.world.frightful; import net.minecraft.init.Blocks; import net.minecraft.world.biome.Biome; import thisishalloween.entity.EntityEvilChicken; import thisishalloween.entity.EntityEvilCow; import thisishalloween.entity.EntityEvilPig; import thisishalloween.entity.EntityEvilSheep; import thisishalloween.entity.EntityGhost; import thisishalloween.entity.EntityMummy; import thisishalloween.entity.EntityVampire; public class BiomeGenEvilland extends Biome { public static BiomeGenEvilland instance; public static final String BIOME_NAME = "Evilland"; public static final int BIOME_ID = 255; public BiomeGenEvilland() { super(properties()); this.spawnableCaveCreatureList.clear(); this.spawnableWaterCreatureList.clear(); this.spawnableMonsterList.clear(); this.spawnableCreatureList.clear(); this.spawnableMonsterList.add(new SpawnListEntry(EntityEvilPig.class, 40, 8, 10)); this.spawnableMonsterList.add(new SpawnListEntry(EntityEvilSheep.class, 40, 8, 10)); this.spawnableMonsterList.add(new SpawnListEntry(EntityEvilChicken.class, 40, 8, 10)); this.spawnableMonsterList.add(new SpawnListEntry(EntityEvilCow.class, 40, 8, 10)); this.spawnableMonsterList.add(new SpawnListEntry(EntityMummy.class, 50, 1, 4)); this.spawnableMonsterList.add(new SpawnListEntry(EntityVampire.class, 50, 1, 4)); this.spawnableMonsterList.add(new SpawnListEntry(EntityGhost.class, 50, 1, 4)); // Pour ajouter une fleur (state, probabilité) this.addFlower(Blocks.YELLOW_FLOWER.getDefaultState(), 10);// … this.topBlock = Blocks.GRASS.getDefaultState(); this.fillerBlock = Blocks.DIRT.getDefaultState(); this.theBiomeDecorator.flowersPerChunk = 4; this.theBiomeDecorator.treesPerChunk = 5; this.theBiomeDecorator.grassPerChunk = 5; this.theBiomeDecorator.mushroomsPerChunk = 2; this.theBiomeDecorator.reedsPerChunk = 2; this.theBiomeDecorator.generateLakes = true; } private static Biome.BiomeProperties properties() { Biome.BiomeProperties properties = new Biome.BiomeProperties(BIOME_NAME); properties.setBaseHeight(0.125F); properties.setHeightVariation(0.05F); properties.setRainDisabled(); return properties; } } ``` Après, c'est sûr, il y a plein d'autres moyen, mais celui-là marche, j'en suis satisfait :-). Il ne reste plus que le tp qui bug. Merci d'avance EDIT : J'ai oublié de vous dire, je suis désormais en 1.9.4\. Auparavant, j'était en 1.9 1er du nom -
Salut
J’ai continué de chercher pour le problème de tp et j’ai trouvé des choses assez étonnantes : quand j’utilise la fonction changeDimension de la classe entity, ça me tp bien seulement si je met la dimension 1 (qui correspond à l’End). Si je veux aller dans le Nether ou dans ma dimension, ça crash. Par contre, si je met ma propre fonction changeDimension (qui est une pure copie de la fonction d’origine (à part un truc)), ça me tp dans la dimension que je veux seulement après avoir relancé le monde. Déjà, (juste pour savoir, je ne l’utiliserais pas) pourquoi ça crash quand j’utilise la fonction de base (celle de la classe Entity) ?
Ensuite, j’ai trouvé un truc (je ne sais pas si c’est ça qui résoudra le bug) : ```java
public Entity changeDimension(Entity entity, int dimensionIn)
{
if (!entity.worldObj.isRemote && !entity.isDead)
{
if (!net.minecraftforge.common.ForgeHooks.onTravelToDimension(entity, dimensionIn)) return null;
entity.worldObj.theProfiler.startSection(“changeDimension”);
MinecraftServer minecraftserver = entity.getServer();
int i = entity.dimension;
WorldServer worldserver = minecraftserver.worldServerForDimension(i);
WorldServer worldserver1 = minecraftserver.worldServerForDimension(dimensionIn);
entity.dimension = dimensionIn;if (i == 1 && dimensionIn == 1)
{
worldserver1 = minecraftserver.worldServerForDimension(0);
entity.dimension = 0;
}entity.worldObj.removeEntity(entity);
entity.isDead = false;
entity.worldObj.theProfiler.startSection(“reposition”);
BlockPos blockpos;if (dimensionIn == 1)
{
blockpos = worldserver1.getSpawnCoordinate();
}
else
{
double d0 = entity.posX;
double d1 = entity.posZ;
double d2 = 8.0D;if (dimensionIn == -1)
{
d0 = MathHelper.clamp_double(d0 / d2, worldserver1.getWorldBorder().minX() + 16.0D, worldserver1.getWorldBorder().maxX() - 16.0D);
d1 = MathHelper.clamp_double(d1 / d2, worldserver1.getWorldBorder().minZ() + 16.0D, worldserver1.getWorldBorder().maxZ() - 16.0D);
}
else if (dimensionIn == 0)
{
d0 = MathHelper.clamp_double(d0 * d2, worldserver1.getWorldBorder().minX() + 16.0D, worldserver1.getWorldBorder().maxX() - 16.0D);
d1 = MathHelper.clamp_double(d1 * d2, worldserver1.getWorldBorder().minZ() + 16.0D, worldserver1.getWorldBorder().maxZ() - 16.0D);
}d0 = (double)MathHelper.clamp_int((int)d0, -29999872, 29999872);
d1 = (double)MathHelper.clamp_int((int)d1, -29999872, 29999872);
float f = entity.rotationYaw;
entity.setLocationAndAngles(d0, entity.posY, d1, 90.0F, 0.0F);
Teleporter teleporter = new Teleporter(entity.getServer().worldServerForDimension(entity.dimension));
teleporter.placeInExistingPortal(entity, f);
blockpos = new BlockPos(entity);
}worldserver.updateEntityWithOptionalForce(entity, false);
entity.worldObj.theProfiler.endStartSection(“reloading”);
Entity entity1 = EntityList.createEntityByName(EntityList.getEntityString(entity), worldserver1);if (entity1 != null)
{
// entity1.copyDataFromOld(entity1);BlockPos lastPortalPos = new BlockPos(entity.posX, entity.posY, entity.posZ);
Vec3d lastPortalVec = entity.getLastPortalVec();
EnumFacing teleportDirection = entity.getTeleportDirection();entity.timeUntilPortal = entity1.timeUntilPortal;
ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity1, lastPortalPos, “lastPortalPos”);
ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity1, lastPortalVec, “lastPortalVec”);
ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity1, teleportDirection, “teleportDirection”);if (i == 1 && dimensionIn == 1)
{
BlockPos blockpos1 = worldserver1.getTopSolidOrLiquidBlock(worldserver1.getSpawnPoint());
entity1.moveToBlockPosAndAngles(blockpos1, entity1.rotationYaw, entity1.rotationPitch);
}
else
{
entity1.moveToBlockPosAndAngles(blockpos, entity1.rotationYaw, entity1.rotationPitch);
}boolean flag = entity1.forceSpawn;
entity1.forceSpawn = true;
worldserver1.spawnEntityInWorld(entity1);
entity1.forceSpawn = flag;
worldserver1.updateEntityWithOptionalForce(entity1, false);
}
else
{
System.out.println(“entity1 == null”);
}entity.isDead = true;
entity.worldObj.theProfiler.endSection();
worldserver.resetUpdateEntityTick();
worldserver1.resetUpdateEntityTick();
entity.worldObj.theProfiler.endSection();
return entity1;
}
else
{
return null;
}[15:29:50] [Server thread/FATAL]: Error executing task
java.util.concurrent.ExecutionException: net.minecraft.util.ReportedException: Colliding entity with block
at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_92]
at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_92]
at net.minecraft.util.Util.runTask(Util.java:26) [Util.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:740) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:685) [MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155) [IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:534) [MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_92]
Caused by: net.minecraft.util.ReportedException: Colliding entity with block
at net.minecraft.entity.Entity.moveEntity(Entity.java:965) ~[Entity.class:?]
at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:500) ~[NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
at net.minecraft.network.play.client.CPacketPlayer$Position.processPacket(CPacketPlayer.java:85) ~[CPacketPlayer$Position.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) ~[PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_92]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_92]
at net.minecraft.util.Util.runTask(Util.java:25) ~[Util.class:?]
… 5 more
Caused by: java.lang.NullPointerException
at thisishalloween.block.BlockPortalFrightful.changeDimension(BlockPortalFrightful.java:331) ~[BlockPortalFrightful.class:?]
at thisishalloween.block.BlockPortalFrightful.onEntityCollidedWithBlock(BlockPortalFrightful.java:245) ~[BlockPortalFrightful.class:?]
at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1040) ~[Entity.class:?]
at net.minecraft.entity.Entity.moveEntity(Entity.java:958) ~[Entity.class:?]
at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:500) ~[NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
at net.minecraft.network.play.client.CPacketPlayer$Position.processPacket(CPacketPlayer.java:85) ~[CPacketPlayer$Position.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) ~[PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_92]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_92]
at net.minecraft.util.Util.runTask(Util.java:25) ~[Util.class:?]
… 5 more
[15:29:50] [Server thread/ERROR]: Encountered an unexpected exception
net.minecraft.util.ReportedException: Colliding entity with block
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:210) ~[NetworkSystem.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:804) ~[MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:685) ~[MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155) ~[IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:534) [MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_92]
Caused by: java.lang.NullPointerException
at thisishalloween.block.BlockPortalFrightful.changeDimension(BlockPortalFrightful.java:331) ~[BlockPortalFrightful.class:?]
at thisishalloween.block.BlockPortalFrightful.onEntityCollidedWithBlock(BlockPortalFrightful.java:245) ~[BlockPortalFrightful.class:?]
at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1040) ~[Entity.class:?]
at net.minecraft.entity.Entity.moveEntity(Entity.java:958) ~[Entity.class:?]
at net.minecraft.entity.EntityLivingBase.moveEntityWithHeading(EntityLivingBase.java:1952) ~[EntityLivingBase.class:?]
at net.minecraft.entity.player.EntityPlayer.moveEntityWithHeading(EntityPlayer.java:1929) ~[EntityPlayer.class:?]
at net.minecraft.entity.EntityLivingBase.onLivingUpdate(EntityLivingBase.java:2382) ~[EntityLivingBase.class:?]
at net.minecraft.entity.player.EntityPlayer.onLivingUpdate(EntityPlayer.java:549) ~[EntityPlayer.class:?]
at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:2174) ~[EntityLivingBase.class:?]
at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:253) ~[EntityPlayer.class:?]
at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:341) ~[EntityPlayerMP.class:?]
at net.minecraft.network.NetHandlerPlayServer.update(NetHandlerPlayServer.java:175) ~[NetHandlerPlayServer.class:?]
at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher$1.update(NetworkDispatcher.java:196) ~[NetworkDispatcher$1.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:308) ~[NetworkManager.class:?]
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:195) ~[NetworkSystem.class:?]
… 5 more
[15:29:50] [Server thread/ERROR]: This crash report has been saved to: G:\Codage\Minecraft\This_is_Halloween\v1.3\MC 1.9.4\run.\crash-reports\crash-2016-08-24_15.29.50-server.txt
[15:29:50] [Server thread/INFO]: Stopping server
[15:29:50] [Server thread/INFO]: Saving players
[15:29:50] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:649]: –-- Minecraft Crash Report ----
// I let you down. Sorry
Time: 24/08/16 15:29
Description: Colliding entity with blockjava.lang.NullPointerException: Colliding entity with block
at thisishalloween.block.BlockPortalFrightful.changeDimension(BlockPortalFrightful.java:331)
at thisishalloween.block.BlockPortalFrightful.onEntityCollidedWithBlock(BlockPortalFrightful.java:245)
at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1040)
at net.minecraft.entity.Entity.moveEntity(Entity.java:958)
at net.minecraft.entity.EntityLivingBase.moveEntityWithHeading(EntityLivingBase.java:1952)
at net.minecraft.entity.player.EntityPlayer.moveEntityWithHeading(EntityPlayer.java:1929)
at net.minecraft.entity.EntityLivingBase.onLivingUpdate(EntityLivingBase.java:2382)
at net.minecraft.entity.player.EntityPlayer.onLivingUpdate(EntityPlayer.java:549)
at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:2174)
at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:253)
at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:341)
at net.minecraft.network.NetHandlerPlayServer.update(NetHandlerPlayServer.java:175)
at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher$1.update(NetworkDispatcher.java:196)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:308)
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:195)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:804)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:685)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:534)
at java.lang.Thread.run(Unknown Source)A detailed walkthrough of the error, its code path and all known details is as follows:
– Head –
Thread: Client thread
Stacktrace:
at thisishalloween.block.BlockPortalFrightful.changeDimension(BlockPortalFrightful.java:331)
at thisishalloween.block.BlockPortalFrightful.onEntityCollidedWithBlock(BlockPortalFrightful.java:245)– Block being collided with –
Details:
Block: this_is_halloween:PortalFrightful[axis=x]
Block location: World: (-1433,4,949), Chunk: (at 7,0,5 in -90,59; contains blocks -1440,0,944 to -1425,255,959), Region: (-3,1; contains chunks -96,32 to -65,63, blocks -1536,0,512 to -1025,255,1023)
Stacktrace:
at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1040)– Entity being checked for collision –
Details:
Entity Type: null (net.minecraft.entity.player.EntityPlayerMP)
Entity ID: 31
Entity Name: Player222
Entity’s Exact location: -1432,19, 4,00, 948,83
Entity’s Block location: World: (-1433,4,948), Chunk: (at 7,0,4 in -90,59; contains blocks -1440,0,944 to -1425,255,959), Region: (-3,1; contains chunks -96,32 to -65,63, blocks -1536,0,512 to -1025,255,1023)
Entity’s Momentum: 0,00, 0,00, 0,00
Entity’s Passengers: []
Entity’s Vehicle:ERRORNullPointerException: null
Stacktrace:
at net.minecraft.entity.Entity.moveEntity(Entity.java:958)
at net.minecraft.entity.EntityLivingBase.moveEntityWithHeading(EntityLivingBase.java:1952)
at net.minecraft.entity.player.EntityPlayer.moveEntityWithHeading(EntityPlayer.java:1929)
at net.minecraft.entity.EntityLivingBase.onLivingUpdate(EntityLivingBase.java:2382)
at net.minecraft.entity.player.EntityPlayer.onLivingUpdate(EntityPlayer.java:549)
at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:2174)
at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:253)– Player being ticked –
Details:
Entity Type: null (net.minecraft.entity.player.EntityPlayerMP)
Entity ID: 31
Entity Name: Player222
Entity’s Exact location: -1432,19, 4,00, 948,83
Entity’s Block location: World: (-1433,4,948), Chunk: (at 7,0,4 in -90,59; contains blocks -1440,0,944 to -1425,255,959), Region: (-3,1; contains chunks -96,32 to -65,63, blocks -1536,0,512 to -1025,255,1023)
Entity’s Momentum: 0,00, 0,00, 0,00
Entity’s Passengers: []
Entity’s Vehicle:ERRORNullPointerException: null
Stacktrace:
at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:341)
at net.minecraft.network.NetHandlerPlayServer.update(NetHandlerPlayServer.java:175)
at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher$1.update(NetworkDispatcher.java:196)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:308)– Ticking connection –
Details:
Connection: net.minecraft.network.NetworkManager@bc70390
Stacktrace:
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:195)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:804)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:685)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:534)
at java.lang.Thread.run(Unknown Source)– System Details –
Details:
Minecraft Version: 1.9.4
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_92, Oracle Corporation
Java VM Version: Java HotSpot
64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 673332264 bytes (642 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP 9.28 Powered by Forge 12.17.0.1976 4 mods loaded, 4 mods active
States: ‘U’ = Unloaded ‘L’ = Loaded ‘C’ = Constructed ‘H’ = Pre-initialized ‘I’ = Initialized ‘J’ = Post-initialized ‘A’ = Available ‘D’ = Disabled ‘E’ = Errored
UCHIJAAAA mcp{9.19} [Minecraft Coder Pack] (minecraft.jar)
UCHIJAAAA FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.9.4-12.17.0.1976.jar)
UCHIJAAAA Forge{12.17.0.1976} [Minecraft Forge] (forgeSrc-1.9.4-12.17.0.1976.jar)
UCHIJAAAA This_is_Halloween{1.3} [This_is_Halloween] (bin)
Loaded coremods (and transformers):
GL info:ERRORRuntimeException: No OpenGL context found in the current thread.
Profiler Position: N/A (disabled)
Player Count: 1 / 8; [EntityPlayerMP[‘Player222’/31, l=‘New World’, x=-1432,19, y=4,00, z=948,83]]
Type: Integrated Server (map_client.txt)
Is Modded: Definitely; Client brand changed to ‘fml,forge’
[15:29:50] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:649]: #@!@# Game crashed! Crash report saved to: #@!@# .\crash-reports\crash-2016-08-24_15.29.50-server.txt
[15:29:50] [Client thread/INFO] [FML]: Waiting for the server to terminate/save.
[15:29:50] [Server thread/INFO]: Saving worlds
[15:29:50] [Server thread/INFO]: Saving chunks for level ‘New World’/Overworld
[15:29:50] [Server thread/INFO]: Saving chunks for level ‘New World’/Nether
[15:29:50] [Server thread/INFO]: Saving chunks for level ‘New World’/The End
[15:29:50] [Server thread/INFO]: Saving chunks for level ‘New World’/Frightful
[15:29:50] [Server thread/INFO] [FML]: Unloading dimension 0
[15:29:50] [Server thread/INFO] [FML]: Unloading dimension -1
[15:29:50] [Server thread/INFO] [FML]: Unloading dimension 1
[15:29:50] [Server thread/INFO] [FML]: Unloading dimension -5
[15:29:50] [Server thread/INFO] [FML]: Applying holder lookups
[15:29:50] [Server thread/INFO] [FML]: Holder lookups applied
[15:29:50] [Server thread/INFO] [FML]: The state engine was in incorrect state SERVER_STOPPING and forced into state SERVER_STOPPED. Errors may have been discarded.
[15:29:50] [Client thread/INFO] [FML]: Server terminated.
AL lib: (EE) alc_cleanup: 1 device not closed
Java HotSpot
64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release(c'est normal que ça crash, vu que entity1 est null ça veut redéfinir une variable par un null) Celui-ci pointe vers ```java entity.timeUntilPortal = entity1.timeUntilPortal; ```(pour ceux qui n'aurait pas lu depuis le début du topic et qui ne comprennent pas pourquoi j'ai mis cette ligne et les 3 ReflectionHelper du dessous, c'est que la fonction copyDataFromOld doit être appelé, mais elle est privée.) Merci d'avance -
at thisishalloween.block.BlockPortalFrightful.changeDimension(BlockPortalFrightful.java:331) ~[BlockPortalFrightful.class:?]
C’est laquelle la ligne 331 ?