feat: transition plane works a little better than before

ref: #2
This commit is contained in:
LordMZTE 2023-01-30 18:49:14 +01:00
parent 21615fb3d0
commit e7731f3fd7
Signed by: LordMZTE
GPG Key ID: B64802DC33A64FF6
6 changed files with 399 additions and 393 deletions

View File

@ -2,13 +2,20 @@ package appeng.block.legacy;
import java.util.EnumSet; import java.util.EnumSet;
import appeng.api.util.WorldCoord;
import appeng.block.AEBaseBlock;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockTransitionPlane;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.tile.AEBaseTile;
import appeng.tile.legacy.TileTransitionPlane; import appeng.tile.legacy.TileTransitionPlane;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
@ -20,6 +27,11 @@ public class BlockTransitionPlane extends AEBaseTileBlock {
this.setFeature(EnumSet.of(AEFeature.Legacy)); this.setFeature(EnumSet.of(AEFeature.Legacy));
} }
@Override
protected BaseBlockRender<? extends AEBaseBlock, ? extends AEBaseTile> getRenderer() {
return new RenderBlockTransitionPlane();
}
@Override @Override
public void onEntityCollidedWithBlock(World w, int x, int y, int z, Entity entitiy) { public void onEntityCollidedWithBlock(World w, int x, int y, int z, Entity entitiy) {
if (entitiy instanceof EntityItem) { if (entitiy instanceof EntityItem) {
@ -32,28 +44,28 @@ public class BlockTransitionPlane extends AEBaseTileBlock {
} }
@Override @Override
public void onNeighborBlockChange( public void onBlockPlacedBy(World w, int x, int y, int z, EntityLivingBase player, ItemStack is) {
World world, super.onBlockPlacedBy(w, x, y, z, player, is);
int x, this.calcMB(w, x, y, z);
int y,
int z,
Block neighbor
) {
TileEntity te = world.getTileEntity(x, y, z);
if (te instanceof TileTransitionPlane) {
((TileTransitionPlane)te).reqEat();
}
} }
//@Override @Override
//public IIcon getIcon(int side, int meta) { public void onPostBlockPlaced(World world, int x, int y, int z, int md) {
// if (side == 0) { super.onPostBlockPlaced(world, x, y, z, md);
// return AppEngTextureRegistry.Blocks.GenericBottom.get(); this.calcMB(world, x, y, z);
// } else if (side == 1) { }
// return AppEngTextureRegistry.Blocks.GenericTop.get();
// } else { @Override
// return side == 2 ? AppEngTextureRegistry.Blocks.BlockTransPlane.get() public void onNeighborBlockChange(World world, int x, int y, int z, Block neighbor) {
// : AppEngTextureRegistry.Blocks.GenericSide.get(); this.calcMB(world, x, y, z);
// } ((TileTransitionPlane) world.getTileEntity(x, y, z)).reqEat();
//} }
private void calcMB(World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if (te instanceof TileTransitionPlane) {
((TileTransitionPlane) te)
.calc.calculateMultiblock(world, new WorldCoord(x, y, z));
}
}
} }

View File

@ -0,0 +1,114 @@
package appeng.client.render.blocks;
import appeng.block.legacy.BlockTransitionPlane;
import appeng.client.render.BaseBlockRender;
import appeng.client.texture.ExtraBlockTextures;
import appeng.tile.legacy.TileTransitionPlane;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.util.IIcon;
import net.minecraftforge.common.util.ForgeDirection;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
public class RenderBlockTransitionPlane
extends BaseBlockRender<BlockTransitionPlane, TileTransitionPlane> {
@Override
public boolean hasTESR() {
return true;
}
@Override
public void renderTile(
BlockTransitionPlane block,
TileTransitionPlane tile,
Tessellator tess,
double x,
double y,
double z,
float f,
RenderBlocks renderer
) {
IIcon frontIcon = null;
if (!tile.getProxy().isPowered()) {
frontIcon = ExtraBlockTextures.BlockTransitionPlaneNoPower.getIcon();
} else if (!tile.getProxy().isActive()) {
frontIcon = ExtraBlockTextures.BlockTransitionPlaneOff.getIcon();
} else {
frontIcon = ExtraBlockTextures.BlockTransitionPlaneNormal.getIcon();
}
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture
);
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5);
ForgeDirection d = tile.getForward();
switch (d) {
case UP:
GL11.glScalef(1.0f, -1.0f, 1.0f);
GL11.glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
GL11.glRotatef((tile.getUp().ordinal() - 2) * 90.0F, 0, 0, 1);
break;
case DOWN:
GL11.glScalef(1.0f, -1.0f, 1.0f);
GL11.glRotatef(-90.0f, 1.0f, 0.0f, 0.0f);
GL11.glRotatef((tile.getUp().ordinal() - 2) * -90.0F, 0, 0, 1);
break;
case EAST:
GL11.glScalef(-1.0f, -1.0f, -1.0f);
GL11.glRotatef(-90.0f, 0.0f, 1.0f, 0.0f);
break;
case WEST:
GL11.glScalef(-1.0f, -1.0f, -1.0f);
GL11.glRotatef(90.0f, 0.0f, 1.0f, 0.0f);
break;
case NORTH:
GL11.glScalef(-1.0f, -1.0f, -1.0f);
break;
case SOUTH:
GL11.glScalef(-1.0f, -1.0f, -1.0f);
GL11.glRotatef(180.0f, 0.0f, 1.0f, 0.0f);
break;
default:
break;
}
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
switch (tile.renderMode) {
case INVALID:
GL11.glScaled(-0.75, -0.75, 1.0);
break;
case SINGLE:
GL11.glScaled(-0.9, -0.9, 1.0);
break;
default:
break;
}
tess.startDrawingQuads();
tess.addVertexWithUV(-0.5, 0.5, 0.51, frontIcon.getMinU(), frontIcon.getMaxV());
tess.addVertexWithUV(0.5, 0.5, 0.51, frontIcon.getMaxU(), frontIcon.getMaxV());
tess.addVertexWithUV(0.5, -0.5, 0.51, frontIcon.getMaxU(), frontIcon.getMinV());
tess.addVertexWithUV(-0.5, -0.5, 0.51, frontIcon.getMinU(), frontIcon.getMinV());
tess.draw();
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
GL11.glPopMatrix();
}
}

