Afficher la valeur d'un int d'une tileentity



  • 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 🙂


  • Moddeurs confirmés Rédacteurs Administrateurs

    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é.



  • 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



  • 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 ?



  • @'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 ?



  • @'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 !!!


Log in to reply