more boxduct variants, fixed soysauce launcher wackyness

This commit is contained in:
Bob 2022-11-21 21:14:13 +01:00
parent ed219824f9
commit bb404bc703
24 changed files with 223 additions and 32 deletions

View File

@ -789,6 +789,7 @@ public class ModBlocks {
public static Block fluid_duct_solid;
public static Block fluid_duct_neo;
public static Block fluid_duct_box;
public static Block radio_torch_sender;
public static Block conveyor;
//public static Block conveyor_classic;
@ -1977,6 +1978,7 @@ public class ModBlocks {
fluid_duct_solid = new BlockFluidDuctSolid(Material.iron).setBlockName("fluid_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_solid");
fluid_duct_neo = new FluidDuctStandard(Material.iron).setBlockName("fluid_duct_neo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pipe_neo");
fluid_duct_box = new FluidDuctBox(Material.iron).setBlockName("fluid_duct_box").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box");
radio_torch_sender = new RadioTorchSender().setBlockName("radio_torch_sender").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
conveyor = new BlockConveyor().setBlockName("conveyor").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor");
//conveyor_classic = new BlockConveyorClassic().setBlockName("conveyor_classic").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor");
@ -3158,6 +3160,7 @@ public class ModBlocks {
GameRegistry.registerBlock(fluid_duct_neo, ItemBlockBase.class, fluid_duct_neo.getUnlocalizedName());
GameRegistry.registerBlock(fluid_duct_box, ItemBlockBase.class, fluid_duct_box.getUnlocalizedName());
GameRegistry.registerBlock(fluid_duct_solid, fluid_duct_solid.getUnlocalizedName());
GameRegistry.registerBlock(radio_torch_sender, radio_torch_sender.getUnlocalizedName());
GameRegistry.registerBlock(crane_extractor, crane_extractor.getUnlocalizedName());
GameRegistry.registerBlock(crane_inserter, crane_inserter.getUnlocalizedName());

View File

@ -145,12 +145,17 @@ public class SoyuzLauncher extends BlockDummyable {
MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] { 0, 4, 1, 1, -6, 8 }, this, dir);
MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] { 0, 4, 2, 2, 9, -5 }, this, dir);
for(int ix = x - 6; ix <= x + 6; ix++) {
for(int iz = z - 6; iz <= z + 6; iz++) {
this.makeExtra(world, ix, y, iz);
this.makeExtra(world, ix, y + 1, iz);
keepInventory = true;
for(int ix = -6; ix <= 6; ix++) {
for(int iz = -6; iz <= 6; iz++) {
if(ix == 6 || ix == -6 || iz == 6 || iz == -6) {
this.makeExtra(world, x + ix, y, z + iz);
this.makeExtra(world, x + ix, y + 1, z + iz);
}
}
}
keepInventory = false;
}
@Override
@ -172,7 +177,7 @@ public class SoyuzLauncher extends BlockDummyable {
if(!keepInventory) {
ISidedInventory tileentityfurnace = (ISidedInventory) world.getTileEntity(x, y, z);
if(tileentityfurnace != null) {
if(tileentityfurnace instanceof TileEntitySoyuzLauncher) {
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);

View File

@ -36,7 +36,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
@SideOnly(Side.CLIENT) protected IIcon[] iconCurveBR;
@SideOnly(Side.CLIENT) protected IIcon[] iconJunction;
private static final String[] materials = new String[] { "silver", "copper" };
private static final String[] materials = new String[] { "silver", "copper", "white" };
public FluidDuctBox(Material mat) {
super(mat);
@ -126,7 +126,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item item, CreativeTabs tab, List list) {
for(int i = 0; i < 2; ++i) {
for(int i = 0; i < 12; ++i) {
list.add(new ItemStack(item, 1, i));
}
}
@ -154,7 +154,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
@Override
public int getSubCount() {
return 2;
return 3;
}
@Override
@ -171,4 +171,12 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName()));
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
public static int cachedColor = 0xffffff;
@Override
@SideOnly(Side.CLIENT)
public int colorMultiplier(IBlockAccess world, int x, int y, int z) {
return cachedColor;
}
}

View File

@ -1,13 +1,29 @@
package com.hbm.blocks.network;
import com.hbm.lib.RefStrings;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
public class RadioTorchSender extends RadioTorchBase {
@SideOnly(Side.CLIENT)
protected IIcon iconOn;
public RadioTorchSender() {
super();
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconRegister) {
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":rtty_sender_off");
this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":rtty_sender_on");
}
@Override
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {

View File

@ -744,6 +744,7 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerBlockHandler(new RenderBoxDuct());
RenderingRegistry.registerBlockHandler(new RenderBlockDecoModel(ModBlocks.deco_computer.getRenderType(), ResourceManager.deco_computer));
RenderingRegistry.registerBlockHandler(new RenderReeds());
RenderingRegistry.registerBlockHandler(new RenderRTTY());
RenderingRegistry.registerBlockHandler(new RenderFoundryBasin());
RenderingRegistry.registerBlockHandler(new RenderFoundryMold());

View File

@ -1266,6 +1266,7 @@ public class ResourceManager {
public static final IModelCustom pipe_rim = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/pipe_rim.obj"));
public static final IModelCustom pipe_quad = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/pipe_quad.obj"));
public static final IModelCustom pipe_frame = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/pipe_frame.obj"));
public static final IModelCustom rtty = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rtty.obj"));
public static final IModelCustom deco_computer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/puter.obj"));

View File

@ -9,6 +9,7 @@ import com.hbm.tileentity.network.TileEntityPipeBaseNT;
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.tileentity.TileEntity;
import net.minecraft.world.IBlockAccess;
@ -22,10 +23,17 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler {
FluidType type = Fluids.NONE;
TileEntity te = world.getTileEntity(x, y, z);
Tessellator tessellator = Tessellator.instance;
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
int meta = world.getBlockMetadata(x, y, z);
FluidDuctBox.cachedColor = 0xffffff;
if(te instanceof TileEntityPipeBaseNT) {
TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te;
type = pipe.getType();
if(meta == 2) {
FluidDuctBox.cachedColor = type.getColor();
}
}
boolean pX = Library.canConnectFluid(world, x + 1, y, z, Library.NEG_X, type);
@ -37,6 +45,21 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler {
int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0);
int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0);
double lower = 0.125D;
double upper = 0.875D;
double jLower = 0.0625D;
double jUpper = 0.9375D;
for(int i = 2; i < 10; i += 3) {
if(meta > i) {
lower += 0.0625D;
upper -= 0.0625D;
jLower += 0.0625D;
jUpper -= 0.0625D;
}
}
//Straight along X
if((mask & 0b001111) == 0 && mask > 0) {
@ -44,19 +67,19 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler {
renderer.uvRotateBottom = 1;
renderer.uvRotateEast = 2;
renderer.uvRotateWest = 1;
renderer.setRenderBounds(0.0D, 0.125D, 0.125D, 1.0D, 0.875D, 0.875D);
renderer.setRenderBounds(0.0D, lower, lower, 1.0D, upper, upper);
renderer.renderStandardBlock(block, x, y, z);
//Straight along Z
} else if((mask & 0b111100) == 0 && mask > 0) {
renderer.uvRotateNorth = 1;
renderer.uvRotateSouth = 2;
renderer.setRenderBounds(0.125D, 0.125D, 0.0D, 0.875D, 0.875D, 1.0D);
renderer.setRenderBounds(lower, lower, 0.0D, upper, upper, 1.0D);
renderer.renderStandardBlock(block, x, y, z);
//Straight along Y
} else if((mask & 0b110011) == 0 && mask > 0) {
renderer.setRenderBounds(0.125D, 0.0D, 0.125D, 0.875D, 1.0D, 0.875D);
renderer.setRenderBounds(lower, 0.0D, lower, upper, 1.0D, upper);
renderer.renderStandardBlock(block, x, y, z);
//Curve
@ -79,61 +102,61 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler {
renderer.uvRotateWest = 1;
}
renderer.setRenderBounds(0.125D, 0.125D, 0.125D, 0.875D, 0.875D, 0.875D);
renderer.setRenderBounds(lower, lower, lower, upper, upper, upper);
renderer.renderStandardBlock(block, x, y, z);
if(nY) {
renderer.setRenderBounds(0.125D, 0.0D, 0.125D, 0.875D, 0.125D, 0.875D);
renderer.setRenderBounds(lower, 0.0D, lower, upper, lower, upper);
renderer.renderStandardBlock(block, x, y, z);
}
if(pY) {
renderer.setRenderBounds(0.125D, 0.875D, 0.125D, 0.875D, 1.0D, 0.875D);
renderer.setRenderBounds(lower, upper, lower, upper, 1.0D, upper);
renderer.renderStandardBlock(block, x, y, z);
}
if(nX) {
renderer.setRenderBounds(0.0D, 0.125D, 0.125D, 0.125D, 0.875D, 0.875D);
renderer.setRenderBounds(0.0D, lower, lower, lower, upper, upper);
renderer.renderStandardBlock(block, x, y, z);
}
if(pX) {
renderer.setRenderBounds(0.875D, 0.125D, 0.125D, 1.0D, 0.875D, 0.875D);
renderer.setRenderBounds(upper, lower, lower, 1.0D, upper, upper);
renderer.renderStandardBlock(block, x, y, z);
}
if(nZ) {
renderer.setRenderBounds(0.125D, 0.125D, 0.0D, 0.875D, 0.875D, 0.125D);
renderer.setRenderBounds(lower, lower, 0.0D, upper, upper, lower);
renderer.renderStandardBlock(block, x, y, z);
}
if(pZ) {
renderer.setRenderBounds(0.125D, 0.125D, 0.875D, 0.875D, 0.875D, 1.0D);
renderer.setRenderBounds(lower, lower, upper, upper, upper, 1.0D);
renderer.renderStandardBlock(block, x, y, z);
}
//Junction
} else {
renderer.setRenderBounds(0.0625D, 0.0625D, 0.0625D, 0.9375D, 0.9375D, 0.9375D);
renderer.setRenderBounds(jLower, jLower, jLower, jUpper, jUpper, jUpper);
renderer.renderStandardBlock(block, x, y, z);
if(nY) {
renderer.setRenderBounds(0.125D, 0.0D, 0.125D, 0.875D, 0.0625D, 0.875D);
renderer.setRenderBounds(lower, 0.0D, lower, upper, jLower, upper);
renderer.renderStandardBlock(block, x, y, z);
}
if(pY) {
renderer.setRenderBounds(0.125D, 0.9375D, 0.125D, 0.875D, 1.0D, 0.875D);
renderer.setRenderBounds(lower, jUpper, lower, upper, 1.0D, upper);
renderer.renderStandardBlock(block, x, y, z);
}
if(nX) {
renderer.setRenderBounds(0.0D, 0.125D, 0.125D, 0.0625D, 0.875D, 0.875D);
renderer.setRenderBounds(0.0D, lower, lower, jLower, upper, upper);
renderer.renderStandardBlock(block, x, y, z);
}
if(pX) {
renderer.setRenderBounds(0.9375D, 0.125D, 0.125D, 1.0D, 0.875D, 0.875D);
renderer.setRenderBounds(jUpper, lower, lower, 1.0D, upper, upper);
renderer.renderStandardBlock(block, x, y, z);
}
if(nZ) {
renderer.setRenderBounds(0.125D, 0.125D, 0.0D, 0.875D, 0.875D, 0.0625D);
renderer.setRenderBounds(lower, lower, 0.0D, upper, upper, jLower);
renderer.renderStandardBlock(block, x, y, z);
}
if(pZ) {
renderer.setRenderBounds(0.125D, 0.125D, 0.9375D, 0.875D, 0.875D, 1.0D);
renderer.setRenderBounds(lower, lower, jUpper, upper, upper, 1.0D);
renderer.renderStandardBlock(block, x, y, z);
}
}

View File

@ -0,0 +1,67 @@
package com.hbm.render.block;
import com.hbm.blocks.network.RadioTorchBase;
import com.hbm.main.ResourceManager;
import com.hbm.render.util.ObjUtil;
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.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.model.obj.WavefrontObject;
public class RenderRTTY implements ISimpleBlockRenderingHandler {
@Override
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { }
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
Tessellator tessellator = Tessellator.instance;
int brightness = block.getMixedBrightnessForBlock(world, x, y, z);
tessellator.setBrightness(brightness);
tessellator.setColorOpaque_F(1, 1, 1);
IIcon icon = block.getIcon(world, x, y, z, 0);
int meta = world.getBlockMetadata(x, y, z);
float flip = 0;
float rotation = 0;
if(meta == 0)
flip = (float)Math.PI;
if(meta == 2)
rotation = 90F / 180F * (float) Math.PI;
if(meta == 3)
rotation = 270F / 180F * (float) Math.PI;
if(meta == 4)
rotation = 180F / 180F * (float)Math.PI;
if(rotation != 0F || meta == 5)
flip = (float)Math.PI * 0.5F;
//using OBJ here because vanilla's block renderer is so broken it's not even funny anymore
//mojang genuinely doesn't know how on earth UVs work
tessellator.addTranslation(x + 0.5F, y + 0.5F, z + 0.5F);
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rtty, icon, tessellator, rotation, flip, false);
tessellator.addTranslation(-x - 0.5F, -y - 0.5F, -z - 0.5F);
return true;
}
@Override
public boolean shouldRender3DInInventory(int modelId) {
return false;
}
@Override
public int getRenderId() {
return RadioTorchBase.renderID;
}
}

View File

@ -154,8 +154,8 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
for(int i = -6; i <= 6; i++) {
conPos.add(new DirPos(xCoord + dir.offsetX * 7 + rot.offsetX * i, yCoord + 0, zCoord + dir.offsetX * 7 + rot.offsetZ * i, dir));
conPos.add(new DirPos(xCoord + dir.offsetX * 7 + rot.offsetX * i, yCoord + 1, zCoord + dir.offsetX * 7 + rot.offsetZ * i, dir));
conPos.add(new DirPos(xCoord + dir.offsetX * 7 + rot.offsetX * i, yCoord + 0, zCoord + dir.offsetZ * 7 + rot.offsetZ * i, dir));
conPos.add(new DirPos(xCoord + dir.offsetX * 7 + rot.offsetX * i, yCoord - 1, zCoord + dir.offsetZ * 7 + rot.offsetZ * i, dir));
}
}

View File

@ -12,7 +12,6 @@ import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.lib.Library;
import com.hbm.main.MainRegistry;
import com.hbm.main.ModEventHandlerImpact;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.TileEntityMachineBase;
@ -178,7 +177,6 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc
@Override
public int getFluidFill(FluidType type) {
return type == this.tank.getTankType() ? tank.getFill() : 0;
}

View File

@ -14,14 +14,14 @@ import com.hbm.lib.Library;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.TileEntityMachineBase;
import api.hbm.fluid.IFluidUser;
import api.hbm.fluid.IFluidStandardTransceiver;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, IFluidSource, IFluidAcceptor, IFluidUser, IPersistentNBT {
public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT {
public FluidTank tank;
public short mode = 0;
@ -229,4 +229,14 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
this.tank.readFromNBT(data, "tank");
this.mode = data.getShort("mode");
}
@Override
public FluidTank[] getSendingTanks() {
return (mode == 1 || mode == 2) ? new FluidTank[] {tank} : new FluidTank[0];
}
@Override
public FluidTank[] getReceivingTanks() {
return (mode == 0 || mode == 1) ? new FluidTank[] {tank} : new FluidTank[0];
}
}

View File

@ -0,0 +1,59 @@
# Blender v2.79 (sub 0) OBJ File: 'rtty.blend'
# www.blender.org
o Cube_Cube.001
v -0.125000 -0.500000 0.062500
v -0.125000 0.125000 0.062500
v -0.125000 -0.500000 -0.062500
v -0.125000 0.125000 -0.062500
v 0.125000 -0.500000 0.062500
v 0.125000 0.125000 0.062500
v 0.125000 -0.500000 -0.062500
v 0.125000 0.125000 -0.062500
v -0.062500 0.062500 0.062500
v -0.062500 0.062500 -0.062500
v 0.062500 0.062500 0.062500
v 0.062500 0.062500 -0.062500
v -0.062500 -0.500000 0.125000
v -0.062500 0.125000 0.125000
v -0.062500 -0.500000 -0.125000
v -0.062500 0.125000 -0.125000
v 0.062500 -0.500000 0.125000
v 0.062500 0.125000 0.125000
v 0.062500 -0.500000 -0.125000
v 0.062500 0.125000 -0.125000
vt 0.625000 0.625000
vt 0.375000 0.000000
vt 0.625000 0.000000
vt 0.625000 0.625000
vt 0.375000 0.000000
vt 0.625000 0.000000
vt 0.562500 0.562500
vt 0.437500 0.437500
vt 0.562500 0.437500
vt 0.625000 0.625000
vt 0.375000 -0.000000
vt 0.625000 -0.000000
vt 0.625000 0.625000
vt 0.375000 0.000000
vt 0.625000 0.000000
vt 0.375000 0.625000
vt 0.375000 0.625000
vt 0.437500 0.562500
vt 0.375000 0.625000
vt 0.375000 0.625000
vn 0.0000 0.0000 -1.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 1.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 1.0000 0.0000 0.0000
s off
f 4/1/1 7/2/1 3/3/1
f 6/4/2 1/5/2 5/6/2
f 10/7/3 11/8/3 12/9/3
f 14/10/4 15/11/4 13/12/4
f 20/13/5 17/14/5 19/15/5
f 4/1/1 8/16/1 7/2/1
f 6/4/2 2/17/2 1/5/2
f 10/7/3 9/18/3 11/8/3
f 14/10/4 16/19/4 15/11/4
f 20/13/5 18/20/5 17/14/5

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 B

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 B

After

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 313 B

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 173 B