WHERE TUBE

This commit is contained in:
Bob 2025-04-03 21:51:56 +02:00
parent 8ed0411a27
commit c8ebf180ab
17 changed files with 321 additions and 84 deletions

View File

@ -1,20 +1,131 @@
package com.hbm.blocks.network; package com.hbm.blocks.network;
import com.hbm.tileentity.network.TileEntityPneumoTube; import java.util.ArrayList;
import java.util.List;
import com.hbm.lib.Library;
import com.hbm.lib.RefStrings;
import com.hbm.tileentity.network.TileEntityPneumoTube;
import com.hbm.util.Compat;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class PneumoTube extends BlockContainer { public class PneumoTube extends BlockContainer {
@SideOnly(Side.CLIENT) public IIcon iconIn;
@SideOnly(Side.CLIENT) public IIcon iconOut;
@SideOnly(Side.CLIENT) public IIcon iconConnector;
public boolean[] renderSides = new boolean[] {true, true, true, true, true, true};
public PneumoTube() { public PneumoTube() {
super(Material.iron); super(Material.iron);
} }
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
@Override public int getRenderType() { return renderID; }
@Override public boolean isOpaqueCube() { return false; }
@Override public boolean renderAsNormalBlock() { return false; }
@Override @Override
public TileEntity createNewTileEntity(World world, int meta) { public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityPneumoTube(); return new TileEntityPneumoTube();
} }
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister reg) {
super.registerBlockIcons(reg);
iconIn = reg.registerIcon(RefStrings.MODID + ":pneumatic_tube_in");
iconOut = reg.registerIcon(RefStrings.MODID + ":pneumatic_tube_out");
iconConnector = reg.registerIcon(RefStrings.MODID + ":pneumatic_tube_connector");
}
@Override
@SideOnly(Side.CLIENT)
public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) {
return renderSides[side % 6];
}
public void resetRenderSides() {
for(int i = 0; i < 6; i++) renderSides[i] = true;
}
@Override
public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB entityBounding, List list, Entity entity) {
List<AxisAlignedBB> bbs = new ArrayList();
double lower = 0.3125D;
double upper = 0.6875D;
bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + lower, x + upper, y + upper, z + upper));
if(canConnectTo(world, x, y, z, Library.POS_X)) bbs.add(AxisAlignedBB.getBoundingBox(x + upper, y + lower, z + lower, x + 1, y + upper, z + upper));
if(canConnectTo(world, x, y, z, Library.NEG_X)) bbs.add(AxisAlignedBB.getBoundingBox(x, y + lower, z + lower, x + lower, y + upper, z + upper));
if(canConnectTo(world, x, y, z, Library.POS_Y)) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + upper, z + lower, x + upper, y + 1, z + upper));
if(canConnectTo(world, x, y, z, Library.NEG_Y)) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y, z + lower, x + upper, y + lower, z + upper));
if(canConnectTo(world, x, y, z, Library.POS_Z)) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + upper, x + upper, y + upper, z + 1));
if(canConnectTo(world, x, y, z, Library.NEG_Z)) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z, x + upper, y + upper, z + lower));
for(AxisAlignedBB bb : bbs) {
if(entityBounding.intersectsWith(bb)) {
list.add(bb);
}
}
}
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
setBlockBoundsBasedOnState(world, x, y, z);
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
}
@Override
@SideOnly(Side.CLIENT)
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
setBlockBoundsBasedOnState(world, x, y, z);
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
}
@Override
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
float lower = 0.3125F;
float upper = 0.6875F;
boolean nX = canConnectTo(world, x, y, z, Library.NEG_X);
boolean pX = canConnectTo(world, x, y, z, Library.POS_X);
boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y);
boolean pY = canConnectTo(world, x, y, z, Library.POS_Y);
boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z);
boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z);
this.setBlockBounds(
nX ? 0F : lower,
nY ? 0F : lower,
nZ ? 0F : lower,
pX ? 1F : upper,
pY ? 1F : upper,
pZ ? 1F : upper);
}
public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir) {
TileEntity tile = world instanceof World ? Compat.getTileStandard((World) world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) : world.getTileEntity(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
return tile instanceof TileEntityPneumoTube;
}
} }

View File

