Epee rightClick



  • Hello,
    Cette fois ci je reviens avec une idée qui m'avaient traversé l'esprit…
    Je voudrais faire Comme SethBling mais en mod..?
    Possible?Mais du genre sans prendre de degats...
    Pour ceux qui connaisent pas : https://www.youtube.com/watch?v=s6qx7f0G0Ik
    merci d'avance!


  • Administrateurs

    En général ce qui peut être fait en plugins peut être reproduit en mod.
    Avec l'event LivingHurt dans ce cas c'est faisable.



  • J'ai fais la class event, mais quand j'essaye de check que l'entity sois un player,eclipse me dit que c'est incompatible…



  • envoi ton code



  • package main;
    
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.util.DamageSource;
    import net.minecraftforge.event.entity.EntityJoinWorldEvent;
    import net.minecraftforge.event.entity.living.LivingHurtEvent;
    import cpw.mods.fml.common.eventhandler.SubscribeEvent;
    
    public class Event
    {
    @SubscribeEvent
    public void onEntityHurt(LivingHurtEvent entity, DamageSource source, float ammount)
    {
    if(entity instanceof EntityPlayer){
    
    }
    }
    }
    
    

    pour l'instant,j'ai rien fais dedans a part ça ^^
    Parce que apres je vois pas comment diminuer les degats..?
    Damage source = ammount??



  • Juste 1 seul argument quand il s'agit d'un event à enregistrer :

    
       @SubscribeEvent
       public void onEntityHurt(LivingHurtEvent event)
       {
           if(event.entity instanceof EntityPlayer)
            {
                //ton code
           }
       }
    
    

    Pour diminuer, tu as la valeur 
    event.amount, il te suffit ensuite de la changer



  • Ok merci, et du coup je laisse comme ça ou je le call dans la class de mon épee?



  • Bah le but d'un event est être indépendant de tout autre classe.Tu peux le mettre dans la classe de ton épée, oui, cela ne provoquera aucune erreur mais ce n'est pas très organisé après …
    Le but est de mettre ça à part dans une classe récapitulant plusieurs events, et qui est à enregistré avec le bon bus depuis la méthode init de ta classe principale. Là il s'agit du bus Minecraft Forge



  • Tu ne le call pas, si t'as enregistré l'event c'est bon



  • oui mais si je veux que sa sois quand je fais le right click que l'event intervient,du coup, c'est le code de l'event que je dois changer pour checker si l'item est l'epee et si je rightClick?



  • Tu veux vérifier si on rightclick l'item au moment qu'un joueur prend des dégâts ?



  • ouai pour justement diminuer les degats



  • Tu peux check si tonItem.onItemRightClick != null dans l'event LivingHurtEvent, au quel cas tu diminues event.amount


  • Administrateurs

    Non ça ne fonctionnera pas ça. Il doit avoir un truc qui permet de savoir si le joueur est en train de se protéger. Faut regarder dans la classe du joueur.



  • j'ai juste trouvé ceci player.setRevengeTarget(player); mais pas sur que sa soit cela…



  • On peut regarder si l'action est du type "blockage" et regarder si l'item est en utilisation



  • bah en sois je pourrais creer une variable bool qui se met true quand onrightclick ? et puis je le check directement dans l'event?



  • Ouais mais après tu vas être gêné par les tags. Je suis en train de chercher quelque chose de facile qui pourrait marcher…



  • Tu fais tout simplement ça :
    if (player.getItem() != null && player.isItemInUse() && player.getItem().getEnumerationAction() == EnumerationAction.block)
    (je suis pas du tout sûr des fonctions)



  • Voilà la version corrigée 😃
    if (player.getItemInUse() != null && player.getCurrentEquippedItem().getItem().getItemUseAction(player.getCurrentEquippedItem()) == EnumAction.block)


Log in to reply