Créer un achievement
-
Eclipse te propose de le remplacer? Si oui, par quoi?
-
non pas de proposition
juste le ttruc de create a field …. -
Essayes de mettre .isAchieved ou un truc qui s’y rapproche.
-
mtn ça me dit de creer une methode isAchieved(Achievement) ^^’
-
Je vois pas du tout comment faire, alors.
-
Peut etre que c’est tout simplement impossible ?
-
En effet, je viens de faire de recherche, et ça va être possible ou du moins très compliqué. En fait le code qui enclenche l’achievement est du côté serveur. Ajouter de l’expérience, c’est aussi du côté serveur. Lorsqu’un joueur débloque un achievement, le serveur envoie un paquet au client, et ensuite le client regarde si il a déjà l’achievement. Si c’est le cas, rien ne se passe, sinon l’achievement get s’affiche.
Donc il faudrait check côté client s’il a l’achievement avec Minecraft.getMinecraft().statFileWriter.hasAchievementUnlocked(achievement), et envoyer un paquet au serveur s’il ne l’ai pas.
Mais même si tu t’amuse a faire ça, on pourra facilement faire du bug abuse en supprimant le fichier de stat dans le .minecraft.Le plus simple est donc de mettre un tag nbt dans le joueur lorsqu’il la première, et s’il n’a pas ce tag ça donne de l’xp.
Comme j’ai fais pour le cadeau de noël sur Cube³ : https://github.com/robin4002/Cube3/blob/master/cube3_common/fr/cube3/common/Cube3PlayerTracker.java#L15-L22 -
oulà ^^’ ca me parait tres tres compliqué tout cela xD je vais attendre les tutos 1.7 pour voir si ça a changé quelque chose
et mci robinEDIT : j’ai mis le code que robin adis et je vais tester

-
package fr.emergia.EmergiaMod.common; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; import net.minecraftforge.event.entity.player.EntityItemPickupEvent; public class EventAch { @SubscribeEvent public void OnBlockPickedUp(EntityItemPickupEvent event) { if(event.item.getEntityItem().getItem() == EmergiaMenu.PIS) { if(event.entityPlayer != null) event.entityPlayer.triggerAchievement(ACH1); } } }Je suis en 1.7 et le nom que j’ai mis a mon Achievement est ACH1
pourtant il ne le reconnait pas.//Achievement ACH1 = new Achievement("EmergiaACH1","ACH1", -3,4, PIS, null).registerStat(); -
Tu as enregistré la classe d’event ?
-
Oui dans le init :
MinecraftForge.EVENT_BUS.register(new EventAch()); -
Il s’agit d’un évent FML pas d’un évent Forge, enregistre le avec : ```java
FMLCommonHandler.instance().bus().register(new EventAch());
-
Non, c’est bien un event forge :
import net.minecraftforge.event.entity.player.EntityItemPickupEvent;Je ne vois pas d’où vient le problème

-
Remplace event.item.getEntityItem … par event.item peut être?
-
Est-ce que ton achievement apparait dans le gui des achievements ?
Comme l’à dit utybo, tu devrais faire plutôt comme ça : event.item instanceof tonitem
Limite t’es pas obligé de check si le joueur est null ou pas puisque c’est le joueur qui pick donc il n’est forcement pas null. -
J’aurais une question,
Si exemple je veut ajouter des “récompenses” quand quelqu’un fait l’achievements, exemple je mine un block de dirt et sa me mes l’Achievements et sa me donne 10 bois en récompense, est-ce que sa se fait ?
Sinon est-ce que le code est pareil pour la 1.7 ?
-
Quand on achievement est obtenue, il me semble qu’un event est déclencher donc oui
-
Ce que tu peux faire aussi et de donner les récompenses en même temps que l’achievement

-
Ouais, mais y,a t’il un tuto pour sa
? -
Vraiment besoin d’un tuto pour un ```java
player.inventory.tryAdd(new ItemStack(objet, nombre));? Sent from my GT-I9000 using Tapatalk 2
