• Moddeurs confirmés

    J’aurais besoin d’un peu d’aide, normalement je cherche pour trouver une solution à mes problèmes mais là, j’ai un délai à respecter.

    Donc comme le titre le dit, je cherche (enfin on m’a demandé) à faire qu’un mob drop une tête de joueur.

    Pour les curieux, le délai à respecter, c’est car je suis le moddeur d’Iplay4you et que je ne peux pas le retarder pour ces tournages.

  • Modérateurs

    Salut alors après une rapide recherche dans le code du Squelette, voici ce que j’ai trouvé pour le drop de la tête:

    
    protected void dropRareDrop(int par1)
    {
    if (this.getSkeletonType() == 1)
    {
    this.entityDropItem(new ItemStack(Item.skull.itemID, 1, 1), 0.0F);
    }
    }
    
    

    Puis tu modifies ItemSkull.java afin de rajouter le drop de la tête de joueur.


  • Le mieux serait de prendre un plugin pour ça.

    Sinon, je sais pas dutout pour faire en sorte que la tête ait le skin du joueur 😕

  • Administrateurs Rédacteurs Moddeurs confirmés

    Kévin sait comment changer un drop, c’est du basic ça 🙂
    Ce qu’il veut faire c’est droppé la tête d’un joueur spécifique, pour ça il faut passer par les NBT tag de l’item skull, et c’est bien plus compliqué que changer un petit drop. Je regarde de mon côté, je te préviens au plus vite si je trouve quelque chose (d’ailleurs ça pourra me servira aussi pour mon idée de mods PlayerHead qui est resté juste une idée)

  • Administrateurs

    Il y a le plugin Player Head ou un truc comme ça, suffit de configurer un peu, puis voilà ^^

  • Administrateurs Rédacteurs Moddeurs confirmés

    I am a genius :
    Classe principale :

    MinecraftForge.EVENT_BUS.register(new SkullDrop());
    

    SkullDrop :

    package test.common;
    
    import net.minecraft.entity.EntityLiving;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.entity.monster.EntityZombie;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraftforge.event.ForgeSubscribe;
    import net.minecraftforge.event.entity.living.LivingDeathEvent;
    
    public class SkullDrop
    {
    @ForgeSubscribe
    public void onEntityLivingDeath(LivingDeathEvent event)
    {
    if (event.source.getDamageType().equals("player"))
    {
    if (event.entityLiving instanceof EntityZombie)
    {
    ItemStack robin4002Skull = new ItemStack(Item.skull, 1, 3);
    robin4002Skull.setTagCompound(new NBTTagCompound());
    robin4002Skull.getTagCompound().setString("SkullOwner", "robin4002");
    event.entityLiving.entityDropItem(robin4002Skull, 0.0F);
    }
    }
    }
    
    }
    

  • Une petite explication de se code ? 🙂

  • Administrateurs Rédacteurs Moddeurs confirmés

    C’est simple, j’utilise l’event bus de forge “quand l’entity meurt”. Si la source de dégat qui à tué l’entity sont les dégàt d’un joueur, il vérifie si l’entity tué est un zombie (peut être modifié)
    Si c’est pas le cas il fait rien. Sinon il créer un nouveau ItemStack nommé robin4002Skull tu type item skull avec le metadata de la tête de joueur. Ensuite j’ajoute à cette ItemStack un NBT tag, tu j’ajoute à ce NBT une variable du type string nommé SkullOwner (c’est geré dans l’item Skull) de valeur robin4002 (mon pseudo IG).
    Ensuite je fais droppé à l’entity qui vient de mourrir cette ItemStack

    Facile 😉

  • Administrateurs

    au lieu de mettre ton pseudo, mets “Minecraft.session.username” 😄


  • OK ! Cool 😄
    Merci pour l’explication, car comme sa j’aurai pas compris a 100% 🙂
    Et c’est facile pour toi peu être, mais pas pour moi en tout cas x).

  • Moddeurs confirmés

    Merci ça fonctionne!


  • désolé du big up 😞 mais je suis intéresse mais pour ajouté les skin du joueur les skin je fait comment

  • Administrateurs Rédacteurs Moddeurs confirmés

    Dans ce cas tu créé une nouvelle discussion, car ta version de minecraft n’est surement pas la même.
    Et c’est pas comme si la solution a été donné …


  • 😵 bah ok