• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Solved Crash : TickingEntity

    1.9.x et 1.10.x
    1.10.x
    3
    9
    1585
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Heinair last edited by

      Bonjour,

      J’ai donc un mod 1.10.2 avec Forge et j’ai un problème : j’ai crée un système d’effets de potions que le joueur obtient quand il porte l’armure complète, ce système marche bien depuis la 1.7.10 mais depuis la 1.9 et maintenant en 1.10.2 il ne marche qu’en solo. Lorsque le joueur s’équipe d’une pièce d’armure faisant partie d’un “set” éligible à un effet de potion, le joueur crash et ne peut plus revenir sur le serveur.

      Logs serveur : http://pastebin.com/gnmDSgxj

      Code :

      package fr.zeiyo.zeiyocraft.item;
      
      import fr.zeiyo.zeiyocraft.crafting.ZCraftingUtils;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.inventory.EntityEquipmentSlot;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemArmor;
      import net.minecraft.item.ItemStack;
      import net.minecraft.potion.Potion;
      import net.minecraft.potion.PotionEffect;
      import net.minecraft.world.World;
      
      public class ZItemArmor extends ItemArmor
      
      {
      
          protected int id;
      
          public ZItemArmor(String unlocalizedName, ArmorMaterial material, int renderIndex, EntityEquipmentSlot armorType, int nmb) {
              super(material, renderIndex, armorType);
              this.setUnlocalizedName(unlocalizedName);
              this.setRegistryName(unlocalizedName);
              this.isRepairable();
              this.id = nmb;
          }    
      
          @Override
          public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack){
      
          if (this.isWearingFullSet(player, ZeiyoItems.onyxHelmet, ZeiyoItems.onyxChestplate, ZeiyoItems.onyxLeggings, ZeiyoItems.onyxBoots)) 
      {
      this.effectPlayer(player, Potion.getPotionById(22), 0, 600);
      }
      if (this.isWearingFullSet(player, ZeiyoItems.rubyHelmet, ZeiyoItems.rubyChestplate, ZeiyoItems.rubyLeggings, ZeiyoItems.rubyBoots)) 
      {
      this.effectPlayer(player, Potion.getPotionById(12), 0, 50);
      }
      if (this.isWearingFullSet(player, ZeiyoItems.sapphireHelmet, ZeiyoItems.sapphireChestplate, ZeiyoItems.sapphireLeggings, ZeiyoItems.sapphireBoots)) 
      {
      this.effectPlayer(player, Potion.getPotionById(13), 0, 50);
      }
          }
      
      private void effectPlayer(EntityPlayer player, Potion potion, int amplifier, int duration)
      {
      if (player.getActivePotionEffect(potion) == null || player.getActivePotionEffect(potion).getDuration() <= 1)
      player.addPotionEffect(new PotionEffect(potion , duration, amplifier, false, false));
      }
      
      private boolean isWearingFullSet(EntityPlayer player, Item helmet, Item chestplate, Item leggings, Item boots) 
      {
      return player.inventory.armorItemInSlot(3) != null && player.inventory.armorItemInSlot(3).getItem() == helmet
      && player.inventory.armorItemInSlot(2) != null && player.inventory.armorItemInSlot(2).getItem() == chestplate
      && player.inventory.armorItemInSlot(1) != null && player.inventory.armorItemInSlot(1).getItem() == leggings
      && player.inventory.armorItemInSlot(0) != null && player.inventory.armorItemInSlot(0).getItem() == boots;
      }
      
          @Override
          public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) {
              return ZCraftingUtils.getRepairItem(id) == repair.getItem() ? true : super.getIsRepairable(toRepair, repair);
          }
      }
      

      Le mod comportait aussi des chaises mais je les ai provisoirement enlevées car elle me pose le même problème elles marchaient très bien et depuis la 1.9 elles ne fonctionnent plus sur les serveurs à cause encore une fois d’une erreur TickingEntity

      En espérant qu’on trouve une solution et merci d’avance 🙂

      1 Reply Last reply Reply Quote 0
      • AymericRed
        AymericRed last edited by

        Apparement le serveur ne reconnait pas la fonction player.inventory.armorItemInSlot(…), tu as bien la même version sur eclipse que sur ton serveur ?

        Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

        AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

        Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
        Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

        1 Reply Last reply Reply Quote 0
        • H
          Heinair last edited by

          Oui étant donné que le serveur que j’utilise dans ces logs est celui présent avec le MDK forge (runServer) ^^
          Et ce problème arrive aussi sur tous les autres serveurs que j’ai testé (j’utilise sur tous forge 1.10.2 - 12.18.1.2011)

          1 Reply Last reply Reply Quote 0
          • AymericRed
            AymericRed last edited by

            Fais shift clic sur la fonction et regarde si elle n’aurait pas un @SideOnly(Side.CLIENT) par hasard.

            Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

            AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

            Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
            Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

            1 Reply Last reply Reply Quote 0
            • H
              Heinair last edited by

              Shift+Clic ne marche pas chez moi mais si c’est pour accéder à la fonction “mère” elle n’as pas de SideOnly (elle se trouve dans Item)

              /**

              • Called to tick armor in the armor slot. Override to do something
                */
                public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack){}
              1 Reply Last reply Reply Quote 0
              • AymericRed
                AymericRed last edited by

                Je ne parles pas de onArmorTick mais de la fonction qui fait le crash, armorItemInSlot(…) dans InventoryPlayer.

                Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                1 Reply Last reply Reply Quote 0
                • robin4002
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                  C’est ctrl + clic.
                  Et en effet la fonction est seulement dispo en client :

                  @SideOnly(Side.CLIENT)
                  public ItemStack armorItemInSlot(int slotIn)
                  {
                  return this.armorInventory[slotIn];
                  }
                  

                  Mais comme armorInventory est public le problème est vite contourné.

                  1 Reply Last reply Reply Quote 0
                  • H
                    Heinair last edited by

                    En effet la fonction est bien côté client, bizarre
                    Du coup je me demande bien comment je vais pouvoir implementer ça sur serveur, je vais chercher une autre fonction

                    OK en effet j’y ai même pas pensé …

                    1 Reply Last reply Reply Quote 0
                    • AymericRed
                      AymericRed last edited by

                      Ah oui en effet je me suis trompé (quelques jours sans eclipse et j’oublie déjà ça xD).

                      Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                      AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                      Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                      1 Reply Last reply Reply Quote 0
                      • 1 / 1
                      • First post
                        Last post
                      Design by Woryk
                      Contact / Mentions Légales

                      MINECRAFT FORGE FRANCE © 2018

                      Powered by NodeBB