1.8 Augmeter ses stats de déplacment dans l'eau + Touche personalisée



  • Désolé pour le titre pas très… Voila
    Je m'attaque au 2e item qui m'a donné envie de créer mon mod : Le Scaphandre
    Mon Scaphandre n'est comme les autres ( Respiration sous l'eau.. Wow )
    Seul le stuf complet donne la respiration sous l'eau, et seul le casque ne sert 'a rien'

    • Les Bottes lestés : permet de descendre très rapidement au fond de l'eau / Permet de marcher normalement au fond de l'eau (Comme l'enchant Agilité Aquatique
    • Les jambières airbag : Permet de remonter extrêmement rapidement lorsqu'on appuie sur la barre d'espace ( Si possible plus de 1sec( Je ne veut pas que les airbags s'ouvrent alors que tu veut sauter 1 bloc))
    • Le plastron à hélice : Permet de se déplacer plus vite sous  l'eau

    Et tout cela, uniquement sous l'eau.
    Je me demande si c'est possible, mais si on maîtrise Java ( Ce qui n'est pas mon cas ) , on peut tous faire


  • Moddeurs confirmés Rédacteurs Administrateurs

    Possible oui, mais long et complexe à mettre en place.
    Pour les bottes, faudra multiplier le motionY s'il est négatif. Pour marcher normalement c'est le motionX et motionZ qui faut multiplier par une valeur plus grande que 1, ça va accélérer le joueur (comme la glace)
    Pour les jambières il faut faire un compteur avec la touche, et si elle est actif pendant plus de 20 tick (= plus de 1 secondes), tu augment le motion y du joueur temps qu'il est dans l'eau.
    Pour le plastron, même principe que pour les bottes, faut augmenter le motionX et le motionY



  • Mais si j'augmente le motionX/Y/Z, sa va l'augmenter partout je pense, j'aimerais uniquement sur l'eau


    Ne fonctionne pas.
    j'ai du faire une erreur

    ​public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack, Entity entityIn) {
    
    entityIn.motionX = 1.0F;
    entityIn.motionY = 1.0F;
    
    }
    

    J'ai oublié le @Override c'est bon



  • Tick event



  • Euuh petit problèe…
    Quand je met les bottes, je m'envole. Pourtant, il n'y a pas de motionY

    ​@Override
    public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
    
    player.motionX = 1.0F;
    player.motionZ = 1.0F;
    }
    
    

  • Moddeurs confirmés Rédacteurs Administrateurs

    Il faut pas set sur une valeur mais multiplier.
    Il y a une boolean player.inWater il me semble pour savoir si le joueur est dans l'eau ou non.



  • player.isInWater , je pense que c'est cela
    Mais même avec le multiplier, je ne comprend pas, je m'envole dès que je met les bottes



  • le motionX et Z doivent influencer le Y.



  • Je comprend pas pourquoi…
    Et c'est assez gênant quoi...
    J'ai même tenter de rajouter un MotionY et de le mettre a 0, rien n'y fait


    J'ai également tenter de mettre une valeur négative ( Car les bottes font tomber plus vite également ), et la... Etrange comportement
    Au sol on ne voit aucune difference
    Mais si on met les bottes dans les air, on est plaqué au sol pour moins d'une demi seconde, et on remonte



  • le motion a toujours été étrange, regarde quand est-ce que la méthode est appelée.



  • A ma surprise, jamais.
    J'ai mis un println et je ne le voit pas



  • Es-tu sûr d'avoir bien mis le @Override et d'avoir les bons paramètres ?



  • ​@Override
    public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
    if(player.isInWater()) {
    player.motionX *= 1.0F;
    player.motionZ *= 1.0F;
    player.motionY = -5.0F;
    System.out.println("Ahuut");
    }
    }
    


  • Si la fonction n'est même pas appelée lorsque tu es totalement sous l'eau, il te faut utiliser un tick event.



  • ​public void TickEvent(World world, EntityPlayer player, ItemStack itemStack) {
    if(player.isInWater()) {
    player.motionX *= 1.0F;
    player.motionZ *= 1.0F;
    player.motionY = -5.0F;
    System.out.println("Ahuut");
    }
    }
    

    Je n'ia pas mis l'Override car je ne connais pas les paramètres de base, et le ctrl+O , je ne voit pas le TickEvent
    Je vais me coucher là, donc je ne vais plus ppoivoir répondre



  • Si tu ne connais pas les paramètres, il faut faire Alt + shift + S puis override/implement methods et trouver la bonne fonction. L'aanotation @Override permet de verifier que tu utilises la bonne fonction.



  • Oui, c'est ce que je voulait dire par CTRL+o , j'avais la flemme d'écrire le mot et je me souvenait plus du raccourci. Donc je 'e voyais pas TickEvent

    Envoyé de mon SM-G357FZ en utilisant Tapatalk



  • Alt + shift + s puis override/implement methods permet de ré-écrire les méthodes. Alors que Ctrl + shift + O organise les importations. le tickEvent doit être enregistré avec le FMLCommonHandler, il ne fait pas partit des Items.



  • Je n'ai plus le PC sous les yeux, mais de mémoire, je n'avais comme choix uniquement ItemArmor, Item, Object

    Envoyé de mon SM-G357FZ en utilisant Tapatalk



  • çà ce sont les classes dont ta classe est étendu, ensuite il faut choisir la méthode. Tu connais un peu le java au moins ?


Log in to reply