ReCréer un enchantement Death Strider
-
Tu peux essayer avec le playerTickEvent
-
Alors j’ai fais au mieux mais je ne vais pas plus vite sous l’eau =/ :
package fr.serveur.mods; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraft.entity.player.EntityPlayer; public class Eventenchant { public void onplayeriswater(PlayerTickEvent event,EntityPlayer player, World world) { { if (player.isInWater()) { player.motionX *= 1.2D; if (player.motionY > 0.0D) { player.motionY *= 1.2D; } player.motionZ *= 1.2D; double maxSpeed = 0.2D; if (player.motionX > maxSpeed) { player.motionX = maxSpeed; } else if (player.motionX < -maxSpeed) { player.motionX = -maxSpeed; } if (player.motionY > maxSpeed) { player.motionY = maxSpeed; } if (player.motionZ > maxSpeed) { player.motionZ = maxSpeed; } else if (player.motionZ < -maxSpeed) { player.motionZ = -maxSpeed; } } } } public boolean hasEnchantment(ItemStack stack, int id) { boolean flag = false; if (stack.getEnchantmentTagList() != null) { for (int i = 0; i < stack.getEnchantmentTagList().tagCount(); i++) { if (stack.getEnchantmentTagList().getCompoundTagAt(i).getShort("140") == id) { flag = true; } else { flag = false; } } } return flag; } } -
ta fonction n’est pas enregistrée correctement, regarde le tutoriel sur les événements.
-
@SubscribeEvent Je l’ai rajouter mais toujours rien =/
-
Tu as enregistré la classe ?
-
MinecraftForge.EVENT_BUS.register(new Eventenchant());
Dans preinit -
PlayerTickEvent est un event de FML, donc faut utiliser la méthode de FML.
Aussi, un seul argument pour les fonctions d’event :
public void onplayeriswater(PlayerTickEvent event,EntityPlayer player, World world) {
->
public void onplayeriswater(PlayerTickEvent event) {
Utilises event.player et event.player.worldObj -
Juste comme ça pense à la convention Java et renomme ta méthode d’event.
-
Ok merci ça marche mais juste une question je ne peux pas changer de sens si je ne m’arrête pas une idée ?
-
Mh… tu peux toujours changer de manière brutale la vitesse du joueur comme ceci :
event.player.getEntityAttributes(SharedMonsterAttributes.movementSpeed).setBaseValue(5D); //5D = un exemple de double -
J’essaye de suite merci !
-
C’est moins efficace que mon ancien code le problème c’est que le FOV change mais pas le speed même si j’augmente 5D
-
Personne n’aurais une idée ?
-
Quel est le problème ?
Tu veux modifier la vitesse du joueur quand il est dans l’eau et qu’il a l’enchantement, c’est ça ? -
Yeap c’est tous a fais ça
-
Alors il me semble que passer par les Events soit la meilleur solution
-
xD pour info c’est se que je fais lis la page n°1
-
J’avais lu la première page mais bon …
Voilà un code, je ne sais pas si ça te conviendra :@SubscribeEvent public void onPlayerTick(PlayerTickEvent event) { EntityPlayer player = event.player; if(player.isInWater()) { //Si il est dans l'eau on augmente sa vitesse de marche player.capabilities.setPlayerWalkSpeed(0.15F); } else { //Si il est pas dans l'eau on lui remet sa vitesse de marche normale player.capabilities.setPlayerWalkSpeed(0.1F); } } -
Au pire minecraft 1.8 n’a pas une classe sur laquelle je peux me baser pour le code ?
-
C’est à dire ? Pour faire comme eux ?