Résolu UpdateTick
-
bonjour j’ai un probléme : j’ai mis la méthode UpdateTick dans la class d’un block mais rien ne se passe
voici mon codepackage com.mathiasetampes.algorythme.common; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.World; public class Algo extends Block { public static boolean Intermediaire = false; protected Algo(Material material) { super(material); this.setCreativeTab(CreativeTabs.tabBlock); } @Override public TileEntity createTileEntity(World world, int metadata) { return new TileEntityAire(); } @Override public boolean hasTileEntity(int metadata) { return true; } public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(!world.isRemote) { Intermediaire = Algorythme(world ,x ,y+1 ,z ); TileEntity tile = world.getTileEntity(x, y, z); if(tile instanceof TileEntityAire) { TileEntityAire.update(); TileEntityAire tileTuto = (TileEntityAire)tile; player.addChatMessage(new ChatComponentTranslation("tile.tutoriel2.number", tileTuto.getNumber())); return true; } } return false; } public boolean Algorythme(World world ,int x , int y , int z) { if((world.getBlock(x, y, z) == Blocks.air )) { for(int i = y; i < 255 ; i++) { if(world.getBlock(x, i, z) != Blocks.air) { break; } else if(i == 254) { return false; } } world.setBlock(x, y, z,algorythme.air2); if(Algorythme(world , x+1 , y , z)==false) return false; if(Algorythme(world , x-1 , y , z)==false) return false; if(Algorythme(world , x , y+1 , z)==false) return false; if(Algorythme(world , x , y-1 , z)==false) return false; if(Algorythme(world , x , y , z+1)==false) return false; if(Algorythme(world , x , y , z-1)==false){ return false; } return true; } return false; } public void updateTick(World world, int x, int y, int z, Random random) { System.out.println("lel"); }
-
Il me semble qu’il faut ajouter setTickRandomly(true) dans le constructeur du bloc.
-
@‘Asmath’:
bonjour j’ai un probléme : j’ai mis la méthode UpdateTick dans la class d’un block mais rien ne se passe
voici mon codepackage com.mathiasetampes.algorythme.common; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.World; public class Algo extends Block { public static boolean Intermediaire = false; protected Algo(Material material) { super(material); this.setCreativeTab(CreativeTabs.tabBlock); } @Override public TileEntity createTileEntity(World world, int metadata) { return new TileEntityAire(); } @Override public boolean hasTileEntity(int metadata) { return true; } public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(!world.isRemote) { Intermediaire = Algorythme(world ,x ,y+1 ,z ); TileEntity tile = world.getTileEntity(x, y, z); if(tile instanceof TileEntityAire) { TileEntityAire.update(); TileEntityAire tileTuto = (TileEntityAire)tile; player.addChatMessage(new ChatComponentTranslation("tile.tutoriel2.number", tileTuto.getNumber())); return true; } } return false; } public boolean Algorythme(World world ,int x , int y , int z) { if((world.getBlock(x, y, z) == Blocks.air )) { for(int i = y; i < 255 ; i++) { if(world.getBlock(x, i, z) != Blocks.air) { break; } else if(i == 254) { return false; } } world.setBlock(x, y, z,algorythme.air2); if(Algorythme(world , x+1 , y , z)==false) return false; if(Algorythme(world , x-1 , y , z)==false) return false; if(Algorythme(world , x , y+1 , z)==false) return false; if(Algorythme(world , x , y-1 , z)==false) return false; if(Algorythme(world , x , y , z+1)==false) return false; if(Algorythme(world , x , y , z-1)==false){ return false; } return true; } return false; } public void updateTick(World world, int x, int y, int z, Random random) { System.out.println("lel"); }
Ajoutes dans cette méthode super.updateTick(world, x, y, z, random);
et dis moi tout En tout cas je fais comme ça pour mes entity avec onUpdate et onLivingUpdate et pour mes items avec onUpdate aussi -
@‘Julot10085’:
@‘Asmath’:
bonjour j’ai un probléme : j’ai mis la méthode UpdateTick dans la class d’un block mais rien ne se passe
voici mon codepackage com.mathiasetampes.algorythme.common; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.World; public class Algo extends Block { public static boolean Intermediaire = false; protected Algo(Material material) { super(material); this.setCreativeTab(CreativeTabs.tabBlock); } @Override public TileEntity createTileEntity(World world, int metadata) { return new TileEntityAire(); } @Override public boolean hasTileEntity(int metadata) { return true; } public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(!world.isRemote) { Intermediaire = Algorythme(world ,x ,y+1 ,z ); TileEntity tile = world.getTileEntity(x, y, z); if(tile instanceof TileEntityAire) { TileEntityAire.update(); TileEntityAire tileTuto = (TileEntityAire)tile; player.addChatMessage(new ChatComponentTranslation("tile.tutoriel2.number", tileTuto.getNumber())); return true; } } return false; } public boolean Algorythme(World world ,int x , int y , int z) { if((world.getBlock(x, y, z) == Blocks.air )) { for(int i = y; i < 255 ; i++) { if(world.getBlock(x, i, z) != Blocks.air) { break; } else if(i == 254) { return false; } } world.setBlock(x, y, z,algorythme.air2); if(Algorythme(world , x+1 , y , z)==false) return false; if(Algorythme(world , x-1 , y , z)==false) return false; if(Algorythme(world , x , y+1 , z)==false) return false; if(Algorythme(world , x , y-1 , z)==false) return false; if(Algorythme(world , x , y , z+1)==false) return false; if(Algorythme(world , x , y , z-1)==false){ return false; } return true; } return false; } public void updateTick(World world, int x, int y, int z, Random random) { System.out.println("lel"); }
Ajoutes dans cette méthode super.updateTick(world, x, y, z, random);
et dis moi tout En tout cas je fais comme ça pour mes entity avec onUpdate et onLivingUpdate et pour mes items avec onUpdate aussiLe problème étant que ce n’est pas une entitée.
-
@‘SCAREX’:
@‘Julot10085’:
@‘Asmath’:
bonjour j’ai un probléme : j’ai mis la méthode UpdateTick dans la class d’un block mais rien ne se passe
voici mon codepackage com.mathiasetampes.algorythme.common; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.World; public class Algo extends Block { public static boolean Intermediaire = false; protected Algo(Material material) { super(material); this.setCreativeTab(CreativeTabs.tabBlock); } @Override public TileEntity createTileEntity(World world, int metadata) { return new TileEntityAire(); } @Override public boolean hasTileEntity(int metadata) { return true; } public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(!world.isRemote) { Intermediaire = Algorythme(world ,x ,y+1 ,z ); TileEntity tile = world.getTileEntity(x, y, z); if(tile instanceof TileEntityAire) { TileEntityAire.update(); TileEntityAire tileTuto = (TileEntityAire)tile; player.addChatMessage(new ChatComponentTranslation("tile.tutoriel2.number", tileTuto.getNumber())); return true; } } return false; } public boolean Algorythme(World world ,int x , int y , int z) { if((world.getBlock(x, y, z) == Blocks.air )) { for(int i = y; i < 255 ; i++) { if(world.getBlock(x, i, z) != Blocks.air) { break; } else if(i == 254) { return false; } } world.setBlock(x, y, z,algorythme.air2); if(Algorythme(world , x+1 , y , z)==false) return false; if(Algorythme(world , x-1 , y , z)==false) return false; if(Algorythme(world , x , y+1 , z)==false) return false; if(Algorythme(world , x , y-1 , z)==false) return false; if(Algorythme(world , x , y , z+1)==false) return false; if(Algorythme(world , x , y , z-1)==false){ return false; } return true; } return false; } public void updateTick(World world, int x, int y, int z, Random random) { System.out.println("lel"); }
Ajoutes dans cette méthode super.updateTick(world, x, y, z, random);
et dis moi tout En tout cas je fais comme ça pour mes entity avec onUpdate et onLivingUpdate et pour mes items avec onUpdate aussiLe problème étant que ce n’est pas une entitée.
Oui mais c’est une méthode qui s’update comme ce que je viens de citer dans mon message précédent :
@‘Julot10085’:mes entity avec** onUpdate **et **onLivingUpdate **et pour mes items avec onUpdate aussi
EDIT : Autant pour moi je pensais que ça marcherait.
-
çà ne marche pas
-
@‘Asmath’:
çà ne marche pas
Que veux-tu faire avec ? Je ne comprends pas vraiment. Si tu veux, il y a la fonction onNeighborChange qui est appelé dès qu’un bloc adjacent le met à jour.
-
je suis stupide vraiment je viens de m’appercevoir que cette commande devais ce trouvés dans le tileEntity et donc çà marche
-
en fait je cherche à faire une méthode qui test des condition comme par exemple si le bloc à tel coordonnées est de l’air et cela en permanence pour pouvoir faire les actions en conséquence quasi instantanément donc il faudrait faire une méthode qui s’active à chaque tick ou au moins 2 fois par seconde
-
Je remet dans non résolu alors ?
La fonction onUpdate des tile entity est mit à jour à chaque tick (donc 20 fois / secondes) -
non laisse dans dans résolu c’est bon je n’avais pas vue ton message et maintenant çà marche merci