mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Merge remote-tracking branch 'HbmMods/master'
This commit is contained in:
commit
c191374d51
77
src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java
Normal file
77
src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java
Normal file
@ -0,0 +1,77 @@
|
||||
package api.hbm.fluid;
|
||||
|
||||
import com.hbm.inventory.FluidTank;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
|
||||
/**
|
||||
* transceiver [trăn-sē′vər], noun
|
||||
*
|
||||
* 1. A transmitter and receiver housed together in a single unit and having some circuits in common, often for portable or mobile use.
|
||||
* 2. A combined radio transmitter and receiver.
|
||||
* 3. A device that performs transmitting and receiving functions, especially if using common components.
|
||||
*
|
||||
* The American Heritage® Dictionary of the English Language, 5th Edition.
|
||||
*
|
||||
* @author hbm
|
||||
*
|
||||
*/
|
||||
public interface IFluidStandardTransceiver extends IFluidUser {
|
||||
|
||||
public FluidTank[] getSendingTanks();
|
||||
public FluidTank[] getReceivingTanks();
|
||||
|
||||
@Override
|
||||
public default long getTotalFluidForSend(FluidType type) {
|
||||
|
||||
for(FluidTank tank : getSendingTanks()) {
|
||||
if(tank.getTankType() == type) {
|
||||
return tank.getFill();
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public default void removeFluidForTransfer(FluidType type, long amount) {
|
||||
|
||||
for(FluidTank tank : getSendingTanks()) {
|
||||
if(tank.getTankType() == type) {
|
||||
tank.setFill(tank.getFill() - (int) amount);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public default long getDemand(FluidType type) {
|
||||
|
||||
for(FluidTank tank : getReceivingTanks()) {
|
||||
if(tank.getTankType() == type) {
|
||||
return tank.getMaxFill() - tank.getFill();
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public default long transferFluid(FluidType type, long amount) {
|
||||
|
||||
for(FluidTank tank : getReceivingTanks()) {
|
||||
if(tank.getTankType() == type) {
|
||||
tank.setFill(tank.getFill() + (int) amount);
|
||||
|
||||
if(tank.getFill() > tank.getMaxFill()) {
|
||||
long overshoot = tank.getFill() - tank.getMaxFill();
|
||||
tank.setFill(tank.getMaxFill());
|
||||
return overshoot;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return amount;
|
||||
}
|
||||
}
|
||||
@ -64,9 +64,23 @@ public interface IFluidUser extends IFluidConnector {
|
||||
public default long getTotalFluidForSend(FluidType type) { return 0; }
|
||||
public default void removeFluidForTransfer(FluidType type, long amount) { }
|
||||
|
||||
public default void updateStandardPipes(FluidType type, World world, int x, int y, int z) {
|
||||
public default void subscribeToAllAround(FluidType type, TileEntity te) {
|
||||
subscribeToAllAround(type, te.getWorldObj(), te.xCoord, te.yCoord, te.zCoord);
|
||||
}
|
||||
|
||||
public default void subscribeToAllAround(FluidType type, World world, int x, int y, int z) {
|
||||
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||
this.trySubscribe(type, world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir);
|
||||
}
|
||||
|
||||
public default void unsubscribeToAllAround(FluidType type, TileEntity te) {
|
||||
unsubscribeToAllAround(type, te.getWorldObj(), te.xCoord, te.yCoord, te.zCoord);
|
||||
}
|
||||
|
||||
public default void unsubscribeToAllAround(FluidType type, World world, int x, int y, int z) {
|
||||
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||
this.tryUnsubscribe(type, world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package com.hbm.animloader;
|
||||
|
||||
import java.nio.FloatBuffer;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.util.vector.Matrix4f;
|
||||
import org.lwjgl.util.vector.Quaternion;
|
||||
|
||||
@ -10,6 +11,15 @@ import com.hbm.util.BobMathUtil;
|
||||
import net.minecraft.client.renderer.GLAllocation;
|
||||
import net.minecraft.util.Vec3;
|
||||
|
||||
/**
|
||||
* Bob:
|
||||
* Ported from 1.12.2.
|
||||
* Mostly gibberish to me, probably written in the ancient egyptian language.
|
||||
* Any unmarked code comments are probably from Drillgon or code I had to throw out myself.
|
||||
*
|
||||
* @author Drillgon200 for the most part
|
||||
*
|
||||
*/
|
||||
public class Transform {
|
||||
|
||||
protected static FloatBuffer auxGLMatrix = GLAllocation.createDirectFloatBuffer(16);
|
||||
@ -49,37 +59,70 @@ public class Transform {
|
||||
}
|
||||
|
||||
public void interpolateAndApply(Transform other, float inter){
|
||||
Vec3 trans = BobMathUtil.interpVec(this.translation, other.translation, inter); //ORIGINAL: translation.interpolate(other.translation, inter);
|
||||
Vec3 scale = BobMathUtil.interpVec(this.scale, other.scale, inter); //ORIGINAL: this.scale.interpolate(other.scale, inter);
|
||||
Vec3 trans = BobMathUtil.interpVec(this.translation, other.translation, inter);
|
||||
Vec3 scale = BobMathUtil.interpVec(this.scale, other.scale, inter);
|
||||
Quaternion rot = slerp(rotation, other.rotation, inter);
|
||||
//GlStateManager.quatToGlMatrix(auxGLMatrix, rot); TODO: find implementation
|
||||
quatToGlMatrix(auxGLMatrix, rot);
|
||||
scale(auxGLMatrix, scale);
|
||||
auxGLMatrix.put(12, (float) trans.xCoord);
|
||||
auxGLMatrix.put(13, (float) trans.yCoord);
|
||||
auxGLMatrix.put(14, (float) trans.zCoord);
|
||||
|
||||
//for(int i = 0; i < 16; i ++){
|
||||
//System.out.print(auxGLMatrix.get(i) + " ");
|
||||
//}
|
||||
//System.out.println();
|
||||
//GlStateManager.multMatrix(auxGLMatrix); TODO: find implementation
|
||||
GL11.glMultMatrix(auxGLMatrix);
|
||||
}
|
||||
|
||||
private void scale(FloatBuffer matrix, Vec3 scale){
|
||||
matrix.put(0, (float) (matrix.get(0)*scale.xCoord));
|
||||
matrix.put(4, (float) (matrix.get(4)*scale.xCoord));
|
||||
matrix.put(8, (float) (matrix.get(8)*scale.xCoord));
|
||||
matrix.put(12, (float) (matrix.get(12)*scale.xCoord));
|
||||
public static FloatBuffer quatToGlMatrix(FloatBuffer buf, Quaternion q) {
|
||||
buf.clear();
|
||||
float xx = q.x * q.x;
|
||||
float xy = q.x * q.y;
|
||||
float xz = q.x * q.z;
|
||||
float xw = q.x * q.w;
|
||||
float yy = q.y * q.y;
|
||||
float yz = q.y * q.z;
|
||||
float yw = q.y * q.w;
|
||||
float zz = q.z * q.z;
|
||||
float zw = q.z * q.w;
|
||||
|
||||
matrix.put(1, (float) (matrix.get(1)*scale.yCoord));
|
||||
matrix.put(5, (float) (matrix.get(5)*scale.yCoord));
|
||||
matrix.put(9, (float) (matrix.get(9)*scale.yCoord));
|
||||
matrix.put(13, (float) (matrix.get(13)*scale.yCoord));
|
||||
//Bob: i may not know what a quarternion is but grouping these in parts of 4 looks nice
|
||||
buf.put(1.0F - 2.0F * (yy + zz));
|
||||
buf.put(2.0F * (xy + zw));
|
||||
buf.put(2.0F * (xz - yw));
|
||||
buf.put(0.0F);
|
||||
|
||||
matrix.put(2, (float) (matrix.get(2)*scale.zCoord));
|
||||
matrix.put(6, (float) (matrix.get(6)*scale.zCoord));
|
||||
matrix.put(10, (float) (matrix.get(10)*scale.zCoord));
|
||||
matrix.put(14, (float) (matrix.get(14)*scale.zCoord));
|
||||
buf.put(2.0F * (xy - zw));
|
||||
buf.put(1.0F - 2.0F * (xx + zz));
|
||||
buf.put(2.0F * (yz + xw));
|
||||
buf.put(0.0F);
|
||||
|
||||
buf.put(2.0F * (xz + yw));
|
||||
buf.put(2.0F * (yz - xw));
|
||||
buf.put(1.0F - 2.0F * (xx + yy));
|
||||
buf.put(0.0F);
|
||||
|
||||
buf.put(0.0F);
|
||||
buf.put(0.0F);
|
||||
buf.put(0.0F);
|
||||
buf.put(1.0F);
|
||||
|
||||
buf.rewind();
|
||||
return buf;
|
||||
}
|
||||
|
||||
private void scale(FloatBuffer matrix, Vec3 scale) {
|
||||
matrix.put(0, (float) (matrix.get(0) * scale.xCoord));
|
||||
matrix.put(4, (float) (matrix.get(4) * scale.xCoord));
|
||||
matrix.put(8, (float) (matrix.get(8) * scale.xCoord));
|
||||
matrix.put(12, (float) (matrix.get(12) * scale.xCoord));
|
||||
|
||||
matrix.put(1, (float) (matrix.get(1) * scale.yCoord));
|
||||
matrix.put(5, (float) (matrix.get(5) * scale.yCoord));
|
||||
matrix.put(9, (float) (matrix.get(9) * scale.yCoord));
|
||||
matrix.put(13, (float) (matrix.get(13) * scale.yCoord));
|
||||
|
||||
matrix.put(2, (float) (matrix.get(2) * scale.zCoord));
|
||||
matrix.put(6, (float) (matrix.get(6) * scale.zCoord));
|
||||
matrix.put(10, (float) (matrix.get(10) * scale.zCoord));
|
||||
matrix.put(14, (float) (matrix.get(14) * scale.zCoord));
|
||||
}
|
||||
|
||||
//Thanks, wikipedia
|
||||
@ -116,18 +159,18 @@ public class Transform {
|
||||
}
|
||||
|
||||
// Since dot is in range [0, DOT_THRESHOLD], acos is safe
|
||||
double theta_0 = Math.acos(dot); // theta_0 = angle between input vectors
|
||||
double theta = theta_0*t; // theta = angle between v0 and result
|
||||
double sin_theta = Math.sin(theta); // compute this value only once
|
||||
double sin_theta_0 = Math.sin(theta_0); // compute this value only once
|
||||
double theta_0 = Math.acos(dot); // theta_0 = angle between input vectors
|
||||
double theta = theta_0*t; // theta = angle between v0 and result
|
||||
double sin_theta = Math.sin(theta); // compute this value only once
|
||||
double sin_theta_0 = Math.sin(theta_0); // compute this value only once
|
||||
|
||||
float s0 = (float) (Math.cos(theta) - dot * sin_theta / sin_theta_0); // == sin(theta_0 - theta) / sin(theta_0)
|
||||
float s1 = (float) (sin_theta / sin_theta_0);
|
||||
|
||||
return new Quaternion(s0*v0.x + s1*v1.x,
|
||||
s0*v0.y + s1*v1.y,
|
||||
s0*v0.z + s1*v1.z,
|
||||
s0*v0.w + s1*v1.w);
|
||||
return new Quaternion(s0 * v0.x + s1 * v1.x,
|
||||
s0 * v0.y + s1 * v1.y,
|
||||
s0 * v0.z + s1 * v1.z,
|
||||
s0 * v0.w + s1 * v1.w);
|
||||
}
|
||||
|
||||
}
|
||||
@ -558,6 +558,8 @@ public class ModBlocks {
|
||||
public static Block barbed_wire_ultradeath;
|
||||
public static Block spikes;
|
||||
|
||||
public static Block charger;
|
||||
|
||||
public static Block tesla;
|
||||
|
||||
public static Block marker_structure;
|
||||
@ -2010,6 +2012,8 @@ public class ModBlocks {
|
||||
barbed_wire_ultradeath = new BarbedWire(Material.iron).setBlockName("barbed_wire_ultradeath").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_ultradeath_model");
|
||||
spikes = new Spikes(Material.iron).setBlockName("spikes").setHardness(2.5F).setResistance(5.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":spikes");
|
||||
|
||||
charger = new Charger(Material.iron).setBlockName("charger").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
|
||||
tesla = new MachineTesla(Material.iron).setBlockName("tesla").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":tesla");
|
||||
|
||||
marker_structure = new BlockMarker(Material.iron).setBlockName("marker_structure").setHardness(0.0F).setResistance(0.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":marker_structure");
|
||||
@ -2636,6 +2640,9 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(spikes, spikes.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(tesla, tesla.getUnlocalizedName());
|
||||
|
||||
//Charger
|
||||
GameRegistry.registerBlock(charger, charger.getUnlocalizedName());
|
||||
|
||||
//Siege blocks
|
||||
GameRegistry.registerBlock(siege_shield, ItemBlockLore.class, siege_shield.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(siege_internal, ItemBlockLore.class, siege_internal.getUnlocalizedName());
|
||||
|
||||
@ -27,11 +27,11 @@ public class BarbedWire extends Block {
|
||||
|
||||
public void onEntityCollidedWithBlock(World p_149670_1_, int x, int y, int z, Entity ent) {
|
||||
|
||||
//ent.setInWeb();
|
||||
ent.setInWeb();
|
||||
|
||||
ent.motionX *= 0.25D;
|
||||
ent.motionX *= 0.15D;
|
||||
ent.motionY *= 0.1D;
|
||||
ent.motionZ *= 0.25D;
|
||||
ent.motionZ *= 0.15D;
|
||||
|
||||
if(this == ModBlocks.barbed_wire) {
|
||||
ent.attackEntityFrom(DamageSource.cactus, 2.0F);
|
||||
|
||||
78
src/main/java/com/hbm/blocks/machine/Charger.java
Normal file
78
src/main/java/com/hbm/blocks/machine/Charger.java
Normal file
@ -0,0 +1,78 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import com.hbm.tileentity.machine.TileEntityCharger;
|
||||
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
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 Charger extends BlockContainer {
|
||||
|
||||
public Charger(Material mat) {
|
||||
super(mat);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return new TileEntityCharger();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if(i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
}
|
||||
if(i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
}
|
||||
if(i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
}
|
||||
if(i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||
float f = 0.0625F;
|
||||
|
||||
switch(world.getBlockMetadata(x, y, z)) {
|
||||
case 2: this.setBlockBounds(5 * f, 0.25F, 12 * f, 11 * f, 0.75F, 1F); break;
|
||||
case 3: this.setBlockBounds(5 * f, 0.25F, 0F, 11 * f, 0.75F, 4 * f); break;
|
||||
case 4: this.setBlockBounds(12 * f, 0.25F, 5 * f, 1F, 0.75F, 11 * f); break;
|
||||
case 5: this.setBlockBounds(0F, 0.25F, 5 * f, 4 * f, 0.75F, 11 * f); break;
|
||||
default: this.setBlockBounds(5 * f, 0.25F, 5 * f, 11 * f, 0.75F, 11 * f); break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
this.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);
|
||||
}
|
||||
}
|
||||
@ -57,6 +57,8 @@ public class MachineChungus extends BlockDummyable {
|
||||
|
||||
if(!world.isRemote) {
|
||||
FluidType type = entity.tanks[0].getTankType();
|
||||
entity.onLeverPull(type);
|
||||
|
||||
if(type == Fluids.STEAM) {
|
||||
entity.tanks[0].setTankType(Fluids.HOTSTEAM);
|
||||
entity.tanks[1].setTankType(Fluids.STEAM);
|
||||
@ -78,7 +80,6 @@ public class MachineChungus extends BlockDummyable {
|
||||
entity.tanks[0].setFill(Math.min(entity.tanks[0].getFill() * 1000, entity.tanks[0].getMaxFill()));
|
||||
entity.tanks[1].setFill(0);
|
||||
}
|
||||
|
||||
entity.markDirty();
|
||||
}
|
||||
|
||||
@ -108,10 +109,10 @@ public class MachineChungus extends BlockDummyable {
|
||||
MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {2, 0, 10, -7, 1, 1}, this, dir);
|
||||
world.setBlock(x + dir.offsetX, y + 2, z + dir.offsetZ, this, dir.ordinal(), 3);
|
||||
|
||||
this.makeExtra(world, x + dir.offsetX, y + 2, z + dir.offsetZ);
|
||||
this.makeExtra(world, x + dir.offsetX * (o - 10), y, z + dir.offsetZ * (o - 10));
|
||||
this.makeExtra(world, x + dir.offsetX, y + 2, z + dir.offsetZ); //front connector
|
||||
this.makeExtra(world, x + dir.offsetX * (o - 10), y, z + dir.offsetZ * (o - 10)); //back connector
|
||||
ForgeDirection side = dir.getRotation(ForgeDirection.UP);
|
||||
this.makeExtra(world, x + dir.offsetX * o + side.offsetX * 2 , y, z + dir.offsetZ * o + side.offsetZ * 2);
|
||||
this.makeExtra(world, x + dir.offsetX * o + side.offsetX * 2 , y, z + dir.offsetZ * o + side.offsetZ * 2); //side connectors
|
||||
this.makeExtra(world, x + dir.offsetX * o - side.offsetX * 2 , y, z + dir.offsetZ * o - side.offsetZ * 2);
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.hbm.blocks.machine.rbmk;
|
||||
|
||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKHeater;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@ -13,6 +14,9 @@ public class RBMKHeater extends RBMKBase {
|
||||
|
||||
if(meta >= this.offset)
|
||||
return new TileEntityRBMKHeater();
|
||||
|
||||
if(hasExtra(meta))
|
||||
return new TileEntityProxyCombo(false, false, true);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -138,6 +138,11 @@ public class EntitySiegeCraft extends EntityUFOBase implements IBossDisplayData
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getScanRange() {
|
||||
return 100;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int targetHeightOffset() {
|
||||
return 7 + rand.nextInt(5);
|
||||
|
||||
@ -60,17 +60,17 @@ public class HbmPlayerProps implements IExtendedEntityProperties {
|
||||
this.enableBackpack = !this.enableBackpack;
|
||||
|
||||
if(this.enableBackpack)
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON");
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON", MainRegistry.proxy.ID_JETPACK);
|
||||
else
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF");
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF", MainRegistry.proxy.ID_JETPACK);
|
||||
}
|
||||
if(key == EnumKeybind.TOGGLE_HEAD) {
|
||||
this.enableHUD = !this.enableHUD;
|
||||
|
||||
if(this.enableHUD)
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON");
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD);
|
||||
else
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF");
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF", MainRegistry.proxy.ID_HUD);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@ import com.hbm.handler.BulletConfiguration;
|
||||
import com.hbm.handler.GunConfiguration;
|
||||
import com.hbm.interfaces.IBomb;
|
||||
import com.hbm.interfaces.IBomb.BombReturnCode;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.interfaces.IBulletImpactBehavior;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.PlayerInformPacket;
|
||||
@ -101,7 +102,7 @@ public class GunDetonatorFactory {
|
||||
if(ret.wasSuccessful() && bullet.shooter instanceof EntityPlayerMP) {
|
||||
EntityPlayerMP player = (EntityPlayerMP) bullet.shooter;
|
||||
world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(EnumChatFormatting.YELLOW).flush()), (EntityPlayerMP) player);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(EnumChatFormatting.YELLOW).flush(), MainRegistry.proxy.ID_DETONATOR), (EntityPlayerMP) player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,108 +1,16 @@
|
||||
package com.hbm.handler.nei;
|
||||
|
||||
import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.inventory.recipes.FuelPoolRecipes;
|
||||
import com.hbm.lib.RefStrings;
|
||||
|
||||
import codechicken.nei.NEIServerUtils;
|
||||
import codechicken.nei.PositionedStack;
|
||||
import codechicken.nei.recipe.TemplateRecipeHandler;
|
||||
import net.minecraft.item.ItemStack;
|
||||
public class FuelPoolHandler extends NEIUniversalHandler {
|
||||
|
||||
public class FuelPoolHandler extends TemplateRecipeHandler {
|
||||
|
||||
public class RecipeSet extends TemplateRecipeHandler.CachedRecipe {
|
||||
|
||||
PositionedStack input;
|
||||
PositionedStack output;
|
||||
|
||||
public RecipeSet(ItemStack in, ItemStack out) {
|
||||
this.input = new PositionedStack(in, 48, 24);
|
||||
this.output = new PositionedStack(out, 102, 24);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PositionedStack> getIngredients() {
|
||||
return getCycledIngredients(cycleticks / 48, Arrays.asList(input));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PositionedStack getResult() {
|
||||
return output;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PositionedStack> getOtherStacks() {
|
||||
return Arrays.asList(new PositionedStack(new ItemStack(ModBlocks.machine_waste_drum), 75, 31));
|
||||
}
|
||||
public FuelPoolHandler() {
|
||||
super("Spent Fuel Pool Drum", ModBlocks.machine_waste_drum, FuelPoolRecipes.recipes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeName() {
|
||||
return "Spent Fuel Pool Drum";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGuiTexture() {
|
||||
return RefStrings.MODID + ":textures/gui/nei/gui_nei.png";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawBackground(int recipe) {
|
||||
super.drawBackground(recipe);
|
||||
drawTexturedModalRect(47, 23, 5, 87, 18, 18);
|
||||
drawTexturedModalRect(101, 23, 5, 87, 18, 18);
|
||||
drawTexturedModalRect(74, 14, 59, 87, 18, 38);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadCraftingRecipes(String outputId, Object... results) {
|
||||
|
||||
if(outputId.equals("ntmSpentDrum")) {
|
||||
|
||||
for(Entry<ComparableStack, ItemStack> recipe : FuelPoolRecipes.recipes.entrySet()) {
|
||||
this.arecipes.add(new RecipeSet(recipe.getKey().toStack(), recipe.getValue()));
|
||||
}
|
||||
|
||||
} else {
|
||||
super.loadCraftingRecipes(outputId, results);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadCraftingRecipes(ItemStack result) {
|
||||
|
||||
for(Entry<ComparableStack, ItemStack> recipe : FuelPoolRecipes.recipes.entrySet()) {
|
||||
if(NEIServerUtils.areStacksSameTypeCrafting(recipe.getValue(), result)) {
|
||||
this.arecipes.add(new RecipeSet(recipe.getKey().toStack(), recipe.getValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadUsageRecipes(String inputId, Object... ingredients) {
|
||||
|
||||
if(inputId.equals("ntmSpentDrum")) {
|
||||
loadCraftingRecipes("ntmSpentDrum", new Object[0]);
|
||||
} else {
|
||||
super.loadUsageRecipes(inputId, ingredients);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadUsageRecipes(ItemStack ingredient) {
|
||||
|
||||
for(Entry<ComparableStack, ItemStack> recipe : FuelPoolRecipes.recipes.entrySet()) {
|
||||
if(NEIServerUtils.areStacksSameTypeCrafting(recipe.getKey().toStack(), ingredient)) {
|
||||
this.arecipes.add(new RecipeSet(recipe.getKey().toStack(), recipe.getValue()));
|
||||
}
|
||||
}
|
||||
public String getKey() {
|
||||
return "ntmSpentDrum";
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,8 +3,6 @@ package com.hbm.handler.nei;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.inventory.recipes.SolidificationRecipes;
|
||||
|
||||
import codechicken.nei.recipe.TemplateRecipeHandler;
|
||||
|
||||
public class SolidificationHandler extends NEIUniversalHandler {
|
||||
|
||||
public SolidificationHandler() {
|
||||
|
||||
@ -233,12 +233,18 @@ public class FluidTank {
|
||||
}
|
||||
}
|
||||
|
||||
public void setType(int in, ItemStack[] slots) {
|
||||
setType(in, in, slots);
|
||||
public boolean setType(int in, ItemStack[] slots) {
|
||||
return setType(in, in, slots);
|
||||
}
|
||||
|
||||
//Changes tank type
|
||||
public void setType(int in, int out, ItemStack[] slots) {
|
||||
/**
|
||||
* Changes the tank type and returns true if successful
|
||||
* @param in
|
||||
* @param out
|
||||
* @param slots
|
||||
* @return
|
||||
*/
|
||||
public boolean setType(int in, int out, ItemStack[] slots) {
|
||||
|
||||
if(slots[in] != null && slots[in].getItem() instanceof ItemFluidIdentifier) {
|
||||
|
||||
@ -248,6 +254,7 @@ public class FluidTank {
|
||||
if(type != newType) {
|
||||
type = newType;
|
||||
fluid = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
} else if(slots[out] == null) {
|
||||
@ -257,9 +264,12 @@ public class FluidTank {
|
||||
slots[out] = slots[in].copy();
|
||||
slots[in] = null;
|
||||
fluid = 0;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -210,6 +210,7 @@ public class GUIRBMKConsole extends GuiScreen {
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("incomplete-switch") //shut up
|
||||
protected void drawGuiContainerBackgroundLayer(float interp, int mX, int mY) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
@ -286,6 +287,13 @@ public class GUIRBMKConsole extends GuiScreen {
|
||||
drawTexturedModalRect(guiLeft + x + 4, guiTop + y + 7, 44, 189, 2, 2);
|
||||
|
||||
break;
|
||||
|
||||
case HEATEX:
|
||||
int cc = (int)Math.ceil((col.data.getInteger("water")) * 8 / col.data.getDouble("maxWater"));
|
||||
drawTexturedModalRect(guiLeft + x + 1, guiTop + y + size - cc - 1, 131, 191 - cc, 3, cc);
|
||||
int hc = (int)Math.ceil((col.data.getInteger("steam")) * 8 / col.data.getDouble("maxSteam"));
|
||||
drawTexturedModalRect(guiLeft + x + 6, guiTop + y + size - hc - 1, 136, 191 - hc, 3, hc);
|
||||
break;
|
||||
}
|
||||
|
||||
if(this.selection[i])
|
||||
|
||||
@ -34,7 +34,7 @@ public class ItemColtanCompass extends Item {
|
||||
lease = System.currentTimeMillis() + 1000;
|
||||
|
||||
Vec3 vec = Vec3.createVectorHelper(entity.posX - lastX, 0, entity.posZ - lastZ);
|
||||
MainRegistry.proxy.displayTooltip(((int) vec.lengthVector()) + "m");
|
||||
MainRegistry.proxy.displayTooltip(((int) vec.lengthVector()) + "m", MainRegistry.proxy.ID_COMPASS);
|
||||
}
|
||||
|
||||
if(ItemColtanCompass.this.lease < System.currentTimeMillis()) {
|
||||
|
||||
@ -47,11 +47,11 @@ public class ItemLaserDetonator extends Item implements IHoldableWeapon {
|
||||
MainRegistry.logger.log(Level.INFO, "[DET] Tried to detonate block at " + x + " / " + y + " / " + z + " by " + player.getDisplayName() + "!");
|
||||
|
||||
world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(ret.wasSuccessful() ? EnumChatFormatting.YELLOW : EnumChatFormatting.RED).flush()), (EntityPlayerMP) player);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(ret.wasSuccessful() ? EnumChatFormatting.YELLOW : EnumChatFormatting.RED).flush(), MainRegistry.proxy.ID_DETONATOR), (EntityPlayerMP) player);
|
||||
|
||||
} else {
|
||||
world.playSoundAtEntity(player, "hbm:item.techBoop", 1.0F, 1.0F);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(BombReturnCode.ERROR_NO_BOMB.getUnlocalizedMessage()).color(EnumChatFormatting.RED).flush()), (EntityPlayerMP) player);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(BombReturnCode.ERROR_NO_BOMB.getUnlocalizedMessage()).color(EnumChatFormatting.RED).flush(), MainRegistry.proxy.ID_DETONATOR), (EntityPlayerMP) player);
|
||||
}
|
||||
} else {
|
||||
|
||||
|
||||
@ -111,7 +111,7 @@ public class ItemWiring extends Item {
|
||||
entity.posY - stack.stackTagCompound.getInteger("y"),
|
||||
entity.posZ - stack.stackTagCompound.getInteger("z"));
|
||||
|
||||
MainRegistry.proxy.displayTooltip(((int) vec.lengthVector()) + "m");
|
||||
MainRegistry.proxy.displayTooltip(((int) vec.lengthVector()) + "m", MainRegistry.proxy.ID_CABLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,6 +69,8 @@ import com.hbm.render.item.weapon.*;
|
||||
import com.hbm.render.loader.HmfModelLoader;
|
||||
import com.hbm.render.tileentity.*;
|
||||
import com.hbm.render.util.MissilePart;
|
||||
import com.hbm.render.util.RenderInfoSystem;
|
||||
import com.hbm.render.util.RenderInfoSystem.InfoEntry;
|
||||
import com.hbm.sound.AudioWrapper;
|
||||
import com.hbm.sound.AudioWrapperClient;
|
||||
import com.hbm.sound.nt.ISoundSourceTE;
|
||||
@ -93,11 +95,14 @@ import cpw.mods.fml.relauncher.ReflectionHelper;
|
||||
|
||||
public class ClientProxy extends ServerProxy {
|
||||
|
||||
public RenderInfoSystem theInfoSystem = new RenderInfoSystem();
|
||||
|
||||
@Override
|
||||
public void registerRenderInfo() {
|
||||
|
||||
registerClientEventHandler(new ModEventHandlerClient());
|
||||
registerClientEventHandler(new ModEventHandlerRenderer());
|
||||
registerClientEventHandler(theInfoSystem);
|
||||
|
||||
AdvancedModelLoader.registerModelHandler(new HmfModelLoader());
|
||||
ResourceManager.loadAnimatedModels();
|
||||
@ -271,6 +276,8 @@ public class ClientProxy extends ServerProxy {
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConnector.class, new RenderConnector());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonLarge.class, new RenderPylonLarge());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySubstation.class, new RenderSubstation());
|
||||
//chargers
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCharger.class, new RenderCharger());
|
||||
//multiblocks
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityStructureMarker.class, new RenderStructureMaker());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMultiblock.class, new RenderMultiblock());
|
||||
@ -1618,11 +1625,14 @@ public class ClientProxy extends ServerProxy {
|
||||
|
||||
@Override
|
||||
public void playSound(String sound, Object data) { }
|
||||
|
||||
|
||||
@Override
|
||||
public void displayTooltip(String msg) {
|
||||
public void displayTooltip(String msg, int time, int id) {
|
||||
|
||||
Minecraft.getMinecraft().ingameGUI.func_110326_a(msg, false);
|
||||
if(id != 0)
|
||||
this.theInfoSystem.push(new InfoEntry(msg, time), id);
|
||||
else
|
||||
this.theInfoSystem.push(new InfoEntry(msg, time));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -871,6 +871,8 @@ public class CraftingManager {
|
||||
addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.RBMK.ordinal()), new Object[] { Items.book, Items.potato });
|
||||
addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.HADRON.ordinal()), new Object[] { Items.book, ModItems.fuse });
|
||||
addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.STARTER.ordinal()), new Object[] { Items.book, Items.iron_ingot });
|
||||
|
||||
addRecipeAuto(new ItemStack(ModBlocks.charger), new Object[] { "IGI", "ICI", "PDP", 'I', STEEL.ingot(), 'G', Items.glowstone_dust, 'C', ModBlocks.red_wire_coated, 'P', IRON.plate(), 'D', ModItems.coil_copper });
|
||||
|
||||
addShapelessAuto(new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_RESTORED.ordinal()), new Object[] { new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_DIGAMMA.ordinal()), KEY_TOOL_SCREWDRIVER, ModItems.ducttape, ModItems.armor_polish });
|
||||
addShapelessAuto(new ItemStack(ModItems.holotape_damaged), new Object[] { DictFrame.fromOne(ModItems.holotape_image, EnumHoloImage.HOLO_RESTORED), ModBlocks.muffler, ModItems.crt_display, ModItems.gem_alexandrite /* placeholder for amplifier */ });
|
||||
|
||||
@ -178,7 +178,7 @@ public class ModEventHandler {
|
||||
}
|
||||
|
||||
if(MobConfig.enableDucks && event.player instanceof EntityPlayerMP && !event.player.getEntityData().getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG).getBoolean("hasDucked"))
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket("Press O to Duck!"), (EntityPlayerMP) event.player);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket("Press O to Duck!", MainRegistry.proxy.ID_DUCK), (EntityPlayerMP) event.player);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -686,7 +686,7 @@ public class ModEventHandlerClient {
|
||||
}
|
||||
|
||||
if(ArmorUtil.isWearingEmptyMask(mc.thePlayer)) {
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Your mask has no filter!");
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Your mask has no filter!", MainRegistry.proxy.ID_FILTER);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -294,6 +294,9 @@ public class ResourceManager {
|
||||
//Electrolyser
|
||||
public static final IModelCustom electrolyser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/electrolyser.obj"));
|
||||
|
||||
//Belt
|
||||
public static final IModelCustom charger = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/charger.obj"));
|
||||
|
||||
////Textures TEs
|
||||
|
||||
public static final ResourceLocation universal = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png");
|
||||
@ -603,6 +606,9 @@ public class ResourceManager {
|
||||
//Electrolyser
|
||||
public static final ResourceLocation electrolyser_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/electrolyser.png");
|
||||
|
||||
//Charger
|
||||
public static final ResourceLocation charger_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/charger.png");
|
||||
|
||||
////Obj Items
|
||||
|
||||
//Shimmer Sledge
|
||||
|
||||
@ -10,6 +10,15 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
public class ServerProxy {
|
||||
|
||||
//sort by estimated time of display. longer lasting ones should be sortet at the top.
|
||||
public static final int ID_DUCK = 0;
|
||||
public static final int ID_FILTER = 1;
|
||||
public static final int ID_COMPASS = 2;
|
||||
public static final int ID_CABLE = 3;
|
||||
public static final int ID_JETPACK = 4;
|
||||
public static final int ID_HUD = 5;
|
||||
public static final int ID_DETONATOR = 6;
|
||||
|
||||
public void registerRenderInfo() { }
|
||||
public void registerTileEntitySpecialRenderer() { }
|
||||
@ -28,8 +37,11 @@ public class ServerProxy {
|
||||
public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch) { return null; }
|
||||
|
||||
public void playSound(String sound, Object data) { }
|
||||
|
||||
public void displayTooltip(String msg) { }
|
||||
|
||||
public void displayTooltip(String msg, int id) {
|
||||
displayTooltip(msg, 1000, id);
|
||||
}
|
||||
public void displayTooltip(String msg, int time, int id) { }
|
||||
|
||||
public boolean getIsKeyPressed(EnumKeybind key) {
|
||||
return false;
|
||||
|
||||
@ -15,22 +15,24 @@ public class PlayerInformPacket implements IMessage {
|
||||
|
||||
boolean fancy;
|
||||
private String dmesg = "";
|
||||
private int id;
|
||||
private IChatComponent component;
|
||||
|
||||
public PlayerInformPacket() { }
|
||||
|
||||
public PlayerInformPacket(String dmesg) {
|
||||
public PlayerInformPacket(String dmesg, int id) {
|
||||
this.fancy = false;
|
||||
this.dmesg = dmesg;
|
||||
}
|
||||
|
||||
public PlayerInformPacket(IChatComponent component) {
|
||||
public PlayerInformPacket(IChatComponent component, int id) {
|
||||
this.fancy = true;
|
||||
this.component = component;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
id = buf.readInt();
|
||||
fancy = buf.readBoolean();
|
||||
|
||||
if(!fancy) {
|
||||
@ -42,6 +44,7 @@ public class PlayerInformPacket implements IMessage {
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
buf.writeInt(id);
|
||||
buf.writeBoolean(fancy);
|
||||
if(!fancy) {
|
||||
ByteBufUtils.writeUTF8String(buf, dmesg);
|
||||
@ -57,7 +60,7 @@ public class PlayerInformPacket implements IMessage {
|
||||
public IMessage onMessage(PlayerInformPacket m, MessageContext ctx) {
|
||||
try {
|
||||
|
||||
MainRegistry.proxy.displayTooltip(m.fancy ? m.component.getFormattedText() : m.dmesg);
|
||||
MainRegistry.proxy.displayTooltip(m.fancy ? m.component.getFormattedText() : m.dmesg, m.id);
|
||||
|
||||
} catch (Exception x) { }
|
||||
return null;
|
||||
|
||||
93
src/main/java/com/hbm/render/tileentity/RenderCharger.java
Normal file
93
src/main/java/com/hbm/render/tileentity/RenderCharger.java
Normal file
@ -0,0 +1,93 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.tileentity.machine.TileEntityCharger;
|
||||
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public class RenderCharger extends TileEntitySpecialRenderer {
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5, y, z + 0.5);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glRotatef(90, 0F, 1F, 0F);
|
||||
switch(tile.getBlockMetadata()) {
|
||||
case 4: GL11.glRotatef(90, 0F, 1F, 0F); break;
|
||||
case 3: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
||||
case 5: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
||||
case 2: GL11.glRotatef(0, 0F, 1F, 0F); break;
|
||||
}
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
bindTexture(ResourceManager.charger_tex);
|
||||
ResourceManager.charger.renderPart("Base");
|
||||
|
||||
TileEntityCharger charger = (TileEntityCharger) tile;
|
||||
|
||||
double time = (charger.lastUsingTicks + (charger.usingTicks - charger.lastUsingTicks) * interp) / (double) charger.delay;
|
||||
|
||||
double extend = Math.min(1, time * 2);
|
||||
double swivel = Math.max(0, (time - 0.5) * 2);
|
||||
|
||||
GL11.glPushMatrix();
|
||||
|
||||
GL11.glTranslated(-0.34375D, 0.25D, 0);
|
||||
GL11.glRotated(10, 0, 0, 1);
|
||||
GL11.glTranslated(0.34375D, -0.25D, 0);
|
||||
|
||||
GL11.glTranslated(0, -0.25 * extend, 0);
|
||||
|
||||
//ResourceManager.charger.renderPart("Slide");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0, 0.28D, 0);
|
||||
GL11.glRotated(30 * swivel, 1, 0, 0);
|
||||
GL11.glTranslated(0, -0.28D, 0);
|
||||
ResourceManager.charger.renderPart("Left");
|
||||
GL11.glPopMatrix();
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0, 0.28D, 0);
|
||||
GL11.glRotated(-30 * swivel, 1, 0, 0);
|
||||
GL11.glTranslated(0, -0.28D, 0);
|
||||
ResourceManager.charger.renderPart("Right");
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
|
||||
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F);
|
||||
|
||||
GL11.glColor3f(1F, 0.75F, 0F);
|
||||
ResourceManager.charger.renderPart("Light");
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
|
||||
GL11.glTranslated(-0.34375D, 0.25D, 0);
|
||||
GL11.glRotated(10, 0, 0, 1);
|
||||
GL11.glTranslated(0.34375D, -0.25D, 0);
|
||||
GL11.glTranslated(0, -0.25 * extend, 0);
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
|
||||
ResourceManager.charger.renderPart("Slide");
|
||||
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
|
||||
GL11.glPopAttrib();
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
175
src/main/java/com/hbm/render/util/RenderInfoSystem.java
Normal file
175
src/main/java/com/hbm/render/util/RenderInfoSystem.java
Normal file
@ -0,0 +1,175 @@
|
||||
package com.hbm.render.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.Gui;
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
|
||||
|
||||
public class RenderInfoSystem {
|
||||
|
||||
private static int nextID = 1000;
|
||||
private static HashMap<Integer, InfoEntry> inbox = new HashMap();
|
||||
private static HashMap<Integer, InfoEntry> messages = new HashMap();
|
||||
|
||||
@SubscribeEvent
|
||||
public void clentTick(ClientTickEvent event) {
|
||||
messages.putAll(inbox);
|
||||
inbox.clear();
|
||||
|
||||
List<Integer> keys = new ArrayList(messages.keySet());
|
||||
|
||||
for(int i = 0; i < keys.size(); i++) {
|
||||
Integer key = keys.get(i);
|
||||
InfoEntry entry = messages.get(key);
|
||||
|
||||
if(entry.start + entry.millis < System.currentTimeMillis()) {
|
||||
messages.remove(key);
|
||||
keys = new ArrayList(messages.keySet());
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onOverlayRender(RenderGameOverlayEvent.Pre event) {
|
||||
|
||||
if(event.type != ElementType.CROSSHAIRS)
|
||||
return;
|
||||
|
||||
if(this.messages.isEmpty())
|
||||
return;
|
||||
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
ScaledResolution resolution = event.resolution;
|
||||
|
||||
List<InfoEntry> entries = new ArrayList(messages.values());
|
||||
Collections.sort(entries);
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
|
||||
|
||||
int longest = 0;
|
||||
|
||||
for(InfoEntry entry : messages.values()) {
|
||||
int length = mc.fontRenderer.getStringWidth(entry.text);
|
||||
|
||||
if(length > longest)
|
||||
longest = length;
|
||||
}
|
||||
|
||||
int mode = 0;
|
||||
|
||||
int pX = mode == 0 ? 15 : mode == 1 ? (resolution.getScaledWidth() - longest - 15) : mode == 2 ? (resolution.getScaledWidth() / 2 + 7) : (resolution.getScaledWidth() / 2 - longest - 6);
|
||||
int pZ = mode == 0 ? 15 : mode == 1 ? 15 : resolution.getScaledHeight() / 2 + 7;
|
||||
|
||||
int side = pX + 5 + longest;
|
||||
int height = messages.size() * 10 + pZ + 2;
|
||||
int z = 0;
|
||||
|
||||
Tessellator tess = Tessellator.instance;
|
||||
tess.startDrawingQuads();
|
||||
tess.setColorRGBA_F(0.5F, 0.5F, 0.5F, 0.5F);
|
||||
tess.addVertex(pX - 5, pZ - 5, z);
|
||||
tess.addVertex(pX - 5, height, z);
|
||||
tess.addVertex(side, height, z);
|
||||
tess.addVertex(side, pZ - 5, z);
|
||||
tess.draw();
|
||||
|
||||
int off = 0;
|
||||
long now = System.currentTimeMillis();
|
||||
|
||||
for(InfoEntry entry : messages.values()) {
|
||||
|
||||
int elapsed = (int) (now - entry.start);
|
||||
|
||||
int alpha = Math.max(Math.min(510 * (entry.millis - elapsed) / entry.millis, 255), 5); //smoothly scales down from 510 to 0, then caps at 255
|
||||
int color = entry.color + (alpha << 24 & -0xffffff);
|
||||
mc.fontRenderer.drawString(entry.text, pX, pZ + off, color);
|
||||
|
||||
off += 10;
|
||||
}
|
||||
|
||||
/*mc.fontRenderer.drawString(title, pX + 1, pZ - 9, bgCol);
|
||||
mc.fontRenderer.drawString(title, pX, pZ - 10, titleCol);
|
||||
|
||||
try {
|
||||
for(String line : text) {
|
||||
|
||||
int color = 0xFFFFFF;
|
||||
if(line.startsWith("&[")) {
|
||||
int end = line.lastIndexOf("&]");
|
||||
color = Integer.parseInt(line.substring(2, end));
|
||||
line = line.substring(end + 2);
|
||||
}
|
||||
|
||||
mc.fontRenderer.drawStringWithShadow(line, pX, pZ, color);
|
||||
pZ += 10;
|
||||
}
|
||||
} catch(Exception ex) {
|
||||
mc.fontRenderer.drawStringWithShadow(ex.getClass().getSimpleName(), pX, pZ + 10, 0xff0000);
|
||||
}*/
|
||||
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
|
||||
}
|
||||
|
||||
public static void push(InfoEntry entry) {
|
||||
push(entry, nextID++); //range is so large, collisions are unlikely and if they do occur, not a big deal
|
||||
}
|
||||
|
||||
public static void push(InfoEntry entry, int id) {
|
||||
inbox.put(id, entry);
|
||||
}
|
||||
|
||||
public static class InfoEntry implements Comparable {
|
||||
|
||||
String text;
|
||||
int color = 0xffffff;
|
||||
long start;
|
||||
int millis;
|
||||
|
||||
public InfoEntry(String text) {
|
||||
this(text, 3000);
|
||||
}
|
||||
|
||||
public InfoEntry(String text, int millis) {
|
||||
this.text = text;
|
||||
this.millis = millis;
|
||||
this.start = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
public InfoEntry withColor(int color) {
|
||||
this.color = color;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Object o) {
|
||||
|
||||
if(!(o instanceof InfoEntry)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
InfoEntry other = (InfoEntry) o;
|
||||
|
||||
return this.millis < other.millis ? -1 : this.millis > other.millis ? 1 : 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -7,6 +7,7 @@ import com.hbm.inventory.fluid.FluidType;
|
||||
|
||||
import api.hbm.energy.IEnergyConnector;
|
||||
import api.hbm.energy.IEnergyUser;
|
||||
import api.hbm.fluid.IFluidConnector;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -14,7 +15,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyUser, IFluidAcceptor, ISidedInventory {
|
||||
public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyUser, IFluidAcceptor, ISidedInventory, IFluidConnector {
|
||||
|
||||
TileEntity tile;
|
||||
boolean inventory;
|
||||
@ -400,4 +401,40 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy
|
||||
nbt.setBoolean("power", power);
|
||||
nbt.setBoolean("fluid", fluid);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long transferFluid(FluidType type, long fluid) {
|
||||
|
||||
if(!this.fluid)
|
||||
return fluid;
|
||||
|
||||
if(getTile() instanceof IFluidConnector) {
|
||||
return ((IFluidConnector)getTile()).transferFluid(type, fluid);
|
||||
}
|
||||
return fluid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDemand(FluidType type) {
|
||||
|
||||
if(!this.fluid)
|
||||
return 0;
|
||||
|
||||
if(getTile() instanceof IFluidConnector) {
|
||||
return ((IFluidConnector)getTile()).getDemand(type);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnect(FluidType type, ForgeDirection dir) {
|
||||
|
||||
if(!this.fluid)
|
||||
return false;
|
||||
|
||||
if(getTile() instanceof IFluidConnector) {
|
||||
return ((IFluidConnector)getTile()).canConnect(type, dir);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -193,8 +193,10 @@ public class TileMappings {
|
||||
put(TileEntityLoot.class, "tileentity_ntm_loot");
|
||||
put(TileEntityBobble.class, "tileentity_ntm_bobblehead");
|
||||
put(TileEntityEmitter.class, "tileentity_ntm_emitter");
|
||||
|
||||
|
||||
put(TileEntityDoorGeneric.class, "tileentity_ntm_door");
|
||||
|
||||
put(TileEntityCharger.class, "tileentity_ntm_charger");
|
||||
|
||||
put(TileEntityProxyInventory.class, "tileentity_proxy_inventory");
|
||||
put(TileEntityProxyEnergy.class, "tileentity_proxy_power");
|
||||
|
||||
140
src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java
Normal file
140
src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java
Normal file
@ -0,0 +1,140 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.tileentity.INBTPacketReceiver;
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
|
||||
import api.hbm.energy.IBatteryItem;
|
||||
import api.hbm.energy.IEnergyUser;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyUser, INBTPacketReceiver {
|
||||
|
||||
private List<EntityPlayer> players = new ArrayList();
|
||||
private long charge = 0;
|
||||
|
||||
long lastOp = 0;
|
||||
boolean particles = false;
|
||||
|
||||
public int usingTicks;
|
||||
public int lastUsingTicks;
|
||||
public static final int delay = 20;
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite();
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ, dir);
|
||||
|
||||
players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(0.5, 0.0, 0.5));
|
||||
|
||||
charge = 0;
|
||||
|
||||
for(EntityPlayer player : players) {
|
||||
|
||||
for(int i = 0; i < 5; i++) {
|
||||
|
||||
ItemStack stack = player.getEquipmentInSlot(i);
|
||||
|
||||
if(stack != null && stack.getItem() instanceof IBatteryItem) {
|
||||
IBatteryItem battery = (IBatteryItem) stack.getItem();
|
||||
charge += Math.min(battery.getMaxCharge() - battery.getCharge(stack), battery.getChargeRate());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
particles = worldObj.getTotalWorldTime() - lastOp < 4;
|
||||
|
||||
if(particles) {
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0)
|
||||
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "random.fizz", 0.2F, 0.5F);
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("c", charge);
|
||||
data.setBoolean("p", particles);
|
||||
INBTPacketReceiver.networkPack(this, data, 50);
|
||||
}
|
||||
|
||||
lastUsingTicks = usingTicks;
|
||||
|
||||
if((charge > 0 || particles) && usingTicks < delay) {
|
||||
usingTicks++;
|
||||
if(usingTicks == 2)
|
||||
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "tile.piston.out", 0.5F, 0.5F);
|
||||
}
|
||||
if((charge <= 0 && !particles) && usingTicks > 0) {
|
||||
usingTicks--;
|
||||
if(usingTicks == 4)
|
||||
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "tile.piston.in", 0.5F, 0.5F);
|
||||
}
|
||||
|
||||
if(particles) {
|
||||
Random rand = worldObj.rand;
|
||||
worldObj.spawnParticle("magicCrit",
|
||||
xCoord + 0.5 + rand.nextDouble() * 0.0625 + dir.offsetX * 0.75,
|
||||
yCoord + 0.1,
|
||||
zCoord + 0.5 + rand.nextDouble() * 0.0625 + dir.offsetZ * 0.75,
|
||||
-dir.offsetX + rand.nextGaussian() * 0.1,
|
||||
0,
|
||||
-dir.offsetZ + rand.nextGaussian() * 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
this.charge = nbt.getLong("c");
|
||||
this.particles = nbt.getBoolean("p");
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPower() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxPower() {
|
||||
return charge;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPower(long power) { }
|
||||
|
||||
@Override
|
||||
public long transferPower(long power) {
|
||||
|
||||
if(this.usingTicks < delay || power == 0)
|
||||
return power;
|
||||
|
||||
lastOp = worldObj.getTotalWorldTime();
|
||||
|
||||
for(EntityPlayer player : players) {
|
||||
|
||||
for(int i = 0; i < 5; i++) {
|
||||
|
||||
ItemStack stack = player.getEquipmentInSlot(i);
|
||||
|
||||
if(stack != null && stack.getItem() instanceof IBatteryItem) {
|
||||
IBatteryItem battery = (IBatteryItem) stack.getItem();
|
||||
|
||||
long toCharge = Math.min(battery.getMaxCharge() - battery.getCharge(stack), battery.getChargeRate());
|
||||
toCharge = Math.min(toCharge, power / 5);
|
||||
battery.chargeBattery(stack, toCharge);
|
||||
power -= toCharge;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return power;
|
||||
}
|
||||
}
|
||||
@ -16,8 +16,10 @@ import com.hbm.packet.NBTPacket;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.tileentity.INBTPacketReceiver;
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import api.hbm.energy.IEnergyGenerator;
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -26,7 +28,7 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver {
|
||||
public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver, IFluidStandardTransceiver {
|
||||
|
||||
public long power;
|
||||
public static final long maxPower = 100000000000L;
|
||||
@ -75,6 +77,11 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset);
|
||||
this.sendPower(worldObj, xCoord - dir.offsetX * 11, yCoord, zCoord - dir.offsetZ * 11, dir);
|
||||
|
||||
for(BlockPos pos : this.getConPos()) {
|
||||
this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), dir); //TODO: there's no directions for this yet because idc
|
||||
this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), dir);
|
||||
}
|
||||
|
||||
if(power > maxPower)
|
||||
power = maxPower;
|
||||
|
||||
@ -119,6 +126,22 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc
|
||||
}
|
||||
}
|
||||
|
||||
public void onLeverPull(FluidType previous) {
|
||||
for(BlockPos pos : getConPos()) {
|
||||
this.tryUnsubscribe(previous, worldObj, pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
}
|
||||
|
||||
public BlockPos[] getConPos() {
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset);
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
return new BlockPos[] {
|
||||
new BlockPos(xCoord - dir.offsetX * 4, yCoord + 2, zCoord - dir.offsetZ * 4),
|
||||
new BlockPos(xCoord + rot.offsetX * 3, yCoord, zCoord + rot.offsetZ * 3),
|
||||
new BlockPos(xCoord - rot.offsetZ * 3, yCoord, zCoord - rot.offsetZ * 3)
|
||||
};
|
||||
}
|
||||
|
||||
public void networkPack(NBTTagCompound nbt, int range) {
|
||||
PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range));
|
||||
}
|
||||
@ -168,17 +191,17 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc
|
||||
|
||||
@Override
|
||||
public void setFluidFill(int i, FluidType type) {
|
||||
if(type.name().equals(tanks[0].getTankType().name()))
|
||||
if(type == tanks[0].getTankType())
|
||||
tanks[0].setFill(i);
|
||||
else if(type.name().equals(tanks[1].getTankType().name()))
|
||||
else if(type == tanks[1].getTankType())
|
||||
tanks[1].setFill(i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFluidFill(FluidType type) {
|
||||
if(type.name().equals(tanks[0].getTankType().name()))
|
||||
if(type == tanks[0].getTankType())
|
||||
return tanks[0].getFill();
|
||||
else if(type.name().equals(tanks[1].getTankType().name()))
|
||||
else if(type == tanks[1].getTankType())
|
||||
return tanks[1].getFill();
|
||||
|
||||
return 0;
|
||||
@ -186,7 +209,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc
|
||||
|
||||
@Override
|
||||
public int getMaxFluidFill(FluidType type) {
|
||||
if(type.name().equals(tanks[0].getTankType().name()))
|
||||
if(type == tanks[0].getTankType())
|
||||
return tanks[0].getMaxFill();
|
||||
|
||||
return 0;
|
||||
@ -244,4 +267,14 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc
|
||||
public void setPower(long power) {
|
||||
this.power = power;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTank[] getSendingTanks() {
|
||||
return new FluidTank[] {tanks[1]};
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTank[] getReceivingTanks() {
|
||||
return new FluidTank[] {tanks[0]};
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,12 +11,13 @@ import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.main.ModEventHandler;
|
||||
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.EnumSkyBlock;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityCondenser extends TileEntity implements IFluidAcceptor, IFluidSource {
|
||||
public class TileEntityCondenser extends TileEntity implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver {
|
||||
|
||||
public int age = 0;
|
||||
public FluidTank[] tanks;
|
||||
@ -53,6 +54,9 @@ public class TileEntityCondenser extends TileEntity implements IFluidAcceptor, I
|
||||
tanks[1].setFill(tanks[1].getFill() + convert);
|
||||
}
|
||||
|
||||
this.subscribeToAllAround(tanks[0].getTankType(), this);
|
||||
this.sendFluidToAll(tanks[1].getTankType(), this);
|
||||
|
||||
fillFluidInit(tanks[1].getTankType());
|
||||
|
||||
} else {
|
||||
@ -148,4 +152,14 @@ public class TileEntityCondenser extends TileEntity implements IFluidAcceptor, I
|
||||
public void clearFluidList(FluidType type) {
|
||||
list.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTank[] getSendingTanks() {
|
||||
return new FluidTank[] {tanks [1]};
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTank[] getReceivingTanks() {
|
||||
return new FluidTank[] {tanks [0]};
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,11 +14,13 @@ import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
|
||||
import api.hbm.energy.IEnergyUser;
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, IEnergyUser {
|
||||
public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, IEnergyUser, IFluidStandardTransceiver {
|
||||
|
||||
public int age = 0;
|
||||
public long power = 0;
|
||||
@ -61,8 +63,9 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen
|
||||
data.setLong("power", power);
|
||||
this.networkPack(data, 25);
|
||||
}
|
||||
|
||||
|
||||
|
||||
this.subscribeToAllAround(tanks[0].getTankType(), this);
|
||||
this.sendFluidToAll(tanks[1].getTankType(), this);
|
||||
|
||||
if(power < 0)
|
||||
power = 0;
|
||||
@ -196,4 +199,14 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen
|
||||
public long getMaxPower() {
|
||||
return maxPower;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTank[] getSendingTanks() {
|
||||
return new FluidTank[] {tanks [1]};
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTank[] getReceivingTanks() {
|
||||
return new FluidTank[] {tanks [0]};
|
||||
}
|
||||
}
|
||||
@ -4,10 +4,13 @@ import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.inventory.FluidTank;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityDeuteriumTower extends TileEntityDeuteriumExtractor {
|
||||
@ -71,6 +74,27 @@ public class TileEntityDeuteriumTower extends TileEntityDeuteriumExtractor {
|
||||
}
|
||||
|
||||
protected void updateConnections() {
|
||||
|
||||
for(BlockPos pos : getConPos()) {
|
||||
this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), ForgeDirection.UNKNOWN);
|
||||
}
|
||||
}
|
||||
|
||||
public void subscribeToAllAround(FluidType type, World world, int x, int y, int z) {
|
||||
|
||||
for(BlockPos pos : getConPos()) {
|
||||
this.trySubscribe(type, world, pos.getX(), pos.getY(), pos.getZ(), ForgeDirection.UNKNOWN);
|
||||
}
|
||||
}
|
||||
|
||||
public void sendFluidToAll(FluidType type, TileEntity te) {
|
||||
|
||||
for(BlockPos pos : getConPos()) {
|
||||
this.sendFluid(type, worldObj, pos.getX(), pos.getY(), pos.getZ(), ForgeDirection.UNKNOWN);
|
||||
}
|
||||
}
|
||||
|
||||
private BlockPos[] getConPos() {
|
||||
|
||||
int offsetX = 0;
|
||||
int offsetZ = 0;
|
||||
@ -85,14 +109,16 @@ public class TileEntityDeuteriumTower extends TileEntityDeuteriumExtractor {
|
||||
offsetZ = dir.offsetZ;
|
||||
}
|
||||
|
||||
this.trySubscribe(worldObj, this.xCoord + offsetX * 2, this.yCoord, this.zCoord - offsetZ * 1, ForgeDirection.UNKNOWN); //TODO: figure this one out without dying
|
||||
this.trySubscribe(worldObj, this.xCoord + offsetX * 2, this.yCoord, this.zCoord - offsetZ * 0, ForgeDirection.UNKNOWN);
|
||||
this.trySubscribe(worldObj, this.xCoord + offsetX * 1, this.yCoord, this.zCoord - offsetZ * 2, ForgeDirection.UNKNOWN);
|
||||
this.trySubscribe(worldObj, this.xCoord + offsetX * 0, this.yCoord, this.zCoord - offsetZ * 2, ForgeDirection.UNKNOWN);
|
||||
this.trySubscribe(worldObj, this.xCoord + offsetX * 1, this.yCoord, this.zCoord + offsetZ * 1, ForgeDirection.UNKNOWN);
|
||||
this.trySubscribe(worldObj, this.xCoord + offsetX * 0, this.yCoord, this.zCoord + offsetZ * 1, ForgeDirection.UNKNOWN);
|
||||
this.trySubscribe(worldObj, this.xCoord - offsetX * 1, this.yCoord, this.zCoord + offsetZ * 0, ForgeDirection.UNKNOWN);
|
||||
this.trySubscribe(worldObj, this.xCoord - offsetX * 1, this.yCoord, this.zCoord - offsetZ * 1, ForgeDirection.UNKNOWN);
|
||||
return new BlockPos[] {
|
||||
new BlockPos(this.xCoord + offsetX * 2, this.yCoord, this.zCoord - offsetZ * 1),
|
||||
new BlockPos(this.xCoord + offsetX * 2, this.yCoord, this.zCoord - offsetZ * 0),
|
||||
new BlockPos(this.xCoord + offsetX * 1, this.yCoord, this.zCoord - offsetZ * 2),
|
||||
new BlockPos(this.xCoord + offsetX * 0, this.yCoord, this.zCoord - offsetZ * 2),
|
||||
new BlockPos(this.xCoord + offsetX * 1, this.yCoord, this.zCoord + offsetZ * 1),
|
||||
new BlockPos(this.xCoord + offsetX * 0, this.yCoord, this.zCoord + offsetZ * 1),
|
||||
new BlockPos(this.xCoord - offsetX * 1, this.yCoord, this.zCoord + offsetZ * 0),
|
||||
new BlockPos(this.xCoord - offsetX * 1, this.yCoord, this.zCoord - offsetZ * 1)
|
||||
};
|
||||
}
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
|
||||
@ -226,7 +226,7 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||
this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
|
||||
|
||||
this.updateStandardPipes(Fluids.WATER, worldObj, xCoord, yCoord, zCoord);
|
||||
this.subscribeToAllAround(Fluids.WATER, worldObj, xCoord, yCoord, zCoord);
|
||||
|
||||
//Water
|
||||
tank.loadTank(0, 3, slots);
|
||||
|
||||
@ -101,13 +101,14 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE
|
||||
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||
this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
|
||||
|
||||
this.updateStandardPipes(Fluids.WATER, worldObj, xCoord, yCoord, zCoord);
|
||||
|
||||
//Tank Management
|
||||
tank.setType(3, 4, slots);
|
||||
FluidType last = tank.getTankType();
|
||||
if(tank.setType(3, 4, slots)) this.unsubscribeToAllAround(last, this);
|
||||
tank.loadTank(0, 1, slots);
|
||||
tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
||||
|
||||
this.subscribeToAllAround(tank.getTankType(), this);
|
||||
|
||||
FluidType type = tank.getTankType();
|
||||
if(type == Fluids.NITAN)
|
||||
|
||||
@ -35,7 +35,6 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.EnumSkyBlock;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
|
||||
@ -254,6 +254,13 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
|
||||
case CONTROL_AUTO:
|
||||
stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.control.level", ((int)((this.data.getDouble("level") * 100D))) + "%"));
|
||||
break;
|
||||
|
||||
case HEATEX:
|
||||
stats.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey(I18nUtil.resolveKey(Fluids.fromID(this.data.getShort("type")).getUnlocalizedName()) + " " +
|
||||
this.data.getInteger("water") + "/" + this.data.getInteger("maxWater") + "mB"));
|
||||
stats.add(EnumChatFormatting.RED + I18nUtil.resolveKey(I18nUtil.resolveKey(Fluids.fromID(this.data.getShort("hottype")).getUnlocalizedName()) + " " +
|
||||
this.data.getInteger("steam") + "/" + this.data.getInteger("maxSteam") + "mB"));
|
||||
break;
|
||||
}
|
||||
|
||||
if(data.getBoolean("moderated"))
|
||||
|
||||
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidSource;
|
||||
import com.hbm.inventory.FluidTank;
|
||||
@ -12,6 +13,8 @@ import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource {
|
||||
|
||||
public FluidTank feed;
|
||||
@ -28,11 +31,6 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I
|
||||
public String getName() {
|
||||
return "container.rbmkHeater";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ColumnType getConsoleType() {
|
||||
return ColumnType.HEATEX;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
@ -166,4 +164,49 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I
|
||||
public void clearFluidList(FluidType type) {
|
||||
list.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
|
||||
feed.readFromNBT(nbt, "feed");
|
||||
steam.readFromNBT(nbt, "steam");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
|
||||
feed.writeToNBT(nbt, "feed");
|
||||
steam.writeToNBT(nbt, "steam");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMelt(int reduce) {
|
||||
|
||||
int count = 1 + worldObj.rand.nextInt(2);
|
||||
|
||||
for(int i = 0; i < count; i++) {
|
||||
spawnDebris(DebrisType.BLANK);
|
||||
}
|
||||
|
||||
super.onMelt(reduce);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ColumnType getConsoleType() {
|
||||
return ColumnType.HEATEX;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound getNBTForConsole() {
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setInteger("water", this.feed.getFill());
|
||||
data.setInteger("maxWater", this.feed.getMaxFill());
|
||||
data.setInteger("steam", this.steam.getFill());
|
||||
data.setInteger("maxSteam", this.steam.getMaxFill());
|
||||
data.setShort("type", (short)this.feed.getTankType().getID());
|
||||
data.setShort("hottype", (short)this.steam.getTankType().getID());
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,7 +15,6 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import scala.actors.threadpool.Arrays;
|
||||
|
||||
public class TileEntityRBMKOutlet extends TileEntity implements IFluidSource {
|
||||
|
||||
|
||||
@ -14,13 +14,13 @@ import com.hbm.lib.Library;
|
||||
import com.hbm.main.ModEventHandler;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
|
||||
import api.hbm.fluid.IFluidUser;
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.EnumSkyBlock;
|
||||
|
||||
public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, IFluidUser {
|
||||
public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver {
|
||||
|
||||
public FluidTank tank;
|
||||
public short mode = 0;
|
||||
@ -57,9 +57,11 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc
|
||||
this.sendFluidToAll(tank.getTankType(), this);
|
||||
}
|
||||
|
||||
/*
|
||||
* TODO: these don't work as receivers yet, don't forget how the subscription system works
|
||||
*/
|
||||
if(this.mode == 0 || this.mode == 1) {
|
||||
this.subscribeToAllAround(tank.getTankType(), worldObj, xCoord, yCoord, zCoord);
|
||||
} else {
|
||||
this.unsubscribeToAllAround(tank.getTankType(), worldObj, xCoord, yCoord, zCoord);
|
||||
}
|
||||
|
||||
age++;
|
||||
if(age >= 20)
|
||||
@ -126,7 +128,6 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc
|
||||
}
|
||||
|
||||
public void networkUnpack(NBTTagCompound data) {
|
||||
|
||||
mode = data.getShort("mode");
|
||||
}
|
||||
|
||||
@ -211,18 +212,12 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc
|
||||
}
|
||||
|
||||
@Override
|
||||
public long transferFluid(FluidType type, long fluid) {
|
||||
long toTransfer = Math.min(getDemand(type), fluid);
|
||||
tank.setFill(tank.getFill() + (int) toTransfer);
|
||||
return fluid - toTransfer;
|
||||
public FluidTank[] getSendingTanks() {
|
||||
return (mode == 1 || mode == 2) ? new FluidTank[] {tank} : new FluidTank[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDemand(FluidType type) {
|
||||
|
||||
if(this.mode == 2 || this.mode == 3)
|
||||
return 0;
|
||||
|
||||
return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0;
|
||||
public FluidTank[] getReceivingTanks() {
|
||||
return (mode == 0 || mode == 1) ? new FluidTank[] {tank} : new FluidTank[0];
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class TileEntityMachineBAT9000 extends TileEntityBarrel {
|
||||
|
||||
@ -28,6 +29,30 @@ public class TileEntityMachineBAT9000 extends TileEntityBarrel {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void subscribeToAllAround(FluidType type, World world, int x, int y, int z) {
|
||||
this.trySubscribe(type, world, xCoord + 1, yCoord, zCoord + 3, Library.POS_Z);
|
||||
this.trySubscribe(type, world, xCoord - 1, yCoord, zCoord + 3, Library.POS_Z);
|
||||
this.trySubscribe(type, world, xCoord + 1, yCoord, zCoord - 3, Library.NEG_Z);
|
||||
this.trySubscribe(type, world, xCoord - 1, yCoord, zCoord - 3, Library.NEG_Z);
|
||||
this.trySubscribe(type, world, xCoord + 3, yCoord, zCoord + 1, Library.POS_X);
|
||||
this.trySubscribe(type, world, xCoord - 3, yCoord, zCoord + 1, Library.POS_X);
|
||||
this.trySubscribe(type, world, xCoord + 3, yCoord, zCoord - 1, Library.NEG_X);
|
||||
this.trySubscribe(type, world, xCoord - 3, yCoord, zCoord - 1, Library.NEG_X);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsubscribeToAllAround(FluidType type, World world, int x, int y, int z) {
|
||||
this.tryUnsubscribe(type, world, xCoord + 1, yCoord, zCoord + 3);
|
||||
this.tryUnsubscribe(type, world, xCoord - 1, yCoord, zCoord + 3);
|
||||
this.tryUnsubscribe(type, world, xCoord + 1, yCoord, zCoord - 3);
|
||||
this.tryUnsubscribe(type, world, xCoord - 1, yCoord, zCoord - 3);
|
||||
this.tryUnsubscribe(type, world, xCoord + 3, yCoord, zCoord + 1);
|
||||
this.tryUnsubscribe(type, world, xCoord - 3, yCoord, zCoord + 1);
|
||||
this.tryUnsubscribe(type, world, xCoord + 3, yCoord, zCoord - 1);
|
||||
this.tryUnsubscribe(type, world, xCoord - 3, yCoord, zCoord - 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fillFluidInit(FluidType type) {
|
||||
fillFluid(this.xCoord + 1, this.yCoord, this.zCoord + 3, getTact(), type);
|
||||
|
||||
@ -7,6 +7,7 @@ import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityMachineOrbus extends TileEntityBarrel {
|
||||
@ -29,7 +30,7 @@ public class TileEntityMachineOrbus extends TileEntityBarrel {
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite();
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN);
|
||||
|
||||
for(int i = -1; i < 7; i += 7) {
|
||||
for(int i = -1; i < 6; i += 6) {
|
||||
this.fillFluid(xCoord, yCoord + i, zCoord, this.getTact(), this.tank.getTankType());
|
||||
this.fillFluid(xCoord + dir.offsetX, yCoord + i, zCoord + dir.offsetZ, this.getTact(), this.tank.getTankType());
|
||||
this.fillFluid(xCoord + rot.offsetX, yCoord + i, zCoord + rot.offsetZ, this.getTact(), this.tank.getTankType());
|
||||
@ -42,7 +43,7 @@ public class TileEntityMachineOrbus extends TileEntityBarrel {
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite();
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN);
|
||||
|
||||
for(int i = -1; i < 7; i += 7) {
|
||||
for(int i = -1; i < 6; i += 6) {
|
||||
ForgeDirection out = i == -1 ? ForgeDirection.DOWN : ForgeDirection.UP;
|
||||
sendFluid(type, worldObj, xCoord, yCoord + i, zCoord, out);
|
||||
sendFluid(type, worldObj, xCoord + dir.offsetX, yCoord + i, zCoord + dir.offsetZ, out);
|
||||
@ -50,6 +51,35 @@ public class TileEntityMachineOrbus extends TileEntityBarrel {
|
||||
sendFluid(type, worldObj, xCoord + dir.offsetX + rot.offsetX, yCoord + i, zCoord + dir.offsetZ + rot.offsetZ, out);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void subscribeToAllAround(FluidType type, World world, int x, int y, int z) {
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite();
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN);
|
||||
|
||||
for(int i = -1; i < 6; i += 6) {
|
||||
ForgeDirection out = i == -1 ? ForgeDirection.DOWN : ForgeDirection.UP;
|
||||
this.trySubscribe(type, world, xCoord, yCoord + i, zCoord, out);
|
||||
this.trySubscribe(type, world, xCoord + dir.offsetX, yCoord + i, zCoord + dir.offsetZ, out);
|
||||
this.trySubscribe(type, world, xCoord + rot.offsetX, yCoord + i, zCoord + rot.offsetZ, out);
|
||||
this.trySubscribe(type, world, xCoord + dir.offsetX + rot.offsetX, yCoord + i, zCoord + dir.offsetZ + rot.offsetZ, out);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsubscribeToAllAround(FluidType type, World world, int x, int y, int z) {
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite();
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN);
|
||||
|
||||
for(int i = -1; i < 7; i += 7) {
|
||||
this.tryUnsubscribe(type, world, xCoord, yCoord + i, zCoord);
|
||||
this.tryUnsubscribe(type, world, xCoord + dir.offsetX, yCoord + i, zCoord + dir.offsetZ);
|
||||
this.tryUnsubscribe(type, world, xCoord + rot.offsetX, yCoord + i, zCoord + rot.offsetZ);
|
||||
this.tryUnsubscribe(type, world, xCoord + dir.offsetX + rot.offsetX, yCoord + i, zCoord + dir.offsetZ + rot.offsetZ);
|
||||
}
|
||||
}
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
|
||||
|
||||
903
src/main/resources/assets/hbm/models/blocks/charger.obj
Normal file
903
src/main/resources/assets/hbm/models/blocks/charger.obj
Normal file
@ -0,0 +1,903 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: 'charger.blend'
|
||||
# www.blender.org
|
||||
o Light
|
||||
v -0.266762 0.501450 -0.023437
|
||||
v -0.269068 0.517861 -0.016573
|
||||
v -0.270024 0.524659 0.000000
|
||||
v -0.269068 0.517861 0.016573
|
||||
v -0.266762 0.501450 0.023438
|
||||
v -0.264455 0.485038 0.016573
|
||||
v -0.263500 0.478240 0.000000
|
||||
v -0.264455 0.485038 -0.016573
|
||||
vn 0.9903 0.1392 0.0000
|
||||
s off
|
||||
f 3//1 5//1 7//1
|
||||
f 1//1 2//1 3//1
|
||||
f 3//1 4//1 5//1
|
||||
f 5//1 6//1 7//1
|
||||
f 7//1 8//1 1//1
|
||||
f 1//1 3//1 7//1
|
||||
o Left
|
||||
v -0.406250 0.281250 0.000000
|
||||
v -0.387944 0.281250 0.044194
|
||||
v -0.343750 0.281250 0.062500
|
||||
v -0.299556 0.281250 0.044194
|
||||
v -0.281250 0.281250 0.000000
|
||||
v -0.375000 0.281250 0.000000
|
||||
v -0.365847 0.281250 0.022097
|
||||
v -0.343750 0.281250 0.031250
|
||||
v -0.321653 0.281250 0.022097
|
||||
v -0.312500 0.281250 0.000000
|
||||
v -0.387944 0.531250 0.044194
|
||||
v -0.406250 0.531250 0.000000
|
||||
v -0.343750 0.531250 0.062500
|
||||
v -0.299556 0.531250 0.044194
|
||||
v -0.281250 0.531250 0.000000
|
||||
v -0.365847 0.531250 0.022097
|
||||
v -0.375000 0.531250 0.000000
|
||||
v -0.343750 0.531250 0.031250
|
||||
v -0.321653 0.531250 0.022097
|
||||
v -0.312500 0.531250 0.000000
|
||||
v -0.406250 0.281250 0.000000
|
||||
v -0.387944 0.281250 0.044194
|
||||
v -0.343750 0.281250 0.062500
|
||||
v -0.299556 0.281250 0.044194
|
||||
v -0.281250 0.281250 0.000000
|
||||
v -0.375000 0.281250 0.000000
|
||||
v -0.365847 0.281250 0.022097
|
||||
v -0.343750 0.281250 0.031250
|
||||
v -0.321653 0.281250 0.022097
|
||||
v -0.312500 0.281250 0.000000
|
||||
v -0.387944 0.531250 0.044194
|
||||
v -0.406250 0.531250 0.000000
|
||||
v -0.343750 0.531250 0.062500
|
||||
v -0.299556 0.531250 0.044194
|
||||
v -0.281250 0.531250 0.000000
|
||||
v -0.365847 0.531250 0.022097
|
||||
v -0.375000 0.531250 0.000000
|
||||
v -0.343750 0.531250 0.031250
|
||||
v -0.321653 0.531250 0.022097
|
||||
v -0.312500 0.531250 0.000000
|
||||
vt 0.486486 0.026316
|
||||
vt 0.513514 -0.000000
|
||||
vt 0.540541 0.026316
|
||||
vt 0.378378 -0.000000
|
||||
vt 0.432432 0.026316
|
||||
vt 0.378378 0.026316
|
||||
vt 0.540541 -0.000000
|
||||
vt 0.594595 0.026316
|
||||
vt 0.459459 -0.000000
|
||||
vt 0.486486 0.236842
|
||||
vt 0.513514 0.263158
|
||||
vt 0.486486 0.263158
|
||||
vt 0.432432 0.236842
|
||||
vt 0.378378 0.263158
|
||||
vt 0.378378 0.236842
|
||||
vt 0.594595 0.236842
|
||||
vt 0.540541 0.263158
|
||||
vt 0.540541 0.236842
|
||||
vt 0.459459 0.263158
|
||||
vt 0.432432 0.263158
|
||||
vt 0.621622 0.026316
|
||||
vt 0.351351 0.236842
|
||||
vt 0.351351 0.026316
|
||||
vt 0.486486 -0.000000
|
||||
vt 0.405405 -0.000000
|
||||
vt 0.567568 -0.000000
|
||||
vt 0.432432 -0.000000
|
||||
vt 0.405405 0.263158
|
||||
vt 0.567568 0.263158
|
||||
vt 0.621622 0.236842
|
||||
vt 0.378378 0.473684
|
||||
vt 0.405405 0.263158
|
||||
vt 0.405405 0.473684
|
||||
vt 0.486486 0.026316
|
||||
vt 0.432432 0.236842
|
||||
vt 0.432432 0.026316
|
||||
vt 0.432432 0.473684
|
||||
vt 0.459459 0.263158
|
||||
vt 0.459459 0.473684
|
||||
vt 0.540541 0.026316
|
||||
vt 0.486486 0.236842
|
||||
vt 0.486486 0.473684
|
||||
vt 0.513514 0.263158
|
||||
vt 0.513514 0.473684
|
||||
vt 0.594595 0.026316
|
||||
vt 0.540541 0.236842
|
||||
vt 0.378378 0.236842
|
||||
vt 0.378378 0.026316
|
||||
vt 0.540541 0.473684
|
||||
vt 0.567568 0.263158
|
||||
vt 0.567568 0.473684
|
||||
vt 0.378378 0.263158
|
||||
vt 0.432432 0.263158
|
||||
vt 0.486486 0.263158
|
||||
vt 0.594595 0.236842
|
||||
vt 0.540541 0.263158
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.9239 0.0000 -0.3827
|
||||
vn 0.7071 0.0000 -0.7071
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn -0.7071 0.0000 0.7071
|
||||
vn 0.7071 0.0000 0.7071
|
||||
vn -0.7071 0.0000 -0.7071
|
||||
vn 0.9239 0.0000 0.3827
|
||||
vn -0.9239 0.0000 0.3827
|
||||
vn -0.9239 0.0000 -0.3827
|
||||
s off
|
||||
f 11/1/2 17/2/2 12/3/2
|
||||
f 14/4/2 10/5/2 9/6/2
|
||||
f 17/7/2 13/8/2 12/3/2
|
||||
f 10/5/2 16/9/2 11/1/2
|
||||
f 21/10/3 27/11/3 26/12/3
|
||||
f 19/13/3 25/14/3 20/15/3
|
||||
f 23/16/3 27/17/3 22/18/3
|
||||
f 19/13/3 26/19/3 24/20/3
|
||||
f 18/21/4 23/16/4 13/8/4
|
||||
f 9/6/4 25/22/4 14/23/4
|
||||
f 11/1/2 16/24/2 17/2/2
|
||||
f 14/4/2 15/25/2 10/5/2
|
||||
f 17/7/2 18/26/2 13/8/2
|
||||
f 10/5/2 15/27/2 16/9/2
|
||||
f 21/10/3 22/18/3 27/11/3
|
||||
f 19/13/3 24/28/3 25/14/3
|
||||
f 23/16/3 28/29/3 27/17/3
|
||||
f 19/13/3 21/10/3 26/19/3
|
||||
f 18/21/4 28/30/4 23/16/4
|
||||
f 9/6/4 20/15/4 25/22/4
|
||||
s 1
|
||||
f 34/31/5 44/32/6 35/33/6
|
||||
f 31/34/7 39/35/8 30/36/8
|
||||
f 35/37/6 46/38/4 36/39/4
|
||||
f 32/40/9 41/41/7 31/34/7
|
||||
f 36/42/4 47/43/10 37/44/10
|
||||
f 33/45/11 42/46/9 32/40/9
|
||||
f 30/36/8 40/47/12 29/48/12
|
||||
f 37/49/10 48/50/13 38/51/13
|
||||
f 34/31/5 45/52/5 44/32/6
|
||||
f 31/34/7 41/41/7 39/35/8
|
||||
f 35/37/6 44/53/6 46/38/4
|
||||
f 32/40/9 42/46/9 41/41/7
|
||||
f 36/42/4 46/54/4 47/43/10
|
||||
f 33/45/11 43/55/11 42/46/9
|
||||
f 30/36/8 39/35/8 40/47/12
|
||||
f 37/49/10 47/56/10 48/50/13
|
||||
o Right
|
||||
v -0.343750 0.281250 -0.062500
|
||||
v -0.387944 0.281250 -0.044194
|
||||
v -0.406250 0.281250 0.000000
|
||||
v -0.281250 0.281250 0.000000
|
||||
v -0.299556 0.281250 -0.044194
|
||||
v -0.343750 0.281250 -0.031250
|
||||
v -0.365847 0.281250 -0.022097
|
||||
v -0.375000 0.281250 0.000000
|
||||
v -0.312500 0.281250 0.000000
|
||||
v -0.321653 0.281250 -0.022097
|
||||
v -0.387944 0.531250 -0.044194
|
||||
v -0.343750 0.531250 -0.062500
|
||||
v -0.406250 0.531250 0.000000
|
||||
v -0.299556 0.531250 -0.044194
|
||||
v -0.281250 0.531250 0.000000
|
||||
v -0.365847 0.531250 -0.022097
|
||||
v -0.343750 0.531250 -0.031250
|
||||
v -0.375000 0.531250 0.000000
|
||||
v -0.321653 0.531250 -0.022097
|
||||
v -0.312500 0.531250 0.000000
|
||||
v -0.343750 0.281250 -0.031250
|
||||
v -0.365847 0.281250 -0.022097
|
||||
v -0.375000 0.281250 0.000000
|
||||
v -0.312500 0.281250 0.000000
|
||||
v -0.321653 0.281250 -0.022097
|
||||
v -0.365847 0.531250 -0.022097
|
||||
v -0.343750 0.531250 -0.031250
|
||||
v -0.375000 0.531250 0.000000
|
||||
v -0.321653 0.531250 -0.022097
|
||||
v -0.312500 0.531250 0.000000
|
||||
v -0.343750 0.281250 -0.062500
|
||||
v -0.387944 0.281250 -0.044194
|
||||
v -0.406250 0.281250 0.000000
|
||||
v -0.281250 0.281250 0.000000
|
||||
v -0.299556 0.281250 -0.044194
|
||||
v -0.387944 0.531250 -0.044194
|
||||
v -0.343750 0.531250 -0.062500
|
||||
v -0.406250 0.531250 0.000000
|
||||
v -0.299556 0.531250 -0.044194
|
||||
v -0.281250 0.531250 0.000000
|
||||
vt 0.486486 0.026316
|
||||
vt 0.513514 -0.000000
|
||||
vt 0.540541 0.026316
|
||||
vt 0.432432 -0.000000
|
||||
vt 0.432432 0.026316
|
||||
vt 0.567568 0.000000
|
||||
vt 0.594595 0.026316
|
||||
vt 0.378378 0.026316
|
||||
vt 0.405405 -0.000000
|
||||
vt 0.486486 0.236842
|
||||
vt 0.513514 0.263158
|
||||
vt 0.486486 0.263158
|
||||
vt 0.432432 0.263158
|
||||
vt 0.432432 0.236842
|
||||
vt 0.540541 0.236842
|
||||
vt 0.567568 0.263158
|
||||
vt 0.540541 0.263158
|
||||
vt 0.378378 0.236842
|
||||
vt 0.405405 0.263158
|
||||
vt 0.378378 0.263158
|
||||
vt 0.351351 0.236842
|
||||
vt 0.351351 0.026316
|
||||
vt 0.621622 0.026316
|
||||
vt 0.594595 0.236842
|
||||
vt 0.486486 -0.000000
|
||||
vt 0.459459 -0.000000
|
||||
vt 0.540541 0.000000
|
||||
vt 0.378378 -0.000000
|
||||
vt 0.459459 0.263158
|
||||
vt 0.621622 0.236842
|
||||
vt 0.594595 0.026316
|
||||
vt 0.540541 0.236842
|
||||
vt 0.540541 0.026316
|
||||
vt 0.486486 0.236842
|
||||
vt 0.486486 0.026316
|
||||
vt 0.432432 0.236842
|
||||
vt 0.432432 0.026316
|
||||
vt 0.378378 0.236842
|
||||
vt 0.378378 0.026316
|
||||
vt 0.378378 0.473684
|
||||
vt 0.405405 0.263158
|
||||
vt 0.405405 0.473684
|
||||
vt 0.432432 0.473684
|
||||
vt 0.459459 0.263158
|
||||
vt 0.459459 0.473684
|
||||
vt 0.486486 0.473684
|
||||
vt 0.513514 0.263158
|
||||
vt 0.513514 0.473684
|
||||
vt 0.540541 0.473684
|
||||
vt 0.567568 0.263158
|
||||
vt 0.567568 0.473684
|
||||
vt 0.594595 0.236842
|
||||
vt 0.378378 0.263158
|
||||
vt 0.432432 0.263158
|
||||
vt 0.486486 0.263158
|
||||
vt 0.540541 0.263158
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn -0.9239 0.0000 -0.3827
|
||||
vn -0.7071 0.0000 -0.7071
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.7071 0.0000 -0.7071
|
||||
vn 0.9239 0.0000 -0.3827
|
||||
vn -0.9239 0.0000 0.3827
|
||||
vn -0.7071 0.0000 0.7071
|
||||
vn 0.7071 0.0000 0.7071
|
||||
vn 0.9239 0.0000 0.3827
|
||||
s off
|
||||
f 49/57/14 55/58/14 50/59/14
|
||||
f 58/60/14 49/57/14 53/61/14
|
||||
f 50/59/14 56/62/14 51/63/14
|
||||
f 52/64/14 58/65/14 53/61/14
|
||||
f 60/66/15 64/67/15 65/68/15
|
||||
f 60/66/15 67/69/15 62/70/15
|
||||
f 59/71/15 66/72/15 64/73/15
|
||||
f 63/74/15 67/75/15 68/76/15
|
||||
f 52/64/16 68/77/16 57/78/16
|
||||
f 56/79/16 61/80/16 51/63/16
|
||||
f 49/57/14 54/81/14 55/58/14
|
||||
f 58/60/14 54/82/14 49/57/14
|
||||
f 50/59/14 55/83/14 56/62/14
|
||||
f 52/64/14 57/84/14 58/65/14
|
||||
f 60/66/15 59/71/15 64/67/15
|
||||
f 60/66/15 65/85/15 67/69/15
|
||||
f 59/71/15 61/80/15 66/72/15
|
||||
f 63/74/15 62/70/15 67/75/15
|
||||
f 52/64/16 63/74/16 68/77/16
|
||||
f 56/79/16 66/86/16 61/80/16
|
||||
s 1
|
||||
f 81/87/17 84/88/18 80/89/18
|
||||
f 80/89/18 85/90/19 79/91/19
|
||||
f 79/91/19 87/92/20 83/93/20
|
||||
f 83/93/20 88/94/21 82/95/21
|
||||
f 72/96/22 77/97/23 73/98/23
|
||||
f 73/99/23 75/100/16 69/101/16
|
||||
f 69/102/16 74/103/24 70/104/24
|
||||
f 70/105/24 76/106/25 71/107/25
|
||||
f 81/87/17 86/108/17 84/88/18
|
||||
f 80/89/18 84/88/18 85/90/19
|
||||
f 79/91/19 85/90/19 87/92/20
|
||||
f 83/93/20 87/92/20 88/94/21
|
||||
f 72/96/22 78/109/22 77/97/23
|
||||
f 73/99/23 77/110/23 75/100/16
|
||||
f 69/102/16 75/111/16 74/103/24
|
||||
f 70/105/24 74/112/24 76/106/25
|
||||
o Slide
|
||||
v -0.343750 0.281250 -0.062500
|
||||
v -0.387944 0.281250 -0.044194
|
||||
v -0.406250 0.281250 0.000000
|
||||
v -0.387944 0.281250 0.044194
|
||||
v -0.343750 0.281250 0.062500
|
||||
v -0.299556 0.281250 0.044194
|
||||
v -0.281250 0.281250 0.000000
|
||||
v -0.299556 0.281250 -0.044194
|
||||
v -0.343750 0.250000 -0.062500
|
||||
v -0.387944 0.250000 -0.044194
|
||||
v -0.406250 0.250000 0.000000
|
||||
v -0.387944 0.250000 0.044194
|
||||
v -0.343750 0.250000 0.062500
|
||||
v -0.299556 0.250000 0.044194
|
||||
v -0.281250 0.250000 0.000000
|
||||
v -0.299556 0.250000 -0.044194
|
||||
v -0.343750 0.281250 -0.031250
|
||||
v -0.365847 0.281250 -0.022097
|
||||
v -0.375000 0.281250 0.000000
|
||||
v -0.365847 0.281250 0.022097
|
||||
v -0.343750 0.281250 0.031250
|
||||
v -0.321653 0.281250 0.022097
|
||||
v -0.312500 0.281250 0.000000
|
||||
v -0.321653 0.281250 -0.022097
|
||||
v -0.343750 0.656250 -0.031250
|
||||
v -0.365847 0.656250 -0.022097
|
||||
v -0.375000 0.656250 0.000000
|
||||
v -0.365847 0.656250 0.022097
|
||||
v -0.343750 0.656250 0.031250
|
||||
v -0.321653 0.656250 0.022097
|
||||
v -0.312500 0.656250 0.000000
|
||||
v -0.321653 0.656250 -0.022097
|
||||
v -0.343750 0.250000 -0.062500
|
||||
v -0.387944 0.250000 -0.044194
|
||||
v -0.406250 0.250000 0.000000
|
||||
v -0.387944 0.250000 0.044194
|
||||
v -0.343750 0.250000 0.062500
|
||||
v -0.299556 0.250000 0.044194
|
||||
v -0.281250 0.250000 0.000000
|
||||
v -0.299556 0.250000 -0.044194
|
||||
v -0.343750 0.281250 -0.062500
|
||||
v -0.387944 0.281250 -0.044194
|
||||
v -0.406250 0.281250 0.000000
|
||||
v -0.387944 0.281250 0.044194
|
||||
v -0.343750 0.281250 0.062500
|
||||
v -0.299556 0.281250 0.044194
|
||||
v -0.281250 0.281250 0.000000
|
||||
v -0.299556 0.281250 -0.044194
|
||||
v -0.343750 0.281250 -0.031250
|
||||
v -0.365847 0.281250 -0.022097
|
||||
v -0.375000 0.281250 0.000000
|
||||
v -0.365847 0.281250 0.022097
|
||||
v -0.343750 0.281250 0.031250
|
||||
v -0.321653 0.281250 0.022097
|
||||
v -0.312500 0.281250 0.000000
|
||||
v -0.321653 0.281250 -0.022097
|
||||
vt 0.151586 0.089245
|
||||
vt 0.136010 0.052632
|
||||
vt 0.242368 0.052632
|
||||
vt 0.189189 0.131579
|
||||
vt 0.216216 0.157895
|
||||
vt 0.189189 0.157895
|
||||
vt 0.162162 0.131579
|
||||
vt 0.135135 0.157895
|
||||
vt 0.135135 0.131579
|
||||
vt 0.297297 0.131579
|
||||
vt 0.324324 0.157895
|
||||
vt 0.297297 0.157895
|
||||
vt 0.270270 0.157895
|
||||
vt 0.270270 0.131579
|
||||
vt 0.243243 0.131579
|
||||
vt 0.216216 0.131579
|
||||
vt 0.162162 0.157895
|
||||
vt 0.324324 0.131579
|
||||
vt 0.351351 0.157895
|
||||
vt 0.243243 0.157895
|
||||
vt 0.151586 0.016018
|
||||
vt 0.189189 0.000852
|
||||
vt 0.226792 0.016018
|
||||
vt 0.226792 0.089245
|
||||
vt 0.189189 0.104411
|
||||
vt 0.351351 0.131579
|
||||
vt 0.135135 0.105263
|
||||
vt 0.162162 0.131579
|
||||
vt 0.135135 0.131579
|
||||
vt 0.297297 0.105263
|
||||
vt 0.324324 0.131579
|
||||
vt 0.297297 0.131579
|
||||
vt 0.270270 0.105263
|
||||
vt 0.270270 0.131579
|
||||
vt 0.216216 0.105263
|
||||
vt 0.243243 0.131579
|
||||
vt 0.216216 0.131579
|
||||
vt 0.162162 0.105263
|
||||
vt 0.189189 0.131579
|
||||
vt 0.324324 0.105263
|
||||
vt 0.351351 0.131579
|
||||
vt 0.243243 0.105263
|
||||
vt 0.189189 0.105263
|
||||
vt 0.162162 0.157895
|
||||
vt 0.135135 0.473684
|
||||
vt 0.135135 0.157895
|
||||
vt 0.324324 0.157895
|
||||
vt 0.297297 0.473684
|
||||
vt 0.297297 0.157895
|
||||
vt 0.270270 0.473684
|
||||
vt 0.270270 0.157895
|
||||
vt 0.243243 0.157895
|
||||
vt 0.216216 0.473684
|
||||
vt 0.216216 0.157895
|
||||
vt 0.189189 0.157895
|
||||
vt 0.162162 0.473684
|
||||
vt 0.351351 0.157895
|
||||
vt 0.324324 0.473684
|
||||
vt 0.243243 0.473684
|
||||
vt 0.189189 0.473684
|
||||
vt 0.351351 0.105263
|
||||
vt 0.351351 0.473684
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn -0.7071 0.0000 0.7071
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn -0.7071 0.0000 -0.7071
|
||||
vn 0.7071 0.0000 -0.7071
|
||||
vn 0.7071 0.0000 0.7071
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
s off
|
||||
f 124/113/26 123/114/26 127/115/26
|
||||
f 133/116/27 142/117/27 141/118/27
|
||||
f 132/119/27 139/120/27 131/121/27
|
||||
f 129/122/27 138/123/27 137/124/27
|
||||
f 129/122/27 144/125/27 136/126/27
|
||||
f 135/127/27 142/117/27 134/128/27
|
||||
f 132/119/27 141/118/27 140/129/27
|
||||
f 130/130/27 139/131/27 138/123/27
|
||||
f 135/127/27 144/125/27 143/132/27
|
||||
f 123/114/26 122/133/26 127/115/26
|
||||
f 122/133/26 121/134/26 127/115/26
|
||||
f 121/134/26 128/135/26 127/115/26
|
||||
f 127/115/26 126/136/26 125/137/26
|
||||
f 125/137/26 124/113/26 127/115/26
|
||||
f 133/116/27 134/128/27 142/117/27
|
||||
f 132/119/27 140/129/27 139/120/27
|
||||
f 129/122/27 130/130/27 138/123/27
|
||||
f 129/122/27 137/124/27 144/125/27
|
||||
f 135/127/27 143/132/27 142/117/27
|
||||
f 132/119/27 133/116/27 141/118/27
|
||||
f 130/130/27 131/138/27 139/131/27
|
||||
f 135/127/27 136/126/27 144/125/27
|
||||
s 1
|
||||
f 99/139/28 92/140/29 91/141/28
|
||||
f 97/142/30 90/143/31 89/144/30
|
||||
f 104/145/32 89/144/30 96/146/32
|
||||
f 102/147/33 95/148/34 94/149/33
|
||||
f 100/150/29 93/151/35 92/140/29
|
||||
f 98/152/31 91/153/28 90/143/31
|
||||
f 103/154/34 96/146/32 95/148/34
|
||||
f 101/155/35 94/149/33 93/151/35
|
||||
f 108/156/29 115/157/28 107/158/28
|
||||
f 106/159/31 113/160/30 105/161/30
|
||||
f 105/161/30 120/162/32 112/163/32
|
||||
f 111/164/34 118/165/33 110/166/33
|
||||
f 109/167/35 116/168/29 108/156/29
|
||||
f 107/169/28 114/170/31 106/159/31
|
||||
f 112/163/32 119/171/34 111/164/34
|
||||
f 110/166/33 117/172/35 109/167/35
|
||||
f 99/139/28 100/150/29 92/140/29
|
||||
f 97/142/30 98/152/31 90/143/31
|
||||
f 104/145/32 97/142/30 89/144/30
|
||||
f 102/147/33 103/154/34 95/148/34
|
||||
f 100/150/29 101/155/35 93/151/35
|
||||
f 98/152/31 99/173/28 91/153/28
|
||||
f 103/154/34 104/145/32 96/146/32
|
||||
f 101/155/35 102/147/33 94/149/33
|
||||
f 108/156/29 116/168/29 115/157/28
|
||||
f 106/159/31 114/170/31 113/160/30
|
||||
f 105/161/30 113/160/30 120/162/32
|
||||
f 111/164/34 119/171/34 118/165/33
|
||||
f 109/167/35 117/172/35 116/168/29
|
||||
f 107/169/28 115/174/28 114/170/31
|
||||
f 112/163/32 120/162/32 119/171/34
|
||||
f 110/166/33 118/165/33 117/172/35
|
||||
o Base
|
||||
v -0.375000 0.468750 -0.187500
|
||||
v -0.375000 0.468750 0.187500
|
||||
v -0.375000 0.531250 0.187500
|
||||
v -0.375000 0.531250 -0.187500
|
||||
v -0.500000 0.750000 0.187500
|
||||
v -0.500000 0.250000 0.187500
|
||||
v -0.500000 0.750000 -0.187500
|
||||
v -0.500000 0.250000 -0.187500
|
||||
v -0.437500 0.750000 -0.187500
|
||||
v -0.437500 0.750000 0.187500
|
||||
v -0.437500 0.250000 0.187500
|
||||
v -0.437500 0.250000 -0.187500
|
||||
v -0.437500 0.406250 -0.187500
|
||||
v -0.437500 0.406250 0.187500
|
||||
v -0.437500 0.593750 0.187500
|
||||
v -0.437500 0.593750 -0.187500
|
||||
v -0.437500 0.718750 0.125000
|
||||
v -0.437500 0.281250 0.125000
|
||||
v -0.437500 0.718750 -0.125000
|
||||
v -0.437500 0.281250 -0.125000
|
||||
v -0.375000 0.718750 -0.125000
|
||||
v -0.375000 0.718750 0.125000
|
||||
v -0.312500 0.281250 0.125000
|
||||
v -0.312500 0.281250 -0.125000
|
||||
v -0.268306 0.281250 -0.088388
|
||||
v -0.330806 0.718750 -0.088388
|
||||
v -0.250000 0.281250 0.000000
|
||||
v -0.312500 0.718750 0.000000
|
||||
v -0.268306 0.281250 0.088388
|
||||
v -0.330806 0.718750 0.088388
|
||||
v -0.437500 0.625000 -0.125000
|
||||
v -0.375000 0.625000 -0.125000
|
||||
v -0.437500 0.625000 -0.156250
|
||||
v -0.406250 0.625000 -0.156250
|
||||
v -0.375000 0.656250 -0.125000
|
||||
v -0.437500 0.656250 -0.156250
|
||||
v -0.406250 0.656250 -0.156250
|
||||
v -0.437500 0.656250 -0.125000
|
||||
v -0.437500 0.343750 -0.125000
|
||||
v -0.375000 0.343750 -0.125000
|
||||
v -0.437500 0.343750 -0.156250
|
||||
v -0.406250 0.343750 -0.156250
|
||||
v -0.375000 0.375000 -0.125000
|
||||
v -0.437500 0.375000 -0.156250
|
||||
v -0.406250 0.375000 -0.156250
|
||||
v -0.437500 0.375000 -0.125000
|
||||
v -0.437500 0.625000 0.125000
|
||||
v -0.375000 0.625000 0.125000
|
||||
v -0.437500 0.625000 0.156250
|
||||
v -0.406250 0.625000 0.156250
|
||||
v -0.375000 0.656250 0.125000
|
||||
v -0.437500 0.656250 0.156250
|
||||
v -0.406250 0.656250 0.156250
|
||||
v -0.437500 0.656250 0.125000
|
||||
v -0.437500 0.343750 0.125000
|
||||
v -0.375000 0.343750 0.125000
|
||||
v -0.437500 0.343750 0.156250
|
||||
v -0.406250 0.343750 0.156250
|
||||
v -0.375000 0.375000 0.125000
|
||||
v -0.437500 0.375000 0.156250
|
||||
v -0.406250 0.375000 0.156250
|
||||
v -0.437500 0.375000 0.125000
|
||||
v -0.297708 0.497101 -0.046875
|
||||
v -0.302321 0.529924 -0.033146
|
||||
v -0.304231 0.543519 0.000000
|
||||
v -0.302321 0.529924 0.033146
|
||||
v -0.297708 0.497101 0.046875
|
||||
v -0.293095 0.464278 0.033146
|
||||
v -0.291184 0.450682 0.000000
|
||||
v -0.293095 0.464278 -0.033146
|
||||
v -0.266762 0.501450 -0.046875
|
||||
v -0.271375 0.534273 -0.033146
|
||||
v -0.273285 0.547869 0.000000
|
||||
v -0.271375 0.534273 0.033146
|
||||
v -0.266762 0.501450 0.046875
|
||||
v -0.262149 0.468627 0.033146
|
||||
v -0.260238 0.455031 0.000000
|
||||
v -0.262149 0.468627 -0.033146
|
||||
v -0.437500 0.281250 0.125000
|
||||
v -0.437500 0.281250 -0.125000
|
||||
v -0.312500 0.281250 0.125000
|
||||
v -0.312500 0.281250 -0.125000
|
||||
v -0.268306 0.281250 -0.088388
|
||||
v -0.250000 0.281250 0.000000
|
||||
v -0.268306 0.281250 0.088388
|
||||
v -0.437500 0.718750 0.125000
|
||||
v -0.437500 0.718750 -0.125000
|
||||
v -0.375000 0.718750 -0.125000
|
||||
v -0.375000 0.718750 0.125000
|
||||
v -0.330806 0.718750 -0.088388
|
||||
v -0.312500 0.718750 0.000000
|
||||
v -0.330806 0.718750 0.088388
|
||||
v -0.375000 0.468750 -0.187500
|
||||
v -0.375000 0.468750 0.187500
|
||||
v -0.375000 0.531250 0.187500
|
||||
v -0.375000 0.531250 -0.187500
|
||||
v -0.437500 0.406250 -0.187500
|
||||
v -0.437500 0.406250 0.187500
|
||||
v -0.437500 0.593750 0.187500
|
||||
v -0.437500 0.593750 -0.187500
|
||||
v -0.266762 0.501450 -0.046875
|
||||
v -0.271375 0.534273 -0.033146
|
||||
v -0.273285 0.547869 0.000000
|
||||
v -0.271375 0.534273 0.033146
|
||||
v -0.266762 0.501450 0.046875
|
||||
v -0.262149 0.468627 0.033146
|
||||
v -0.260238 0.455031 0.000000
|
||||
v -0.262149 0.468627 -0.033146
|
||||
v -0.266762 0.501450 -0.023437
|
||||
v -0.269068 0.517861 -0.016573
|
||||
v -0.270024 0.524659 0.000000
|
||||
v -0.269068 0.517861 0.016573
|
||||
v -0.266762 0.501450 0.023438
|
||||
v -0.264455 0.485038 0.016573
|
||||
v -0.263500 0.478240 0.000000
|
||||
v -0.264455 0.485038 -0.016573
|
||||
vt 0.027027 0.263158
|
||||
vt 0.054054 0.289474
|
||||
vt 0.027027 0.289474
|
||||
vt 0.540541 0.947368
|
||||
vt 0.864865 0.526316
|
||||
vt 0.864865 0.947368
|
||||
vt 0.432432 0.526316
|
||||
vt 0.108108 0.657895
|
||||
vt 0.108108 0.526316
|
||||
vt 0.108108 0.815789
|
||||
vt 0.432432 0.947368
|
||||
vt 0.108108 0.947368
|
||||
vt 0.432432 0.710526
|
||||
vt 0.486486 0.815789
|
||||
vt 0.432432 0.763158
|
||||
vt 0.432432 0.473684
|
||||
vt 0.108108 0.473684
|
||||
vt 0.108108 1.000000
|
||||
vt 0.432432 1.000000
|
||||
vt 0.027027 0.447368
|
||||
vt 0.054054 0.421053
|
||||
vt 0.054054 0.447368
|
||||
vt 0.027027 0.421053
|
||||
vt 0.054054 0.394737
|
||||
vt 0.054054 0.815789
|
||||
vt 0.108108 0.710526
|
||||
vt 0.108108 0.763158
|
||||
vt 0.486486 0.657895
|
||||
vt 0.486486 0.526316
|
||||
vt 0.540541 0.526316
|
||||
vt 0.000000 0.526316
|
||||
vt 0.054054 0.657895
|
||||
vt 0.891892 0.447368
|
||||
vt 0.918919 0.473684
|
||||
vt 0.918919 0.526316
|
||||
vt 0.054054 0.263158
|
||||
vt 0.081081 0.289474
|
||||
vt 0.054054 0.315789
|
||||
vt 0.108108 0.289474
|
||||
vt 0.081081 0.315789
|
||||
vt 0.108108 0.263158
|
||||
vt 0.081081 0.263158
|
||||
vt 0.135135 0.263158
|
||||
vt 0.054054 0.263158
|
||||
vt 0.081081 0.289474
|
||||
vt 0.054054 0.315789
|
||||
vt 0.108108 0.289474
|
||||
vt 0.081081 0.315789
|
||||
vt 0.108108 0.263158
|
||||
vt 0.081081 0.263158
|
||||
vt 0.135135 0.263158
|
||||
vt 0.135135 0.263158
|
||||
vt 0.108108 0.289474
|
||||
vt 0.108108 0.263158
|
||||
vt 0.108108 0.315789
|
||||
vt 0.081081 0.289474
|
||||
vt 0.081081 0.263158
|
||||
vt 0.054054 0.263158
|
||||
vt 0.054054 0.315789
|
||||
vt 0.135135 0.263158
|
||||
vt 0.108108 0.289474
|
||||
vt 0.108108 0.263158
|
||||
vt 0.108108 0.315789
|
||||
vt 0.081081 0.289474
|
||||
vt 0.081081 0.263158
|
||||
vt 0.054054 0.263158
|
||||
vt 0.054054 0.315789
|
||||
vt 0.918919 0.184211
|
||||
vt 0.891892 0.210526
|
||||
vt 0.810811 0.236842
|
||||
vt 0.027027 0.315789
|
||||
vt 0.054054 0.342105
|
||||
vt 0.027027 0.342105
|
||||
vt 0.027027 0.394737
|
||||
vt 0.054054 0.368421
|
||||
vt 0.027027 0.473684
|
||||
vt 0.054054 0.473684
|
||||
vt 0.054054 0.315789
|
||||
vt 0.027027 0.368421
|
||||
vt 0.054054 0.263158
|
||||
vt 0.432432 0.657895
|
||||
vt 0.432432 0.815789
|
||||
vt 0.486486 0.947368
|
||||
vt 0.054054 0.947368
|
||||
vt 0.000000 0.947368
|
||||
vt 0.054054 0.526316
|
||||
vt 0.702703 0.526316
|
||||
vt 0.810811 0.421053
|
||||
vt 0.702703 0.473684
|
||||
vt 0.729730 0.447368
|
||||
vt 0.108108 0.315789
|
||||
vt 0.135135 0.315789
|
||||
vt 0.108108 0.315789
|
||||
vt 0.135135 0.315789
|
||||
vt 0.135135 0.315789
|
||||
vt 0.081081 0.315789
|
||||
vt 0.135135 0.315789
|
||||
vt 0.081081 0.315789
|
||||
vt 0.729730 0.210526
|
||||
vt 0.702703 0.184211
|
||||
vt 0.702703 0.078947
|
||||
vt 0.918919 0.078947
|
||||
vt 0.621622 0.236842
|
||||
vt 0.675676 0.421053
|
||||
vt 0.621622 0.421053
|
||||
vt 1.000000 0.236842
|
||||
vt 0.945946 0.421053
|
||||
vt 0.891892 0.236842
|
||||
vt 0.864865 0.236842
|
||||
vt 0.810811 0.421053
|
||||
vt 0.810811 0.236842
|
||||
vt 0.756757 0.236842
|
||||
vt 0.864865 0.421053
|
||||
vt 0.729730 0.236842
|
||||
vt 0.756757 0.421053
|
||||
vt 0.729730 0.421053
|
||||
vt 0.000000 0.447368
|
||||
vt 0.027027 0.473684
|
||||
vt 0.000000 0.473684
|
||||
vt 0.000000 0.315789
|
||||
vt 0.027027 0.289474
|
||||
vt 0.027027 0.315789
|
||||
vt 0.000000 0.368421
|
||||
vt 0.027027 0.342105
|
||||
vt 0.027027 0.368421
|
||||
vt 0.000000 0.394737
|
||||
vt 0.027027 0.421053
|
||||
vt 0.000000 0.421053
|
||||
vt 0.027027 0.447368
|
||||
vt 0.000000 0.289474
|
||||
vt 0.027027 0.263158
|
||||
vt 0.000000 0.342105
|
||||
vt 0.027027 0.394737
|
||||
vt 0.108108 0.710526
|
||||
vt 0.432432 0.763158
|
||||
vt 0.108108 0.763158
|
||||
vt 0.108108 0.657895
|
||||
vt 0.432432 0.710526
|
||||
vt 0.432432 0.815789
|
||||
vt 1.000000 0.421053
|
||||
vt 0.891892 0.421053
|
||||
vt 0.000000 0.263158
|
||||
vt 0.432432 0.657895
|
||||
vt 0.108108 0.815789
|
||||
vn 0.9903 0.1392 0.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.7071 0.0000 -0.7071
|
||||
vn 0.7071 0.0000 0.7071
|
||||
vn 0.3111 0.0444 0.9493
|
||||
vn 0.3111 0.0444 -0.9493
|
||||
vn 0.3651 0.0522 -0.9295
|
||||
vn 0.8579 0.1225 -0.4989
|
||||
vn 0.9899 0.1414 0.0000
|
||||
vn 0.8579 0.1225 0.4989
|
||||
vn 0.8424 0.1203 -0.5253
|
||||
vn 0.3651 0.0522 0.9295
|
||||
vn 0.8424 0.1203 0.5253
|
||||
vn 0.0984 -0.7002 -0.7071
|
||||
vn 0.1392 -0.9903 0.0000
|
||||
vn 0.0984 -0.7002 0.7071
|
||||
vn -0.1392 0.9903 0.0000
|
||||
vn -0.0984 0.7002 0.7071
|
||||
vn -0.0984 0.7002 -0.7071
|
||||
vn 0.9239 -0.3827 0.0000
|
||||
vn 0.9239 0.3827 0.0000
|
||||
vn 0.7071 -0.7071 0.0000
|
||||
vn 0.7071 0.7071 0.0000
|
||||
s off
|
||||
f 251/175/36 258/176/36 250/177/36
|
||||
f 151/178/37 150/179/37 149/180/37
|
||||
f 156/181/38 158/182/38 155/183/38
|
||||
f 159/184/38 153/185/38 154/186/38
|
||||
f 145/187/39 160/188/39 148/189/39
|
||||
f 152/190/40 155/183/40 150/191/40
|
||||
f 149/192/41 153/185/41 151/193/41
|
||||
f 252/194/36 253/195/36 260/196/36
|
||||
f 245/197/36 254/198/36 253/195/36
|
||||
f 159/199/42 146/200/42 147/201/42
|
||||
f 157/202/39 156/203/39 152/204/39
|
||||
f 150/205/42 158/206/42 159/199/42
|
||||
f 234/207/41 232/208/41 231/209/41
|
||||
f 175/210/40 178/211/40 176/212/40
|
||||
f 181/213/43 176/214/43 178/211/43
|
||||
f 180/215/39 178/211/39 177/216/39
|
||||
f 182/217/41 181/213/41 180/215/41
|
||||
f 183/218/40 186/219/40 184/220/40
|
||||
f 189/221/43 184/222/43 186/219/43
|
||||
f 188/223/39 186/219/39 185/224/39
|
||||
f 190/225/41 189/221/41 188/223/41
|
||||
f 191/226/40 194/227/40 193/228/40
|
||||
f 192/229/44 197/230/44 194/227/44
|
||||
f 194/227/42 196/231/42 193/228/42
|
||||
f 198/232/41 197/230/41 195/233/41
|
||||
f 199/234/40 202/235/40 201/236/40
|
||||
f 200/237/44 205/238/44 202/235/44
|
||||
f 202/235/42 204/239/42 201/236/42
|
||||
f 206/240/41 205/238/41 203/241/41
|
||||
f 226/242/40 227/243/40 228/244/40
|
||||
f 249/245/36 256/246/36 248/247/36
|
||||
f 246/248/36 255/249/36 254/198/36
|
||||
f 251/250/36 260/196/36 259/251/36
|
||||
f 250/177/36 257/252/36 249/245/36
|
||||
f 248/247/36 255/249/36 247/253/36
|
||||
f 251/175/36 259/254/36 258/176/36
|
||||
f 151/178/37 152/204/37 150/179/37
|
||||
f 156/181/38 157/255/38 158/182/38
|
||||
f 159/184/38 160/256/38 153/185/38
|
||||
f 145/187/39 157/202/39 160/188/39
|
||||
f 152/190/40 156/181/40 155/183/40
|
||||
f 149/192/41 154/186/41 153/185/41
|
||||
f 252/194/36 245/197/36 253/195/36
|
||||
f 245/197/36 246/248/36 254/198/36
|
||||
f 159/199/42 158/206/42 146/200/42
|
||||
f 152/204/39 151/178/39 160/188/39
|
||||
f 151/178/39 153/257/39 160/188/39
|
||||
f 160/188/39 157/202/39 152/204/39
|
||||
f 154/258/42 149/259/42 159/199/42
|
||||
f 149/259/42 150/205/42 159/199/42
|
||||
f 150/205/42 155/260/42 158/206/42
|
||||
f 231/209/41 230/261/41 235/262/41
|
||||
f 230/261/41 233/263/41 236/264/41
|
||||
f 235/262/41 230/261/41 236/264/41
|
||||
f 235/262/41 234/207/41 231/209/41
|
||||
f 175/210/40 177/216/40 178/211/40
|
||||
f 181/213/43 179/265/43 176/214/43
|
||||
f 180/215/39 181/213/39 178/211/39
|
||||
f 182/217/41 179/266/41 181/213/41
|
||||
f 183/218/40 185/224/40 186/219/40
|
||||
f 189/221/43 187/267/43 184/222/43
|
||||
f 188/223/39 189/221/39 186/219/39
|
||||
f 190/225/41 187/268/41 189/221/41
|
||||
f 191/226/40 192/269/40 194/227/40
|
||||
f 192/229/44 195/270/44 197/230/44
|
||||
f 194/227/42 197/230/42 196/231/42
|
||||
f 198/232/41 196/231/41 197/230/41
|
||||
f 199/234/40 200/271/40 202/235/40
|
||||
f 200/237/44 203/272/44 205/238/44
|
||||
f 202/235/42 205/238/42 204/239/42
|
||||
f 206/240/41 204/239/41 205/238/41
|
||||
f 229/273/40 225/274/40 228/244/40
|
||||
f 225/274/40 223/275/40 228/244/40
|
||||
f 223/275/40 224/276/40 228/244/40
|
||||
f 224/276/40 226/242/40 228/244/40
|
||||
f 249/245/36 257/252/36 256/246/36
|
||||
f 246/248/36 247/253/36 255/249/36
|
||||
f 251/250/36 252/194/36 260/196/36
|
||||
f 250/177/36 258/176/36 257/252/36
|
||||
f 248/247/36 256/246/36 255/249/36
|
||||
s 1
|
||||
f 162/277/42 166/278/45 161/279/42
|
||||
f 164/280/39 165/281/46 168/282/47
|
||||
f 169/283/48 172/284/49 171/285/49
|
||||
f 172/284/49 173/286/50 171/285/49
|
||||
f 168/282/47 170/287/51 169/283/48
|
||||
f 167/288/52 174/289/53 166/290/45
|
||||
f 214/291/54 221/292/55 213/293/55
|
||||
f 211/294/42 220/295/56 219/296/42
|
||||
f 209/297/57 218/298/58 217/299/57
|
||||
f 208/300/59 215/301/39 207/302/39
|
||||
f 214/291/54 215/301/39 222/303/54
|
||||
f 212/304/56 221/305/55 220/295/56
|
||||
f 211/294/42 218/298/58 210/306/58
|
||||
f 209/297/57 216/307/59 208/300/59
|
||||
f 238/308/60 240/309/61 239/310/61
|
||||
f 242/311/62 237/312/60 238/308/60
|
||||
f 244/313/63 239/310/61 240/309/61
|
||||
f 162/277/42 167/288/52 166/278/45
|
||||
f 164/280/39 163/314/39 165/281/46
|
||||
f 169/283/48 170/287/51 172/284/49
|
||||
f 172/284/49 174/289/53 173/286/50
|
||||
f 168/282/47 165/315/46 170/287/51
|
||||
f 167/288/52 173/286/50 174/289/53
|
||||
f 214/291/54 222/303/54 221/292/55
|
||||
f 211/294/42 212/304/56 220/295/56
|
||||
f 209/297/57 210/306/58 218/298/58
|
||||
f 208/300/59 216/307/59 215/301/39
|
||||
f 214/291/54 207/302/39 215/301/39
|
||||
f 212/304/56 213/316/55 221/305/55
|
||||
f 211/294/42 219/296/42 218/298/58
|
||||
f 209/297/57 217/299/57 216/307/59
|
||||
f 238/308/60 237/312/60 240/309/61
|
||||
f 242/311/62 241/317/62 237/312/60
|
||||
f 244/313/63 243/318/63 239/310/61
|
||||
BIN
src/main/resources/assets/hbm/textures/blocks/deep_cobble.png
Normal file
BIN
src/main/resources/assets/hbm/textures/blocks/deep_cobble.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 876 B |
Binary file not shown.
|
After Width: | Height: | Size: 958 B |
Binary file not shown.
|
After Width: | Height: | Size: 679 B |
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
Loading…
x
Reference in New Issue
Block a user