Pop/depop d'une entité via deco/reco player
-
"Et si tu faisais un item qui permettrait de stocker l’entité dans l’inventaire du joueur? "
Ouai, mais si le mec déco, il perd sont clap trap ^^’
"Faudrait mettre toutes les données de l’entité dans le tag nbt du joueur. "
Ok, voici le code sur mon entité :
@Override public void writeToNBT(NBTTagCompound compound) { super.writeToNBT(compound); DataWatcher dw = this.getDataWatcher(); compound.setString("playerID", this.playerID); compound.setString("playerName", this.playerName); compound.setString("otherID", this.otherID); compound.setInteger("color", dw.getWatchableObjectInt(20)); compound.setInteger("etat", dw.getWatchableObjectInt(21)); compound.setBoolean("owner", this.owner); } @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); DataWatcher dw = this.getDataWatcher(); this.playerID = compound.getString("playerID"); this.playerName = compound.getString("playerName"); this.otherID = compound.getString("otherID"); dw.updateObject(20, compound.getInteger("color")); dw.updateObject(21, compound.getInteger("etat")); this.owner = compound.getBoolean("owner"); }Dois-je faire ça ici, ou créer une classe qui permet de transférer tout ça ?
(Je debute avec les nbt)
-
Ah désolé, un clap-trap je ne connais pas.
De mon côté j’ai un item pour faire spawn l’entité et un autre pour tuer l’entité et récupérer l’item qui sert à le faire spawn.
Ma façon de stocker après c’est adapté à mon utilisation, bref je laisse faire ceux qui en savent plus long que moi
-
robin te conseille de mettre tous les tag NBT actuels de ton entity dans celui du joueur, donc regarde le tuto des ExtProp, ça t’aidera !
-
Dois y avoir plus simple
genre elle doit être tamed donc elle est liée au joueur,
donc simplement, tu la rend invisible et invulnérable à tout (quand le joueur déco) puis inversement dans le joueur est présent/reconnecté
-
donc un truc du genre
si tamed et proprio n’est pas la
- invulnerable
- invincible
et ce, dans le mob. Plus qu’a chercher le “proprio n’est pas la”
-
Bah pour voir si une entity n’est pas dans le monde (Joueur ou pas), c’est facile tu regardes si elle est null ^^
Du mois je pense, c’est ce que j’aurai fait… -
Ouai, pas faux…
if (!worldObj.isRemote && playerID != null) { if (worldObj.getPlayerEntityByName(playerName) != null) { this.setInvisible(false); System.out.println("la"); } else { this.setInvisible(true); System.out.println("pas la"); } }Et le tour est joué ! ^^'…
-
Et n’oublie pas de le rendre invulnérable avec setInvulnerable, je crois

-
Je n’ai pas trouver pour le mettre invulnérable malheureusement, setInvulnerable n’existe pas, seulement isInvulnerable. d’après mes recherche, c’est bien chiant a faire… Mais bon… Faut vraiment etre chanceux pour trouver une cible invisible

-
Tu peux toujours override la méthode attackEntityFrom et faire un truc comme ça
@Override public boolean attackEntityFrom(DamageSource damagSource, float ammount) if(entity.isInvisible)//Ou un truc du genre return false else return super.attackEntityFrom(damageSource, ammount); -
Ok, merci, j’ai integré le code, on verra bien s’il est bon pendant mes test multi

-
Bah normalement y a pas de raisons que sa ne marche pas ^^’
Mais ton isInvulnerable ne marche pas ?! C est bizarre….Au pire si aucune de ces deux solutions marche pas, tu as toujours l event LivingAttackEvent, qui reste une bonne solution
-
isInvulnerable ne peux pas marcher, vue que la fonction pour le rendre invincible n’a été appeler nul part

Mais je pense que ton code marchera

-
Pourtant si on regarde le message #10 on voit que tu appelles bien la methode setinvisible
Apres sers toi de la methode onLivingpdate pour check si ton entity est invisible, si oui tu passes a true isInvulnerable. Mais encore une fois c est une solution parmis tant d autres