je viens d’essailler , vous été d’accord que je devrait avoir écrit tick dans la console a chaque vois que sa tick (désoler pour le jeu de mot). Mais la sa écrit jamais tick pour temps le bloc est poser juste devant moi
Résolu Scanner les blocks allentour
-
public void updateTick(World p_149674_1_, int p_149674_2_, int p_149674_3_, int p_149674_4_, Random p_149674_5_){ } es-que sa équivaut a sa ?
public void updateTick(World world, int x, int y, int z, Random rand){ } Avec world , x , y , z pour la position de mon bloc ?
-
Ve sont des noms de variables, tu peux mettre tout ce que tu veux. Mais c’est mieux de respecter la convention java.
-
On pourrait même mettre :
public void updateTick(World world, int robinEstUnAdminTresPuissant, int ScarexCodeTresBien, int albanninouAEncoreBesoinDaide, Random rand){
ça serait la même chose.
Bon en général on met plutôt des noms de variable qui vont avec la situation. -
la question est pas si je peut les renommer mais si elle correspond bien a sa (si c’est bien les coordonnés de mon block)
-
Oui c’est ça. En général quand tu as world et 3 int après c’est toujours world, x, y, z
-
et le rand c’est quoi ?
-
Une instance de Random.
-
Du coup j’ai fait sa :
public void updateTick(World world, int x, int y, int z, Random rand){ Block block; Material Materiaux; for(int a = x -4;a!=8;a++){ for(int b = y -4;b!=8;b++){ for(int c = z-4;c!=8;c++){ block = world.getBlock(a,b,c); Materiaux = block.getMaterial(); if(Materiaux == Material.plants){ // fonction pour faire poussez la plante } } } } } mais je ne trouve pas la méthode pour faire pousser la plante
-
Regarde ce que fait le bonne meal quand on fait un clic droit (ItemDye)
-
j’y comprend rien –’ pour quoi ils on pas écrit comme tout le monde (en anglais bien sur ) parce que leur func_2656287_8 c’est du charabia incompréhensible
-
if (block instanceof IGrowable) { IGrowable igrowable = (IGrowable)block; if (igrowable.func_149851_a(world, a, b, c, world.isRemote)) { if (!world.isRemote) { if (igrowable.func_149852_a(world, world.rand, a, b, c)) { igrowable.func_149853_b(world, world.rand, a, b, c); } } } } Les func_xxxx c’est parce que les noms de fonctions n’ont pas été traduites.
-
D’accord un grand merci je test sa dessuite
-
c’est possible de faire une pause sans créer un tread ?
-
j’ai un problème je viens de me rendre compte que sa tick pas –’
voila le code :package com.Albanninou.Testmod.Blocks; import java.util.Random; import com.Albanninou.Testmod.CreativeTab; import com.Albanninou.Testmod.Blocks.TileEntity.TileEntityLampOfGrowth; import com.Albanninou.Testmod.Items.DropOfBlood; import com.Albanninou.Testmod.Items.Luminite; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.block.IGrowable; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class LampForGrowth extends Block { public static Block LampForGrowth; private int a = 8; protected LampForGrowth(Material material) { super(material); setTickRandomly(true); } public static void Registery() { LampForGrowth = new LampForGrowth(Material.glass).setBlockName("LampForGrowth") .setBlockTextureName("TestMod:LampForGrowth").setCreativeTab(CreativeTab.CreativeTabs).setHardness(3.0f) .setLightLevel(1.0f); GameRegistry.registerBlock(LampForGrowth, "LampForGrowth"); GameRegistry.addRecipe(new ItemStack(LampForGrowth, 1), new Object[] { "AXZ", "XYX", "ZXA", 'X', Luminite.Luminite, 'Y', Items.iron_ingot, 'A', DropOfBlood.DropOfBlood, 'Z', Items.bone }); GameRegistry.addRecipe(new ItemStack(LampForGrowth, 1), new Object[] { "AXZ", "XYX", "ZXA", 'X', Luminite.Luminite, 'Y', Items.iron_ingot, 'Z', DropOfBlood.DropOfBlood, 'A', Items.bone }); } @Override public TileEntity createTileEntity(World world, int metadata) { return new TileEntityLampOfGrowth(world); } @Override public boolean hasTileEntity(int metadata) { return true; } public void updateTick(World world, int x, int y, int z, Random rand) { System.out.println("tick"); Block block; Material Materiaux; if (a == 8) { System.out.println("On rentre dans la boucle"); for (a = x - 4; a != 8; a++) { for (int c = z - 4; c != 8; c++) { block = world.getBlock(a, y, c); Materiaux = block.getMaterial(); if (Materiaux == Material.plants) { // fonction pour faire poussez la plante if (block instanceof IGrowable) { IGrowable igrowable = (IGrowable)block; if (igrowable.func_149851_a(world, a, y, c, world.isRemote)) { if (!world.isRemote) { if (igrowable.func_149852_a(world, world.rand, a, y, c)) { igrowable.func_149853_b(world, world.rand, a, y, c); } } } } } } } } } } -
Pourtant ça devrait, tu as le setTickRandomly(true);
Ajoute
@Override au dessus de updateTick -
je viens d’essailler , vous été d’accord que je devrait avoir écrit tick dans la console a chaque vois que sa tick (désoler pour le jeu de mot). Mais la sa écrit jamais tick pour temps le bloc est poser juste devant moi
-
j’ai attendus plus longtemps , sa tick au bout de 5 min par contre sa fait crash minecraft (les mob bouge plus et impossible de rentrer dans un coffre)
-
Si tu as une tileEntity, utilise la fonction updateEntity de la tileEntity plutôt.
Pour le tick : tu dois avoir une boucle infinie quelque part.
-
c’est a dire pour le tileEntity ?
-
Ré-écris une fonction qui s’appelle updateEntity (plus trop sûr du nom, fait alt + shift + s puis “override/implement methods” pour trouver la bonne). Par contre, ton algorithme n’est pas bon du tout, je te conseille de créer un int qui va s’ajouter à ceux des coordonnées au lieu d’initilaiser ce int à la valeur des coordonnées, exemple :
(tu utilises une valeur dans ton block, ce qui n’est pas à faire)for (a = x - 4; a != 8; a++) { for (int c = z - 4; c != 8; c++) { block = world.getBlock(a, y, c); // patati patata } devient :
for (int i = -4; i <= 8; i++) { block = world.getBlock(x + i, y + j, z + k); // patati patata } çà évite de s’embrouiller.