diff --git a/src/main/java/malte0811/industrialwires/blocks/controlpanel/TileEntityPanel.java b/src/main/java/malte0811/industrialwires/blocks/controlpanel/TileEntityPanel.java index defd205..79e452e 100644 --- a/src/main/java/malte0811/industrialwires/blocks/controlpanel/TileEntityPanel.java +++ b/src/main/java/malte0811/industrialwires/blocks/controlpanel/TileEntityPanel.java @@ -34,6 +34,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.ITickable; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; @@ -139,6 +140,9 @@ public class TileEntityPanel extends TileEntityGeneralCP implements IDirectional } } components.setHeight(nbt.getFloat("height")); + if (nbt.hasKey("texture")) { + components.setTexture(new ResourceLocation(nbt.getString("texture"))); + } components.setAngle(nbt.getFloat("angle")); } defAABB = null; @@ -154,6 +158,7 @@ public class TileEntityPanel extends TileEntityGeneralCP implements IDirectional nbt.setTag("components", comps); nbt.setFloat("height", components.getHeight()); nbt.setFloat("angle", components.getAngle()); + nbt.setString("texture", components.getTexture().toString()); } @Nonnull diff --git a/src/main/java/malte0811/industrialwires/blocks/controlpanel/TileEntityRSPanel.java b/src/main/java/malte0811/industrialwires/blocks/controlpanel/TileEntityRSPanel.java index c9b3204..c38ef2d 100644 --- a/src/main/java/malte0811/industrialwires/blocks/controlpanel/TileEntityRSPanel.java +++ b/src/main/java/malte0811/industrialwires/blocks/controlpanel/TileEntityRSPanel.java @@ -41,7 +41,6 @@ public abstract class TileEntityRSPanel extends TileEntityGeneralCP implements I } private void updateChannelsArray() { - byte[] oldIn = currInput; if (world == null || !world.isRemote) { panelNetwork.removeIOFor(this); for (byte i = 0; i < 16; i++) { @@ -69,8 +68,12 @@ public abstract class TileEntityRSPanel extends TileEntityGeneralCP implements I @Override public void readNBT(NBTTagCompound nbt, boolean updatePacket) { - out = nbt.getByteArray("out"); - currInput = nbt.getByteArray("in"); + if (nbt.hasKey("out") && nbt.getByteArray("out").length == 16) { + out = nbt.getByteArray("out"); + } + if (nbt.hasKey("in") && nbt.getByteArray("in").length == 16) { + currInput = nbt.getByteArray("in"); + } controller = nbt.getInteger("rsId"); updateChannelsArray(); } diff --git a/src/main/java/malte0811/industrialwires/controlpanel/PanelUtils.java b/src/main/java/malte0811/industrialwires/controlpanel/PanelUtils.java index 0bc0059..35b53ff 100644 --- a/src/main/java/malte0811/industrialwires/controlpanel/PanelUtils.java +++ b/src/main/java/malte0811/industrialwires/controlpanel/PanelUtils.java @@ -25,6 +25,7 @@ import malte0811.industrialwires.controlpanel.PropertyComponents.PanelRenderProp import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.client.resources.I18n; import net.minecraft.item.EnumDyeColor; @@ -61,9 +62,11 @@ public final class PanelUtils { @SideOnly(Side.CLIENT) public static List generateQuads(PanelRenderProperties components) { + TextureMap texMap = Minecraft.getMinecraft().getTextureMapBlocks(); if (PANEL_TEXTURE == null) { - PANEL_TEXTURE = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(IndustrialWires.MODID + ":blocks/control_panel"); + PANEL_TEXTURE = texMap.getAtlasSprite(IndustrialWires.MODID + ":blocks/control_panel"); } + final TextureAtlasSprite mainTex = texMap.getAtlasSprite(components.getTexture().toString()); List ret = new ArrayList<>(); Matrix4 m4 = components.getPanelTopTransform(); Matrix4 m4RotOnly = m4.copy(); @@ -105,33 +108,33 @@ public final class PanelUtils { //TOP rawOut.add(new RawQuad(new Vector3f(xMin, height0, zMin), new Vector3f(xMin, height1, zMax), new Vector3f(xMax, height1, zMax), new Vector3f(xMax, height0, zMin), - EnumFacing.UP, PANEL_TEXTURE, WHITE, null, new float[]{0, 0, uMaxX, uMaxZ}, -1)); + EnumFacing.UP, mainTex, WHITE, null, new float[]{0, 0, uMaxX, uMaxZ}, -1)); //BOTTOM rawOut.add(new RawQuad(new Vector3f(xMin, 0, zMin), new Vector3f(xMax, 0, zMin), new Vector3f(xMax, 0, zMax), new Vector3f(xMin, 0, zMax), - EnumFacing.DOWN, PANEL_TEXTURE, WHITE, null, UV_FULL, -1)); + EnumFacing.DOWN, mainTex, WHITE, null, UV_FULL, -1)); //LEFT rawOut.add(new RawQuad(new Vector3f(xMin, 0, zMin), new Vector3f(xMin, 0, zMax), new Vector3f(xMin, height1, zMax), new Vector3f(xMin, height0, zMin), - EnumFacing.UP, PANEL_TEXTURE, WHITE, null, new float[][]{ + EnumFacing.UP, mainTex, WHITE, null, new float[][]{ {0, 0}, {0, uMaxZ}, {vMax1, uMaxZ}, {vMax0, 0} }, -1)); //RIGHT rawOut.add(new RawQuad(new Vector3f(xMax, 0, zMin), new Vector3f(xMax, height0, zMin), new Vector3f(xMax, height1, zMax), new Vector3f(xMax, 0, zMax), - EnumFacing.UP, PANEL_TEXTURE, WHITE, null, new float[][]{ + EnumFacing.UP, mainTex, WHITE, null, new float[][]{ {0, 0}, {vMax0, 0}, {vMax1, uMaxZ}, {0, uMaxZ} }, -1)); //BACK rawOut.add(new RawQuad(new Vector3f(xMax, 0, zMin), new Vector3f(xMin, 0, zMin), new Vector3f(xMin, height0, zMin), new Vector3f(xMax, height0, zMin), - EnumFacing.UP, PANEL_TEXTURE, WHITE, null, new float[]{0, 0, vMax0, uMaxX}, -1)); + EnumFacing.UP, mainTex, WHITE, null, new float[]{0, 0, vMax0, uMaxX}, -1)); //FRONT rawOut.add(new RawQuad(new Vector3f(xMin, 0, zMax), new Vector3f(xMax, 0, zMax), new Vector3f(xMax, height1, zMax), new Vector3f(xMin, height1, zMax), - EnumFacing.UP, PANEL_TEXTURE, WHITE, null, new float[]{0, 0, vMax1, uMaxX}, -1)); + EnumFacing.UP, mainTex, WHITE, null, new float[]{0, 0, vMax1, uMaxX}, -1)); for (RawQuad bq : rawOut) { ret.add(ClientUtilsIW.bakeQuad(bq, baseTrans, baseNorm)); } diff --git a/src/main/java/malte0811/industrialwires/controlpanel/PropertyComponents.java b/src/main/java/malte0811/industrialwires/controlpanel/PropertyComponents.java index c4a3b94..030f555 100644 --- a/src/main/java/malte0811/industrialwires/controlpanel/PropertyComponents.java +++ b/src/main/java/malte0811/industrialwires/controlpanel/PropertyComponents.java @@ -16,10 +16,12 @@ package malte0811.industrialwires.controlpanel; import blusunrize.immersiveengineering.common.util.chickenbones.Matrix4; +import malte0811.industrialwires.IndustrialWires; import net.minecraft.block.Block; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; import net.minecraft.util.EnumFacing; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; @@ -62,6 +64,7 @@ public class PropertyComponents implements IUnlistedProperty