Modifier la vitesse d'une echelle



  • Re Bonsoir , sais encore moi je voudrais modifier la vitesse d'une échelle mais je sais pas quoi changer pour arriver a sa

    voila la classe de l’échelle :

    merci


  • Administrateurs

    À mon avis il faudrait passer par l'event PlayerTick, si le joueur est sur un échelle tu accélère son motionY.



  • Bonjours merci pour ta réponse mais je voudrais crée une nouvelle échelle est celle la aura une vitesse plus rapide que celle de minecraft .

    je sais pas si on pourrais ajouter onEntityCollidedWithBlock .


  • Administrateurs

    Essayes, si ça ne fonctionne pas passe par l'event de tick du joueur.



  • J'ai essayer plusieurs truc comme :
    public void onEntityCollidedWithBlock(double par1, int par2, int par3, int par4, Entity par5)

    {
            if par5.onEntityUpdate();
            {
                par5.setVelocity(par1, par3, getMobilityFlag(5));
            }    
        }

    private double getMobilityFlag(double d) {
            // TODO Auto-generated method stub
            return 0;
        }
    }

    mais sais pas très concluant j'ai mis :if par5.onEntityUpdate();
    car si je le mets pas sa ferrait monté automatiquement



  • @'FairyOne':

    sa fessait monté

    -> accent portugais spotted !

    @'FairyOne':

    J'ai essayer plusieurs truc comme :
    public void onEntityCollidedWithBlock(double par1, int par2, int par3, int par4, Entity par5)

    {
    if par5.onEntityUpdate();
    {
    par5.setVelocity(par1, par3, getMobilityFlag(5));
    }
    }

    private double getMobilityFlag(double d) {
    // TODO Auto-generated method stub
    return 0;
    }
    }

    mais sais pas très concluant j'ai mis :if par5.onEntityUpdate();
    car si je le mets pas sa fessait monté automatiquement

    C'est sûr que ton entitée risque pas de montée vu que la fonction onEntityUpdate est de type void… Il faut utiliser les touches de minecraft pour ça.



  • ok xD

    sais quoi l'event pour la touche?



  • @'FairyOne':

    ok xD

    sais quoi l'event pour la touche?

    Tutoriel sur les touches



  • J'arrive pas avec a utiliser la touche .



  • @'FairyOne':

    J'arrive pas avec a utiliser la touche .

    Envoi ton code



  • voila :


  • Administrateurs

        public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
        {
             entity.motionY *= 1.1F;
        }
    

    Comme ça ?



  • @'robin4002':

        public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
        {
             entity.motionY *= 1.1F;
        }
    

    Comme ça ?

    Essaie avec çà :

    
    public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
        {
             if (Minecraft.getMinecraft().gameSettings.keyBindForward.isPressed()) entity.motionY *= 1.1F;
        }
    
    


  • @'SCAREX':

    @'robin4002':

        public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
        {
             entity.motionY *= 1.1F;
        }
    

    Comme ça ?

    Essaie avec çà :

    
    public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
        {
             if (Minecraft.getMinecraft().gameSettings.keyBindForward.isPressed()) entity.motionY *= 1.1F;
        }
    
    

    Et si le joueur recule sur l échelle ?

    Envoyé de mon GT-S7390G



  • @'Diangle':

    @'SCAREX':

    @'robin4002':

        public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
        {
             entity.motionY *= 1.1F;
        }
    

    Comme ça ?

    Essaie avec çà :

    
    public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
        {
             if (Minecraft.getMinecraft().gameSettings.keyBindForward.isPressed()) entity.motionY *= 1.1F;
        }
    

    Et si le joueur recule sur l échelle ?

    Envoyé de mon GT-S7390G

    Dans le code de minecraft, pour descendre faut appuyer sur aucune touche. Après si tu veux totalement changer le gameplay, je te laisse jeter un coup d'oeil à toutes les touches dans Minecraft.getMinecraft().gameSettings.keyBindCeQueTuVeux et si tu veux un keyBind custom, il y a un tutoriel pour ça sur le forum.



  • @'SCAREX':

    @'Diangle':

    @'SCAREX':

    @'robin4002':

        public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
        {
             entity.motionY *= 1.1F;
        }
    

    Comme ça ?

    Essaie avec çà :

    
    public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
        {
             if (Minecraft.getMinecraft().gameSettings.keyBindForward.isPressed()) entity.motionY *= 1.1F;
        }
    

    Et si le joueur recule sur l échelle ?

    Envoyé de mon GT-S7390G

    Dans le code de minecraft, pour descendre faut appuyer sur aucune touche. Après si tu veux totalement changer le gameplay, je te laisse jeter un coup d'oeil à toutes les touches dans Minecraft.getMinecraft().gameSettings.keyBindCeQueTuVeux et si tu veux un keyBind custom, il y a un tutoriel pour ça sur le forum.

    Non pas pour descendre xD Mais quand tu te met dos a une échelle et que tu appuis sur la touche de recule ^^



  • @'Diangle':

    @'SCAREX':

    @'Diangle':

    @'SCAREX':

    @'robin4002':

        public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
        {
             entity.motionY *= 1.1F;
        }
    

    Comme ça ?

    Essaie avec çà :

    
    public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
        {
             if (Minecraft.getMinecraft().gameSettings.keyBindForward.isPressed()) entity.motionY *= 1.1F;
        }
    

    Et si le joueur recule sur l échelle ?

    Envoyé de mon GT-S7390G

    Dans le code de minecraft, pour descendre faut appuyer sur aucune touche. Après si tu veux totalement changer le gameplay, je te laisse jeter un coup d'oeil à toutes les touches dans Minecraft.getMinecraft().gameSettings.keyBindCeQueTuVeux et si tu veux un keyBind custom, il y a un tutoriel pour ça sur le forum.

    Non pas pour descendre xD Mais quand tu te met dos a une échelle et que tu appuis sur la touche de recule ^^

    J'arrive pas à trouver où le code est exécuté, il faut que tu cherches en profondeur de ton côté.



  • @'SCAREX':

    @'Diangle':

    @'SCAREX':

    @'Diangle':

    @'SCAREX':

    Essaie avec çà :

    
    public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
        {
             if (Minecraft.getMinecraft().gameSettings.keyBindForward.isPressed()) entity.motionY *= 1.1F;
        }
    

    Et si le joueur recule sur l échelle ?

    Envoyé de mon GT-S7390G

    Dans le code de minecraft, pour descendre faut appuyer sur aucune touche. Après si tu veux totalement changer le gameplay, je te laisse jeter un coup d'oeil à toutes les touches dans Minecraft.getMinecraft().gameSettings.keyBindCeQueTuVeux et si tu veux un keyBind custom, il y a un tutoriel pour ça sur le forum.

    Non pas pour descendre xD Mais quand tu te met dos a une échelle et que tu appuis sur la touche de recule ^^

    J'arrive pas à trouver où le code est exécuté, il faut que tu cherches en profondeur de ton côté.

    Eh bien pour cela tu check soit la direction (Nord - Sud - Est ou Ouest) que le joueur regarde ou alors tu regardes si rotationYaw ou rotationPitch je ne sais plus est compris entre telle et telle valeur afin de faire en sorte qu il y ait une condition qui check si le joueur est de dos et puis en second tu check si la touche pour reculer est presse et si les deux conditions sont validées et bien tu changeras motionY comme l avait deja dit Scarex.



  • regarde les source du mod ender io il ajoute les dark steel ladder qui vont plus vite que celle de base =P



  • Voilà :

    
    package fr.scarex.st18.ST18Blocks;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockLadder;
    import net.minecraft.block.material.Material;
    import net.minecraft.block.properties.PropertyDirection;
    import net.minecraft.block.state.IBlockState;
    import net.minecraft.entity.Entity;
    import net.minecraft.util.BlockPos;
    import net.minecraft.util.EnumFacing;
    import net.minecraft.world.World;
    import net.minecraftforge.fml.common.registry.GameRegistry;
    import fr.scarex.st18.ST18;
    
    public class AdvancedLadder extends BlockLadder
    {
    private static final String name = "advanced_ladder";
    public static final PropertyDirection FACING = PropertyDirection.create("facing", EnumFacing.Plane.HORIZONTAL);
    
    protected AdvancedLadder() {
    GameRegistry.registerBlock(this, name);
    setUnlocalizedName(ST18.MODID + "_" + name);
    }
    
    @Override
    public void onEntityCollidedWithBlock(World world, BlockPos pos, IBlockState state, Entity entity)
    {
    if (entity.onGround || entity.isCollidedVertically) { return; }
    if (entity.motionY >= 0.1) {
    entity.setPosition(entity.posX, entity.posY + 1.0F, entity.posZ);
    } else if (entity.motionY <= -0.1) {
    Block blockUnder = world.getBlockState(new BlockPos(entity.posX, entity.posY - 3, entity.posZ)).getBlock();
    if (blockUnder == null || blockUnder == this) {
    entity.setPosition(entity.posX, entity.posY - 1.0F, entity.posZ);
    }
    }
    }
    }
    
    

    NOTES :
    -ce code marche pour la 1.8, il faut modifier quelques trucs pour que ça fonctionne en 1.7.
    -le 1.0F correspond à la vitesse voulue (ici 1.0F est très grand)