Probleme résolu + explication a bush à XP
-
C’est ça en gros
-
oki je suis en train de regarder le tuto de robin

Mais j’aurais surment besoin d’aide pour laisser l’acces au clic droit + l’action -
ça y est je viens de fini j’ai mon block avec mes 4 metadata !
Maintenant je doit faire quoi pour lui dire que tout les “X” tick le block change de metadata ?
Et ensuite pour lui dire que a la 4 eme metadata on peux faire un clic droit dessus( ET PAS AVANT !) pour recuperer un item ?
Et ensuite dire au block de repartir a la metadata numero 1 ?Merci de votre aides !
-
Malheureusement les blocks ne sont pas tickés, ils peuvent seulement êtres tickés de façon aléatoire, donc tu as 2 options :
- faire ticker ton block de façon aléatoire
- lui ajouter une TileEntity qui elle peut être tickée
-
Si je le fait ticker de façon aléatoire le lapse de temps est compris entre combien de tick ? y’a forcement une valeur butée je me trompe ?
-
Alors en fait c’est plus compliqué (j’avais oublié) : je crois que tu dois indiqué dans ton constructeur que ton block doit être tické de façon aléatoire, ensuite tu dois ré-écrire les fonctions tickRate qui indique le nombre de ticks entre chaque mise à jour et updateTick qui sera appelée lors de la mise à jour, mais tu dois aussi rajouter dans la fonction updateTick la fonction World.scheduleBlockUpdate(x, y, z, block, tickRate) pour mettre à jour ton block dans le futur (de façon non-aléatoire)
-
Bon autant dire que c’est impossible a mon niveau……___quelqu’un pour reelement m’aider ? Je suis débutant j’ai besoin de savoir quoi mettre ou.
-
Si toujours personne demain, je te montre.
Et sinon pour faire que le clic droit ne soit que quand tu as plus de 4 en méta, tu dois récrire la fonction onBlockActivated dans ton block et faire if(world.getBlockMetadata(X, y, z) >= 4) puis faire drop ce que tu veux.Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk
-
oui ça je savais mais c’est pour dire au block de tout les “X” temps de changer de metadata

-
Toutes les plantes de Minecraft utilise le tick aléatoire.
Dans le constructeur du bloc il faut ajouter :
this.setTickRandomly(true);
Ensuite il faut utiliser la fonction suivante :public void updateTick(World world, int x, int y, int z, Random rand) { }Dans ton cas il suffit de faire un world.setBlock(x, y, z, this, world.getBlockMetadata(x, y, z) + 1, 3);
Tu peux utiliser la fonction :
public int tickRate(World world) { return 10; // nombre à changer ici }pour influencer la fréquence du tick.
-
Merci beaucoup Robin !
Et maintenant pour dire que quand le block et a la metadata 4 que je peux faire un clic droit ?EDIT: je me rend compte d’une chose : la meta data 4 passe a 1 alors que j’aimerais qu’elle repasse a 1 que lorsque je fait un clic droit dessus
-
Dans la fonction onBlockActivated il suffit de faire une condition if(world.getBlockMetadata(x, y, z) >= 4)
-
oui ça je le sais mais le fait que la metadata passe de 4 a 1 sans que je clic. Mon but est de faire un bush et si on peux recolter que a la 4eme metadata on perd du farm.
-
Tu es sur que ça repasse à un 1 et non que ça passe à 5 puis 6 etc …
Ajoutes :
if(world.getBlockMetadata(x, y, z) < 4)
avant :
world.setBlock(x, y, z, this, world.getBlockMetadata(x, y, z) + 1, 3);dans la fonction updateTick
-
Je vais voir si sa reste a 4 désormais.
Je le savais pck la texture de ma 4 eme metadata est diferente des 3 autre présedente
Et je n’en est mis que 4EDIT : la metadata change encore
-
Envoies ton code actuelle.
-
Voila voila

package fr.xperiaonline.xperiamod.common; import java.util.List; import java.util.Random; import javax.swing.Icon; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; public class BlockModBush extends Block { public static String[] subBlock = new String[]{"block1", "block2"}; public IIcon[] iconArray = new IIcon[subBlock.length]; protected BlockModBush() { super(Material.rock); this.setTickRandomly(true); } public void updateTick(World world, int x, int y, int z, Random rand) { if(world.getBlockMetadata(x, y, z) < 2) world.setBlock(x, y, z, this, world.getBlockMetadata(x, y, z) + 1, 1); } public int tickRate(World world) { return 1; // nombre à changer ici } public int damageDropped(int metadata) { return metadata; } public void getSubBlocks(Item item, CreativeTabs tabs, List list) { for(int i = 0; i < subBlock.length; i++) { list.add(new ItemStack(item, 1, i)); } } public void registerBlockIcons(IIconRegister iconRegister) { for(int i = 0; i < subBlock.length; i++) { this.iconArray* = iconRegister.registerIcon("xperiamod:"+ subBlock*); } } public IIcon getIcon(int side, int metadata) { if(metadata >= 0 && metadata < subBlock.length) { return this.iconArray[metadata]; } return this.iconArray[0]; } } -
étrange, il n’y a pas de raison pour que le metadata passe au dessus de 3 …
-
Non mais elle reste entre 1 et 2 sauf que elle repasse de 2 a 1… j’aimerais que ça ne se fasse pas. Et que ça se fasse seulement quand on fait un clic droit.
-
ça ne devrait le faire non plus, c’est ça qui est étrange.