Créer un achievement
-
Salut je voudrais que en minant le bloc pour la 1ere fois que le joueur gagne 30 nv mais juste la premiere fois mais je ne sais pas comment faire

event.entityPlayer.addExperienceLevel(30); -
Tu fais un Extended Entity Property, une boolean, qui fait que quand l’event “miner” se déclenche, la boolean est set a true, et ne peut plus être changé par des commandes. Ainsi, une fois miné, le joueur ne recevras plus jamais les niveau bonus, sauf si le fichier player est effacé. Tu peut faire une commande de reset, et les Extended Entity Property sont complètement compatibles en multijoueur, et donc très pratiques

-
Merci je test ça et je te dis quelque chose et aufait merci robin pour la reponse à mon probleme j’avais oublié

Hum juste une question je dois mettre ```java
boolean (je sais pas quoi mettre ici) = true -
Ou alors tu check juste si le joueur a déjà l’achievement ou pas, tout simplement.
-
oui robin ca me parait un peut plus simple xD mais comment faire ? :0 ( sachez que je retiens toutes les suggestions et je les teste toutes =D comme ça j’apprends plus
) -
Ah, mais c’est vrai que tu passe par un achievement ( J’suis con )
Dans ce cas, c’est surement .hasAchievement ou .getAchievement il me semble
-
je dois mettre ou ce code ?
-
if(!player.hasAchieved / je sais plus la méthode )){
code pour give les niveau
}
-
celui que j’avais mis au dessus ?
```java
event.entityPlayer.addExperienceLevel(30); -
Yes
-
mas la methode je ne la trouve pas

-
La méthode, c’est celle qui débloque ton achievement.
-
if ( event.entityPlayer != null) ; ``` ? -
C’est pas une méthode, c’est une condition.
Une méthode s’est: ```java@Override
public void notifyPickup(EntityItem item, EntityPlayer player)
{}
-
La l’achievement s’active mais les nv s’acumulent

package bdbladx.common; import cpw.mods.fml.common.network.Player; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.stats.Achievement; import net.minecraftforge.event.ForgeSubscribe; import net.minecraftforge.event.entity.player.EntityItemPickupEvent; public class PlayerEvent { @ForgeSubscribe public void onBlockPickedUp(EntityItemPickupEvent event) { if(event.item.getEntityItem().itemID == eryliablocks.BlockUranium.blockID) { if(event.entityPlayer != null) event.entityPlayer.triggerAchievement(eryliablocks.achievementUraniumBrut); event.entityPlayer.addExperienceLevel(30); } } }___@‘Gugu42’:
if(!player.hasAchieved / je sais plus la méthode )){
code pour give les niveau
}
sachant que la methode est ```java
@ForgeSubscribe
public void onBlockPickedUp(EntityItemPickupEvent event)
{
if(event.item.getEntityItem().itemID == eryliablocks.BlockUranium.blockID)
{
if(event.entityPlayer != null);et que le code pour give les niveaux ```java event.entityPlayer.addExperienceLevel(30)je dois mettre comment ?
-
Essayes ceci:
package bdbladx.common; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.stats.AchievementList; import cpw.mods.fml.common.IPickupNotifier; public class PickupHandler implements IPickupNotifier { @Override public void notifyPickup(EntityItem item, EntityPlayer player) { if(item.getEntityItem().itemID == eryliablocks.BlockUranium.blockID && !player.hasAchieved(eryliablocks.achievementUraniumBrut)) { player.addStat(eryliablocks.achievementUraniumBrut); player.addExperienceLevel(30); } } }Dans la class principale:
GameRegistry.registerPickupHandler(new PickupHandler()); -
Hm … plutôt cette ligne :
player.addExperienceLevel(30);Dans cette condition :
if(item.getEntityItem().itemID == eryliablocks.BlockUranium.blockID) { player.addStat(eryliablocks.achievementUraniumBrut); }Avec une petite modif :
if(item.getEntityItem().itemID == eryliablocks.BlockUranium.blockID && !player.hasAchieved(eryliablocks.achievementUraniumBrut)) { player.addStat(eryliablocks.achievementUraniumBrut); player.addExperienceLevel(30); }Histoire de faire d’une pierre deux coups

-
Exact, j’avais oublié que je pouvais mettre une condition avec un ET dedans.
-
j’essaye et je vous dit quelque chose =)___
Erreur sur .hasAchieved et .addstat
Edit: j’ai resolu le .addstat en metant ```java
player.addStat(eryliablocks.achievementUraniumBrut, 1);
ajout du 1 =) -
Pour le .hasAchieved, tu as quel erreur exactement?
