27 nov. 2016, 15:12

Salut
J’ai encore un autre problème avec mon mod.
J’ai créé un effet que le joueur obtient à un nombre random quand il se lève et qu’il neige. Pour la neige, j’ai dû passé par un timer. Ca marchait bien, mais le seul inconvénient, c’est que quand on quitte le lit sans qu’il fasse jour (donc échap ou le bouton leave bed), le joueur l’obtient quand même. J’ai donc rajouté une condition, s’il fait jour. Mais, là je comprend pas tout. Déjà, voilà le code :

System.out.println(event.getEntityPlayer().worldObj.isDaytime());
if(event.getEntityPlayer().worldObj.isDaytime())
{
System.out.println("appelé");
MagicOfChristmasEffect(event.getEntityPlayer());
System.out.println("effet appliqué");
timer = 0;
System.out.println("neige");

TextComponentTranslation test = new TextComponentTranslation("test");
event.getEntityPlayer().addChatMessage(test);
}

Que le joueur quitte le lit quand il fait encore nuit ou qu’il attende le jour, il obtient la même chose de la part des logs :

false
true
[15:57:06] [Client thread/INFO] [STDOUT]: [This_is_Christmas.CommonEventHandler:MagicOfChristmasEffectActivator:74]: appelé
[15:57:06] [Client thread/INFO] [STDOUT]: [This_is_Christmas.CommonEventHandler:MagicOfChristmasEffectActivator:76]: effet appliqué
[15:57:06] [Client thread/INFO] [STDOUT]: [This_is_Christmas.CommonEventHandler:MagicOfChristmasEffectActivator:78]: neige
[15:57:06] [Client thread/INFO]: [CHAT] test

Mais en jeu, rien à part le message test. Je ne comprend pas deux choses dans les logs : qu’il fasse nuit ou jour quand il quitte le lit, ça dit qu’il fait nuit et jour en même temps. Et pourquoi ça affiche bien les messages si ça appelle pas la fonction ? Pourtant, si vous regardez le code java, vous pouvez voir que j’ai mis un message avant et trois message après l’appel de la fonction. Tous s’affiche mais la fonction ne marche pas. Alors que dans cette dernière, y’a aucune condition : ```java
public void MagicOfChristmasEffect(EntityPlayer player)
{
ChristmasPotion potion = ChristmasPotion.MagicOfChristmasEffect;
PotionEffect potioneffect = new PotionEffect(potion, 12536, 0, false, true);
TextComponentTranslation textcomponenttranslation = new TextComponentTranslation(“msg.christmas.effect”);
textcomponenttranslation.getStyle().setColor(TextFormatting.RED);

if(!player.worldObj.isRemote)
{
player.addPotionEffect(potioneffect);
player.addChatMessage(textcomponenttranslation);
}
}
Et ça ne met pas non plus le timer à 0, parce que sinon il neigerait par cette event :java
@SubscribeEvent
public void SnowTimer(WorldTickEvent event)
{
if(timer == 4)
{
WorldInfo worldinfo = event.world.getWorldInfo();
worldinfo.setRainTime(12532);
worldinfo.setThunderTime(0);
worldinfo.setRaining(true);
worldinfo.setThundering(false);
}
if(timer <= 4)
{
timer++;
}
}


Du coup, si cette méthode ne marche pas, comment faire pour faire que le joueur ait l'effet seulement s'il attend le lever du soleil ?

Merci d'avance