Lanceur qui ne casse pas l'obsi dans l'eau
-
Salut,
Je revient vers vous car j’ai un petit probleme j’ai créer un lanceur que quand on fait clique droit sa lance une balle qui peut casser l’obsi jusqu’a la tous va bien mais mon probleme c’est qu’on peut casser l’obsi meme quand elle est dans de l’eau se qui devrai pas.
package fr.darkvince.ultra; import net.minecraft.block.Block; import net.minecraft.block.BlockRedstoneDiode; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.init.Blocks; import net.minecraft.util.DamageSource; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class EntityBalleTntObsi extends EntityThrowable { public static float explosionPower; public static final int empRadius = 4; public EntityBalleTntObsi(World world) { super(world); } public EntityBalleTntObsi(World world, EntityLivingBase entity) { super(world, entity); } private void explode() { int bx = (int)posX; int by = (int)posY; int bz = (int)posZ; worldObj.createExplosion(this, posX, posY, posZ, 0.75F, true); for (int x = bx - empRadius; x <= empRadius; x++) { for (int y = by - empRadius; y <= by + empRadius; y++) { for (int z = bz - empRadius; z <= bz + empRadius; z++) { Block block = worldObj.getBlock(x, y, z); if (block.getMaterial() != Material.air) if(block == Blocks.water) if(block != Blocks.obsidian){ explosionPower = 0.75F; System.out.println("Dans l'eau"); } else explosionPower = 0.75F*1000.0F; System.out.println("Casse l'obsi"); } } } setDead(); } @Override public void onUpdate() { super.onUpdate(); if (ticksExisted > 20) { explode(); } for (int i = 0; i < 10; i++) { double x = (double)(rand.nextInt(10) - 5) / 8.0D; double y = (double)(rand.nextInt(10) - 5) / 8.0D; double z = (double)(rand.nextInt(10) - 5) / 8.0D; worldObj.spawnParticle("fireworksSpark", posX, posY, posZ, x, y, z); } } @Override protected float getGravityVelocity() { return 0.005F; } @Override public void onImpact(MovingObjectPosition movingObjectPosition) { explode(); } }
-
Hum je vais essayer sa
Envoyé de mon SM-G928F en utilisant Tapatalk
Edit:
J’ai fait sa mais l’obsi casse plus maintenant
if (block.getMaterial() != Material.air) if(block == Blocks.water) if(block != Blocks.obsidian){ explosionPower = 0.75F; System.out.println("Dans l'eau"); } else explosionPower = 0.75F*1000.0F; System.out.println("Casse l'obsi"); } }
Les conditions ne sont pas appelé
-
Tu l’utilises où la variable explosionPower ?
-
@‘robin4002’:
Tu l’utilises où la variable explosionPower ?
Un peut plus haut je vais actualisé mon code actuelle en haut.
public static float explosionPower;
-
ça c’est juste la déclaration de la variable.
Je veux savoir où elle est utilisé. -
@‘robin4002’:
ça c’est juste la déclaration de la variable.
Je veux savoir où elle est utilisé.Elle est utilisé ici
1. **if**(block != Blocks.obsidian){ 2. explosionPower = 0.75F; 3. System.**out**.println("Dans l'eau"); 4. } 5. **else** 6. 7. explosionPower = 0.75F%(#666600) 8. 1000.0F;
-
Je ne vois pas pourquoi elle est static alors.
Et je ne vois pas non plus en quoi elle modifie la force d’explosion. -
@‘robin4002’:
Je ne vois pas pourquoi elle est static alors.
Et je ne vois pas non plus en quoi elle modifie la force d’explosion.Je veut pas modifier la force de l’explosion je veut juste quelle casse l’obsi mais le probleme c’est quelle casse l’obsi mais meme dans l’eau
J’ai juste mis en float du coup -
@‘darkvince37’:
if (block.getMaterial() != Material.air) if(block == Blocks.water) if(block != Blocks.obsidian){ explosionPower = 0.75F; System.out.println("Dans l'eau"); } else explosionPower = 0.75F*1000.0F; System.out.println("Casse l'obsi"); } }
Les conditions ne sont pas appelé
Traduction de ton code :
Si c’est un bloc d’eau et que ce n’est pas un bloc d’obsidienne : “dans l’eau”
Sinon, si c’est un bloc d’eau et que ce bloc d’eau est un bloc d’obsidienne : “casse l’obsi”Personnellement je ne connais aucun bloc d’eau qui soit de l’obsidienne
-
J’avais essayé sans le water mais mon problème c’est que sa casse mais même dans l’eau
Envoyé de mon SM-G928F en utilisant Tapatalk
-
Il faudrait que tu vérifies si un des 6 blocs autour de l’obsidienne est un bloc d’eau (au dessus, en dessous, au nord, au sud, à l’est et à l’ouest).
Et encore, je pense qu’il faudrait ne pas prendre le bloc d’en dessous au risque de faire des faux positifs.