Rajouter des effets à des blocs
-
Ce tutoriel est également disponible en vidéo.
Sommaire
Introduction
Vous voulez que votre bloc ait un effet ? Suivez-donc ce tutoriel !
Pré-requis
Code
Bloc attiré par la gravité :
Dans la classe de votre bloc, remplacez
extends Block
par
extends BlockFalling
Importez-le et votre bloc tombe !
Bloc rebondissant :
En dessous du constructeur de la classe de votre bloc, ajoutez ceci :
public void onEntityWalking(World world, int x, int y, int z, Entity entity) { entity.motionY += 1.0; }
onEntityWalking
veut dire “lorsque qu’une entitée marche sur le bloc”, en quelque sorte.
entity.motionY +=1.0;
veut dire “l’entitée est poussée vers le vecteur Y (la hauteur) avec une valeur de 1.0 bloc”. Vous pouvez ajouter la même fonction (entity.motion…) en remplaçant le Y par X ou par Z pour qu’on soit “expulsé” en diagonale.
Bloc accélérant :
Dans le constructeur de la classe de votre bloc, ajoutez
slipperiness = 2F;
Augmentez la valeur (2F) pour accélérer encore plus vite (ATTENTION : si vous mettez la valeur est très sensible (10F vous emennera assez loin !)).
Résultat
Accélérer
Rebondissement
Gravité
Crédits
Rédaction :
Ce tutoriel de Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International -
Essaie de faire des gifs ou des images plus explicites (et plus grandes, en passant ^^').
Sinon, ça me paraît pas mal ! -
Et remplace toutes les balises [code][/code] par [java][/java] sans les *
-
C’est bon !
-
Super tutoriel, il complétera le mien de samedi. Je le déplacerai en même temps
-
Ok merci !
-
Par contre vous sauriez comment faire que le bloc rebondissant ne fasse pas prendre de dégâts en gros comme les bloc slime de ma snapshot ?
-
entity.fallDistance = 0;
ou un truc comme ça. -
Ok merci
-
Peut on fair le block qui saute avec la propriéter qu’il coll tout les block sauf les four ??
-
qu’il coll ???
On s’exprime en français ici … Ta question est incompréhensible. -
Comme le block de slime en 1.8 il stick les block mais les four et les piston non
-
Pas possible sans modifier le code du piston (donc grosse galère). Le déplacement des pistons n’est pas prévu pour un tel comportement en 1.7.10 et nécessite une grosse réécriture du code de Minecraft (en et passant ça causera des incompatibilités).
Les fours ne peuvent pas être déplacé par les pistons car il possède un tile entity. -
Et possible de mettre que quand on jump dessus sa nous propulse
-
C’est seulement possible en 1.8, car en 1.7 il n’y a pas de fonction pour quand les joueurs tombent dessus il me semble
-
C’est dans le tutoriel, bloc qui propulse …
-
Le blockFalling ne s’applique qu’au bloc normaux j’ai essayé avec un block créer avec techne et lorsqu’il tombe l’objet forme un cube . Je me suis donc basé sur le code de l’oeuf d’enderdragon mais rien n’y fait
protected BlockEgg(Material material) { super(material); this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 1.0F, 0.9375F); } public void onBlockAdded(World world, int x, int y, int z) { world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); } public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); } public void updateTick(World world, int x, int y, int z, Random random) { this.func_150018_e(world, x, y, z); } private void func_150018_e(World world, int x, int y, int z) { if (BlockFalling.func_149831_e(world, x, y - 1, z) && y >= 0) { byte b0 = 32; if (!BlockFalling.fallInstantly && world.checkChunksExist(x - b0, y - b0, z - b0, x + b0, y + b0, z + b0)) { EntityFallingBlock entityfallingblock = new EntityFallingBlock(world, (double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float) z + 0.5F), this); world.spawnEntityInWorld(entityfallingblock); } else { world.setBlockToAir(x, y, z); while (BlockFalling.func_149831_e(world, x, y - 1, z) && y > 0) { –y; } if (y > 0) { world.setBlock(x, y, z, this, 0, 2); } } } } public int tickRate(World world) { return 5; } @SideOnly(Side.CLIENT) public Item getItem(World world, int x, int y, int z) { return null; } @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) { return true; }
Même avec ca lorsque le bloc tombe il se transforme en carré puis qu’an il atterrit au sol la il refait le bon model
Pour ce qui est de : ```java
@SideOnly(Side.CLIENT)
public Item getItem(World world, int x, int y, int z)
{
return null;
} -
Normal, le blockFalling devient une entité lorsqu’il tombe.
-
J’ai pris ce code du BlockDragonEgg , donc sa devrait fonctionner avec mon block Oo Ou Dois je dire qu’il doit utiliser TileEntityEgg ?
-
Up quelqu’un saurait m’aider ? ( codes au dessus ) Si il deviens une entitée lorsqu’il tombe ou est gérer cet entité dans le code ?