• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    [1.6.4]Un tile entity qui se reset à chaque fois que je recharge mon monde

    Sans suite
    3
    13
    2507
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • P
      Portuar dernière édition par

      bonjour minecraft forge france!

      Alors voila j’ai crée un block qui possède un tileentity afin qu’il soit unique ce que j’entend par unique c’est qu’il comporte des donnés propre a lui même à titre d’exemple j’ai deux même block cote à cote, quand je clique sur l’un seul lui s’active et non les deux enfin bref mon problème est que les information du tileentity change à chaque clique mais quand je reset le monde donc que je déco reco et bah les informations reviennent à zero et certain boolean s’active sans raison alors qu’ils sont sur false !

      Merci d’avance pour vos réponses !

      voici le block

      
      package monsterhuntercraft.block;
      
      import java.util.Random;
      
      import monsterhuntercraft.Gui.GuiDrop;
      import net.minecraft.block.Block;
      import net.minecraft.block.BlockContainer;
      import net.minecraft.block.material.Material;
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.entity.EntityPlayerSP;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.entity.player.EntityPlayerMP;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.world.World;
      import cpw.mods.fml.client.FMLClientHandler;
      
      public class BlockDrop extends BlockContainer
      {
      
      public BlockDrop(int par1)
      {
      super(par1, Material.wood);
      }
      
      /**
      * Called when the block is placed in the world.
      */
      public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack)
      {
      TileEntityBlockDrop tileEntityBlock = (TileEntityBlockDrop)par1World.getBlockTileEntity(par2, par3, par4);
      Random rand = new Random();
      tileEntityBlock.upNumber = rand.nextInt(2);
      tileEntityBlock.upNumber = tileEntityBlock.upNumber + 2;
      tileEntityBlock.timeUntilNextDrop = rand.nextInt(40000);
      tileEntityBlock.timeUntilNextDrop = tileEntityBlock.timeUntilNextDrop + 40000;
      
      }
      
      /**
      * Called upon block activation (right click on the block.)
      */
      public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
      {
      TileEntityBlockDrop tileEntityBlock = (TileEntityBlockDrop)par1World.getBlockTileEntity(par2, par3, par4);
      System.out.println("dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");
      tileEntityBlock.isClicked = true;
      return true;
      }
      
      /**
      * Udapte fonction
      */
      protected void dropUdapte(World par1World, int par2, int par3, int par4, String par5NameItem, int par6ItemID, Item par7Item)
      {
      TileEntityBlockDrop tileEntityBlock = (TileEntityBlockDrop)par1World.getBlockTileEntity(par2, par3, par4);
      Random rand = new Random();
      
      final Minecraft minecraft = FMLClientHandler.instance().getClient();
      final EntityPlayerSP par5EntityPlayer = minecraft.thePlayer;
      
      if(tileEntityBlock.upNumber == 0)
      {
      tileEntityBlock.timeUntilNextDrop–;
      }
      
      System.out.println("\nisClicked " + tileEntityBlock.isClicked);
      System.out.println("upNumber " + tileEntityBlock.upNumber);
      System.out.println("timeUntilNextDrop " + tileEntityBlock.timeUntilNextDrop);
      
      if(tileEntityBlock != null && tileEntityBlock.upNumber > 0 && tileEntityBlock.isClicked == true)
      {
      tileEntityBlock.isClicked = false;
      Minecraft.getMinecraft().displayGuiScreen(new GuiDrop(Minecraft.getMinecraft(), par5EntityPlayer, par5NameItem, 5));
      ItemStack itemstack = par5EntityPlayer.inventory.getCurrentItem();
      
      minecraft.thePlayer.dropPlayerItem(new ItemStack(par6ItemID, 1, 0));
      
      /*
      if(!(par5EntityPlayer.inventory.hasItem(par7Item.itemID)));
      {
      par5EntityPlayer.inventory.addItemStackToInventory(new ItemStack(par7Item, 1, 0));
      }
      */
      
      tileEntityBlock.upNumber--;
      }
      else
      {
      tileEntityBlock.isClicked = false;
      }
      
      if(tileEntityBlock.timeUntilNextDrop == 0)
      {
      tileEntityBlock.upNumber = rand.nextInt(2);
      tileEntityBlock.upNumber = tileEntityBlock.upNumber + 2;
      }
      
      }
      
      /**
      * Returns the ID of the items to drop on destruction.
      */
      public int idDropped(int par1, Random par2Random, int par3)
      {
      return 0;
      }
      
      /**
      * Returns the quantity of items to drop on block destruction.
      */
      public int quantityDropped(Random par1Random)
      {
      return 1;
      }
      
      @Override
      public TileEntity createNewTileEntity(World world)
      {
      return new TileEntityBlockDrop();
      }
      
      }
      
      

      et le tile entity

      
      package monsterhuntercraft.block;
      
      import java.util.Random;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.network.INetworkManager;
      import net.minecraft.network.packet.Packet;
      import net.minecraft.network.packet.Packet132TileEntityData;
      import net.minecraft.tileentity.TileEntity;
      
      public class TileEntityBlockDrop extends TileEntity
      {
      boolean isClicked = false;
      int upNumber, timeUntilNextDrop;
      
      @Override
      public void updateEntity()
      {
      super.updateEntity();
      }
      
      @Override
      public void readFromNBT(NBTTagCompound par1NBTTagCompound)
      {
      super.readFromNBT(par1NBTTagCompound);
      
      this.isClicked = par1NBTTagCompound.getBoolean("isClicked");
      this.upNumber = par1NBTTagCompound.getInteger("upNumber");
      this.timeUntilNextDrop = par1NBTTagCompound.getInteger("timeUntilNextDrop");
      }
      
      @Override
      public void writeToNBT(NBTTagCompound par1NBTTagCompound)
      {
      super.writeToNBT(par1NBTTagCompound);
      
      par1NBTTagCompound.setBoolean("isClicked", this.isClicked);
      par1NBTTagCompound.setInteger("upNumber", this.upNumber);
      par1NBTTagCompound.setInteger("timeUntilNextDrop", this.timeUntilNextDrop);
      }
      
      public Packet getDescriptionPacket()
      {
      NBTTagCompound nbttagcompound = new NBTTagCompound();
      this.writeToNBT(nbttagcompound);
      return new Packet132TileEntityData(this.xCoord, this.yCoord, this.zCoord, 4, nbttagcompound);
      }
      
      public void onDataPacket(INetworkManager net, Packet132TileEntityData pkt)
      {
      this.readFromNBT(pkt.data);
      }
      
      }
      
      
      1 réponse Dernière réponse Répondre Citer 0
      • Superloup10
        Superloup10 Modérateurs dernière édition par

        Sans tes codes, on ne peut pas t’aider.

        Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

        Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

        1 réponse Dernière réponse Répondre Citer 0
        • P
          Portuar dernière édition par

          voila

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

            Ton tile entity est t-il enregistré dans la classe principale ?

            1 réponse Dernière réponse Répondre Citer 0
            • P
              Portuar dernière édition par

              Dans la fonction init j’ai mis ceci : GameRegistry.registerTileEntity(monsterhuntercraft.block.TileEntityBlockDrop.class, “stringID”);

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                Cela sûrement du fais que tu modifie les valeurs en world client et pas en world serveur.
                D’ailleurs la fonction dropUdapte n’existe pas, je sais pas du tout où tu l’appelle.

                1 réponse Dernière réponse Répondre Citer 0
                • P
                  Portuar dernière édition par

                  Ouai drop udapte n’existe pas je l’appelle dans la fonction randomDisplayTick et world client si je fais !par1World.isRemote sa ne marche pas!

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                    Concrètement tu cherche à faire quoi ?
                    Car la façon dont tu t’y prend n’est pas bonne, il faudrait utiliser des paquets, et le problème c’est que même avec des paquets, ton blocs va changer en fonction de tous les joueurs co, à moins que ce soit prévu comme ça ?

                    1 réponse Dernière réponse Répondre Citer 0
                    • P
                      Portuar dernière édition par

                      clairement quand on clique on drop l’item et sa on peu le faire *2 a *4 puis il ya un cooldown et on peut le refaire tout fonctionne juste au rest de la map tout reset alors que les nbt ne sont ils censé resté les même

                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                        J’arrive toujours pas à comprendre, tu peux envoyer le reste du code ? (surtout la où dropUdapte est appelé).

                        1 réponse Dernière réponse Répondre Citer 0
                        • P
                          Portuar dernière édition par

                          Bah il est appelé dans un autre block :

                          /**

                          • Ticks the block if it’s been scheduled
                            */
                            public void randomDisplayTick(World par1World, int par2, int par3, int par4, Random par5Random)
                            {
                            this.dropUdapte(par1World, par2, par3, par4, ItemMonsterHunter.Honey.getStatName(), ItemMonsterHunter.Honey.itemID, ItemMonsterHunter.Honey);
                            }
                          1 réponse Dernière réponse Répondre Citer 0
                          • robin4002
                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                            Un bloc qui est extends BlockDrop ?
                            Mais du-coup tu as le gui qui s’ouvre de façon random non ?
                            La seul solution que je vois, c’est les paquets, car tu change les valeurs côté client, et faut changer les valeurs côtés serveur.

                            1 réponse Dernière réponse Répondre Citer 0
                            • P
                              Portuar dernière édition par

                              non mon gui s’ouvre bien et je vais essayer de me renseigner niveau packet!

                              1 réponse Dernière réponse Répondre Citer 0
                              • 1 / 1
                              • Premier message
                                Dernier message
                              Design by Woryk
                              Contact / Mentions Légales

                              MINECRAFT FORGE FRANCE © 2018

                              Powered by NodeBB