Bloc qui Infecte
-
Bonjour ou bonsoir
Je veux créer un bloc qui peut infecté un autre bloc précis, par exemple un bloc de stone.
J’ai cherché dans la classe de la vigne mais étant encore pas très fort en code java j’ai pas trouvé :sVraiment **merci à ceux qui m’aideront ! **
-
C’est à dire ? Tu veux faire un block qui se répand ?
-
@‘SCAREX’:
C’est à dire ? Tu veux faire un block qui se répand ?
oui, qui remplace d’autre bloc spécifique
-
Tout ce fait dans la fonction updateTick, mais si tu veux comprendre le code il te faut apprendre le java d’abord
-
@‘SCAREX’:
Tout ce fait dans la fonction updateTick, mais si tu veux comprendre le code il te faut apprendre le java d’abord
Je maîtrise les bases, tu peux m’expliqué je veux apprendre !
-
Y’a pas grand chose à apprendre, il faut regarder le code de minecraft ou crée son propre code
-
Tu ajoutes la fonction updateTick dans ton bloc (il faut aussi mettre dans le constructeur this.setTickRandomly(true); ) et dans cette fonction tu check si les blocs autours sont de la stone (world.getBlock(x + 1, y, z) == Blocks.stone, (à faire aussi pour y + 1, z + 1, x - 1, y - 1 et z -1) et si c’est le cas tu fais un world.setBlock(x + 1, y, z, ClassePrincipale.tonBlock)
-
@‘robin4002’:
Tu ajoutes la fonction updateTick dans ton bloc (il faut aussi mettre dans le constructeur this.setTickRandomly(true); ) et dans cette fonction tu check si les blocs autours sont de la stone (world.getBlock(x + 1, y, z) == Blocks.stone, (à faire aussi pour y + 1, z + 1, x - 1, y - 1 et z -1) et si c’est le cas tu fais un world.setBlock(x + 1, y, z, ClassePrincipale.tonBlock)
Comment on fait la fonction updateTick ?
this.setTickRandomly(true); (world.getBlock(x+1, y,z)) == Blocks.stone (world.getBlock(x, y+1,z)) == Blocks.stone (world.getBlock(x, y,z+1)) == Blocks.stone (world.getBlock(x-1, y,z)) == Blocks.stone (world.getBlock(x, y-1,z)) == Blocks.stone (world.getBlock(x, y,z-1)) == Blocks.stone; World.setBlock(x+1, y, z, RadioActivity.irradiatedstone);
-
Ctrl+space dans la classe de ton bloc, puis tu prends updateTick.
-
@‘AymericRed’:
Ctrl+space dans la classe de ton bloc, puis tu prends updateTick.
Cela ne fonctionne pas
this.setTickRandomly(true); updateTick(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, p_149674_5_); (world.getBlock(x+1, y,z)) == Blocks.stone (world.getBlock(x, y+1,z)) == Blocks.stone (world.getBlock(x, y,z+1)) == Blocks.stone (world.getBlock(x-1, y,z)) == Blocks.stone (world.getBlock(x, y-1,z)) == Blocks.stone (world.getBlock(x, y,z-1)) == Blocks.stone; World.setBlock(x+1, y, z, RadioActivity.irradiatedstone);
-
ça devrais plutôt ressembler à ça :
@Override public void updateTick(World world, int x, int y, int z, Random rand) { if(world.getBlock(x + 1, y, z) == Blocks.stone) { world.setBlock(x + 1, y, z, RadioActivity.irradiatedstone); } if(world.getBlock(x - 1, y, z) == Blocks.stone) { world.setBlock(x - 1, y, z, RadioActivity.irradiatedstone); } //etc … }
Par contre comme ceci il va infecter les 6 côtés en même temps.
Si tu veux éviter ça, il suffit d’utiliser un petit random + un switch :@Override public void updateTick(World world, int x, int y, int z, Random rand) { switch(rand.nextInt(6)) { case 0: if(world.getBlock(x + 1, y, z) == Blocks.stone) { world.setBlock(x + 1, y, z, RadioActivity.irradiatedstone); } break; case 1: if(world.getBlock(x - 1, y, z) == Blocks.stone) { world.setBlock(x - 1, y, z, RadioActivity.irradiatedstone); } break; case 2: //etc ..rand jusqu'à case 5 } }
-
Je comprends pas cela fonctionne pas en jeu
-
Envoies le code complet de ton bloc.