From 21615fb3d05d859176e3c3bb9038892df00c2e54 Mon Sep 17 00:00:00 2001 From: Timo Ley Date: Mon, 30 Jan 2023 14:23:46 +0100 Subject: [PATCH] feat: base implementation for colors reference issue: #3 --- .../appeng/tile/legacy/TileLegacyDisplay.java | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/main/java/appeng/tile/legacy/TileLegacyDisplay.java b/src/main/java/appeng/tile/legacy/TileLegacyDisplay.java index 01bef81f..15582fb7 100644 --- a/src/main/java/appeng/tile/legacy/TileLegacyDisplay.java +++ b/src/main/java/appeng/tile/legacy/TileLegacyDisplay.java @@ -1,14 +1,20 @@ package appeng.tile.legacy; +import appeng.api.implementations.tiles.IColorableTile; import appeng.api.networking.events.MENetworkEventSubscribe; import appeng.api.networking.events.MENetworkPowerStatusChange; +import appeng.api.util.AEColor; import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkTile; import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.ForgeDirection; -public class TileLegacyDisplay extends AENetworkTile { +public class TileLegacyDisplay extends AENetworkTile implements IColorableTile { private boolean displayPowered; + protected AEColor paintedColor = AEColor.Transparent; public boolean isDisplayPowered() { return displayPowered; @@ -17,21 +23,52 @@ public class TileLegacyDisplay extends AENetworkTile { @TileEvent(TileEventType.NETWORK_WRITE) public void writeToStreamTileLegacyDisplay(ByteBuf data) { data.writeBoolean(this.displayPowered); + data.writeByte(this.paintedColor.ordinal()); } @TileEvent(TileEventType.NETWORK_READ) public void readFromStreamTileLegacyDisplay(ByteBuf data) { this.displayPowered = data.readBoolean(); + this.paintedColor = AEColor.values()[data.readByte()]; this.worldObj.func_147451_t(this.xCoord, this.yCoord, this.zCoord); this.worldObj.markBlockRangeForRenderUpdate( this.xCoord, this.yCoord, this.zCoord, this.xCoord, this.yCoord, this.zCoord ); } + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBTTileLegacyDisplay(NBTTagCompound nbt) { + nbt.setByte("color", (byte)this.paintedColor.ordinal()); + } + + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBTTileLegacyDisplay(NBTTagCompound nbt) { + if (nbt.hasKey("color")) { + this.paintedColor = AEColor.values()[nbt.getByte("color")]; + } + } + @MENetworkEventSubscribe public void powerUpdate(final MENetworkPowerStatusChange changed) { this.displayPowered = this.getProxy().isPowered(); this.worldObj.func_147451_t(this.xCoord, this.yCoord, this.zCoord); this.markForUpdate(); } + + @Override + public AEColor getColor() { + return this.paintedColor; + } + + @Override + public boolean recolourBlock(ForgeDirection side, AEColor newPaintedColor, EntityPlayer who) { + if (this.paintedColor == newPaintedColor) { + return false; + } + + this.paintedColor = newPaintedColor; + this.markDirty(); + this.markForUpdate(); + return true; + } }