Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

kubik_multivitamin

Members
  • Joined

  • Last visited

  1. kubik_multivitamin joined the community
  2. Hello, I'm trying to do my own cable, but I have a problem with TESR. Whenever I place a new cable, model of some previously placed cable change. It look like it's completly random. I really don't know what is going on and I don't know what to do. Where is a problem? Here are some pictures and code. My TileEntity class: public class TileEntityCable extends TileEntity implements ITickable { public CdlmEnergyStorage storage = new CdlmEnergyStorage(400, 100, 10); @Override public boolean hasCapability(Capability<?> capability, EnumFacing facing) { if(capability == CapabilityEnergy.ENERGY) return true; return super.hasCapability(capability, facing); } @Override public <T> T getCapability(Capability<T> capability, final EnumFacing facing) { if(capability == CapabilityEnergy.ENERGY) return (T)this.storage; return super.getCapability(capability, facing); } @Override public NBTTagCompound writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setTag("EnergyStorage", this.storage.serializeNBT()); return nbt; } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.storage.deserializeNBT(nbt.getCompoundTag("EnergyStorage")); } @Override public void update() { for (EnumFacing face : EnumFacing.VALUES) { this.storage.extractEnergy(EnergyHelper.insertIntoAdjacentTile(this, face, this.storage.getMaxExtract(), false), false); } } public int receiveEnergy(int maxReceive, boolean simulate) { this.markDirty(); return this.storage.receiveEnergy(maxReceive, simulate); } public ArrayList<EnumFacing> getEnergyHandlersSides() { ArrayList<EnumFacing> faces = new ArrayList<EnumFacing>(); for (EnumFacing face : EnumFacing.VALUES) { if(EnergyHelper.isAdjacentTileEnergyHandler(this, face)) faces.add(face); } return faces; } } My Renderer class: @SideOnly(Side.CLIENT) public class RenderCable extends TileEntitySpecialRenderer<TileEntityCable> { private static final ResourceLocation TEXTURE = new ResourceLocation(Reference.MOD_ID + ":textures/blocks/cable.png"); private final ModelCable MODEL = new ModelCable(); public void render(TileEntityCable te, double x, double y, double z, float partialTicks, int destroyStage, float alpha) { GlStateManager.enableDepth(); GlStateManager.depthFunc(515); GlStateManager.depthMask(true); ModelCable model = MODEL; if (destroyStage >= 0) { GlStateManager.matrixMode(5890); GlStateManager.pushMatrix(); GlStateManager.scale(4.0F, 4.0F, 1.0F); GlStateManager.translate(0.0625F, 0.0625F, 0.0625F); GlStateManager.matrixMode(5888); } else this.bindTexture(TEXTURE); GlStateManager.pushMatrix(); GlStateManager.enableRescaleNormal(); GlStateManager.translate((float)x, (float)y - 1.0F, (float)z); GlStateManager.scale(1.0F, 1.0F, 1.0F); GlStateManager.translate(0.5F, 0.5F, 0.5F); model.renderAll(); GlStateManager.disableRescaleNormal(); GlStateManager.popMatrix(); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); if (destroyStage >= 0) { GlStateManager.matrixMode(5890); GlStateManager.popMatrix(); GlStateManager.matrixMode(5888); } for(EnumFacing face : te.getEnergyHandlersSides()) { switch(face) { case DOWN: model.hideSides(true, true, true, false, true, true); break; case EAST: model.hideSides(true, true, true, true, true, false); break; case NORTH: model.hideSides(false, true, true, true, true, true); break; case SOUTH: model.hideSides(true, false, true, true, true, true); break; case UP: model.hideSides(true, true, false, true, true, true); break; case WEST: model.hideSides(true, true, true, true, false, true); break; default: model.hideSides(true, true, true, true, true, true); break; } } } } And my Model class: @SideOnly(Side.CLIENT) public class ModelCable extends ModelBase { public ModelRenderer up; public ModelRenderer down; public ModelRenderer middle; public ModelRenderer back; public ModelRenderer front; public ModelRenderer left; public ModelRenderer right; public ModelCable() { textureWidth = 64; textureHeight = 64; up = new ModelRenderer(this, 0, 0); up.addBox(0F, 0F, 0F, 4, 6, 4, 0F); up.setRotationPoint(-2F, 8F, -2F); up.rotateAngleX = 0F; up.rotateAngleY = 0F; up.rotateAngleZ = 0F; up.mirror = false; up.isHidden = true; down = new ModelRenderer(this, 0, 0); down.addBox(0F, 0F, 0F, 4, 6, 4, 0F); down.setRotationPoint(-2F, 18F, -2F); down.rotateAngleX = 0F; down.rotateAngleY = 0F; down.rotateAngleZ = 0F; down.mirror = false; down.isHidden = true; middle = new ModelRenderer(this, 0, 10); middle.addBox(0F, 0F, 0F, 4, 4, 4, 0F); middle.setRotationPoint(-2F, 14F, -2F); middle.rotateAngleX = 0F; middle.rotateAngleY = 0F; middle.rotateAngleZ = 0F; middle.mirror = false; middle.isHidden = false; back = new ModelRenderer(this, 16, 0); back.addBox(0F, 0F, 0F, 4, 4, 6, 0F); back.setRotationPoint(-2F, 14F, 2F); back.rotateAngleX = 0F; back.rotateAngleY = 0F; back.rotateAngleZ = 0F; back.mirror = false; back.isHidden = true; front = new ModelRenderer(this, 16, 0); front.addBox(0F, 0F, 0F, 4, 4, 6, 0F); front.setRotationPoint(-2F, 14F, -8F); front.rotateAngleX = 0F; front.rotateAngleY = 0F; front.rotateAngleZ = 0F; front.mirror = false; front.isHidden = true; left = new ModelRenderer(this, 36, 0); left.addBox(0F, 0F, 0F, 6, 4, 4, 0F); left.setRotationPoint(2F, 14F, -2F); left.rotateAngleX = 0F; left.rotateAngleY = 0F; left.rotateAngleZ = 0F; left.mirror = false; left.isHidden = true; right = new ModelRenderer(this, 36, 0); right.addBox(0F, 0F, 0F, 6, 4, 4, 0F); right.setRotationPoint(-8F, 14F, -2F); right.rotateAngleX = 0F; right.rotateAngleY = 0F; right.rotateAngleZ = 0F; right.mirror = false; right.isHidden = true; } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); setRotationAngles(f, f1, f2, f3, f4, f5, entity); up.render(f5); down.render(f5); middle.render(f5); back.render(f5); front.render(f5); left.render(f5); right.render(f5); } public void renderAll() { up.render(0.0625F); down.render(0.0625F); middle.render(0.0625F); back.render(0.0625F); front.render(0.0625F); left.render(0.0625F); right.render(0.0625F); } public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); } public void hideSides(boolean front, boolean back, boolean up, boolean down, boolean left, boolean right) { this.front.isHidden = front; this.back.isHidden = back; this.up.isHidden = up; this.down.isHidden = down; this.left.isHidden = left; this.right.isHidden = right; } } Thank you for your help.

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.