@ -37,6 +37,7 @@ public class Fluids {
public static final Gson gson = new Gson(); public static final Gson gson = new Gson();
public static FluidType NONE; public static FluidType NONE;
public static FluidType AIR;
public static FluidType WATER; public static FluidType WATER;
public static FluidType STEAM; public static FluidType STEAM;
public static FluidType HOTSTEAM; public static FluidType HOTSTEAM;
@ -398,7 +399,8 @@ public class Fluids {
LYE = new FluidType("LYE", 0xFFECCC, 3, 0, 1, EnumSymbol.ACID).addTraits(new FT_Corrosive(40), LIQUID); LYE = new FluidType("LYE", 0xFFECCC, 3, 0, 1, EnumSymbol.ACID).addTraits(new FT_Corrosive(40), LIQUID);
SODIUM_ALUMINATE = new FluidType("SODIUM_ALUMINATE", 0xFFD191, 3, 0, 1, EnumSymbol.ACID).addTraits(new FT_Corrosive(30), LIQUID); SODIUM_ALUMINATE = new FluidType("SODIUM_ALUMINATE", 0xFFD191, 3, 0, 1, EnumSymbol.ACID).addTraits(new FT_Corrosive(30), LIQUID);
BAUXITE_SOLUTION = new FluidType("BAUXITE_SOLUTION", 0xE2560F, 3, 0, 3, EnumSymbol.ACID).addTraits(new FT_Corrosive(40), LIQUID, VISCOUS); BAUXITE_SOLUTION = new FluidType("BAUXITE_SOLUTION", 0xE2560F, 3, 0, 3, EnumSymbol.ACID).addTraits(new FT_Corrosive(40), LIQUID, VISCOUS);
ALUMINA = new FluidType(150,"ALUMINA", 0xDDFFFF, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); ALUMINA = new FluidType("ALUMINA", 0xDDFFFF, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID);
AIR = new FluidType(151, "AIR", 0xE7EAEB, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS);
// ^ ^ ^ ^ ^ ^ ^ ^ // ^ ^ ^ ^ ^ ^ ^ ^
//ADD NEW FLUIDS HERE //ADD NEW FLUIDS HERE
@ -414,6 +416,7 @@ public class Fluids {
//null //null
metaOrder.add(NONE); metaOrder.add(NONE);
//vanilla //vanilla
metaOrder.add(AIR);
metaOrder.add(WATER); metaOrder.add(WATER);
metaOrder.add(HEAVYWATER); metaOrder.add(HEAVYWATER);
metaOrder.add(HEAVYWATER_HOT); metaOrder.add(HEAVYWATER_HOT);

View File

@ -816,6 +816,7 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerBlockHandler(new RenderCRT()); RenderingRegistry.registerBlockHandler(new RenderCRT());
RenderingRegistry.registerBlockHandler(new RenderToaster()); RenderingRegistry.registerBlockHandler(new RenderToaster());
RenderingRegistry.registerBlockHandler(new RenderPartitioner()); RenderingRegistry.registerBlockHandler(new RenderPartitioner());
RenderingRegistry.registerBlockHandler(new RenderPneumoTube());
RenderingRegistry.registerBlockHandler(new RenderFoundryBasin()); RenderingRegistry.registerBlockHandler(new RenderFoundryBasin());
RenderingRegistry.registerBlockHandler(new RenderFoundryMold()); RenderingRegistry.registerBlockHandler(new RenderFoundryMold());

View File

@ -0,0 +1,108 @@
package com.hbm.render.block;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.network.PneumoTube;
import com.hbm.lib.Library;
import com.hbm.render.util.RenderBlocksNT;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.world.IBlockAccess;
public class RenderPneumoTube implements ISimpleBlockRenderingHandler {
@Override
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
Tessellator tessellator = Tessellator.instance;
PneumoTube duct = (PneumoTube) block;
double lower = 0.3125D;
double upper = 0.6875D;
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
renderer.setRenderBounds(lower, lower, 0, upper, upper, 1);
tessellator.startDrawingQuads();
tessellator.setNormal(0F, 1F, 0F); renderer.renderFaceYPos(block, 0, 0, 0, duct.getIcon(0, 0));
tessellator.setNormal(0F, -1F, 0F); renderer.renderFaceYNeg(block, 0, 0, 0, duct.getIcon(0, 0));
tessellator.setNormal(1F, 0F, 0F); renderer.renderFaceXPos(block, 0, 0, 0, duct.getIcon(0, 0));
tessellator.setNormal(-1F, 0F, 0F); renderer.renderFaceXNeg(block, 0, 0, 0, duct.getIcon(0, 0));
tessellator.setNormal(0F, 0F, 1F); renderer.renderFaceZPos(block, 0, 0, 0, duct.iconConnector);
tessellator.setNormal(0F, 0F, -1F); renderer.renderFaceZNeg(block, 0, 0, 0, duct.iconConnector);
tessellator.draw();
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
renderer = RenderBlocksNT.INSTANCE.setWorld(world);
Tessellator tessellator = Tessellator.instance;
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
PneumoTube duct = (PneumoTube) block;
boolean pX = duct.canConnectTo(world, x, y, z, Library.POS_X);
boolean nX = duct.canConnectTo(world, x, y, z, Library.NEG_X);
boolean pY = duct.canConnectTo(world, x, y, z, Library.POS_Y);
boolean nY = duct.canConnectTo(world, x, y, z, Library.NEG_Y);
boolean pZ = duct.canConnectTo(world, x, y, z, Library.POS_Z);
boolean nZ = duct.canConnectTo(world, x, y, z, Library.NEG_Z);
int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0);
double lower = 0.3125D;
double upper = 0.6875D;
//Straight along X
if(mask == 0b110000) {
renderer.setRenderBounds(0.0D, lower, lower, 1.0D, upper, upper);
duct.renderSides[4] = false;
duct.renderSides[5] = false;
renderer.renderStandardBlock(block, x, y, z);
duct.resetRenderSides();
// Straight along Z
} else if(mask == 0b000011) {
renderer.setRenderBounds(lower, lower, 0.0D, upper, upper, 1.0D);
duct.renderSides[2] = false;
duct.renderSides[3] = false;
renderer.renderStandardBlock(block, x, y, z);
duct.resetRenderSides();
//Straight along Y
} else if(mask == 0b001100) {
renderer.setRenderBounds(lower, 0.0D, lower, upper, 1.0D, upper);
duct.renderSides[0] = false;
duct.renderSides[1] = false;
renderer.renderStandardBlock(block, x, y, z);
duct.resetRenderSides();
} else {
renderer.setRenderBounds(lower, lower, lower, upper, upper, upper);
renderer.renderStandardBlock(block, x, y, z);
if(pX) { duct.renderSides[5] = false; renderer.setRenderBounds(upper, lower, lower, 1, upper, upper); renderer.renderStandardBlock(block, x, y, z); duct.resetRenderSides(); }
if(nX) { duct.renderSides[4] = false; renderer.setRenderBounds(0, lower, lower, lower, upper, upper); renderer.renderStandardBlock(block, x, y, z); duct.resetRenderSides(); }
if(pY) { duct.renderSides[1] = false; renderer.setRenderBounds(lower, upper, lower, upper, 1, upper); renderer.renderStandardBlock(block, x, y, z); duct.resetRenderSides(); }
if(nY) { duct.renderSides[0] = false; renderer.setRenderBounds(lower, 0, lower, upper, lower, upper); renderer.renderStandardBlock(block, x, y, z); duct.resetRenderSides(); }
if(pZ) { duct.renderSides[3] = false; renderer.setRenderBounds(lower, lower, upper, upper, upper, 1); renderer.renderStandardBlock(block, x, y, z); duct.resetRenderSides(); }
if(nZ) { duct.renderSides[2] = false; renderer.setRenderBounds(lower, lower, 0, upper, upper, lower); renderer.renderStandardBlock(block, x, y, z); duct.resetRenderSides(); }
}
return true;
}
@Override
public boolean shouldRender3DInInventory(int modelId) {
return true;
}
@Override
public int getRenderId() {
return PneumoTube.renderID;
}
}

View File

@ -2,6 +2,7 @@ package com.hbm.render.block.ct;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import com.hbm.interfaces.NotableComments;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.render.block.ct.CTContext.CTFace; import com.hbm.render.block.ct.CTContext.CTFace;
@ -12,6 +13,7 @@ import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@NotableComments
public class RenderBlocksCT extends RenderBlocks { public class RenderBlocksCT extends RenderBlocks {
public static RenderBlocksCT instance = new RenderBlocksCT(); public static RenderBlocksCT instance = new RenderBlocksCT();

View File

@ -1,7 +1,19 @@
package com.hbm.tileentity.network; package com.hbm.tileentity.network;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityPneumoTube extends TileEntity { public class TileEntityPneumoTube extends TileEntity {
public ForgeDirection insertionDir = ForgeDirection.UNKNOWN;
public ForgeDirection ejectionDir = ForgeDirection.UNKNOWN;
public FluidTank compair;
public TileEntityPneumoTube() {
this.compair = new FluidTank(Fluids.AIR, 4_000).withPressure(1);
}
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 B

View File

Before

Width:  |  Height:  |  Size: 230 B

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB