Les sources de dégâts



  • #Sommaire(Sommaire)
    Coming soon

    Introduction

    Les sources de dégâts sont les principaux indicateurs pour dire "De quoi est mort ce joueur ?"
    Ils sont particulièrement pratiques pour avoir vos propres morts (comme "machin was stuck in a piston" ou "truc was destroyed by a Jetpack Explosion")

    #Dans la class principale :(Dans la class principale 🙂
    On ajoute juste avant les public static Block :

    public static DamageSource tutoSource;
    

    (La position n'a pas vraiment d'importance, chacun s'organise comme il veut)

    On ajoute après les items :

    tutoSource = new TutoDamageSource("sacrifice");
    

    tutoSource => Le nom de votre source
    TutoDamageSource => Class du damage source, vous allez avoir une erreur dessus, c'est normal
    "sacrifice" => Le nom de votre source

    #La class de la source de dégâts(La class de la source de dégâts)
    Vous avez normalement une erreur sur TutoDamageSource, passez le curseur dessus et choisissez de créer une nouvelle class.
    Faites un extends DamageSource, importez DamageSource puis ajoutez le constructeur !

    Nous avons donc :

    import net.minecraft.util.DamageSource;
    
    public class TutoDamageSource extends DamageSource {
    
    protected SacrificeDamageSource(String par1Str) {
    super(par1Str);
    }
    
    }
    

    Il est possible de peronnaliser votre source en ajoutant les codes suivant :

    this.setDamageBypassesArmor(); //A mettre si les armures n'ont pas d'influence sur les dégâts
    this.setDamageAllowedInCreativeMode(); //A mettre si votre source de dégâts peut être appliquée en créatif
    this.setDifficultyScaled(); //A mettre si les dégâts dépendent de la diffficulté
    this.setFireDamage(); //Aucun effet
    this.setMagicDamage(); //Idem
    

    #Utilisation de la source(Utilisation de la source)

    C'est tout simple!
    Après un event comme onItemRightclicked, ajoutez :

    par1EntityPlayer.attackEntityFrom(ClassPrincipale.tutoSource, 1.0F);
    

    Le 1.0F correspond au nombre de cœurs enlevés

    #Le fichier lang(Le fichier lang)
    C'est bientôt fini!
    Il ne reste plus qu'à ajouter cette ligne dans le fichier lang :

    Coming soon


  • Moddeurs confirmés

    
    this.setFireDamage(); //Aucun effet
    this.setMagicDamage(); //Idem
    
    

    S'ils sont là, ils servent à quelque chose, si tu fais un peu de recherche tu tombe sur ça:
    Pour le .setFireDamage():
    -réduction des dégâts si l'entityLiving est équippé d'une armure avec fire protection.
    -explosion du minecart TNT s'il est attaquer avec ce DamageSource.
    -annulation des dégâts si l'entitée est sous l'effet de fire resistance

    Pour le .setMagicDamage():
    -réduction des dégâts pour la sorcière.



  • Merci pour l'info Kevin, je croyais que ces deux là étaient buggés



  • pour la traduction, j'utilise

    
    LanguageRegistry.instance().addStringLocalization("death.attack.nomDuDamage", "en_US", "%1$s was … blabla");
    
    

    "%1$s" ? correspond à l'affichage du nom du pseudo dans le chat (comme dans un fichier.lang)

    Donc je dis ça juste pour évité de modifier les fichiers lang ^^
    Après je sais pas si ça marche en 1.6, faudrait tester !
    Voilà voilà


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    LanguageRegistry est à éviter car il est supprimé en 1.7 et plus utilisé depuis la 1.5



  • Ah ? Donc autant pour moi ! Merci de l'info c'est domage



  • De plus, un fichier .lang est plus pratique si une personne compte faire la traduction d'un mod :3


  • Moddeurs confirmés Rédacteurs Administrateurs

    @'ZeAmateis':

    Donc je dis ça juste pour évité de modifier les fichiers lang ^^

    Depuis quand on modifie les fichiers lang ? Normalement si tu as bien suivie les tutoriels tu as ton propre fichier lang dans assets/modid/lang/



  • @'Gugu42':

    De plus, un fichier .lang est plus pratique si une personne compte faire la traduction d'un mod :3

    Effectivement !

    @'robin4002':

    @'ZeAmateis':

    Donc je dis ça juste pour évité de modifier les fichiers lang ^^

    Depuis quand on modifie les fichiers lang ? Normalement si tu as bien suivie les tutoriels tu as ton propre fichier lang dans assets/modid/lang/

    Oui, mais pour le modding 1.5, personnellement, j'utilise cette fonction, mais ce n'est qu'une idée personnelle, il est vrai que pour que d'autres personnes fassent les traductions le fichier.lang est requis

    Donc autant pour moi !


  • Moddeurs confirmés Rédacteurs Administrateurs

    En effet, en 1.5 il faut utiliser le LanguageRegistry car les fichiers de lang custom ne sont pas détectés.



  • Bonjours ce tuto peut-il être utilisé pour mettre des effects sur les items ?
    du genre : j'attaque avec mon épé divine et automatiquement ça mes l'ennemis en feu sans avoir l'enchantement fireaspect ?


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    C'est possible, mais je crois qu'il faut appliqué l'enchantement sur l'épée (à tester, si besoin).



  • Je finis le topic demain, j'étais absent longtemps 😛


  • Moddeurs confirmés Rédacteurs Administrateurs

    Abandonné ?



  • Si le tutoriel ne se fini pas je le reprendrais pour montrer un bon exemple de la fracture, de mon dernier tutoriel qui est à savoir sur le FallingEvent !

    Si vous êtes d'accord ?


    EDIT: J'assignerai une fonctionnalité spéciale pour les damages sources à coup de:

    if (event.entityLiving.isPotionActive(MalusEffect.fracture))
    

    et

    SPOILER

    event.entityLiving.motionX *= 0.4D;
    event.entityLiving.motionZ *= 0.4D;
    

    Y'aura une petite partie sur les potion du coup


Log in to reply