Résolu 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 guiClass 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
-
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 !!!