28 août 2016, 17:00

Ouki, mais le gros dilemne que j’ai c’est que je ne peux pas envoyer le packet via mon event qui n’est que côté serveur.

Cela m’ennuie assez fortement que la récompense ne se déclenche pas en même temps que l’achievement accomplis.

Tronqué, mon event ressemble à ça

@SubscribeEvent
    public void onEntityKilled(LivingDeathEvent event)
    {
        EntityPlayer player = (EntityPlayer)event.source.getEntity();

        Random rand = new Random();
        ItemStack stack1 = new ItemStack(ModPg2.itemRandomMunition, 1); // Munition
 […]
        if(event.source.getEntity() instanceof EntityPlayer && player != null)
        {
            int killR1 = player.getEntityData().getInteger("killR1");
[…]

            if(event.entityLiving instanceof EntityR1Cac || event.entityLiving instanceof EntityR1Ranged)
            {
                killR1++;
                player.getEntityData().setInteger("killR1", killR1);
                if(killR1 == 10)
                {
                    player.triggerAchievement(ModPg2.achievementKillR1a);
//J'ai essayé de déclencher l'envoi du packet ici avant de me rendre compte que tout ne se passe que côté client, NPE sur EntityClientPlayerMP oblige

//edit:  cette portion de code
                 // ByteArrayDataOutput out = ByteStreams.newDataOutput();
                 // out.writeUTF("achievementKillR1a accomplis par " + player.getDisplayName());
                 // ((EntityClientPlayerMP)player).sendQueue.addToSendQueue(new C17PacketCustomPayload("achievementKillR1a", out.toByteArray()));

                }
                if(killR1 == 100)
                {
                    player.triggerAchievement(ModPg2.achievementKillR1b);
                }
[…]