Les choses étranges du code de Minecraft
-
J’ai trouvé. C’est parce qu’une vigne peut être soutenue soit par la vigne du dessus, soit par le bloc sur lequel elle est apposée

-
@‘Blackout’:
une vigne peut être soutenue par la vigne du dessus
Ce qui est bizarre en soit puisque les blocs de Minecraft ne sont pas soumis à la gravité…
-
Je vais plutôt parler du code Forge cette fois :
L’event ChunkDataEvent.Load est propagé lorsque les données NBT d’un Chunk sont chargé.
L’event ChunkDataEvent.Save est propagé lorsque les données NBT d’un Chunk sont sauvegardée.L’event ChunkEvent.Load est propagé lorsqu’un Chunk est chargé
L’event ChunkEvent.Unload est propagé lorsqu’un Chunk est déchargé.ChunkDataEvent.Load est propagé AVANT ChunkEvent.Load.
Donc dans mon handler de ChunkDataEvent.Load, je charge les données, mais j’en fais quoi ??!
Puis qu’imaginons que le Chunk ne soit finalement pas chargé, je n’ai aucun moyen de le savoir.
ChunkEvent.Load ne va pas être propagé, et ChunkEvent.Unload non plus.Je pense faire un point sur le forum officiel de Forge. Si toutefois vous avez des explications, je prends !

-
Dans le BlockPortal :
for (blockpos1 = pos; !World.doesBlockHaveSolidTopSurface(worldIn, blockpos1) && blockpos1.getY() > 0; blockpos1 = blockpos1.down()) { ; }Ça aurait pas été mieux une boucle while ?
-
Une boucle for pour ça est valide.
En passant c’était surement une boucle while au début et Fernflower a du mal décompiler, c’est possible.
-
Mojang fait des API pour ensuite faire des conditions uniques dans les classes mères, voici un exemple pour le rendu du beacon, de la table d’enchantement et du coffre :
(TileEntity:399)@SideOnly(Side.CLIENT) public AxisAlignedBB getRenderBoundingBox() { AxisAlignedBB bb = INFINITE_EXTENT_AABB; // On prend un truc infini pour le beacon (la condition est plus bas) Block type = getBlockType(); if (type == Blocks.enchanting_table) // Si c'est une table d'enchant { bb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 1, zCoord + 1); } else if (type == Blocks.chest || type == Blocks.trapped_chest) // Si c'est un coffre { bb = AxisAlignedBB.getBoundingBox(xCoord - 1, yCoord, zCoord - 1, xCoord + 2, yCoord + 2, zCoord + 2); } else if (type != null && type != Blocks.beacon) // Si le bloc n'est pas null et que ce n'est pas un beacon { AxisAlignedBB cbb = type.getCollisionBoundingBoxFromPool(worldObj, xCoord, yCoord, zCoord); // On prend la boîte de collision if (cbb != null) { bb = cbb; } } return bb; } -
Du-coup comme dit dans la shoutbox c’est Forge qui ajoute ça et non Mojang et Forge fait ça pour éviter d’avoir trop de patch.
-
A moi a moi, je ne ses pas si c’est forge ou minecraft mais dans le code de l’endercrystal:
public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) { if (this.isEntityInvulnerable()) { return false; } else { if (!this.isDead && !this.worldObj.isRemote) { this.health = 0; if (this.health <= 0) { this.setDead(); if (!this.worldObj.isRemote) { this.worldObj.createExplosion((Entity)null, this.posX, this.posY, this.posZ, 6.0F, true); } } } return true; } } -
Je vois aucun problème dans le code que tu as donné.
-
Mettre la vie a 0 puis check si elle est inférieur ou égal à 0. Normal.
-
Quand on comprend pas le code c’est normal de dire des trucs chelou comme ça
-
(Quelque peu hors-sujet mais le Moteur MyBB vient de m’envoyer un MP de suivi pour ce sujet… MP commençant par "SCAREX, "…)
-
What ? Screenshot ?
-
@‘robin4002’:
What ? Screenshot ?
:::

::: -
Scarex aurait-il des acces root? xD
-
Euh j’étais pas au courant
Envoyé de mon SM-G920F en utilisant Tapatalk
-
Je crois que cette fonctionnalité a un soucis x)
-
protected ModelResourceLocation(int p_i46078_1_, String … p_i46078_2_) { super(0, new String[] {p_i46078_2_[0], p_i46078_2_[1]}); this.variant = StringUtils.isEmpty(p_i46078_2_[2]) ? "normal" : p_i46078_2_[2].toLowerCase(); }Un argument inutile dans le constructeur
-
Regarde que ce soit pas une correction forge
-
C’est à dire ? Comment faire ?
