Navigation

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

    SOLVED Afficher la valeur d'un int d'une tileentity

    1.7.x
    1.7.10
    3
    6
    489
    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.
    • Ciolgaming
      Ciolgaming last edited by

      Bonsoir, j’ai récement crée un block qui fait spawn un item tout les x ticks bref
      je voudrait savoir si il était possible de récupérer la valeur du int “tickcounter” de la tileentity du block que je regarde dans mon gui

      Class de mon Gui :

      package com.mod.ciolmod.gui;
      
      import org.lwjgl.opengl.GL11;
      
      import com.mod.ciolmod.Reference;
      import com.mod.ciolmod.blocks.tileentities.TileEntityTethaniumISpawner;
      
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.gui.GuiButton;
      import net.minecraft.client.gui.GuiScreen;
      import net.minecraft.util.ResourceLocation;
      
      public class GuiISpawner extends GuiScreen{
      
      int guiWidth = 141;
      int guiHeight = 108;
      
      GuiButton factionButton;
      GuiButton minageButton;
      
      private TileEntityTethaniumISpawner tileteth;
      
      @Override
      public void drawScreen(int x, int y, float ticks) {
      int guiX = (width - guiWidth) / 2;
      int guiY = (height - guiHeight) / 2;
      GL11.glColor4f(1, 1, 1, 1);
      drawDefaultBackground();
      mc.renderEngine.bindTexture(new ResourceLocation(Reference.MOD_ID, "textures/gui/guitest.png"));
      drawTexturedModalRect(guiX , guiY , 0, 0, guiWidth, guiHeight);
      fontRendererObj.drawString("Valeur : ", guiX + 4, guiY + 3, 0xFFFFFF);
      
      super.drawScreen(x, y, ticks);
      
      }
      }
      

      Celle de mon block

      package com.mod.ciolmod.blocks;
      
      import com.mod.ciolmod.CiolMod;
      import com.mod.ciolmod.Reference;
      import com.mod.ciolmod.blocks.tileentities.TileEntityTethaniumISpawner;
      import com.mod.ciolmod.gui.GuiISpawner;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.renderer.texture.IIconRegister;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.util.IIcon;
      import net.minecraft.world.World;
      
      public class BlockTethaniumSpawner extends Block {
      
      int fireTick = 0;
      private int ticksteth;
      private int ticksruth;
      
      private IIcon top, side, bottom;
      
      public BlockTethaniumSpawner(Material p_i45394_1_) {
      super(p_i45394_1_);
      this.setTickRandomly(true);
      
      }
      public void registerBlockIcons(IIconRegister iiconRegister)
      {
      this.blockIcon = iiconRegister.registerIcon(Reference.MOD_ID + ":tethaniumorespawner_side");
      this.top = iiconRegister.registerIcon(Reference.MOD_ID + ":orespawner_top");
      this.side = iiconRegister.registerIcon(Reference.MOD_ID + ":tethaniumorespawner_side");
      this.bottom = iiconRegister.registerIcon(Reference.MOD_ID + ":orespawner_bottom");
      }
      
      public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ)
        {
            if(world.isRemote)
            {
                return true;
            }
            else
            {
            Minecraft.getMinecraft().displayGuiScreen(new GuiISpawner());
                return true;
            }
        }
      
      public IIcon getIcon(int side, int metadata)
      {
      
      if(side == 0)
      {
      return this.bottom;
      }
      if(side == 2)
      {
      return this.side;
      }
      if(side == 3)
      {
      return this.side;
      }
      if(side == 4)
      {
      return this.side;
      }
      if(side == 5)
      {
      return this.side;
      }
      else if(side == 1)
      {
      return this.top;
      }
      return this.blockIcon;
      
      }
      
      @Override
        public TileEntity createTileEntity(World world, int metadata)
        {
            return new TileEntityTethaniumISpawner();
        }
      
        @Override
        public boolean hasTileEntity(int metadata)
        {
            return true;
        }  
      
      }
      
      

      et celu de ma tileentity :

      package com.mod.ciolmod.blocks.tileentities;
      
      import java.util.Random;
      
      import com.mod.ciolmod.init.ItemMod;
      
      import net.minecraft.client.renderer.texture.ITickable;
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.item.EntityItem;
      import net.minecraft.init.Items;
      import net.minecraft.item.ItemStack;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.world.World;
      import net.minecraftforge.common.DimensionManager;
      
      public class TileEntityTethaniumISpawner extends TileEntity{
      
        @Override
        public void readFromNBT(NBTTagCompound compound)
        {
            super.readFromNBT(compound);
        }
      
        @Override
        public void writeToNBT(NBTTagCompound compound)
        {
            super.writeToNBT(compound);
        }
      
         public int tickCounter = 0;  
      
         @Override public void updateEntity() {
      
          tickCounter++;
             if (tickCounter == 4800) {
                 tickCounter = 0;
                 if (!this.worldObj.isRemote){
                 EntityItem itemir = new EntityItem(this.getWorldObj(), this.xCoord, this.yCoord + 1.4, this.zCoord, new ItemStack(ItemMod.tethanium_fragment, 1));
                 this.getWorldObj().spawnEntityInWorld(itemir);
      
             }  
          }
      
         }  
      }
      
      

      Voilà je voudrais pouvoir transférer le int de la class tileentity à la class Gui

      Merci de votre réponce 🙂

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

        Salut,
        Envoies simplement le tile entity en argument du gui :
        Minecraft.getMinecraft().displayGuiScreen(new GuiISpawner((TileEntityTethaniumISpawner)world.getTileEntity(x, y, z)));
        Il faudra ajouter également le constructeur approprié dans ton gui.

        Note : tu ouvres actuellement ton gui sur le side serveur, ce qui va faire crasher le jeu en cas d’installation du mod sur un serveur.
        Ta condition avec le world.isRemote est inversé.

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

          Merci beaucoup 🙂

          Cependant je récupère comment à quelle valeur est dejà tickCounter ??

          Dsl si c’est tout bête encore désolé pour le dérangement

          Merci encore 1000 fois pour l’aide

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

            Avec la méthode indiquée par robin, tu devras créer un constructeur GuiISpawner(TileEntityTethaniumISpawner tileEntity), et ensuite tu créeras un field TileEntityTethaniumISpawner  dans ta classe GuiISpawner, qui aura la valeur de ce paramètre de constructeur, puis celle-ci te permettra d’appeler un tileEntity.tickCounter. C’est assez clair ?

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

              @‘Plaigon’:

              Avec la méthode indiquée par robin, tu devras créer un constructeur GuiISpawner(TileEntityTethaniumISpawner tileEntity), et ensuite tu créeras un field TileEntityTethaniumISpawner  dans ta classe GuiISpawner, qui aura la valeur de ce paramètre de constructeur, puis celle-ci te permettra d’appeler un tileEntity.tickCounter. C’est assez clair ?

              Oui mais le souci c’est quand j’affiche cette valeur ça crash ?

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

                @‘Ciolgaming’:

                @‘Plaigon’:

                Avec la méthode indiquée par robin, tu devras créer un constructeur GuiISpawner(TileEntityTethaniumISpawner tileEntity), et ensuite tu créeras un field TileEntityTethaniumISpawner  dans ta classe GuiISpawner, qui aura la valeur de ce paramètre de constructeur, puis celle-ci te permettra d’appeler un tileEntity.tickCounter. C’est assez clair ?

                Oui mais le souci c’est quand j’affiche cette valeur ça crash ?

                Merci c’est bon ça fonctionne !!!

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

                MINECRAFT FORGE FRANCE © 2018

                Powered by NodeBB