Problème d'affichage de packets



  • Salut !
    Je suis en train de bosser sur un mod et j'ai mis en place un système de packets.
    Tout est fonctionnel seulement j'appelle une fonction avant de sync pour redéfinir la valeur de mon packet ( capability )
    et le problème est que la valeur est valide côté serveur mais côté client une mauvaise valeur se met.
    Par exemple : 
     - Je fais en sorte que quand ma cpb atteint 5 elle se redéfinisse à 0 seulement elle reste à 5 et je ne sais pas pourquoi ? 😞

    :::

    
    [font=Cambriapackage ]fr.jeremy60800.dofuscraftcore.items%(#cc7832)[;
    ]
    import fr.jeremy60800.dofuscraftcore.DofusCraftCore%(#cc7832)[;
    ]import fr.jeremy60800.dofuscraftcore.capabilities.DofusCraftLevelsProvider%(#cc7832)[;
    ]import fr.jeremy60800.dofuscraftcore.capabilities.DofusCraftSubLevelsProvider%(#cc7832)[;
    ]import fr.jeremy60800.dofuscraftcore.capabilities.IDofusCraftLevels%(#cc7832)[;
    ]import fr.jeremy60800.dofuscraftcore.capabilities.IDofusCraftSubLevels%(#cc7832)[;
    ]import fr.jeremy60800.dofuscraftcore.init.BooksInit%(#cc7832)[;
    ]import net.minecraft.entity.player.EntityPlayer%(#cc7832)[;
    ]import net.minecraft.entity.player.EntityPlayerMP%(#cc7832)[;
    ]import net.minecraft.item.Item%(#cc7832)[;
    ]import net.minecraft.item.ItemStack%(#cc7832)[;
    ]
    import java.util.List%(#cc7832)[;
    ]
    public class BooksItem extends Item
    {
      public BooksItem(String name)
      {
         this.setUnlocalizedName(name)%(#cc7832)[;
    ]      this.setRegistryName(name)%(#cc7832)[;
    ]      this.setCreativeTab(DofusCraftCore.*books*)%(#cc7832)[;
    ]      this.setMaxStackSize(1)%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public void addInformation(ItemStack stack, EntityPlayer playerIn, List <string>tooltip, boolean advanced)
      {
         IDofusCraftLevels level_capabilities = playerIn.getCapability(DofusCraftLevelsProvider.*LEVEL_CAP*, null)%(#cc7832)[;
    ]      IDofusCraftSubLevels sublevel_capabilities = playerIn.getCapability(DofusCraftSubLevelsProvider.*SUB_LEVEL_CAP*, null)%(#cc7832)[;
    ]
          if( stack.getItem() == BooksInit.*jeweler_book *)
         {
            int x = level_capabilities.get_jeweler_level()%(#cc7832)[;
    ]         int total = Math.*round*((0.0175f * x * x )+ 4.85f * x)%(#cc7832)[;
    ]         tooltip.add("§6" + "Niveau " + x + "§f" + " - " + "§e" + sublevel_capabilities.get_jeweler_sublevel() + "/" + total + " XP")%(#cc7832)[;
    ]      }
         if( stack.getItem() == BooksInit.*lumberjack_book *)
         {
            int x = level_capabilities.get_luberjack_level()%(#cc7832)[;
    ]         int total = Math.*round*((0.0175f * x * x )+ 4.85f * x)%(#cc7832)[;
    ]         tooltip.add("§6" + "Niveau " + x + "§f" + " - " + "§e" + sublevel_capabilities.get_luberjack_sublevel() + "/" + total + " XP")%(#cc7832)[;
    ]      }
         if( stack.getItem() == BooksInit.*hunter_book *)
         {
            int x = level_capabilities.get_hunter_level()%(#cc7832)[;
    ]         int total = Math.*round*((0.0175f * x * x )+ 4.85f * x)%(#cc7832)[;
    ]         tooltip.add("§6" + "Niveau " + x + "§f" + " - " + "§e" + sublevel_capabilities.get_hunter_sublevel() + "/" + total + " XP")%(#cc7832)[;
    ]      }
         if( stack.getItem() == BooksInit.*black_smith_book *)
         {
            int x = level_capabilities.get_black_smith_level()%(#cc7832)[;
    ]         int total = Math.*round*((0.0175f * x * x )+ 4.85f * x)%(#cc7832)[;
    ]         tooltip.add("§6" + "Niveau " + x + "§f" + " - " + "§e" + sublevel_capabilities.get_black_smith_sublevel() + "/" + total + " XP")%(#cc7832)[;
    ]      }
         if( stack.getItem() == BooksInit.*handyman_book *)
         {
            int x = level_capabilities.get_handyman_level()%(#cc7832)[;
    ]         int total = Math.*round*((0.0175f * x * x )+ 4.85f * x)%(#cc7832)[;
    ]         tooltip.add("§6" + "Niveau " + x + "§f" + " - " + "§e" + sublevel_capabilities.get_handyman_sublevel() + "/" + total + " XP")%(#cc7832)[;
    ]      }
         if( stack.getItem() == BooksInit.*miner_book *)
         {
            int x = level_capabilities.get_miner_level()%(#cc7832)[;
    ]         int total = Math.*round*((0.0175f * x * x )+ 4.85f * x)%(#cc7832)[;
    ]         tooltip.add("§6" + "Niveau " + x + "§f" + " - " + "§e" + sublevel_capabilities.get_miner_sublevel() + "/" + total + " XP")%(#cc7832)[;
    ]      }
         if( stack.getItem() == BooksInit.*sinner_book *)
         {
            int x = level_capabilities.get_sinner_level()%(#cc7832)[;
    ]         int total = Math.*round*((0.0175f * x * x )+ 4.85f * x)%(#cc7832)[;
    ]         tooltip.add("§6" + "Niveau " + x + "§f" + " - " + "§e" + sublevel_capabilities.get_sinner_sublevel() + "/" + total + " XP")%(#cc7832)[;
    ]      }
         if( stack.getItem() == BooksInit.*shoemaker_book *)
         {
            int x = level_capabilities.get_shoemaker_level()%(#cc7832)[;
    ]         int total = Math.*round*((0.0175f * x * x )+ 4.85f * x)%(#cc7832)[;
    ]         tooltip.add("§6" + "Niveau " + x + "§f" + " - " + "§e" + sublevel_capabilities.get_shoemaker_sublevel() + "/" + total + " XP")%(#cc7832)[;
    ]      }
         if( stack.getItem() == BooksInit.*peasant_book *)
         {
            int x = level_capabilities.get_peasant_level()%(#cc7832)[;
    ]         int total = Math.*round*((0.0175f * x * x )+ 4.85f * x)%(#cc7832)[;
    ]         tooltip.add("§6" + "Niveau " + x + "§f" + " - " + "§e" + sublevel_capabilities.get_peasant_sublevel() + "/" + total + " XP")%(#cc7832)[;
    ]      }
         if( stack.getItem() == BooksInit.*sculptor_book *)
         {
            int x = level_capabilities.get_scultpor_level()%(#cc7832)[;
    ]         int total = Math.*round*((0.0175f * x * x )+ 4.85f * x)%(#cc7832)[;
    ]         tooltip.add("§6" + "Niveau " + x + "§f" + " - " + "§e" + sublevel_capabilities.get_scultpor_sublevel() + "/" + total + " XP")%(#cc7832)[;
    ]      }
         if( stack.getItem() == BooksInit.*tailor_book *)
         {
            int x = level_capabilities.get_tailor_level()%(#cc7832)[;
    ]         int total = Math.*round*((0.0175f * x * x )+ 4.85f * x)%(#cc7832)[;
    ]         tooltip.add("§6" + "Niveau " + x + "§f" + " - " + "§e" + sublevel_capabilities.get_tailor_sublevel() + "/" + total + " XP")%(#cc7832)[;
    ]      }
      }
    }
    
    

    :::

    :::

    
    [font=Cambriapackage ]fr.jeremy60800.dofuscraftcore.capabilities%(#cc7832)[;
    ]
    import fr.jeremy60800.dofuscraftcore.DofusCraftCore%(#cc7832)[;
    ]import fr.jeremy60800.dofuscraftcore.network.PacketSubLevel%(#cc7832)[;
    ]import net.minecraft.entity.player.EntityPlayerMP%(#cc7832)[;
    ]
    public class DofusCraftSubLevels implements IDofusCraftSubLevels
    {
      int jeweler_sublevel = 0%(#cc7832)[;
    ]   int handyman_sublevel = 0%(#cc7832)[;
    ]   int luberjack_sublevel = 0%(#cc7832)[;
    ]   int hunter_sublevel = 0%(#cc7832)[;
    ]   int shoemaker_sublevel = 0%(#cc7832)[;
    ]   int black_smith_sublevel = 0%(#cc7832)[;
    ]   int miner_sublevel = 0%(#cc7832)[;
    ]   int peasant_sublevel = 0%(#cc7832)[;
    ]   int sinner_sublevel = 0%(#cc7832)[;
    ]   int scultpor_sublevel = 0%(#cc7832)[;
    ]   int tailor_sublevel = 0%(#cc7832)[;
    ]
      %(#bbb529)[@Override
    ]   public int get_jeweler_sublevel()
      {
         return this.jeweler_sublevel%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public void set_jeweler_sublevel(int level)
      {
         this.jeweler_sublevel = level%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public int get_handyman_sublevel()
      {
         return this.handyman_sublevel%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public void set_handyman_sublevel(int level)
      {
         this.handyman_sublevel = level%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public int get_luberjack_sublevel()
      {
         return this.luberjack_sublevel%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public void set_luberjack_sublevel(int level)
      {
         this.luberjack_sublevel = level%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public int get_hunter_sublevel()
      {
         return this.hunter_sublevel%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public void set_hunter_sublevel(int level)
      {
         this.hunter_sublevel = level%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public int get_shoemaker_sublevel()
      {
         return this.shoemaker_sublevel%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public void set_shoemaker_sublevel(int level)
      {
         this.shoemaker_sublevel = level%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public int get_black_smith_sublevel()
      {
         return this.black_smith_sublevel%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public void set_black_smith_sublevel(int level)
      {
         this.black_smith_sublevel = level%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public int get_miner_sublevel()
      {
         return this.miner_sublevel%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public void set_miner_sublevel(int level)
      {
         this.miner_sublevel = level%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public int get_peasant_sublevel()
      {
         return this.peasant_sublevel%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public void set_peasant_sublevel(int level)
      {
         this.peasant_sublevel = level%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public int get_sinner_sublevel()
      {
         return this.sinner_sublevel%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public void set_sinner_sublevel(int level)
      {
         this.sinner_sublevel = level%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public int get_scultpor_sublevel()
      {
         return this.scultpor_sublevel%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public void set_scultpor_sublevel(int level)
      {
         this.scultpor_sublevel = level%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public int get_tailor_sublevel()
      {
         return this.tailor_sublevel%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public void set_tailor_sublevel(int level)
      {
         this.tailor_sublevel = level%(#cc7832)[;
    ]   }
    
      %(#bbb529)[@Override
    ]   public void sync(EntityPlayerMP player)
      {
         PacketSubLevel packet = new PacketSubLevel(player.getCapability(DofusCraftSubLevelsProvider.*SUB_LEVEL_CAP*, null))%(#cc7832)[;
    ]      if( !player.world.isRemote )
         {
    
            *checkXp*(player)%(#cc7832)[;
    ]
            DofusCraftCore.*network*.sendTo(packet, player)%(#cc7832)[;
    ]
         }
      }
    
      public static void checkXp(EntityPlayerMP playerMP)
      {
    
         IDofusCraftLevels levels = playerMP.getCapability(DofusCraftLevelsProvider.*LEVEL_CAP*, null)%(#cc7832)[;
    ]      IDofusCraftSubLevels sublevels = playerMP.getCapability(DofusCraftSubLevelsProvider.*SUB_LEVEL_CAP*, null)%(#cc7832)[;
    ]
          int jewelerLevel = levels.get_jeweler_level()%(#cc7832)[;
    ]
          if( sublevels.get_jeweler_sublevel() >= *roundLevel*(jewelerLevel) )
         {
    
            %(#808080)[// On get les sous-niveaux et on définit le nombre d'xp max à atteindre pour passer au niveau supérieur
    ]         int x = sublevels.get_jeweler_sublevel()%(#cc7832)[;
    ]         int maxXP = *roundLevel*(jewelerLevel)%(#cc7832)[;
    ]
    
            sublevels.set_jeweler_sublevel(sublevels.get_jeweler_sublevel() - *roundLevel*(levels.get_jeweler_level()))%(#cc7832)[;
    ]         System.*out*.println("Reste du niveau : " + sublevels.get_jeweler_sublevel())%(#cc7832)[;
    ]         levels.set_jeweler_level(levels.get_jeweler_level() + 1)%(#cc7832)[;
    ]         levels.sync(playerMP)%(#cc7832)[;
    ]
         }
      }
    
      %(#808080)[// Permet d'arrondir le nombre
    ]   static int roundLevel(int level)
      {
         return Math.*round*((0.0175f * level * level) + 4.85f * level)%(#cc7832)[;
    ]   }
    }
    
    

    :::</string>



  • Dans la fonction sync, tu crée le packet avant de vérifier l'xp. Donc les données envoyées sont les données avant le check. (De plus, cette fonction devrais soit être static, soit utiliser this à la place de player.getCapability(DofusCraftSubLevelsProvider.SUB_LEVEL_CAP, null))



  • Merci beaucoup ça fonctionne 😉