MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Afficher la valeur d'un int d'une tileentity

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    6 Messages 3 Publieurs 702 Vues 1 Watching
    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.
    • CiolgamingC Hors-ligne
      Ciolgaming
      dernière édition par

      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 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        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 réponse Dernière réponse Répondre Citer 0
        • CiolgamingC Hors-ligne
          Ciolgaming
          dernière édition par

          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 réponse Dernière réponse Répondre Citer 0
          • DeletedD Hors-ligne
            Deleted
            dernière édition par

            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 réponse Dernière réponse Répondre Citer 0
            • CiolgamingC Hors-ligne
              Ciolgaming
              dernière édition par

              @‘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 réponse Dernière réponse Répondre Citer 0
              • CiolgamingC Hors-ligne
                Ciolgaming
                dernière édition par

                @‘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 réponse Dernière réponse Répondre Citer 0
                • 1 / 1
                • Premier message
                  Dernier message
                Design by Woryk
                ContactMentions Légales

                MINECRAFT FORGE FRANCE © 2024

                Powered by NodeBB