Résolu Bloc qui change de metadata en fonction du bloc sous lui
-
Salut a tous me revoila,
j’ai une question a vous poser: je veux créer des petit arbuste (deux bloc de haut) mais j’ai pas envie de m’emm**der avec un item et la fonction onItemUse, donc j’ai fait un test avec ma génération custom pour faire spawn deux bloc et ca marche. Comme minecraft n’as que des bloc avec une hitbox de 1x1 et que je veux pas utiliser la fonction précédemment cité je veux créer un bloc (pour faire la partie haute de mon arbuste) qui change de metadata suivant le bloc qui est sous lui (les loot changeron par la même occasion)
Helas je n’ai aucune idée de comment faire.
-
Utilise le code de la citrouille Check le bloc en dessous et change la metadata selon le bloc
-
comment de la citrouille? comment elle change de metadata suivant le bloc?
Quelle fonction utiliser?
-
http://www.minecraftforgefrance.fr/showthread.php?tid=136
getSelectedBoundingBoxFromPool et getCollisionBoundingBoxFromPool -
merci je vais regarder tout ca
dpnc je peut utiliser AxisAlignedBB getSelectedBoundingBoxFromPool pour faire une hitbox de 1x2?
-
getSelectedBoundingBoxFromPool -> visuel pour le client
getCollisionBoundingBoxFromPool -> pour la collision côté serveur. -
d’accord merci
je n’est pas compris ce qu’il fallait modifier….
-
return AxisAlignedBB.getAABBPool().getAABB((double)x + this.minX, (double)y + this.minY, (double)z + this.minZ, (double)x + this.maxX, (double)y + this.maxY, (double)z + this.maxZ);
Les valeurs ici (this.minX, etc …) correspondent à un bloc par défaut 1x1 (donc 0.0, 0.0, 0.0, 1.0, 1.0, 1.0)
pour augmenter la hitbox de deux vers le haut :
return AxisAlignedBB.getAABBPool().getAABB((double)x + this.minX, (double)y + this.minY, (double)z + this.minZ, (double)x + this.maxX, (double)y + 2.0D, (double)z + this.maxZ);
Je remplace simplement le this.maxY par 2.0
Pour augmenter vers le bas, remplace le this.minY par -1.0D -
ok merci
EDIT: si je regarde la hitbox du haut elle n’apparait pas… et si j’éssaye de casser en visa la partie du haut ca ne casse pas…
-
Il faut aussi mettre une hitbox au bloc du haut.
-
comment ca?
-
@SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { if(world.getBlockMetadata(x, y, z) == 1) { return AxisAlignedBB.getAABBPool().getAABB((double)x + this.minX, (double)y - 1.0D, (double)z + this.minZ, (double)x + this.maxX, (double)y + this.maxY, (double)z + this.maxZ); } return AxisAlignedBB.getAABBPool().getAABB((double)x + this.minX, (double)y + this.minY, (double)z + this.minZ, (double)x + this.maxX, (double)y + 2.0D, (double)z + this.maxZ); }
-
heu avec ce code la hitbox ne change pas…
-
Sinon utilise les setBlockBound. Aussi, es-tu sûr que ton bloc du haut à bien le metadata 1 et celui du bas 0 ?
-
a en fait c’est deux bloc différent?
-
Celui du bas à un metadata 0, celui du haut 1. Tu ne peux faire sans avoir un metadata différent ou alors un tile entity avec un data différent. Il faut quelque chose pour différencier les deux blocs, sinon ça passe pas.
-
a d’accord