fix: legacy display rendering

This commit is contained in:
LordMZTE 2022-12-04 17:18:15 +01:00
parent 285094b2e0
commit 30f0c25502
Signed by: LordMZTE
GPG Key ID: B64802DC33A64FF6
9 changed files with 147 additions and 13 deletions

View File

@ -1,2 +1,4 @@
- we demultiblocked the transition plane
- transition plane doesn't collect items
- legacy controller doesn't correctly render energy bar
- legacy blocks aren't colorable

View File

@ -2,7 +2,6 @@ package appeng.block.legacy;
import java.util.EnumSet;
import appeng.block.AEBaseTileBlock;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
import appeng.tile.legacy.TileCraftingMonitor;
@ -12,7 +11,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockCraftMonitor extends AEBaseTileBlock {
public class BlockCraftMonitor extends BlockLegacyDisplay {
public BlockCraftMonitor() {
super(Material.iron);
this.setTileEntity(TileCraftingMonitor.class);

View File

@ -2,19 +2,17 @@ package appeng.block.legacy;
import java.util.EnumSet;
import appeng.block.AEBaseTileBlock;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
import appeng.tile.legacy.TileCraftTerminal;
import appeng.util.Platform;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockCraftTerminal extends AEBaseTileBlock {
public class BlockCraftTerminal extends BlockTerminal {
public BlockCraftTerminal() {
super(Material.iron);
super();
this.setTileEntity(TileCraftTerminal.class);
this.setFeature(EnumSet.of(AEFeature.Legacy));
}

View File

@ -0,0 +1,28 @@
package appeng.block.legacy;
import appeng.block.AEBaseBlock;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockLegacyDisplay;
import appeng.tile.AEBaseTile;
import appeng.tile.legacy.TileLegacyDisplay;
import net.minecraft.block.material.Material;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.IBlockAccess;
public class BlockLegacyDisplay extends AEBaseTileBlock {
public BlockLegacyDisplay(Material mat) {
super(mat);
}
@Override
protected BaseBlockRender<? extends AEBaseBlock, ? extends AEBaseTile> getRenderer() {
return new RenderBlockLegacyDisplay();
}
@Override
public int getLightValue(IBlockAccess world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
return ((TileLegacyDisplay) te).isDisplayPowered() ? 7 : 0;
}
}

View File

@ -2,7 +2,6 @@ package appeng.block.legacy;
import java.util.EnumSet;
import appeng.block.AEBaseTileBlock;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
import appeng.tile.legacy.TileTerminal;
@ -12,7 +11,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockTerminal extends AEBaseTileBlock {
public class BlockTerminal extends BlockLegacyDisplay {
public BlockTerminal() {
super(Material.iron);
this.setTileEntity(TileTerminal.class);

View File

@ -0,0 +1,45 @@
package appeng.client.render.blocks;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.tile.legacy.TileLegacyDisplay;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.world.IBlockAccess;
public class RenderBlockLegacyDisplay
extends BaseBlockRender<AEBaseTileBlock, TileLegacyDisplay> {
public RenderBlockLegacyDisplay() {
super(false, 20);
}
@Override
public boolean renderInWorld(
AEBaseTileBlock b, IBlockAccess world, int x, int y, int z, RenderBlocks renderer
) {
TileLegacyDisplay tile = (TileLegacyDisplay) world.getTileEntity(x, y, z);
renderer.setRenderBounds(0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
if (tile.isDisplayPowered()) {
//b.dontrender = tile.noScreen();
renderer.renderStandardBlock(b, x, y, z);
//b.dontrender = tile.screenOnly();
int bn = 15;
Tessellator.instance.setColorOpaque_F(1.0F, 1.0F, 1.0F);
Tessellator.instance.setBrightness(bn << 20 | bn << 4);
this.renderFace(
x,
y,
z,
b,
//b.getIcon(tile.getForward().ordinal(), tile.getBlockMetadata()),
b.getIcon(world, x, y, z, tile.getForward().ordinal()),
renderer,
tile.getForward()
);
} else {
renderer.renderStandardBlock(b, x, y, z);
}
return true;
}
}

View File

@ -1,5 +1,34 @@
package appeng.tile.legacy;
import appeng.api.storage.ITerminalHost;
import java.util.EnumSet;
public class TileCraftingMonitor extends TileTerminal {}
import appeng.api.networking.GridFlags;
import appeng.api.storage.IMEMonitor;
import appeng.api.storage.ITerminalHost;
import appeng.api.storage.data.IAEFluidStack;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.util.IConfigManager;
import net.minecraftforge.common.util.ForgeDirection;
public class TileCraftingMonitor extends TileLegacyDisplay implements ITerminalHost {
public TileCraftingMonitor() {
this.getProxy().setFlags(GridFlags.REQUIRE_CHANNEL);
this.getProxy().setIdlePowerUsage(0.5);
this.getProxy().setValidSides(EnumSet.allOf(ForgeDirection.class));
}
@Override
public IMEMonitor<IAEItemStack> getItemInventory() {
return null;
}
@Override
public IMEMonitor<IAEFluidStack> getFluidInventory() {
return null;
}
@Override
public IConfigManager getConfigManager() {
return null;
}
}

View File

@ -0,0 +1,34 @@
package appeng.tile.legacy;
import appeng.api.networking.events.MENetworkEventSubscribe;
import appeng.api.networking.events.MENetworkPowerStatusChange;
import appeng.tile.TileEvent;
import appeng.tile.events.TileEventType;
import appeng.tile.grid.AENetworkTile;
import io.netty.buffer.ByteBuf;
public class TileLegacyDisplay extends AENetworkTile {
private boolean displayPowered;
public boolean isDisplayPowered() {
return displayPowered;
}
@TileEvent(TileEventType.NETWORK_WRITE)
public void writeToStreamTileLegacyTerminal(ByteBuf data) {
data.writeBoolean(this.displayPowered);
}
@TileEvent(TileEventType.NETWORK_READ)
public void readFromStreamTileLegacyTerminal(ByteBuf data) {
this.displayPowered = data.readBoolean();
this.worldObj.func_147451_t(this.xCoord, this.yCoord, this.zCoord);
}
@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();
}
}

View File

@ -7,18 +7,18 @@ import appeng.api.config.SortDir;
import appeng.api.config.SortOrder;
import appeng.api.config.ViewItems;
import appeng.api.networking.GridFlags;
import appeng.api.storage.*;
import appeng.api.storage.IMEMonitor;
import appeng.api.storage.ITerminalHost;
import appeng.api.storage.data.IAEFluidStack;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.util.IConfigManager;
import appeng.me.GridAccessException;
import appeng.tile.grid.AENetworkTile;
import appeng.util.ConfigManager;
import appeng.util.IConfigManagerHost;
import net.minecraftforge.common.util.ForgeDirection;
public class TileTerminal
extends AENetworkTile implements ITerminalHost, IConfigManagerHost {
extends TileLegacyDisplay implements ITerminalHost, IConfigManagerHost {
private final IConfigManager cm = new ConfigManager(this);
public TileTerminal() {