feat: add reinforced tank and base stuff for wood apparati

This commit is contained in:
LordMZTE 2023-05-17 18:07:59 +02:00
parent ecd1db1e41
commit dbe4c9783f
Signed by: LordMZTE
GPG Key ID: B64802DC33A64FF6
40 changed files with 598 additions and 220 deletions

View File

@ -3,20 +3,24 @@ package net.anvilcraft.thaummach;
import cpw.mods.fml.common.registry.GameRegistry;
import net.anvilcraft.thaummach.blocks.BlockApparatusFragile;
import net.anvilcraft.thaummach.blocks.BlockApparatusMetal;
import net.anvilcraft.thaummach.blocks.BlockApparatusWood;
import net.anvilcraft.thaummach.blocks.BlockSeal;
import net.anvilcraft.thaummach.items.ItemBlockApparatusFragile;
import net.anvilcraft.thaummach.items.ItemBlockApparatusMetal;
import net.anvilcraft.thaummach.items.ItemBlockApparatusWood;
import net.anvilcraft.thaummach.items.ItemSeal;
import net.minecraft.block.Block;
public class TMBlocks {
public static Block apparatusFragile;
public static Block apparatusMetal;
public static Block apparatusWood;
public static Block seal;
public static void init() {
apparatusFragile = new BlockApparatusFragile();
apparatusMetal = new BlockApparatusMetal();
apparatusWood = new BlockApparatusWood();
seal = new BlockSeal();
GameRegistry.registerBlock(
@ -25,6 +29,9 @@ public class TMBlocks {
GameRegistry.registerBlock(
apparatusMetal, ItemBlockApparatusMetal.class, "apparatus_metal"
);
GameRegistry.registerBlock(
apparatusWood, ItemBlockApparatusWood.class, "apparatus_wood"
);
GameRegistry.registerBlock(seal, ItemSeal.class, "seal");
}
}

View File

@ -396,6 +396,7 @@ public class BlockApparatusFragile extends BlockApparatus {
return BlockApparatusRenderer.RI;
}
// TODO: WTF
//public int getBlockTextureFromSide(int i) {
// return 15;
//}

View File

@ -13,6 +13,7 @@ import net.anvilcraft.thaummach.render.apparatus.apparati.metal.BoreApparatusRen
import net.anvilcraft.thaummach.render.apparatus.apparati.metal.CrucibleApparatusRenderer;
import net.anvilcraft.thaummach.render.apparatus.apparati.metal.CrystallizerApparatusRenderer;
import net.anvilcraft.thaummach.render.apparatus.apparati.metal.SoulBrazierApparatusRenderer;
import net.anvilcraft.thaummach.render.apparatus.apparati.metal.TankApparatusRenderer;
import net.anvilcraft.thaummach.render.apparatus.apparati.metal.VoidChestApparatusRenderer;
import net.anvilcraft.thaummach.render.apparatus.apparati.metal.VoidInterfaceApparatusRenderer;
import net.anvilcraft.thaummach.tiles.TileArcaneFurnace;
@ -70,6 +71,8 @@ public class BlockApparatusMetal extends BlockApparatus {
public IIcon iconSoulCrucibleFace3;
public IIcon iconSoulCrucibleTop;
public IIcon iconSoulCrucibleTopInv;
public IIcon iconTankBottom;
public IIcon iconTankSide;
public IIcon iconVoidChestBottom;
public IIcon iconVoidChestSide;
public IIcon iconVoidChestSideTransparent;
@ -114,6 +117,8 @@ public class BlockApparatusMetal extends BlockApparatus {
this.iconSoulCrucibleFace3 = reg.registerIcon("thaummach:soul_crucible_face_3");
this.iconSoulCrucibleTop = reg.registerIcon("thaummach:soul_crucible_top");
this.iconSoulCrucibleTopInv = reg.registerIcon("thaummach:soul_crucible_top_inv");
this.iconTankBottom = reg.registerIcon("thaummach:reinforced_tank_bottom");
this.iconTankSide = reg.registerIcon("thaummach:reinforced_tank_side");
this.iconVoidChestBottom = reg.registerIcon("thaummach:void_chest_bottom");
this.iconVoidChestSide = reg.registerIcon("thaummach:void_chest_side");
this.iconVoidChestSideTransparent
@ -172,6 +177,9 @@ public class BlockApparatusMetal extends BlockApparatus {
case SOUL_BRAZIER:
return SoulBrazierApparatusRenderer.INSTANCE;
case TANK:
return TankApparatusRenderer.INSTANCE;
default:
return null;
}
@ -342,12 +350,9 @@ public class BlockApparatusMetal extends BlockApparatus {
return side == 1 ? this.iconVoidInterfaceBottom
: this.iconVoidInterfaceSide;
}
} else if (meta == MetaVals.TANK) {
return side <= 1 ? this.iconTankBottom : this.iconTankSide;
}
// else if (meta == 10) {
// return side <= 1 ? 78 : 79;
//} else {
// return super.getBlockTexture(iblockaccess, i, j, k, side);
//}
return null;
}
@ -796,18 +801,17 @@ public class BlockApparatusMetal extends BlockApparatus {
isProvidingStrongPower(IBlockAccess iblockaccess, int i, int j, int k, int l) {
MetaVals meta = MetaVals.get(iblockaccess.getBlockMetadata(i, j, k));
if (meta == MetaVals.EYES_CRUCIBLE || meta == MetaVals.THAUMIUM_CRUCIBLE) {
// TODO: crucibles
//TileCrucible data = (TileCrucible) iblockaccess.getTileEntity(i, j, k);
//if (l == 1) {
// TileEntity below = iblockaccess.getTileEntity(i, j - 1, k);
// if (below != null && below instanceof TileArcaneFurnace) {
// return 0;
// }
//}
TileCrucible data = (TileCrucible) iblockaccess.getTileEntity(i, j, k);
if (l == 1) {
TileEntity below = iblockaccess.getTileEntity(i, j - 1, k);
if (below != null && below instanceof TileArcaneFurnace) {
return 0;
}
}
//if (data.isPowering) {
// return 15;
//}
if (data.isPowering) {
return 15;
}
}
return 0;
@ -840,14 +844,11 @@ public class BlockApparatusMetal extends BlockApparatus {
}
if (meta.isCrucible()) {
// TODO: crucibles
//TileCrucible data = (TileCrucible) world.getTileEntity(i, j, k);
//data.bellows = bellows;
TileCrucible data = (TileCrucible) world.getTileEntity(i, j, k);
data.bellows = bellows;
} else if (meta == MetaVals.ARCANE_FURNACE) {
// TODO: arcane furnace
//TileArcaneFurnace data
// = (TileArcaneFurnace) world.getTileEntity(i, j, k);
//data.bellows = bellows;
TileArcaneFurnace data = (TileArcaneFurnace) world.getTileEntity(i, j, k);
data.bellows = bellows;
} else {
if (meta == MetaVals.VOID_INTERFACE
&& (world.getBlock(i, j - 1, k) != this
@ -867,12 +868,11 @@ public class BlockApparatusMetal extends BlockApparatus {
} else {
TileEntity tsb;
if (md == MetaVals.ARCANE_FURNACE) {
// TODO: arcane furnace
//tsb = iba.getTileEntity(i, j, k);
//return tsb != null && tsb instanceof TileArcaneFurnace
// && ((TileArcaneFurnace) tsb).isWorking()
// ? 13
// : 0;
tsb = iba.getTileEntity(i, j, k);
return tsb != null && tsb instanceof TileArcaneFurnace
&& ((TileArcaneFurnace) tsb).isWorking()
? 13
: 0;
} else if (md == MetaVals.SOUL_BRAZIER) {
tsb = iba.getTileEntity(i, j, k);
return tsb != null && tsb instanceof TileSoulBrazier
@ -883,65 +883,8 @@ public class BlockApparatusMetal extends BlockApparatus {
return super.getLightValue(iba, i, j, k);
}
}
return 0;
}
//@Override
//public boolean renderAppMetalBlock(
// World w, RenderBlocks rb, int i, int j, int k, Block block, boolean inv, int md
//) {
// if (md == -9) {
// md = w.getBlockMetadata(i, j, k);
// }
// switch (md) {
// case 0:
// case 1:
// case 2:
// case 3:
// ThaumCraftRenderer.renderBlockCrucible(w, rb, i, j, k, block, md, inv);
// return true;
// case 4:
// ThaumCraftRenderer.renderBlockArcaneFurnace(
// w, rb, i, j, k, block, md, inv
// );
// return true;
// case 5:
// ThaumCraftRenderer.renderBlockGenerator(w, rb, i, j, k, block, md, inv);
// return true;
// case 6:
// ThaumCraftRenderer.renderBlockCrystalizer(w, rb, i, j, k, block, md,
// inv); return true;
// case 7:
// ThaumCraftRenderer.renderBlockBore(w, rb, i, j, k, block, md, inv);
// return true;
// case 8:
// block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
// if (block.getRenderBlockPass() == 0 && !inv) {
// rb.renderStandardBlock(block, i, j, k);
// } else if (inv) {
// ThaumCraftRenderer.DrawFaces(
// rb, block, 97, 104, 103, 103, 103, 103, false
// );
// }
// return true;
// case 9:
// ThaumCraftRenderer.renderBlockVoidInterface(
// w, rb, i, j, k, block, md, inv
// );
// return true;
// case 10:
// ThaumCraftRenderer.renderBlockTank(w, rb, i, j, k, block, md, inv);
// return true;
// case 11:
// ThaumCraftRenderer.renderBlockSoulBrazier(w, rb, i, j, k, block, md,
// inv); return true;
// default:
// return false;
// }
//}
public static enum MetaVals {
NORMAL_CRUCIBLE, // 0
EYES_CRUCIBLE, // 1

View File

@ -0,0 +1,326 @@
package net.anvilcraft.thaummach.blocks;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.anvilcraft.thaummach.particles.FXWisp;
import net.anvilcraft.thaummach.render.BlockApparatusRenderer;
import net.anvilcraft.thaummach.render.apparatus.IApparatusRenderer;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
public class BlockApparatusWood extends BlockApparatus {
public BlockApparatusWood() {
super(Material.wood);
this.setHardness(2.0F);
this.setResistance(10.0F);
this.setStepSound(Block.soundTypeWood);
this.setBlockName("tcbappwood");
}
@Override
public IApparatusRenderer getApparatusRenderer(int meta) {
switch (MetaVals.get(meta)) {
default:
return null;
}
}
@Override
public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List itemList) {
itemList.add(new ItemStack(this, 1, 0));
itemList.add(new ItemStack(this, 1, 1));
itemList.add(new ItemStack(this, 1, 2));
itemList.add(new ItemStack(this, 1, 3));
itemList.add(new ItemStack(this, 1, 4));
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
MetaVals md = MetaVals.get(meta);
switch (md) {
//case CONDENSER:
// return new TileCondenser();
//
//case DUPLICATOR:
// return new TileDuplicator();
//
//case REPAIRER:
// return new TileRepairer();
default:
return null;
}
}
@Override
public void
setBlockBoundsBasedOnState(IBlockAccess iblockaccess, int i, int j, int k) {
int md = iblockaccess.getBlockMetadata(i, j, k);
if (md == 0) {
float w3 = 0.1875F;
this.setBlockBounds(w3, 0.0F, w3, 1.0F - w3, 1.0F, 1.0F - w3);
} else {
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
}
}
@Override
public AxisAlignedBB getSelectedBoundingBoxFromPool(World w, int i, int j, int k) {
int md = w.getBlockMetadata(i, j, k);
if (md == 0) {
float w3 = 0.1875F;
AxisAlignedBB.getBoundingBox(
(double) w3,
0.0,
(double) w3,
(double) (1.0F - w3),
1.0,
(double) (1.0F - w3)
);
} else if (md == 10) {
AxisAlignedBB.getBoundingBox(0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
}
return super.getSelectedBoundingBoxFromPool(w, i, j, k);
}
@Override
public void onBlockPlacedBy(
World world, int i, int j, int k, EntityLivingBase entityliving, ItemStack stack
) {
MetaVals md = MetaVals.get(world.getBlockMetadata(i, j, k));
int l = MathHelper.floor_double(
(double) (entityliving.rotationYaw * 4.0F / 360.0F) + 0.5
)
& 3;
if (md == MetaVals.DUPLICATOR) {
// TODO: duplicator
//TileDuplicator td = (TileDuplicator) world.getBlockTileEntity(i, j, k);
//td.orientation = l;
}
}
@Override
public void updateTick(World world, int i, int j, int k, Random random) {
if (!world.isRemote) {
MetaVals l = MetaVals.get(world.getBlockMetadata(i, j, k));
if (l == MetaVals.DAWN_TOTEM || l == MetaVals.DUSK_TOTEM) {
// TODO: totems
//int auraX = i >> 4;
//int auraZ = k >> 4;
//SIAuraChunk ac = (SIAuraChunk) mod_ThaumCraft.AuraHM.get(
// Arrays.asList(auraX, auraZ, ThaumCraftCore.getDimension(world))
//);
//if (ac != null) {
// if (l == 3) {
// ac.goodVibes = (short) (ac.goodVibes + 1 + random.nextInt(2));
// ThaumCraftCore.decreaseTaintedPlantsInArea(world, i, j, k, 2);
// } else {
// ac.badVibes = (short) (ac.badVibes + 1 + random.nextInt(3));
// ThaumCraftCore.increaseTaintedPlants(world, i, j, k);
// }
//}
}
}
}
@Override
public void breakBlock(World world, int i, int j, int k, Block block, int meta_) {
// TODO: not sure if param 6 is meta
MetaVals meta = MetaVals.get(meta_);
if (meta == MetaVals.CONDENSER) {
// TODO: condenser
//TileCondenser tileentityCondenser
// = (TileCondenser) world.getBlockTileEntity(i, j, k);
//if (tileentityCondenser != null && tileentityCondenser.degredation > 0.0F) {
// int at = (int
// ) (25.0F * (4550.0F - tileentityCondenser.degredation) / 4550.0F);
// int auraX = i >> 4;
// int auraZ = k >> 4;
// SIAuraChunk ac = (SIAuraChunk) mod_ThaumCraft.AuraHM.get(
// Arrays.asList(auraX, auraZ, ThaumCraftCore.getDimension(world))
// );
// if (ac != null) {
// ac.taint = (short) (ac.taint + at);
// world.playSoundEffect(
// (double) i,
// (double) j,
// (double) k,
// "random.fizz",
// 0.2F,
// 2.0F + world.rand.nextFloat() * 0.4F
// );
// for (int a = 0; a < at; ++a) {
// world.spawnParticle(
// "largesmoke",
// (double) ((float) i + world.rand.nextFloat()),
// (double) ((float) j + world.rand.nextFloat()),
// (double) ((float) k + world.rand.nextFloat()),
// 0.0,
// 0.0,
// 0.0
// );
// }
// }
//}
}
super.breakBlock(world, i, j, k, block, meta_);
}
@Override
public void onNeighborBlockChange(World world, int i, int j, int k, Block l) {
super.onNeighborBlockChange(world, i, j, k, l);
MetaVals meta = MetaVals.get(world.getBlockMetadata(i, j, k));
if (meta == MetaVals.CONDENSER) {
if (!world.isAirBlock(i, j + 1, k)) {
this.dropBlockAsItem(world, i, j, k, meta.ordinal(), 0);
world.setBlockToAir(i, j, k);
}
}
}
@Override
public int getRenderType() {
return BlockApparatusRenderer.RI;
}
// TODO: WTF
//@Override
//public int getBlockTextureFromSide(int i) {
// return 15;
//}
// TODO: textures
//@Override
//public int getBlockTextureFromSideAndMetadata(int i, int j) {
// switch (j) {
// case 3:
// return 127;
// case 4:
// return 143;
// default:
// return super.getBlockTextureFromSideAndMetadata(i, j);
// }
//}
//@Override
//public int getBlockTexture(IBlockAccess iblockaccess, int i, int j, int k, int l) {
// int md = iblockaccess.getBlockMetadata(i, j, k);
// if (md == 0) {
// return l <= 1 ? 113 : 112;
// } else if (md == 1) {
// if (l <= 1) {
// return 70;
// } else {
// TileEntity te = iblockaccess.getBlockTileEntity(i, j, k);
// if (te != null && te instanceof TileDuplicator) {
// if (((TileDuplicator) te).orientation == 0 && l == 2) {
// return 71;
// }
// if (((TileDuplicator) te).orientation == 1 && l == 5) {
// return 71;
// }
// if (((TileDuplicator) te).orientation == 2 && l == 3) {
// return 71;
// }
// if (((TileDuplicator) te).orientation == 3 && l == 4) {
// return 71;
// }
// }
// return 72;
// }
// } else if (md == 2) {
// return l <= 1 ? 86 : 87;
// } else if (md == 3) {
// return l <= 1 ? 127 : 121 + Math.abs((i + j + k) % 6);
// } else if (md == 4) {
// return l <= 1 ? 143 : 137 + Math.abs((i + j + k) % 6);
// } else {
// return 15;
// }
//}
@Override
public int damageDropped(int i) {
return i;
}
@Override
public int getLightValue(IBlockAccess iba, int i, int j, int k) {
MetaVals md = MetaVals.get(iba.getBlockMetadata(i, j, k));
return md == MetaVals.DUPLICATOR ? 5 : super.getLightValue(iba, i, j, k);
}
@SideOnly(Side.CLIENT)
@Override
public void randomDisplayTick(World w, int i, int j, int k, Random random) {
MetaVals md = MetaVals.get(w.getBlockMetadata(i, j, k));
if (random.nextInt(10) == 0) {
switch (md) {
case DAWN_TOTEM:
Minecraft.getMinecraft().effectRenderer.addEffect(new FXWisp(
w,
i + random.nextFloat(),
j + random.nextFloat(),
k + random.nextFloat(),
0.5f,
0
));
break;
case DUSK_TOTEM:
Minecraft.getMinecraft().effectRenderer.addEffect(new FXWisp(
w,
i + random.nextFloat(),
j + random.nextFloat(),
k + random.nextFloat(),
0.5f,
5
));
break;
default:
break;
}
}
}
public static enum MetaVals {
CONDENSER, // 0
DUPLICATOR, // 1
REPAIRER, // 2
DAWN_TOTEM, // 3
DUSK_TOTEM; // 4
public static MetaVals get(int meta) {
if (meta >= 0 && meta < MetaVals.values().length) {
return MetaVals.values()[meta];
}
return null;
}
}
}

View File

@ -0,0 +1,23 @@
package net.anvilcraft.thaummach.items;
import net.anvilcraft.thaummach.blocks.BlockApparatusWood.MetaVals;
import net.minecraft.block.Block;
public class ItemBlockApparatusWood extends ItemBlockApparatus {
public ItemBlockApparatusWood(Block block) {
super(block);
}
@Override
public String getTypeString() {
return "wood";
}
@Override
public String getNameExtension(int meta_) {
MetaVals meta = MetaVals.get(meta_);
if (meta == null)
return null;
return meta.toString().toLowerCase();
}
}

View File

@ -183,7 +183,7 @@ public class FXWisp extends EntityFX {
GL11.glDepthMask(true);
GL11.glPopMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(
new ResourceLocation("textures/particles/particles.png")
new ResourceLocation("textures/particle/particles.png")
);
tessellator.startDrawingQuads();
}

View File

@ -0,0 +1,135 @@
package net.anvilcraft.thaummach.render.apparatus;
import dev.tilera.auracore.api.HelperLocation;
import net.anvilcraft.thaummach.blocks.BlockApparatus;
import net.anvilcraft.thaummach.tiles.TileConduitTank;
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.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection;
public abstract class AbstractTankApparatusRenderer<Apparatus extends BlockApparatus> implements IApparatusRenderer {
public abstract IIcon getBottomIcon(Apparatus block);
public abstract IIcon getSideIcon(Apparatus block);
@Override
public void renderApparatus(
IBlockAccess w,
RenderBlocks rb,
int i,
int j,
int k,
Block block_,
int md,
boolean inv
) {
BlockApparatus block = (BlockApparatus) block_;
float w1;
float w2;
if (block.getRenderBlockPass() == 0 || inv) {
w1 = 0.0625F;
w2 = 0.125F;
IIcon t1 = this.getBottomIcon((Apparatus)block);
IIcon t2 = this.getSideIcon((Apparatus)block);
rb.setRenderBounds(w1, 0.0F, w1, 1.0F - w1, 1.0F, 1.0F - w1);
if (inv) {
ApparatusRenderingHelper.drawFaces(
rb, block, t1, t1, t2, t2, t2, t2, false
);
} else {
rb.renderStandardBlock(block, i, j, k);
}
if (!inv) {
rb.overrideBlockTexture = this.getBottomIcon((Apparatus)block);
TileConduitTank tc = (TileConduitTank) w.getTileEntity(i, j, k);
HelperLocation loc = new HelperLocation(tc);
loc.facing = ForgeDirection.WEST;
TileEntity te = loc.getConnectableTile(w);
if (te != null && tc.getConnectable(loc.facing)
&& !(te instanceof TileConduitTank)) {
rb.setRenderBounds(
0.0F, 0.5F - w2, 0.5F - w2, w1, 0.5F + w2, 0.5F + w2
);
rb.renderStandardBlock(block, i, j, k);
}
loc = new HelperLocation(tc);
loc.facing = ForgeDirection.EAST;
te = loc.getConnectableTile(w);
if (te != null && tc.getConnectable(loc.facing)
&& !(te instanceof TileConduitTank)) {
rb.setRenderBounds(
1.0F - w1, 0.5F - w2, 0.5F - w2, 1.0F, 0.5F + w2, 0.5F + w2
);
rb.renderStandardBlock(block, i, j, k);
}
loc = new HelperLocation(tc);
loc.facing = ForgeDirection.NORTH;
te = loc.getConnectableTile(w);
if (te != null && tc.getConnectable(loc.facing)
&& !(te instanceof TileConduitTank)) {
rb.setRenderBounds(
0.5F - w2, 0.5F - w2, 0.0F, 0.5F + w2, 0.5F + w2, w1
);
rb.renderStandardBlock(block, i, j, k);
}
loc = new HelperLocation(tc);
loc.facing = ForgeDirection.SOUTH;
te = loc.getConnectableTile(w);
if (te != null && tc.getConnectable(loc.facing)
&& !(te instanceof TileConduitTank)) {
rb.setRenderBounds(
0.5F - w2, 0.5F - w2, 1.0F - w1, 0.5F + w2, 0.5F + w2, 1.0F
);
rb.renderStandardBlock(block, i, j, k);
}
}
}
rb.overrideBlockTexture = null;
if (block.getRenderBlockPass() == 0 && !inv) {
w1 = 0.003F;
w2 = 0.0625F;
TileConduitTank tc = (TileConduitTank) w.getTileEntity(i, j, k);
if (tc != null && tc.pureVis + tc.taintedVis > 0.1F) {
Tessellator tessellator = Tessellator.instance;
float hfill = (1.0F - w1 * 2.0F)
* ((tc.pureVis + tc.taintedVis) / tc.getMaxVis());
float b = Math.min(1.0F, tc.pureVis / (tc.taintedVis + tc.pureVis));
rb.setRenderBounds(
w1 + w2, w1, w1 + w2, 1.0F - w1 - w2, w1 + hfill, 1.0F - w1 - w2
);
tessellator.setBrightness(20 + (int) (b * 210.0F));
tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F);
rb.renderFaceZPos(
block, (double) i, (double) j, (double) k, block.iconTcubeanim
);
rb.renderFaceZNeg(
block, (double) i, (double) j, (double) k, block.iconTcubeanim
);
rb.renderFaceXNeg(
block, (double) i, (double) j, (double) k, block.iconTcubeanim
);
rb.renderFaceXPos(
block, (double) i, (double) j, (double) k, block.iconTcubeanim
);
rb.renderFaceYPos(
block, (double) i, (double) j, (double) k, block.iconTcubeanim
);
rb.renderFaceYNeg(
block, (double) i, (double) j, (double) k, block.iconTcubeanim
);
}
}
rb.setRenderBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
}
}

View File

@ -1,142 +1,21 @@
package net.anvilcraft.thaummach.render.apparatus.apparati.fragile;
import dev.tilera.auracore.api.HelperLocation;
import net.anvilcraft.thaummach.blocks.BlockApparatusFragile;
import net.anvilcraft.thaummach.render.apparatus.ApparatusRenderingHelper;
import net.anvilcraft.thaummach.render.apparatus.IApparatusRenderer;
import net.anvilcraft.thaummach.tiles.TileConduitTank;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.tileentity.TileEntity;
import net.anvilcraft.thaummach.render.apparatus.AbstractTankApparatusRenderer;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection;
public class ConduitTankApparatusRenderer implements IApparatusRenderer {
public class ConduitTankApparatusRenderer
extends AbstractTankApparatusRenderer<BlockApparatusFragile> {
public static final ConduitTankApparatusRenderer INSTANCE
= new ConduitTankApparatusRenderer();
@Override
public void renderApparatus(
IBlockAccess w,
RenderBlocks rb,
int i,
int j,
int k,
Block block_,
int md,
boolean inv
) {
BlockApparatusFragile block = (BlockApparatusFragile) block_;
float w1;
float w2;
if (block.getRenderBlockPass() == 0 || inv) {
w1 = 0.0625F;
w2 = 0.125F;
IIcon t1 = block.iconTankBottom;
IIcon t2 = block.iconTankSide;
// TODO: WTF
//if (md != 3) {
// t1 = 78;
// t2 = 79;
//}
public IIcon getBottomIcon(BlockApparatusFragile block) {
return block.iconTankBottom;
}
rb.setRenderBounds(w1, 0.0F, w1, 1.0F - w1, 1.0F, 1.0F - w1);
if (inv) {
ApparatusRenderingHelper.drawFaces(
rb, block, t1, t1, t2, t2, t2, t2, false
);
} else {
rb.renderStandardBlock(block, i, j, k);
}
if (!inv) {
rb.overrideBlockTexture = block.iconTankBottom;
TileConduitTank tc = (TileConduitTank) w.getTileEntity(i, j, k);
HelperLocation loc = new HelperLocation(tc);
loc.facing = ForgeDirection.WEST;
TileEntity te = loc.getConnectableTile(w);
if (te != null && tc.getConnectable(loc.facing)
&& !(te instanceof TileConduitTank)) {
rb.setRenderBounds(
0.0F, 0.5F - w2, 0.5F - w2, w1, 0.5F + w2, 0.5F + w2
);
rb.renderStandardBlock(block, i, j, k);
}
loc = new HelperLocation(tc);
loc.facing = ForgeDirection.EAST;
te = loc.getConnectableTile(w);
if (te != null && tc.getConnectable(loc.facing)
&& !(te instanceof TileConduitTank)) {
rb.setRenderBounds(
1.0F - w1, 0.5F - w2, 0.5F - w2, 1.0F, 0.5F + w2, 0.5F + w2
);
rb.renderStandardBlock(block, i, j, k);
}
loc = new HelperLocation(tc);
loc.facing = ForgeDirection.NORTH;
te = loc.getConnectableTile(w);
if (te != null && tc.getConnectable(loc.facing)
&& !(te instanceof TileConduitTank)) {
rb.setRenderBounds(
0.5F - w2, 0.5F - w2, 0.0F, 0.5F + w2, 0.5F + w2, w1
);
rb.renderStandardBlock(block, i, j, k);
}
loc = new HelperLocation(tc);
loc.facing = ForgeDirection.SOUTH;
te = loc.getConnectableTile(w);
if (te != null && tc.getConnectable(loc.facing)
&& !(te instanceof TileConduitTank)) {
rb.setRenderBounds(
0.5F - w2, 0.5F - w2, 1.0F - w1, 0.5F + w2, 0.5F + w2, 1.0F
);
rb.renderStandardBlock(block, i, j, k);
}
}
}
rb.overrideBlockTexture = null;
if (block.getRenderBlockPass() == 0 && !inv) {
w1 = 0.003F;
w2 = 0.0625F;
TileConduitTank tc = (TileConduitTank) w.getTileEntity(i, j, k);
if (tc != null && tc.pureVis + tc.taintedVis > 0.1F) {
Tessellator tessellator = Tessellator.instance;
float hfill = (1.0F - w1 * 2.0F)
* ((tc.pureVis + tc.taintedVis) / tc.getMaxVis());
float b = Math.min(1.0F, tc.pureVis / (tc.taintedVis + tc.pureVis));
rb.setRenderBounds(
w1 + w2, w1, w1 + w2, 1.0F - w1 - w2, w1 + hfill, 1.0F - w1 - w2
);
tessellator.setBrightness(20 + (int) (b * 210.0F));
tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F);
rb.renderFaceZPos(
block, (double) i, (double) j, (double) k, block.iconTcubeanim
);
rb.renderFaceZNeg(
block, (double) i, (double) j, (double) k, block.iconTcubeanim
);
rb.renderFaceXNeg(
block, (double) i, (double) j, (double) k, block.iconTcubeanim
);
rb.renderFaceXPos(
block, (double) i, (double) j, (double) k, block.iconTcubeanim
);
rb.renderFaceYPos(
block, (double) i, (double) j, (double) k, block.iconTcubeanim
);
rb.renderFaceYNeg(
block, (double) i, (double) j, (double) k, block.iconTcubeanim
);
}
}
rb.setRenderBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
@Override
public IIcon getSideIcon(BlockApparatusFragile block) {
return block.iconTankSide;
}
}

View File

@ -0,0 +1,20 @@
package net.anvilcraft.thaummach.render.apparatus.apparati.metal;
import net.anvilcraft.thaummach.blocks.BlockApparatusMetal;
import net.anvilcraft.thaummach.render.apparatus.AbstractTankApparatusRenderer;
import net.minecraft.util.IIcon;
public class TankApparatusRenderer
extends AbstractTankApparatusRenderer<BlockApparatusMetal> {
public static TankApparatusRenderer INSTANCE = new TankApparatusRenderer();
@Override
public IIcon getBottomIcon(BlockApparatusMetal block) {
return block.iconTankBottom;
}
@Override
public IIcon getSideIcon(BlockApparatusMetal block) {
return block.iconTankSide;
}
}

View File

@ -3,6 +3,7 @@ package net.anvilcraft.thaummach.tiles;
import dev.tilera.auracore.api.HelperLocation;
import dev.tilera.auracore.api.machine.IConnection;
import net.anvilcraft.thaummach.AuraUtils;
import net.anvilcraft.thaummach.blocks.BlockApparatusFragile;
import net.minecraft.init.Blocks;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
@ -41,12 +42,14 @@ public class TileConduitTank extends TileEntity implements IConnection {
this.wait = 10;
this.calculateSuction();
int breakchance = 999;
if (this.getBlockMetadata() != 3) {
if (this.getBlockMetadata()
!= BlockApparatusFragile.MetaVals.CONDUIT_TANK.ordinal()) {
breakchance = 3333;
}
if (this.taintedVis > this.getMaxVis() * 0.9F) {
if (this.getBlockMetadata() == 3
if (this.getBlockMetadata()
== BlockApparatusFragile.MetaVals.CONDUIT_TANK.ordinal()
&& super.worldObj.rand.nextInt(breakchance) == 123) {
AuraUtils.taintExplosion(
super.worldObj, super.xCoord, super.yCoord, super.zCoord
@ -269,7 +272,10 @@ public class TileConduitTank extends TileEntity implements IConnection {
}
public float getMaxVis() {
return this.getBlockMetadata() != 3 ? 1000.0F : 500.0F;
return this.getBlockMetadata()
!= BlockApparatusFragile.MetaVals.CONDUIT_TANK.ordinal()
? 1000.0F
: 500.0F;
}
public float[] subtractVis(float amount) {

View File

@ -10,6 +10,9 @@ import net.minecraft.init.Blocks;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.EnumSkyBlock;
@ -37,6 +40,9 @@ public class TileSoulBrazier extends TileEntity implements ISidedInventory {
@Override
public void updateEntity() {
if (this.worldObj.isRemote)
return;
if (this.lightingDelay <= 0 && this.isWorking() != this.previousLight) {
super.worldObj.markBlockForUpdate(super.xCoord, super.yCoord, super.zCoord);
super.worldObj.updateLightByType(
@ -283,4 +289,30 @@ public class TileSoulBrazier extends TileEntity implements ISidedInventory {
public boolean isUseableByPlayer(EntityPlayer p_70300_1_) {
return true;
}
@Override
public Packet getDescriptionPacket() {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setInteger("delay", this.delay);
nbt.setInteger("burnTime", this.burnTime);
nbt.setBoolean("previousLight", this.previousLight);
nbt.setInteger("lightingDelay", this.lightingDelay);
return new S35PacketUpdateTileEntity(
this.xCoord, this.yCoord, this.zCoord, this.getBlockMetadata(), nbt
);
}
@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
NBTTagCompound nbt = pkt.func_148857_g();
this.delay = nbt.getInteger("delay");
this.burnTime = nbt.getInteger("burnTime");
this.previousLight = nbt.getBoolean("previousLight");
this.lightingDelay = nbt.getInteger("lightingDelay");
// schedule light update
this.worldObj.func_147451_t(this.xCoord, this.yCoord, this.zCoord);
}
}

View File

@ -25,6 +25,12 @@ tile.thaummach:apparatus_metal_void_interface.name=Void Interface
tile.thaummach:apparatus_metal_tank.name=Thaumium Reinforced Tank
tile.thaummach:apparatus_metal_soul_brazier.name=Soul Brazier
tile.thaummach:apparatus_wood_condenser.name=Vis Condenser
tile.thaummach:apparatus_wood_duplicator.name=Thaumic Duplicator
tile.thaummach:apparatus_wood_repairer.name=Thaumic Restorer
tile.thaummach:apparatus_wood_dawn_totem.name=Dawn Totem
tile.thaummach:apparatus_wood_dusk_totem.name=Dusk Totem
# ---- ITEMS ----
item.thaummach:focus_0.name=Arcane Focus

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 833 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 795 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 815 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 852 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 776 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 742 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B