TagNBT non actualisé dans un overlay


  • Correcteurs

    Plop les gens,

    J'ai un integer qui ne s'actualise pas. La valeur augmente après avoir tué certaines entités (donc un autre event) mais ce qui me fait venir c'est que j'ai voulu afficher la somme totale des kills effectués par un joueur mais je n'arrive visiblement pas à la récupérer dans mon second event

    @SubscribeEvent
        public void renderInfos(RenderGameOverlayEvent event)
        {
            int size = 0;
            int c =  event.resolution.getScaledWidth() /2 - 80;
            int b =  event.resolution.getScaledHeight() - 60;
            EntityPlayer player = Minecraft.getMinecraft().thePlayer;
            InventoryPlayer inv = player.inventory;
            ItemStack itemstack = player.getCurrentEquippedItem();
            int killR0 = player.getEntityData().getInteger("killR0");  //Somme totale des kills (j'ai vérifié, dans l'autre event la valeur augmente)
            if(event.type == RenderGameOverlayEvent.ElementType.TEXT && Minecraft.getMinecraft().gameSettings.thirdPersonView == 0 && Minecraft.getMinecraft().currentScreen == null)
            {
                Minecraft.getMinecraft().fontRenderer.drawStringWithShadow(EnumChatFormatting.GOLD + "Kills: " + killR0, c - 10, b - 10, 0); //La valeur reste à 0
            }
    


  • Quel est l'event où tu augmentes cet integer ? Car il est possible que ce soit un évènement serveur, ce qui fait que la valeur de "killR0" ne sera jamais envoyée au client, il faudra soit : utiliser les data watcher du joueur qui permettent de stocker un nombre donné d'informations et de les synchroniser automatiquement si la valeur change, ou créer un packet custom pour transmettre cet chiffre. Utiliser les datawatcher serait plus simple je pense, mais est-ce que tu veux que cet int soit sauvegardé quand on quitte/charge la map ? Dans ce cas il te faudrait un extended entity properties (il y a un tuto sur le forum).


  • Correcteurs

    Ah oui il faut absolument que cet int soit sauvegardé en effet, ce sont les nombres de kills de chaque mob.
    Je vais de ce pas regarder le tuto et voir ce que je peux en faire. J'avais déjà regardé mais sans me dire que c'était essentiel, je pensais que le getInteger était enregistré dans le playerData toussah toussah

    ps: En effet, l'event qui permet d'incrémenter le int est seulement côté serveur


Log in to reply