Jump to content

faltion

Members
  • Posts

    5
  • Joined

  • Last visited

Everything posted by faltion

  1. Thanks TGG, looks like that will lead me in the right direction.
  2. I have a wavefront model loaded using a tileentityspecialrenderer and I would like to animate the texture. Is this even possible? I know that the tesr is rendering the model every second, so that means it is doing the same for the texture, right? I tried using a mcmeta with the texture like you'd animate a block, but it just garbles the texture, which I should have guessed would happen. Would I have to switch to a ISBRH instead, and can I even use an obj with that method?
  3. That worked perfectly! Thanks!
  4. I'm trying to create a television that changes its texture when you right-click on the block, changing the channel data held in the tile entity. So far I can only get the TESR to update and read the correct data if I reload my world, but I can't figure out a way to force a recheck of the tile entity data by the renderer. Tile Entity: public class LargeTelevisionTileEntity extends TileEntity { private int channel = 0; public int getChannel() { return channel; } public void nextChannel() { if(channel == 3) { channel = 0; } else { ++channel; } } @Override public void writeToNBT(NBTTagCompound var1) { super.writeToNBT(var1); var1.setInteger("channel", channel); } @Override public void readFromNBT(NBTTagCompound var1) { super.readFromNBT(var1); channel = MathHelper.clamp_int(var1.getInteger("channel"), 0, 3); } @Override public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) { readFromNBT(packet.func_148857_g()); } @Override public Packet getDescriptionPacket() { NBTTagCompound tag = new NBTTagCompound(); this.writeToNBT(tag); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, this.blockMetadata, tag); } } TESR: public class LargeTelevisionTESR extends TileEntitySpecialRenderer{ private IModelCustom largeTV; private ResourceLocation largeTVLocation; private ResourceLocation largeTVTexture; public LargeTelevisionTESR(){ largeTVLocation = new ResourceLocation("pokedecor", "/models/largeTV.obj"); largeTVTexture = new ResourceLocation("pokedecor", "textures/blocks/largeTVTexture.png"); largeTV = AdvancedModelLoader.loadModel(largeTVLocation); } public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { System.out.printf("Channel: " + ((LargeTelevisionTileEntity)tileEntity).getChannel() + "\n"); //To tell me the data loaded in the tesr ForgeDirection direction = null; if (tileEntity.getWorldObj() != null) { direction = ForgeDirection.getOrientation(tileEntity.getBlockMetadata()); } GL11.glPushMatrix(); // Scale, Translate, Rotate GL11.glTranslated((float)x, (float)y, (float)z); GL11.glScalef(1.0F, 1.0F, 1.0F); short angle = 0; if (direction != null) { if (direction == ForgeDirection.NORTH) { angle = 180; } else if (direction == ForgeDirection.SOUTH) { angle = 0; } else if (direction == ForgeDirection.WEST) { angle = -90; } else if (direction == ForgeDirection.EAST) { angle = 90; } } GL11.glRotatef((float)angle, 0.0F, 1.0F, 0.0F); FMLClientHandler.instance().getClient().renderEngine.bindTexture(largeTVTexture); largeTV.renderAll(); GL11.glPopMatrix(); } }
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.