View File

@ -133,7 +133,11 @@ public enum ExtraBlockTextures {
BlockStorageMonitorFrontMatrix("BlockStorageMonitorFront_Matrix"), BlockStorageMonitorFrontMatrix("BlockStorageMonitorFront_Matrix"),
BlockAssemblerWallMerged("BlockAssemblerWallMerged"), BlockAssemblerWallMerged("BlockAssemblerWallMerged"),
BlockAssemblerHeatVentMerged("BlockAssemblerHeatVentMerged"); BlockAssemblerHeatVentMerged("BlockAssemblerHeatVentMerged"),
BlockTransitionPlaneNoPower("BlockTransitionPlaneNoPower"),
BlockTransitionPlaneNormal("BlockTransitionPlaneNormal"),
BlockTransitionPlaneOff("BlockTransitionPlaneOff");
private final String name; private final String name;
private IIcon IIcon; private IIcon IIcon;

View File

@ -0,0 +1,104 @@
package appeng.me.cluster.implementations;
import appeng.api.util.WorldCoord;
import appeng.me.cluster.IAECluster;
import appeng.me.cluster.MBCalculator;
import appeng.tile.legacy.TileTransitionPlane;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class TransitionPlaneCalculator extends MBCalculator {
public TileTransitionPlane ttp;
public TransitionPlaneCalculator(TileTransitionPlane ttp) {
super(ttp);
this.ttp = ttp;
}
@Override
public boolean checkMultiblockScale(WorldCoord min, WorldCoord max) {
return min.x == max.x || min.y == max.y || min.z == max.z;
}
@Override
public IAECluster createCluster(World w, WorldCoord min, WorldCoord max) {
return new TransitionPlaneCluster(min, max);
}
@Override
public boolean
verifyInternalStructure(World worldObj, WorldCoord min, WorldCoord max) {
for (int x = min.x; x < max.x; x++)
for (int y = min.y; y < max.y; y++)
for (int z = min.z; z < max.z; z++)
if (!this.isValidTile(worldObj.getTileEntity(x, y, z)))
return false;
return true;
}
@Override
public void disconnect() {
this.ttp.disconnect(true);
}
@Override
public void updateTiles(IAECluster c, World w, WorldCoord min, WorldCoord max) {
TransitionPlaneCluster tpc = (TransitionPlaneCluster) c;
for (int x = min.x; x <= max.x; x++) {
for (int y = min.y; y <= max.y; y++) {
for (int z = min.z; z <= max.z; z++) {
TileTransitionPlane ttp
= (TileTransitionPlane) w.getTileEntity(x, y, z);
ttp.updateStatus(tpc);
tpc.tiles.add(ttp);
}
}
}
}
@Override
public boolean isValidTile(TileEntity te) {
// Wrong tile
if (!(te instanceof TileTransitionPlane))
return false;
TileTransitionPlane ottp = (TileTransitionPlane) te;
if (this.ttp.getForward() == ForgeDirection.UNKNOWN
|| ottp.getForward() == ForgeDirection.UNKNOWN)
throw new IllegalStateException("alec");
// facing in the wrong direction
if (this.ttp.getForward() != ottp.getForward())
return false;
// not aligned in the Z-axis
boolean zaligned = false;
switch (this.ttp.getForward()) {
case DOWN:
case UP:
zaligned = this.ttp.yCoord == ottp.yCoord;
break;
case NORTH:
case SOUTH:
zaligned = this.ttp.zCoord == ottp.zCoord;
break;
case WEST:
case EAST:
zaligned = this.ttp.xCoord == ottp.xCoord;
break;
case UNKNOWN:
throw new IllegalStateException("alec");
}
if (!zaligned)
return false;
return true;
}
}

View File

@ -0,0 +1,45 @@
package appeng.me.cluster.implementations;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import appeng.api.networking.IGridHost;
import appeng.api.util.WorldCoord;
import appeng.me.cluster.IAECluster;
import appeng.tile.legacy.TileTransitionPlane;
public class TransitionPlaneCluster implements IAECluster {
public WorldCoord min;
public WorldCoord max;
public Set<TileTransitionPlane> tiles = new HashSet<>();
public boolean isDestroyed = false;
public TransitionPlaneCluster(WorldCoord min, WorldCoord max) {
this.min = min;
this.max = max;
}
@Override
public void updateStatus(boolean updateGrid) {}
@Override
public void destroy() {
if (this.isDestroyed)
return;
this.isDestroyed = true;
for (TileTransitionPlane pl : this.tiles) {
pl.updateStatus(null);
}
}
@SuppressWarnings("unchecked")
@Override
public Iterator<IGridHost> getTiles() {
return (Iterator<IGridHost>)(Object)this.tiles.iterator();
}
}

View File

@ -15,14 +15,22 @@ import appeng.api.networking.security.BaseActionSource;
import appeng.api.networking.security.MachineSource; import appeng.api.networking.security.MachineSource;
import appeng.api.networking.storage.IStorageGrid; import appeng.api.networking.storage.IStorageGrid;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
import appeng.api.util.WorldCoord;
import appeng.core.sync.packets.PacketTransitionEffect; import appeng.core.sync.packets.PacketTransitionEffect;
import appeng.me.GridAccessException; import appeng.me.GridAccessException;
import appeng.me.cluster.IAECluster;
import appeng.me.cluster.IAEMultiBlock;
import appeng.me.cluster.implementations.TransitionPlaneCalculator;
import appeng.me.cluster.implementations.TransitionPlaneCluster;
import appeng.me.helpers.AENetworkProxy;
import appeng.me.helpers.AENetworkProxyMultiblock;
import appeng.server.ServerHelper; import appeng.server.ServerHelper;
import appeng.tile.TileEvent; import appeng.tile.TileEvent;
import appeng.tile.events.TileEventType; import appeng.tile.events.TileEventType;
import appeng.tile.grid.AENetworkTile; import appeng.tile.grid.AENetworkTile;
import appeng.util.Platform; import appeng.util.Platform;
import appeng.util.item.AEItemStack; import appeng.util.item.AEItemStack;
import io.netty.buffer.ByteBuf;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
@ -33,7 +41,7 @@ import net.minecraft.world.WorldServer;
import net.minecraftforge.common.util.FakePlayerFactory; import net.minecraftforge.common.util.FakePlayerFactory;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileTransitionPlane extends AENetworkTile { public class TileTransitionPlane extends AENetworkTile implements IAEMultiBlock {
List<IAEItemStack> buffer = new ArrayList<>(); List<IAEItemStack> buffer = new ArrayList<>();
int delay = 0; int delay = 0;
int trys = 0; int trys = 0;
@ -41,14 +49,58 @@ public class TileTransitionPlane extends AENetworkTile {
static Set<Block> unbreakables = new HashSet<>(); static Set<Block> unbreakables = new HashSet<>();
private final BaseActionSource mySrc = new MachineSource(this); private final BaseActionSource mySrc = new MachineSource(this);
public RenderMode renderMode = RenderMode.INVALID;
public TransitionPlaneCluster cluster;
public TransitionPlaneCalculator calc = new TransitionPlaneCalculator(this);
public TileTransitionPlane() { public TileTransitionPlane() {
// TODO: WTF // TODO: WTF
//super.hasPower = false; //super.hasPower = false;
this.getProxy().setValidSides(EnumSet.allOf(ForgeDirection.class)); this.getProxy().setValidSides(EnumSet.allOf(ForgeDirection.class));
this.getProxy().setFlags(GridFlags.REQUIRE_CHANNEL); this.getProxy().setFlags(GridFlags.REQUIRE_CHANNEL, GridFlags.MULTIBLOCK);
this.getProxy().setIdlePowerUsage(1.0); this.getProxy().setIdlePowerUsage(1.0);
} }
@Override
protected AENetworkProxy createProxy() {
return new AENetworkProxyMultiblock(
this, "proxy", this.getItemFromTile(this), true
);
}
@Override
public boolean requiresTESR() {
return true;
}
@Override
public void invalidate() {
this.disconnect(false);
super.invalidate();
}
@Override
public void onChunkUnload() {
this.disconnect(false);
super.onChunkUnload();
}
@Override
public void onReady() {
super.onReady();
this.calc.calculateMultiblock(this.worldObj, this.getLocation());
}
public void updateStatus(TransitionPlaneCluster c) {
this.cluster = c;
this.getProxy().setValidSides(
c == null ? EnumSet.noneOf(ForgeDirection.class)
: EnumSet.allOf(ForgeDirection.class)
);
this.markForUpdate();
}
// TODO: WTF // TODO: WTF
//public void setOrientationBySide( //public void setOrientationBySide(
// EntityPlayer player, int side, float hitX, float hitY, float hitZ // EntityPlayer player, int side, float hitX, float hitY, float hitZ
@ -317,16 +369,6 @@ public class TileTransitionPlane extends AENetworkTile {
// this.reqEat(); // this.reqEat();
//} //}
// TODO: multiblock
//boolean linesUp(int x, int y, int z) {
// TileEntity te = this.worldObj.getTileEntity(x, y, z);
// if (te instanceof TileTransitionPlane) {
// return ((TileTransitionPlane) te).getForward() == this.getForward();
// } else {
// return false;
// }
//}
// TODO: WTF // TODO: WTF
//public void placedBy(EntityLivingBase entityliving) { //public void placedBy(EntityLivingBase entityliving) {
// byte rotation = (byte // byte rotation = (byte
@ -364,9 +406,8 @@ public class TileTransitionPlane extends AENetworkTile {
// return this.getForward() == side ? frontFace : this.defTextures(side); // return this.getForward() == side ? frontFace : this.defTextures(side);
//} //}
@Override @TileEvent(TileEventType.WORLD_NBT_WRITE)
public void writeToNBT(NBTTagCompound par1nbtTagCompound) { public void worldNbtWriteTileTransitionPlane(NBTTagCompound nbt) {
super.writeToNBT(par1nbtTagCompound);
NBTTagList items = new NBTTagList(); NBTTagList items = new NBTTagList();
for (int x = 0; x < this.buffer.size(); ++x) { for (int x = 0; x < this.buffer.size(); ++x) {
@ -375,374 +416,54 @@ public class TileTransitionPlane extends AENetworkTile {
items.appendTag(item); items.appendTag(item);
} }
par1nbtTagCompound.setTag("items", items); nbt.setTag("items", items);
} }
@Override @TileEvent(TileEventType.WORLD_NBT_READ)
public void readFromNBT(NBTTagCompound par1nbtTagCompound) { public void worldNbtReadTileTransitionPlane(NBTTagCompound nbt) {
super.readFromNBT(par1nbtTagCompound); NBTTagList items = nbt.getTagList("items", 10);
NBTTagList items = par1nbtTagCompound.getTagList("items", 10);
for (int x = 0; x < items.tagCount(); ++x) { for (int x = 0; x < items.tagCount(); ++x) {
this.buffer.add(AEItemStack.loadItemStackFromNBT(items.getCompoundTagAt(x))); this.buffer.add(AEItemStack.loadItemStackFromNBT(items.getCompoundTagAt(x)));
} }
} }
// TODO: WTF @TileEvent(TileEventType.NETWORK_WRITE)
//@SideOnly(Side.CLIENT) public void writeToStreamTileTransitionPlane(ByteBuf buf) {
//public void renderTexturedPlate( if (this.cluster == null) {
// float[] offset, buf.writeByte(RenderMode.INVALID.ordinal());
// float[] Left, } else if (this.cluster.tiles.size() == 1) {
// float[] Up, buf.writeByte(RenderMode.SINGLE.ordinal());
// float[] texOffset, } else {
// float[] texDiff, buf.writeByte(RenderMode.MULTI.ordinal());
// Icon icon, }
// int lightX, }
// int lightY,
// int lightZ,
// boolean rev
//) {
// Tessellator tess = Tessellator.instance;
// float[] p1 = new float[5];
// float[] p2 = new float[5];
// float[] p3 = new float[5];
// float[] p4 = new float[5];
// p1[0] = offset[0];
// p1[1] = offset[1];
// p1[2] = offset[2];
// p1[3] = icon.getInterpolatedU((double) texOffset[0]);
// p1[4] = icon.getInterpolatedV((double) texOffset[1]);
// p2[0] = offset[0] + Left[0];
// p2[1] = offset[1] + Left[1];
// p2[2] = offset[2] + Left[2];
// p2[3] = icon.getInterpolatedU((double) (texOffset[0] + texDiff[0]));
// p2[4] = icon.getInterpolatedV((double) texOffset[1]);
// p3[0] = offset[0] + Left[0] + Up[0];
// p3[1] = offset[1] + Left[1] + Up[1];
// p3[2] = offset[2] + Left[2] + Up[2];
// p3[3] = icon.getInterpolatedU((double) (texOffset[0] + texDiff[0]));
// p3[4] = icon.getInterpolatedV((double) (texOffset[1] + texDiff[1]));
// p4[0] = offset[0] + Up[0];
// p4[1] = offset[1] + Up[1];
// p4[2] = offset[2] + Up[2];
// p4[3] = icon.getInterpolatedU((double) texOffset[0]);
// p4[4] = icon.getInterpolatedV((double) (texOffset[1] + texDiff[1]));
// tess.setBrightness(
// this.getBlockType().getMixedBrightnessForBlock(this.worldObj, lightX,
// lightY, lightZ)
// );
// if (rev) {
// tess.addVertexWithUV(
// (double) p4[0],
// (double) p4[1],
// (double) p4[2],
// (double) p4[3],
// (double) p4[4]
// );
// tess.addVertexWithUV(
// (double) p3[0],
// (double) p3[1],
// (double) p3[2],
// (double) p3[3],
// (double) p3[4]
// );
// tess.addVertexWithUV(
// (double) p2[0],
// (double) p2[1],
// (double) p2[2],
// (double) p2[3],
// (double) p2[4]
// );
// tess.addVertexWithUV(
// (double) p1[0],
// (double) p1[1],
// (double) p1[2],
// (double) p1[3],
// (double) p1[4]
// );
// } else {
// tess.addVertexWithUV(
// (double) p1[0],
// (double) p1[1],
// (double) p1[2],
// (double) p1[3],
// (double) p1[4]
// );
// tess.addVertexWithUV(
// (double) p2[0],
// (double) p2[1],
// (double) p2[2],
// (double) p2[3],
// (double) p2[4]
// );
// tess.addVertexWithUV(
// (double) p3[0],
// (double) p3[1],
// (double) p3[2],
// (double) p3[3],
// (double) p3[4]
// );
// tess.addVertexWithUV(
// (double) p4[0],
// (double) p4[1],
// (double) p4[2],
// (double) p4[3],
// (double) p4[4]
// );
// }
//}
// TODO: WTF @TileEvent(TileEventType.NETWORK_READ)
//public float[] p(float a, float b, float c) { public void readFromStreamTileTransitionPlane(ByteBuf buf) {
// float[] t = new float[] { a, b, c }; this.renderMode = RenderMode.values()[buf.readByte()];
// return t;
//}
//public float[] t(float a, float b) { this.worldObj.markBlockRangeForRenderUpdate(
// float[] t = new float[] { a, b }; this.xCoord, this.yCoord, this.zCoord, this.xCoord, this.yCoord, this.zCoord
// return t; );
//} }
// TODO: WTF @Override
//@SideOnly(Side.CLIENT) public void disconnect(boolean b) {
//public boolean renderWorldBlock( if (this.cluster != null)
// IBlockAccess world, this.cluster.destroy();
// int x, this.updateStatus(null);
// int y, }
// int z,
// Block block,
// int modelId,
// RenderBlocks renderer
//) {
// renderer.setRenderBounds(
// this.getForward() == ForgeDirection.WEST ? 9.999999747378752E-5 : 0.0,
// this.getForward() == ForgeDirection.DOWN ? 9.999999747378752E-5 : 0.0,
// this.getForward() == ForgeDirection.NORTH ? 9.999999747378752E-5 : 0.0,
// this.getForward() == ForgeDirection.EAST ? 0.9998999834060669 : 1.0,
// this.getForward() == ForgeDirection.UP ? 0.9998999834060669 : 1.0,
// this.getForward() == ForgeDirection.SOUTH ? 0.9998999834060669 : 1.0
// );
// renderer.uvRotateTop = 0;
// renderer.uvRotateBottom = 3;
// renderer.uvRotateEast = 1;
// renderer.uvRotateNorth = 2;
// renderer.uvRotateSouth = 1;
// renderer.uvRotateWest = 2;
// renderer.renderStandardBlock(block, x, y, z);
// renderer.uvRotateBottom = renderer.uvRotateEast = renderer.uvRotateNorth
// = renderer.uvRotateSouth = renderer.uvRotateTop = renderer.uvRotateWest
// = 0;
// renderer.setRenderBounds(0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
// IIcon icon = AppEngTextureRegistry.Blocks.BlockFrame.get();
// float offsetPerPixel = 0.0625F;
// boolean rev;
// float zX;
// if (this.getForward() == ForgeDirection.NORTH
// || this.getForward() == ForgeDirection.SOUTH) {
// rev = this.getForward() == ForgeDirection.NORTH;
// zX = 1.0F;
// if (rev) {
// zX = 0.0F;
// }
// if (!this.linesUp(x - 1, y, z)) { @Override
// this.renderTexturedPlate( public IAECluster getCluster() {
// this.p((float) x, (float) y, (float) z + zX), return this.cluster;
// this.p(offsetPerPixel, 0.0F, 0.0F), }
// this.p(0.0F, 1.0F, 0.0F),
// this.t(0.0F, 0.0F),
// this.t(1.0F, 16.0F),
// icon,
// x,
// y,
// z + (rev ? -1 : 1),
// rev
// );
// }
// if (!this.linesUp(x + 1, y, z)) { @Override
// this.renderTexturedPlate( public boolean isValid() {
// this.p((float) x + 15.0F * offsetPerPixel, (float) y, (float) z + return this.cluster != null;
// zX), this.p(offsetPerPixel, 0.0F, 0.0F), this.p(0.0F, 1.0F, 0.0F), }
// this.t(15.0F, 0.0F),
// this.t(1.0F, 16.0F),
// icon,
// x,
// y,
// z + (rev ? -1 : 1),
// rev
// );
// }
// if (!this.linesUp(x, y - 1, z)) {
// this.renderTexturedPlate(
// this.p((float) x, (float) y, (float) z + zX),
// this.p(1.0F, 0.0F, 0.0F),
// this.p(0.0F, offsetPerPixel, 0.0F),
// this.t(0.0F, 0.0F),
// this.t(16.0F, 1.0F),
// icon,
// x,
// y,
// z + (rev ? -1 : 1),
// rev
// );
// }
// if (!this.linesUp(x, y + 1, z)) {
// this.renderTexturedPlate(
// this.p((float) x, (float) y + 15.0F * offsetPerPixel, (float) z +
// zX), this.p(1.0F, 0.0F, 0.0F), this.p(0.0F, offsetPerPixel, 0.0F),
// this.t(0.0F, 15.0F),
// this.t(16.0F, 1.0F),
// icon,
// x,
// y,
// z + (rev ? -1 : 1),
// rev
// );
// }
// }
// if (this.getForward() == ForgeDirection.EAST
// || this.getForward() == ForgeDirection.WEST) {
// rev = this.getForward() == ForgeDirection.EAST;
// zX = 0.0F;
// if (rev) {
// zX = 1.0F;
// }
// if (!this.linesUp(x, y, z - 1)) {
// this.renderTexturedPlate(
// this.p((float) x + zX, (float) y, (float) z),
// this.p(0.0F, 0.0F, offsetPerPixel),
// this.p(0.0F, 1.0F, 0.0F),
// this.t(0.0F, 0.0F),
// this.t(1.0F, 16.0F),
// icon,
// x + (rev ? 1 : -1),
// y,
// z,
// rev
// );
// }
// if (!this.linesUp(x, y, z + 1)) {
// this.renderTexturedPlate(
// this.p((float) x + zX, (float) y, (float) z + 15.0F *
// offsetPerPixel), this.p(0.0F, 0.0F, offsetPerPixel),
// this.p(0.0F, 1.0F, 0.0F),
// this.t(15.0F, 0.0F),
// this.t(1.0F, 16.0F),
// icon,
// x + (rev ? 1 : -1),
// y,
// z,
// rev
// );
// }
// if (!this.linesUp(x, y - 1, z)) {
// this.renderTexturedPlate(
// this.p((float) x + zX, (float) y, (float) z),
// this.p(0.0F, 0.0F, 1.0F),
// this.p(0.0F, offsetPerPixel, 0.0F),
// this.t(0.0F, 0.0F),
// this.t(16.0F, 1.0F),
// icon,
// x + (rev ? 1 : -1),
// y,
// z,
// rev
// );
// }
// if (!this.linesUp(x, y + 1, z)) {
// this.renderTexturedPlate(
// this.p((float) x + zX, (float) y + 15.0F * offsetPerPixel, (float)
// z), this.p(0.0F, 0.0F, 1.0F), this.p(0.0F, offsetPerPixel, 0.0F),
// this.t(0.0F, 15.0F),
// this.t(16.0F, 1.0F),
// icon,
// x + (rev ? 1 : -1),
// y,
// z,
// rev
// );
// }
// }
// if (this.getForward() == ForgeDirection.UP
// || this.getForward() == ForgeDirection.DOWN) {
// rev = this.getForward() == ForgeDirection.UP;
// zX = 1.0F;
// if (!rev) {
// zX = 0.0F;
// }
// if (!this.linesUp(x - 1, y, z)) {
// this.renderTexturedPlate(
// this.p((float) x, (float) y + zX, (float) z),
// this.p(offsetPerPixel, 0.0F, 0.0F),
// this.p(0.0F, 0.0F, 1.0F),
// this.t(0.0F, 0.0F),
// this.t(1.0F, 16.0F),
// icon,
// x,
// y + (rev ? 1 : -1),
// z,
// rev
// );
// }
// if (!this.linesUp(x + 1, y, z)) {
// this.renderTexturedPlate(
// this.p((float) x + 15.0F * offsetPerPixel, (float) y + zX, (float)
// z), this.p(offsetPerPixel, 0.0F, 0.0F), this.p(0.0F, 0.0F, 1.0F),
// this.t(15.0F, 0.0F),
// this.t(1.0F, 16.0F),
// icon,
// x,
// y + (rev ? 1 : -1),
// z,
// rev
// );
// }
// if (!this.linesUp(x, y, z - 1)) {
// this.renderTexturedPlate(
// this.p((float) x, (float) y + zX, (float) z),
// this.p(1.0F, 0.0F, 0.0F),
// this.p(0.0F, 0.0F, offsetPerPixel),
// this.t(0.0F, 0.0F),
// this.t(16.0F, 1.0F),
// icon,
// x,
// y + (rev ? 1 : -1),
// z,
// rev
// );
// }
// if (!this.linesUp(x, y, z + 1)) {
// this.renderTexturedPlate(
// this.p((float) x, (float) y + zX, (float) z + 15.0F *
// offsetPerPixel), this.p(1.0F, 0.0F, 0.0F), this.p(0.0F, 0.0F,
// offsetPerPixel), this.t(0.0F, 15.0F), this.t(16.0F, 1.0F), icon, x,
// y + (rev ? 1 : -1),
// z,
// rev
// );
// }
// }
// return true;
//}
// TODO: WTF
//public boolean isBlockNormalCube() {
// return true;
//}
//public boolean handleTilePacket(DataInputStream stream) throws IOException { //public boolean handleTilePacket(DataInputStream stream) throws IOException {
// ForgeDirection oldOrientation = this.getForward(); // ForgeDirection oldOrientation = this.getForward();
@ -824,4 +545,10 @@ public class TileTransitionPlane extends AENetworkTile {
// new GridTileConnectivityEvent(this, this.getWorld(), this.getLocation()) // new GridTileConnectivityEvent(this, this.getWorld(), this.getLocation())
// ); // );
//} //}
public static enum RenderMode {
INVALID,
SINGLE,
MULTI;
}
} }