Résolu Drop spécial
-
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.
-
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
-
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) -
Il y a le plugin Player Head ou un truc comme ça, suffit de configurer un peu, puis voilà ^^
-
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 ?
-
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 ItemStackFacile
-
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). -
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
-
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é … -
X) bah ok