OnItemRightClick sur une entity.
-
Le getAlcool tu mets juste return alcool, c’est tout ! Pourquoi tout ce code ?
-
J’essaye ça je vous dis
-
@‘Snowy_1803’:
Le getAlcool tu mets juste return alcool, c’est tout ! Pourquoi tout ce code ?
Surtout que Robin le lui a déjà dit de mettre return this.alcool (et il l’a pas fait)
@‘robin4002’:
Mets directement return this.alcool;
-
Niquel merci
-
Juste une dernière question si je veux faire baisser le niveau d’alcoolémie de 1 au bout de 15 minutes je dois faire comment ?
-
TickHandler avec la variable getTotalWorldTime() + modulo
-
TickEvent.PlayerTickEvent*
L’interface ITickHandler n’existe plus depuis la 1.7 -
J’ai trouvais ça sur internet je dois définir le nombre de tick comment?
@SubscribeEvent public void onPlayerTickEvent(TickEvent.PlayerTickEvent event) { if (event.phase == TickEvent.Phase.START && !event.player.worldObj.isRemote) { IExtendedEntityProperties properties = event.player.getExtendedProperties(PlayerExtendedProperties.ID); if (properties instanceof PlayerExtendedProperties) { PlayerExtendedProperties playerExtendedProperties = (PlayerExtendedProperties) properties; playerExtendedProperties.tick(); } properties = event.player.getExtendedProperties(PlayerPreferencesProperties.ID); if (properties instanceof PlayerPreferencesProperties) { PlayerPreferencesProperties preferencesProperties = (PlayerPreferencesProperties) properties; preferencesProperties.tick(RFToolsMessages.INSTANCE); } } } -
Le nombre de tick à la seconde est déjà défini.
Ton code va logiquement crash car worldObj sera null lorsque le menu principal sera ouvert.
Du coup null-check pour le world et pour faire vérifier un code tous les x nbre de tick, c’est comme çaif(event.player.worldObj.getTotalWorldTime() % (nbreDeSecondes * 20) == 0 { System.out.println("ton code à exécuter avec ton ExtProp"); } -
PlayerTickEvent n’est que appelé en jeu, donc normalement event.player.worldObj ne sera jamais nul. Pas besoin de null check.
-
Ok je reverrai mes sources la prochaine fois

-
J’ai fais sa je suis pas trop sur que ça marche…
@SubscribeEvent public void onPlayerTickEvent(TickEvent.PlayerTickEvent event) { if(event.player.worldObj.getTotalWorldTime() % (60 * 20) == 0) { ExtendedEntityPropAlcool prop = ExtendedEntityPropAlcool.get(event.player); prop.setAlcool(prop.getAlcool() - 1); System.out.println("Test!"); } } -
Normalement ça devrait être bon.
Regardes en jeu si Test ! s’affiche. Si ce n’est pas le cas c’est surement car ta classe n’est pas enregistré avec FMLCommonHandler.instance().bus().register(new NomDeTaClasseD’event()); -
D’acc je vais voir ça, sinon aussi des fois je rencontre quelques problème par exemple: lorsque je bois un verre d’alcool mon niveau d’alcoolémie devrais normalement augmenté que de 1 bah des fois même souvent, il augmente de 2

-
Ouais merci je l’avais enregistré avec MinecraftForge.EVENT_BUS … Par j’ai un soucis le message TEST il me l’envois 4 fois (2 fois server 2 fois clients ) au lieux de 2 fois (1 fois client 1 fois server) .
-
@‘floriangabet’:
D’acc je vais voir ça, sinon aussi des fois je rencontre quelques problème par exemple: lorsque je bois un verre d’alcool mon niveau d’alcoolémie devrais normalement augmenté que de 1 bah des fois même souvent, il augmente de 2

Sûrement un problème client/serveur ajoutes un if(!player.worldObj.isRemote) avant d’exécuter le code qui augmente le niveau d’alcoolémie pour le faire seulement côté serveur.
@‘floriangabet’:
Ouais merci je l’avais enregistré avec MinecraftForge.EVENT_BUS … Par j’ai un soucis le message TEST il me l’envois 4 fois (2 fois server 2 fois clients ) au lieux de 2 fois (1 fois client 1 fois server) .
Ne retire pas la ligne MinecraftForge.EVENT_BUS si tu as aussi des événements Forge dans la classe. Il faut mettre les deux en même temps (c’est un peu confus, en 1.8 ils ont changé ça, MinecraftForge.EVENT_BUS suffit).
Pour le message en quadruple, ajoutes une condition if(event.phase == TickEvent.Phase.END) (l’event est appelé deux fois, au début du tick et à la fin du tick). -
Merci j’essaye ça!
-
Merci c’est nickel par contre j’ai aperçu que après de nombreuse heure de jeu on pouvais atteindre le niveau -1 etc jusqu’à l’infinie et moi je voudrais que il s’arrête a 0 et que une fois a 0 ou le timer se bloque ou alors on cancelled l’action vous pouvez m’aider pour ça ?.
Code:
@SubscribeEvent public void onPlayerTickEvent(PlayerTickEvent event) { if(event.player.worldObj.getTotalWorldTime() % (900 * 20) == 0) { if(event.phase == TickEvent.Phase.END) { ExtendedEntityPropAlcool prop = ExtendedEntityPropAlcool.get(event.player); prop.setAlcool(prop.getAlcool() - 1); //faire un truc ici du genre if(prop.setAlcool(ETC j'ai essayer avec = 0 j'ai une érreur .. } } } -
if(prop.getAlcool() > 0) { prop.setAlcool(prop.getAlcool() - 1); }Rien de compliqué.
-
Merci
