Redstone + Entity / DamageSource explosion
-
Effectivement, j’avais pas vue que ma phase était incomplète…
genre une zone de 1 case au dessus/dessous/cotés.
-
boolean redstone = worldObj.getStrongestIndirectPower(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ) || worldObj.getStrongestIndirectPower(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY) - 1, MathHelper.floor_double(this.posZ) || worldObj.getStrongestIndirectPower(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY) + 1, MathHelper.floor_double(this.posZ); …
À faire sur tous les côtés, là j’ai juste fait haut bas. -
Hum, bien se qu’il me semblait… un code pour chaque zone.
Mais imaginons pour faire une zone sphérique “Minecraftienne” la aussi faut coder de la meme façon ? Car ça peut etre un sacré truc pour une zone de 5 cases xD, m’enfin, je pense qu’avec des boucles for le truc peut être alléger en faite…
Plus qu’a trouver cette histoire de damage source explosion, car j’aimerai faire en sorte que si l’entité recoit des dommages d’explosion, elle explose a sont tour ^^ (non, je ne suis pas sadique.)
-
Il y a fonction onHurt dans l’entité il me semble, avec le DamageSource en argument. Donc tu as juste a faire un if(damageSource.isExplosion())
Pour la zone je verrai bien aussi une petite fonction avec des boucles for.
-
@‘robin4002’:
Il y a fonction onHurt dans l’entité il me semble, avec le DamageSource en argument. Donc tu as juste a faire un if(damageSource.isExplosion())
Pour la zone je verrai bien aussi une petite fonction avec des boucles for.
C est tout simplement la méthode attackEntityFrom (DamageSource par1, float par2)
-
Mais cette méthode sert à infliger des dégâts, pas à effectuer une action si une entité reçoit se type de dégâts.
-
Non c’est bien ça :
protected void damageEntity(DamageSource source, float amount) { super.damageEntity(source, amount); // effectue ce qui se trouve dans la classe EntityLivingBase if(source.isExplosion) { // ton code } }Sinon tu peux aussi passer par l’event LivingHurtEvent
-
@‘robin4002’:
Non c’est bien ça :
protected void damageEntity(DamageSource source, float amount) { super.damageEntity(source, amount); // effectue ce qui se trouve dans la classe EntityLivingBase if(source.isExplosion) { // ton code } }Sinon tu peux aussi passer par l’event LivingHurtEvent
Il y a aussi ce code là qui marche très bien (je viens de le tester)
public boolean attackEntityFrom(DamageSource damagesource, int i) { if(damagesource.getDamageType() == "explosion") { System.out.println("l'entity s'est bien faite attaquée par une explosion"); //Tu peux placer n'importe quelle ligne de code à cette endroit là cela fera le même effet que d'utiliser l'event ou la méthode cités par robin. } super.attackEntityFrom(DamageSource.causeMobDamage(this), i); return true; } -
Salut ! Merci a vous ! C’est niquel !
Julot, ton code ne marchait pas chez moi, mais celui de Robin ouai ^^’
Quoi qu’il en soit, merci a vous !
-
@‘UnknowOrigin’:
Salut ! Merci a vous ! C’est niquel !
Julot, ton code ne marchait pas chez moi, mais celui de Robin ouai ^^’
Quoi qu’il en soit, merci a vous !
En fait autant pour moi j’ai testé mon code sous la 1.2.5 car je n’avais que cette workspace sous la main et du ocup je pensais que le code serait le même sous la 1.7.10
La méthode a sûrement changé de nom ou alors c’est le String qui n’est plus valide. Je regarderai pour le corriger