Merge branch 'pr1083' into master
64
changelog
@ -1,58 +1,16 @@
|
||||
## Added
|
||||
* Glpyhids
|
||||
* Hives will spawn randomly in the world
|
||||
* Hives will constantly spawn new glyphids
|
||||
* If exposed to soot, hives will create glyphid scouts, which when far enough from another hive will explode and generate a new hive
|
||||
* Higher soot levels create stronger glyphids
|
||||
* Glyphids possess armor which has a chance of breaking off and fully absorbing damage
|
||||
* Each glyphid has five armor plates
|
||||
* Glyphid types include multiple tiers of melee glyphids as well as a few ranged ones, the scout, and a nuclear variant
|
||||
* Compressor
|
||||
* Can compress fluids, turning them into higher pressure variants
|
||||
* Higher pressure fluid can use the same ducts as regular fluids, connections work the same so long as the input tank can accept the higher pressure type
|
||||
* Can also turn steam into higher pressure types
|
||||
* Vacuum refining now requires oil at 2 PU
|
||||
* Some chemical plant recipes also require compressed fluid, TATB requires sour gas at 1 PU and osmiridic solution requires hydrogen peroxide at 5 PU
|
||||
* A new rocket artillery ammo type that creates volcanic lava on impact
|
||||
* BDCL
|
||||
* A type of lubricant that is easy to make and can be used in hydraulic piston and electric press recipes instead of regular lubricant
|
||||
* FBI drones
|
||||
* A configurable amount of drones can now spawn during FBI raids
|
||||
* They will hover over players, dropping bombs
|
||||
* Sliding Blast Door from 1.12.2
|
||||
* Night Vision Goggles armor upgrade
|
||||
* Grenade of Cats
|
||||
* Configs for all things pollution related
|
||||
* Pollution in general can be turned off, smog can be disabled and adjusted, different poison types can be disabled and the threshold for spawning tougher mobs can also be changed
|
||||
* Glyphid meat
|
||||
* Dropped by glyphids (duh)
|
||||
* Can be grilled
|
||||
* Fluid valves
|
||||
* come in manual and restone variants
|
||||
|
||||
## Changed
|
||||
* Updated russian localization
|
||||
* Fluid traits can now be configured, any fluid can now have any fluid with variable stats assigned to them
|
||||
* Large explosions now load the central chunk they are in, this can be disabled in the config
|
||||
* Burning leaded fuels now releases poisonous heavy metals into the atmosphere
|
||||
* The pollution detector now displays rounded values
|
||||
* More machines and especially destroyed ones now release soot
|
||||
* The iGen has been rebalanced again, delete your machine config file for the changes to take effect
|
||||
* The lubricant power multiplier has been increased from 1.1 to 1.5
|
||||
* The fluid divisor has been lowered from 5,000 to 1,000, meaning the iGen now burns flammable liquids at full efficiency
|
||||
* Removed the config for having an additional keybind for dashing, the keybind is now always active since it no longer conflicts with crouching
|
||||
* Crucible recipes no longer use foundry scraps to visualize the recipes, instead they use a lava-like texture
|
||||
* Fusion reactors are now made from welded magnets which are created by welding a cast steel plate onto a magnet
|
||||
* Due to the cost of the cast plates, fusion reactor magnets are now cheaper to compensate
|
||||
* Consequently, particle accelerators are now also cheaper due to being made from mostly fusion reactor magnets
|
||||
* The blowtorch now consumes only 250mB per operation, allowing for up to 16 things to be welded with a single fill
|
||||
* The page and notebook items have been replaced with more dynamic book items that get their data from NBT
|
||||
* C4 can now be made by irradiating PVC
|
||||
* Play stupid games, win stupid prizes
|
||||
* Gas grenades now use the new gas system which should be a lot more pleasant to look at and less heavy on the TPS
|
||||
* Leaded fuels now release heavy metal into the air, heavy metal can cause lead poisoning
|
||||
* Lower heavy metal concentrations can also cause heavy metal poisoning when breaking blocks
|
||||
* Gas artillery shell now create heavy metal and poisonous pollution
|
||||
* FBI agents will now target the player from a much larger distance
|
||||
* Glyphids now have a config for a global spawn limit, which is 50 by default, no more than this many glyphids can be created at once
|
||||
* Removed the old oil and gas ducts for good
|
||||
|
||||
## Fixed
|
||||
* Fixed potential crash or logspam regarding the pollution handler
|
||||
* Fixed missiles leaving behind a 3x3 grid of loaded chunks after being destroyed
|
||||
* Fixed coal ore yielding coal in the crucible instead of making carbon
|
||||
* Fixed a potential issue where BuildCraft generators can't supply the RF to HE converter
|
||||
* Fixed combustion engine sound sometimes continue playing even when turned off
|
||||
* Fixed large mining drill not properly performing a block check and potentially deleting blocks when placed
|
||||
* Fixed calcium solution not having a fluid texture
|
||||
* Fixed player extprops like the HUD or backpack toggles not saving
|
||||
* Fixed desync caused by teleporting between dimensions, switching toggles for HUD or backpack
|
||||
@ -781,16 +781,15 @@ public class ModBlocks {
|
||||
public static Block cable_detector;
|
||||
public static Block cable_diode;
|
||||
public static Block machine_detector;
|
||||
public static Block oil_duct_solid;
|
||||
public static Block oil_duct;
|
||||
public static Block gas_duct_solid;
|
||||
public static Block gas_duct;
|
||||
public static Block fluid_duct;
|
||||
public static Block fluid_duct_solid;
|
||||
public static Block fluid_duct_neo;
|
||||
public static Block fluid_duct_box;
|
||||
public static Block fluid_duct_paintable;
|
||||
public static Block fluid_duct_gauge;
|
||||
public static Block fluid_duct_exhaust;
|
||||
public static Block fluid_valve;
|
||||
public static Block fluid_switch;
|
||||
public static Block radio_torch_sender;
|
||||
public static Block radio_torch_receiver;
|
||||
|
||||
@ -948,6 +947,7 @@ public class ModBlocks {
|
||||
public static Block machine_fracking_tower;
|
||||
|
||||
public static Block machine_flare;
|
||||
public static Block chimney_brick;
|
||||
|
||||
public static Block machine_refinery;
|
||||
public static Block machine_vacuum_distill;
|
||||
@ -1931,16 +1931,15 @@ public class ModBlocks {
|
||||
cable_detector = new CableDetector(Material.iron).setBlockName("cable_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
cable_diode = new CableDiode(Material.iron).setBlockName("cable_diode").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_diode");
|
||||
machine_detector = new PowerDetector(Material.iron).setBlockName("machine_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_detector_off");
|
||||
oil_duct_solid = new OilDuctSolid(Material.iron).setBlockName("oil_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_duct_solid_alt");
|
||||
oil_duct = new BlockOilDuct(Material.iron).setBlockName("oil_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_duct_icon_alt");
|
||||
gas_duct_solid = new GasDuctSolid(Material.iron).setBlockName("gas_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":gas_duct_solid");
|
||||
gas_duct = new BlockGasDuct(Material.iron).setBlockName("gas_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":gas_duct_icon");
|
||||
fluid_duct = new BlockFluidDuct(Material.iron).setBlockName("fluid_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fluid_duct_icon");
|
||||
fluid_duct_solid = new BlockFluidDuctSolid(Material.iron).setBlockName("fluid_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fluid_duct_solid");
|
||||
fluid_duct_neo = new FluidDuctStandard(Material.iron).setBlockName("fluid_duct_neo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pipe_neo");
|
||||
fluid_duct_box = new FluidDuctBox(Material.iron).setBlockName("fluid_duct_box").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box");
|
||||
fluid_duct_exhaust = new FluidDuctBoxExhaust(Material.iron).setBlockName("fluid_duct_exhaust").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box");
|
||||
fluid_duct_paintable = new FluidDuctPaintable().setBlockName("fluid_duct_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
fluid_duct_gauge = new FluidDuctGauge().setBlockName("fluid_duct_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
fluid_valve = new FluidValve(Material.iron).setBlockName("fluid_valve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
fluid_switch = new FluidSwitch(Material.iron).setBlockName("fluid_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
radio_torch_sender = new RadioTorchSender().setBlockName("radio_torch_sender").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
radio_torch_receiver = new RadioTorchReceiver().setBlockName("radio_torch_receiver").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
|
||||
@ -2191,6 +2190,7 @@ public class ModBlocks {
|
||||
machine_fracking_tower = new MachineFrackingTower().setBlockName("machine_fracking_tower").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
oil_pipe = new BlockNoDrop(Material.iron).setBlockName("oil_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_pipe");
|
||||
machine_flare = new MachineGasFlare(Material.iron).setBlockName("machine_flare").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
chimney_brick = new MachineChimneyBrick(Material.iron).setBlockName("chimney_brick").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire");
|
||||
machine_refinery = new MachineRefinery(Material.iron).setBlockName("machine_refinery").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_refinery");
|
||||
machine_vacuum_distill = new MachineVacuumDistill(Material.iron).setBlockName("machine_vacuum_distill").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_fraction_tower = new MachineFractionTower(Material.iron).setBlockName("machine_fraction_tower").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
@ -3162,16 +3162,15 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(cable_detector, cable_detector.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(cable_diode, ItemBlockBase.class, cable_diode.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(machine_detector, machine_detector.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(oil_duct, oil_duct.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(oil_duct_solid, oil_duct_solid.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(gas_duct, gas_duct.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(gas_duct_solid, gas_duct_solid.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(fluid_duct, fluid_duct.getUnlocalizedName());
|
||||
register(fluid_duct_neo);
|
||||
register(fluid_duct_box);
|
||||
register(fluid_duct_exhaust);
|
||||
register(fluid_duct_paintable);
|
||||
register(fluid_duct_gauge);
|
||||
GameRegistry.registerBlock(fluid_duct_solid, fluid_duct_solid.getUnlocalizedName());
|
||||
register(fluid_valve);
|
||||
register(fluid_switch);
|
||||
register(radio_torch_sender);
|
||||
register(radio_torch_receiver);
|
||||
|
||||
@ -3265,6 +3264,7 @@ public class ModBlocks {
|
||||
register(machine_pumpjack);
|
||||
register(machine_fracking_tower);
|
||||
register(machine_flare);
|
||||
register(chimney_brick);
|
||||
register(machine_refinery);
|
||||
register(machine_vacuum_distill);
|
||||
register(machine_fraction_tower);
|
||||
|
||||
@ -14,9 +14,11 @@ import com.hbm.entity.mob.EntityGlyphidNuclear;
|
||||
import com.hbm.entity.mob.EntityGlyphidScout;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.items.ModItems;
|
||||
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.EnumDifficulty;
|
||||
@ -28,6 +30,16 @@ public class BlockGlyphidSpawner extends BlockContainer {
|
||||
super(p_i45386_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int meta, Random rand, int fortune) {
|
||||
return ModItems.egg_glyphid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int quantityDropped(int meta, int fortune, Random rand) {
|
||||
return 1 + rand.nextInt(3) + fortune;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return new TileEntityGlpyhidSpawner();
|
||||
@ -39,7 +51,15 @@ public class BlockGlyphidSpawner extends BlockContainer {
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 60 == 0 && this.worldObj.difficultySetting != EnumDifficulty.PEACEFUL) {
|
||||
|
||||
|
||||
int count = 0;
|
||||
|
||||
for(Object e : worldObj.loadedEntityList) {
|
||||
if(e instanceof EntityGlyphid) {
|
||||
count++;
|
||||
if(count >= MobConfig.spawnMax) return;
|
||||
}
|
||||
}
|
||||
|
||||
float soot = PollutionHandler.getPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT);
|
||||
List<EntityGlyphid> list = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord - 6, yCoord + 1, zCoord - 6, xCoord + 7, yCoord + 9, zCoord + 7));
|
||||
|
||||
@ -1,20 +0,0 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import com.hbm.tileentity.conductor.TileEntityGasDuctSolid;
|
||||
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class GasDuctSolid extends BlockContainer {
|
||||
|
||||
public GasDuctSolid(Material p_i45386_1_) {
|
||||
super(p_i45386_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityGasDuctSolid();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||
import com.hbm.tileentity.machine.TileEntityChimneyBrick;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class MachineChimneyBrick extends BlockDummyable {
|
||||
|
||||
public MachineChimneyBrick(Material mat) {
|
||||
super(mat);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
|
||||
if(meta >= 12) return new TileEntityChimneyBrick();
|
||||
if(meta >= 6) return new TileEntityProxyCombo().fluid();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[] {12, 0, 1, 1, 1, 1};
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||
super.fillSpace(world, x, y, z, dir, o);
|
||||
this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o);
|
||||
this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o);
|
||||
this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o + 1);
|
||||
this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o - 1);
|
||||
}
|
||||
}
|
||||
@ -1,20 +0,0 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import com.hbm.tileentity.conductor.TileEntityOilDuctSolid;
|
||||
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class OilDuctSolid extends BlockContainer {
|
||||
|
||||
public OilDuctSolid(Material p_i45386_1_) {
|
||||
super(p_i45386_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityOilDuctSolid();
|
||||
}
|
||||
}
|
||||
@ -1,81 +0,0 @@
|
||||
package com.hbm.blocks.network;
|
||||
|
||||
import com.hbm.tileentity.conductor.TileEntityGasDuct;
|
||||
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockGasDuct extends BlockContainer {
|
||||
|
||||
public BlockGasDuct(Material p_i45386_1_) {
|
||||
super(p_i45386_1_);
|
||||
float p = 1F/16F;
|
||||
this.setBlockBounds(11 * p / 2, 11 * p / 2, 11 * p / 2, 1 - 11 * p / 2, 1 - 11 * p / 2, 1 - 11 * p / 2);
|
||||
this.useNeighborBrightness = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
if(world.getTileEntity(x, y, z) instanceof TileEntityGasDuct) {
|
||||
TileEntityGasDuct cable = (TileEntityGasDuct)world.getTileEntity(x, y, z);
|
||||
|
||||
if(cable != null)
|
||||
{
|
||||
float p = 1F/16F;
|
||||
float minX = 11 * p / 2 - (cable.connections[5] != null ? (11 * p / 2) : 0);
|
||||
float minY = 11 * p / 2 - (cable.connections[1] != null ? (11 * p / 2) : 0);
|
||||
float minZ = 11 * p / 2 - (cable.connections[2] != null ? (11 * p / 2) : 0);
|
||||
float maxX = 1 - 11 * p / 2 + (cable.connections[3] != null ? (11 * p / 2) : 0);
|
||||
float maxY = 1 - 11 * p / 2 + (cable.connections[0] != null ? (11 * p / 2) : 0);
|
||||
float maxZ = 1 - 11 * p / 2 + (cable.connections[4] != null ? (11 * p / 2) : 0);
|
||||
|
||||
this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ);
|
||||
}
|
||||
}
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||
if(world.getTileEntity(x, y, z) instanceof TileEntityGasDuct) {
|
||||
TileEntityGasDuct cable = (TileEntityGasDuct)world.getTileEntity(x, y, z);
|
||||
|
||||
if(cable != null)
|
||||
{
|
||||
float p = 1F/16F;
|
||||
float minX = 11 * p / 2 - (cable.connections[5] != null ? (11 * p / 2) : 0);
|
||||
float minY = 11 * p / 2 - (cable.connections[1] != null ? (11 * p / 2) : 0);
|
||||
float minZ = 11 * p / 2 - (cable.connections[2] != null ? (11 * p / 2) : 0);
|
||||
float maxX = 1 - 11 * p / 2 + (cable.connections[3] != null ? (11 * p / 2) : 0);
|
||||
float maxY = 1 - 11 * p / 2 + (cable.connections[0] != null ? (11 * p / 2) : 0);
|
||||
float maxZ = 1 - 11 * p / 2 + (cable.connections[4] != null ? (11 * p / 2) : 0);
|
||||
|
||||
this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityGasDuct();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -1,81 +0,0 @@
|
||||
package com.hbm.blocks.network;
|
||||
|
||||
import com.hbm.tileentity.conductor.TileEntityOilDuct;
|
||||
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockOilDuct extends BlockContainer {
|
||||
|
||||
public BlockOilDuct(Material p_i45386_1_) {
|
||||
super(p_i45386_1_);
|
||||
float p = 1F/16F;
|
||||
this.setBlockBounds(11 * p / 2, 11 * p / 2, 11 * p / 2, 1 - 11 * p / 2, 1 - 11 * p / 2, 1 - 11 * p / 2);
|
||||
this.useNeighborBrightness = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
if(world.getTileEntity(x, y, z) instanceof TileEntityOilDuct) {
|
||||
TileEntityOilDuct cable = (TileEntityOilDuct)world.getTileEntity(x, y, z);
|
||||
|
||||
if(cable != null)
|
||||
{
|
||||
float p = 1F/16F;
|
||||
float minX = 11 * p / 2 - (cable.connections[5] != null ? (11 * p / 2) : 0);
|
||||
float minY = 11 * p / 2 - (cable.connections[1] != null ? (11 * p / 2) : 0);
|
||||
float minZ = 11 * p / 2 - (cable.connections[2] != null ? (11 * p / 2) : 0);
|
||||
float maxX = 1 - 11 * p / 2 + (cable.connections[3] != null ? (11 * p / 2) : 0);
|
||||
float maxY = 1 - 11 * p / 2 + (cable.connections[0] != null ? (11 * p / 2) : 0);
|
||||
float maxZ = 1 - 11 * p / 2 + (cable.connections[4] != null ? (11 * p / 2) : 0);
|
||||
|
||||
this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ);
|
||||
}
|
||||
}
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||
if(world.getTileEntity(x, y, z) instanceof TileEntityOilDuct) {
|
||||
TileEntityOilDuct cable = (TileEntityOilDuct)world.getTileEntity(x, y, z);
|
||||
|
||||
if(cable != null)
|
||||
{
|
||||
float p = 1F/16F;
|
||||
float minX = 11 * p / 2 - (cable.connections[5] != null ? (11 * p / 2) : 0);
|
||||
float minY = 11 * p / 2 - (cable.connections[1] != null ? (11 * p / 2) : 0);
|
||||
float minZ = 11 * p / 2 - (cable.connections[2] != null ? (11 * p / 2) : 0);
|
||||
float maxX = 1 - 11 * p / 2 + (cable.connections[3] != null ? (11 * p / 2) : 0);
|
||||
float maxY = 1 - 11 * p / 2 + (cable.connections[0] != null ? (11 * p / 2) : 0);
|
||||
float maxZ = 1 - 11 * p / 2 + (cable.connections[4] != null ? (11 * p / 2) : 0);
|
||||
|
||||
this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityOilDuct();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -5,8 +5,6 @@ import java.util.List;
|
||||
|
||||
import com.hbm.blocks.IBlockMulti;
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
||||
@ -73,21 +71,14 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
|
||||
|
||||
FluidType type = Fluids.NONE;
|
||||
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
|
||||
if(te instanceof TileEntityPipeBaseNT) {
|
||||
TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te;
|
||||
type = pipe.getType();
|
||||
}
|
||||
|
||||
boolean pX = Library.canConnectFluid(world, x + 1, y, z, Library.NEG_X, type);
|
||||
boolean nX = Library.canConnectFluid(world, x - 1, y, z, Library.POS_X, type);
|
||||
boolean pY = Library.canConnectFluid(world, x, y + 1, z, Library.NEG_Y, type);
|
||||
boolean nY = Library.canConnectFluid(world, x, y - 1, z, Library.POS_Y, type);
|
||||
boolean pZ = Library.canConnectFluid(world, x, y, z + 1, Library.NEG_Z, type);
|
||||
boolean nZ = Library.canConnectFluid(world, x, y, z - 1, Library.POS_Z, type);
|
||||
|
||||
boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, te);
|
||||
boolean pX = canConnectTo(world, x, y, z, Library.POS_X, te);
|
||||
boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, te);
|
||||
boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, te);
|
||||
boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, te);
|
||||
boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, te);
|
||||
|
||||
int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0);
|
||||
int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0);
|
||||
@ -172,59 +163,55 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
List<AxisAlignedBB> bbs = new ArrayList();
|
||||
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if(te instanceof TileEntityPipeBaseNT) {
|
||||
TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te;
|
||||
FluidType type = pipe.getType();
|
||||
|
||||
double lower = 0.125D;
|
||||
double upper = 0.875D;
|
||||
double jLower = 0.0625D;
|
||||
double jUpper = 0.9375D;
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
for(int i = 2; i < 13; i += 3) {
|
||||
|
||||
if(meta > i) {
|
||||
lower += 0.0625D;
|
||||
upper -= 0.0625D;
|
||||
jLower += 0.0625D;
|
||||
jUpper -= 0.0625D;
|
||||
}
|
||||
}
|
||||
|
||||
boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, type);
|
||||
boolean pX = canConnectTo(world, x, y, z, Library.POS_X, type);
|
||||
boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, type);
|
||||
boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, type);
|
||||
boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, type);
|
||||
boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, type);
|
||||
int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0);
|
||||
int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0);
|
||||
|
||||
if(mask == 0) {
|
||||
bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper));
|
||||
} else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) {
|
||||
bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + lower, z + lower, x + 1.0D, y + upper, z + upper));
|
||||
} else if(mask == 0b001000 || mask == 0b000100 || mask == 0b001100) {
|
||||
bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + 0.0D, z + lower, x + upper, y + 1.0D, z + upper));
|
||||
} else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) {
|
||||
bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + 1.0D));
|
||||
} else {
|
||||
|
||||
if(count != 2) {
|
||||
bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper));
|
||||
} else {
|
||||
bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + lower, x + upper, y + upper, z + upper));
|
||||
}
|
||||
double lower = 0.125D;
|
||||
double upper = 0.875D;
|
||||
double jLower = 0.0625D;
|
||||
double jUpper = 0.9375D;
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
if(pX) bbs.add(AxisAlignedBB.getBoundingBox(x + upper, y + lower, z + lower, x + 1.0D, y + upper, z + upper));
|
||||
if(nX) bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + lower, z + lower, x + lower, y + upper, z + upper));
|
||||
if(pY) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + upper, z + lower, x + upper, y + 1.0D, z + upper));
|
||||
if(nY) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + 0.0D, z + lower, x + upper, y + lower, z + upper));
|
||||
if(pZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + upper, x + upper, y + upper, z + 1.0D));
|
||||
if(nZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + lower));
|
||||
for(int i = 2; i < 13; i += 3) {
|
||||
|
||||
if(meta > i) {
|
||||
lower += 0.0625D;
|
||||
upper -= 0.0625D;
|
||||
jLower += 0.0625D;
|
||||
jUpper -= 0.0625D;
|
||||
}
|
||||
}
|
||||
|
||||
boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, te);
|
||||
boolean pX = canConnectTo(world, x, y, z, Library.POS_X, te);
|
||||
boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, te);
|
||||
boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, te);
|
||||
boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, te);
|
||||
boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, te);
|
||||
int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0);
|
||||
int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0);
|
||||
|
||||
if(mask == 0) {
|
||||
bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper));
|
||||
} else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) {
|
||||
bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + lower, z + lower, x + 1.0D, y + upper, z + upper));
|
||||
} else if(mask == 0b001000 || mask == 0b000100 || mask == 0b001100) {
|
||||
bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + 0.0D, z + lower, x + upper, y + 1.0D, z + upper));
|
||||
} else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) {
|
||||
bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + 1.0D));
|
||||
} else {
|
||||
|
||||
if(count != 2) {
|
||||
bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper));
|
||||
} else {
|
||||
bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + lower, x + upper, y + upper, z + upper));
|
||||
}
|
||||
|
||||
if(pX) bbs.add(AxisAlignedBB.getBoundingBox(x + upper, y + lower, z + lower, x + 1.0D, y + upper, z + upper));
|
||||
if(nX) bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + lower, z + lower, x + lower, y + upper, z + upper));
|
||||
if(pY) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + upper, z + lower, x + upper, y + 1.0D, z + upper));
|
||||
if(nY) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + 0.0D, z + lower, x + upper, y + lower, z + upper));
|
||||
if(pZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + upper, x + upper, y + upper, z + 1.0D));
|
||||
if(nZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + lower));
|
||||
}
|
||||
|
||||
for(AxisAlignedBB bb : bbs) {
|
||||
if(entityBounding.intersectsWith(bb)) {
|
||||
@ -244,68 +231,67 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if(te instanceof TileEntityPipeBaseNT) {
|
||||
TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te;
|
||||
FluidType type = pipe.getType();
|
||||
|
||||
float lower = 0.125F;
|
||||
float upper = 0.875F;
|
||||
float jLower = 0.0625F;
|
||||
float jUpper = 0.9375F;
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
float lower = 0.125F;
|
||||
float upper = 0.875F;
|
||||
float jLower = 0.0625F;
|
||||
float jUpper = 0.9375F;
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
for(int i = 2; i < 13; i += 3) {
|
||||
|
||||
for(int i = 2; i < 13; i += 3) {
|
||||
|
||||
if(meta > i) {
|
||||
lower += 0.0625F;
|
||||
upper -= 0.0625F;
|
||||
jLower += 0.0625F;
|
||||
jUpper -= 0.0625F;
|
||||
}
|
||||
if(meta > i) {
|
||||
lower += 0.0625F;
|
||||
upper -= 0.0625F;
|
||||
jLower += 0.0625F;
|
||||
jUpper -= 0.0625F;
|
||||
}
|
||||
|
||||
boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, type);
|
||||
boolean pX = canConnectTo(world, x, y, z, Library.POS_X, type);
|
||||
boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, type);
|
||||
boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, type);
|
||||
boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, type);
|
||||
boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, type);
|
||||
int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0);
|
||||
int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0);
|
||||
}
|
||||
|
||||
boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, te);
|
||||
boolean pX = canConnectTo(world, x, y, z, Library.POS_X, te);
|
||||
boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, te);
|
||||
boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, te);
|
||||
boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, te);
|
||||
boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, te);
|
||||
int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0);
|
||||
int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0);
|
||||
|
||||
if(mask == 0) {
|
||||
this.setBlockBounds(jLower, jLower, jLower, jUpper, jUpper, jUpper);
|
||||
} else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) {
|
||||
this.setBlockBounds(0F, lower, lower, 1F, upper, upper);
|
||||
} else if(mask == 0b001000 || mask == 0b000100 || mask == 0b001100) {
|
||||
this.setBlockBounds(lower, 0F, lower, upper, 1F, upper);
|
||||
} else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) {
|
||||
this.setBlockBounds(lower, lower, 0F, upper, upper, 1F);
|
||||
} else {
|
||||
|
||||
if(mask == 0) {
|
||||
this.setBlockBounds(jLower, jLower, jLower, jUpper, jUpper, jUpper);
|
||||
} else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) {
|
||||
this.setBlockBounds(0F, lower, lower, 1F, upper, upper);
|
||||
} else if(mask == 0b001000 || mask == 0b000100 || mask == 0b001100) {
|
||||
this.setBlockBounds(lower, 0F, lower, upper, 1F, upper);
|
||||
} else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) {
|
||||
this.setBlockBounds(lower, lower, 0F, upper, upper, 1F);
|
||||
if(count != 2) {
|
||||
this.setBlockBounds(
|
||||
nX ? 0F : jLower,
|
||||
nY ? 0F : jLower,
|
||||
nZ ? 0F : jLower,
|
||||
pX ? 1F : jUpper,
|
||||
pY ? 1F : jUpper,
|
||||
pZ ? 1F : jUpper);
|
||||
} else {
|
||||
|
||||
if(count != 2) {
|
||||
this.setBlockBounds(
|
||||
nX ? 0F : jLower,
|
||||
nY ? 0F : jLower,
|
||||
nZ ? 0F : jLower,
|
||||
pX ? 1F : jUpper,
|
||||
pY ? 1F : jUpper,
|
||||
pZ ? 1F : jUpper);
|
||||
} else {
|
||||
this.setBlockBounds(
|
||||
nX ? 0F : lower,
|
||||
nY ? 0F : lower,
|
||||
nZ ? 0F : lower,
|
||||
pX ? 1F : upper,
|
||||
pY ? 1F : upper,
|
||||
pZ ? 1F : upper);
|
||||
}
|
||||
this.setBlockBounds(
|
||||
nX ? 0F : lower,
|
||||
nY ? 0F : lower,
|
||||
nZ ? 0F : lower,
|
||||
pX ? 1F : upper,
|
||||
pY ? 1F : upper,
|
||||
pZ ? 1F : upper);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, FluidType type) {
|
||||
return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, type);
|
||||
public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, TileEntity tile) {
|
||||
if(tile instanceof TileEntityPipeBaseNT) {
|
||||
return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, ((TileEntityPipeBaseNT) tile).getType());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -319,7 +305,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
TileEntityPipeBaseNT duct = (TileEntityPipeBaseNT) te;
|
||||
|
||||
List<String> text = new ArrayList();
|
||||
text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName()));
|
||||
text.add("&[" + duct.getType().getColor() + "&]" + I18nUtil.resolveKey(duct.getType().getUnlocalizedName()));
|
||||
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,86 @@
|
||||
package com.hbm.blocks.network;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.network.TileEntityPipeExhaust;
|
||||
import com.hbm.util.I18nUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class FluidDuctBoxExhaust extends FluidDuctBox {
|
||||
|
||||
public FluidDuctBoxExhaust(Material mat) {
|
||||
super(mat);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return new TileEntityPipeExhaust();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||
super.registerBlockIcons(iconRegister);
|
||||
|
||||
iconStraight = new IIcon[1];
|
||||
iconEnd = new IIcon[1];
|
||||
iconCurveTL = new IIcon[1];
|
||||
iconCurveTR = new IIcon[1];
|
||||
iconCurveBL = new IIcon[1];
|
||||
iconCurveBR = new IIcon[1];
|
||||
iconJunction = new IIcon[1];
|
||||
|
||||
iconStraight[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_straight");
|
||||
iconEnd[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_end");
|
||||
iconCurveTL[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_tl");
|
||||
iconCurveTR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_tr");
|
||||
iconCurveBL[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_bl");
|
||||
iconCurveBR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_br");
|
||||
iconJunction[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_junction");
|
||||
}
|
||||
|
||||
public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, TileEntity tile) {
|
||||
return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, Fluids.SMOKE) ||
|
||||
Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, Fluids.SMOKE_LEADED) ||
|
||||
Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, Fluids.SMOKE_POISON);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSubCount() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void getSubBlocks(Item item, CreativeTabs tab, List list) {
|
||||
for(int i = 0; i < 15; i += 3) {
|
||||
list.add(new ItemStack(item, 1, i));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||
List<String> text = new ArrayList();
|
||||
text.add(I18nUtil.resolveKey(Fluids.SMOKE.getUnlocalizedName()));
|
||||
text.add(I18nUtil.resolveKey(Fluids.SMOKE_LEADED.getUnlocalizedName()));
|
||||
text.add(I18nUtil.resolveKey(Fluids.SMOKE_POISON.getUnlocalizedName()));
|
||||
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
||||
}
|
||||
}
|
||||
87
src/main/java/com/hbm/blocks/network/FluidSwitch.java
Normal file
@ -0,0 +1,87 @@
|
||||
package com.hbm.blocks.network;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.network.TileEntityFluidValve;
|
||||
import com.hbm.util.I18nUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||
|
||||
public class FluidSwitch extends FluidDuctBase implements ILookOverlay {
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
private IIcon iconOn;
|
||||
|
||||
public FluidSwitch(Material mat) {
|
||||
super(mat);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||
this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":fluid_valve_on");
|
||||
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fluid_valve_off");
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(int side, int metadata) {
|
||||
return metadata == 1 ? iconOn : blockIcon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityFluidValve();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
if(meta == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 1, 2);
|
||||
world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 1.0F);
|
||||
} else {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 0, 2);
|
||||
world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 0.85F);
|
||||
}
|
||||
|
||||
TileEntityFluidValve te = (TileEntityFluidValve) world.getTileEntity(x, y, z);
|
||||
te.updateState();
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
|
||||
if(!(te instanceof TileEntityFluidValve))
|
||||
return;
|
||||
|
||||
TileEntityFluidValve duct = (TileEntityFluidValve) te;
|
||||
|
||||
List<String> text = new ArrayList();
|
||||
text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName()));
|
||||
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
||||
}
|
||||
}
|
||||
88
src/main/java/com/hbm/blocks/network/FluidValve.java
Normal file
@ -0,0 +1,88 @@
|
||||
package com.hbm.blocks.network;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.network.TileEntityFluidValve;
|
||||
import com.hbm.util.I18nUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||
|
||||
public class FluidValve extends FluidDuctBase implements ILookOverlay {
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
private IIcon iconOn;
|
||||
|
||||
public FluidValve(Material mat) {
|
||||
super(mat);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||
this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":fluid_switch_on");
|
||||
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fluid_switch_off");
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(int side, int metadata) {
|
||||
return metadata == 1 ? iconOn : blockIcon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityFluidValve();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
|
||||
|
||||
boolean on = world.isBlockIndirectlyGettingPowered(x, y, z);
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
boolean update = false;
|
||||
|
||||
if(on && meta == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 1, 2);
|
||||
world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 1.0F);
|
||||
update = true;
|
||||
}
|
||||
|
||||
if(!on && meta == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 0, 2);
|
||||
world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 0.85F);
|
||||
update = true;
|
||||
}
|
||||
|
||||
if(update) {
|
||||
TileEntityFluidValve te = (TileEntityFluidValve) world.getTileEntity(x, y, z);
|
||||
te.updateState();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
|
||||
if(!(te instanceof TileEntityFluidValve))
|
||||
return;
|
||||
|
||||
TileEntityFluidValve duct = (TileEntityFluidValve) te;
|
||||
|
||||
List<String> text = new ArrayList();
|
||||
text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName()));
|
||||
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
||||
}
|
||||
}
|
||||
@ -22,6 +22,7 @@ public class CommonConfig {
|
||||
public static final String CATEGORY_RADIATION = "13_radiation";
|
||||
public static final String CATEGORY_HAZARD = "14_hazard";
|
||||
public static final String CATEGORY_STRUCTURES = "15_structures";
|
||||
public static final String CATEGORY_POLLUTION = "16_pollution";
|
||||
|
||||
public static final String CATEGORY_528 = "528";
|
||||
public static final String CATEGORY_LBSM = "LESS BULLSHIT MODE";
|
||||
|
||||
@ -35,6 +35,7 @@ public class MobConfig {
|
||||
public static double tier3Threshold = 10;
|
||||
public static double tier4Threshold = 50;
|
||||
public static double tier5Threshold = 100;
|
||||
public static double spawnMax = 50;
|
||||
|
||||
|
||||
public static void loadFromConfig(Configuration config) {
|
||||
@ -72,5 +73,6 @@ public class MobConfig {
|
||||
tier3Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G04_tier3Threshold", "Minimum amount of soot for tier 3 glyphids to spawn", 10);
|
||||
tier4Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G05_tier4Threshold", "Minimum amount of soot for tier 4 glyphids to spawn", 50);
|
||||
tier5Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G06_tier5Threshold", "Minimum amount of soot for tier 5 glyphids to spawn", 100);
|
||||
spawnMax = CommonConfig.createConfigDouble(config, CATEGORY, "12.G07_spawnMax", "Maximum amount of glyphids being able to exist at once through natural spawning", 50);
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,6 +22,15 @@ public class RadiationConfig {
|
||||
public static boolean disableHydro = false;
|
||||
public static boolean disableBlinding = false;
|
||||
public static boolean disableFibrosis = false;
|
||||
|
||||
public static boolean enablePollution = true;
|
||||
public static boolean enableLeadFromBlocks = true;
|
||||
public static boolean enableLeadPoisoning = true;
|
||||
public static boolean enableSootFog = true;
|
||||
public static boolean enablePoison = true;
|
||||
public static double buffMobThreshold = 15D;
|
||||
public static double sootFogThreshold = 35D;
|
||||
public static double sootFogDivisor = 120D;
|
||||
|
||||
public static void loadFromConfig(Configuration config) {
|
||||
|
||||
@ -49,5 +58,15 @@ public class RadiationConfig {
|
||||
disableHydro = CommonConfig.createConfigBool(config, CATEGORY_HAZ, "HAZ_04_disableHydroactive", "When turned off, all hydroactive hazards are disabled", false);
|
||||
disableBlinding = CommonConfig.createConfigBool(config, CATEGORY_HAZ, "HAZ_05_disableBlinding", "When turned off, all blinding hazards are disabled", false);
|
||||
disableFibrosis = CommonConfig.createConfigBool(config, CATEGORY_HAZ, "HAZ_06_disableFibrosis", "When turned off, all fibrosis hazards are disabled", false);
|
||||
|
||||
final String CATEGORY_POL = CommonConfig.CATEGORY_POLLUTION;
|
||||
enablePollution = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_00_enablePollution", "If disabled, none of the polltuion related things will work", true);
|
||||
enableLeadFromBlocks = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_01_enableLeadFromBlocks", "Whether breaking blocks in heavy metal polluted areas will poison the player", true);
|
||||
enableLeadPoisoning = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_02_enableLeadPoisoning", "Whether being in a heavy metal polluted area will poison the player", true);
|
||||
enableSootFog = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_03_enableSootFog", "Whether smog should be visible", true);
|
||||
enablePoison = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_04_enablePoison", "Whether being in a poisoned area will affect the player", true);
|
||||
buffMobThreshold = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_05_buffMobThreshold", "The amount of soot required to buff naturally spawning mobs", 15D);
|
||||
sootFogThreshold = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_06_sootFogThreshold", "How much soot is required for smog to become visible", 35D);
|
||||
sootFogDivisor = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_07_sootFogDivisor", "The divisor for smog, higher numbers will require more soot for the same smog density", 120D);
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,6 +22,8 @@ public class SmeltingRecipes {
|
||||
|
||||
public static void AddSmeltingRec()
|
||||
{
|
||||
GameRegistry.addSmelting(ModItems.glyphid_meat, new ItemStack(ModItems.glyphid_meat_grilled), 1.0F);
|
||||
|
||||
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_thorium), new ItemStack(ModItems.ingot_th232), 3.0F);
|
||||
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_uranium), new ItemStack(ModItems.ingot_uranium), 6.0F);
|
||||
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_uranium_scorched), new ItemStack(ModItems.ingot_uranium), 6.0F);
|
||||
|
||||
@ -5,6 +5,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.entity.pathfinder.PathFinderUtils;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.ResourceManager;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
@ -12,6 +13,7 @@ import net.minecraft.entity.EnumCreatureAttribute;
|
||||
import net.minecraft.entity.SharedMonsterAttributes;
|
||||
import net.minecraft.entity.monster.EntityMob;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
@ -54,6 +56,11 @@ public class EntityGlyphid extends EntityMob {
|
||||
this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1D);
|
||||
this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(5D);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void dropFewItems(boolean byPlayer, int looting) {
|
||||
if(rand.nextInt(3) == 0) this.entityDropItem(new ItemStack(ModItems.glyphid_meat, 1 + rand.nextInt(2) + looting), 0F);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Entity findPlayerToAttack() {
|
||||
|
||||
@ -66,20 +66,26 @@ public class HbmPlayerProps implements IExtendedEntityProperties {
|
||||
if(!getKeyPressed(key) && pressed) {
|
||||
|
||||
if(key == EnumKeybind.TOGGLE_JETPACK) {
|
||||
this.enableBackpack = !this.enableBackpack;
|
||||
|
||||
if(this.enableBackpack)
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON", MainRegistry.proxy.ID_JETPACK);
|
||||
else
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF", MainRegistry.proxy.ID_JETPACK);
|
||||
if(!player.worldObj.isRemote) {
|
||||
this.enableBackpack = !this.enableBackpack;
|
||||
|
||||
if(this.enableBackpack)
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON", MainRegistry.proxy.ID_JETPACK);
|
||||
else
|
||||
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.ID_HUD);
|
||||
else
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF", MainRegistry.proxy.ID_HUD);
|
||||
if(!player.worldObj.isRemote) {
|
||||
this.enableHUD = !this.enableHUD;
|
||||
|
||||
if(this.enableHUD)
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD);
|
||||
else
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF", MainRegistry.proxy.ID_HUD);
|
||||
}
|
||||
}
|
||||
|
||||
if(key == EnumKeybind.TRAIN) {
|
||||
@ -146,6 +152,8 @@ public class HbmPlayerProps implements IExtendedEntityProperties {
|
||||
|
||||
props.setFloat("shield", shield);
|
||||
props.setFloat("maxShield", maxShield);
|
||||
props.setBoolean("enableBackpack", enableBackpack);
|
||||
props.setBoolean("enableHUD", enableHUD);
|
||||
|
||||
nbt.setTag("HbmPlayerProps", props);
|
||||
}
|
||||
@ -158,6 +166,8 @@ public class HbmPlayerProps implements IExtendedEntityProperties {
|
||||
if(props != null) {
|
||||
this.shield = props.getFloat("shield");
|
||||
this.maxShield = props.getFloat("maxShield");
|
||||
this.enableBackpack = props.getBoolean("enableBackpack");
|
||||
this.enableHUD = props.getBoolean("enableHUD");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -451,7 +451,9 @@ public class EntityEffectHandler {
|
||||
|
||||
private static void handlePollution(EntityLivingBase entity) {
|
||||
|
||||
if(!ArmorRegistry.hasProtection(entity, 3, HazardClass.GAS_CORROSIVE) && entity.ticksExisted % 60 == 0) {
|
||||
if(!RadiationConfig.enablePollution) return;
|
||||
|
||||
if(RadiationConfig.enablePoison && !ArmorRegistry.hasProtection(entity, 3, HazardClass.GAS_CORROSIVE) && entity.ticksExisted % 60 == 0) {
|
||||
|
||||
float poison = PollutionHandler.getPollution(entity.worldObj, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY + entity.getEyeHeight()), (int) Math.floor(entity.posZ), PollutionType.POISON);
|
||||
|
||||
@ -460,14 +462,14 @@ public class EntityEffectHandler {
|
||||
if(poison < 25) {
|
||||
entity.addPotionEffect(new PotionEffect(Potion.poison.id, 100, 0));
|
||||
} else if(poison < 50) {
|
||||
entity.addPotionEffect(new PotionEffect(Potion.poison.id, 100, 2));
|
||||
entity.addPotionEffect(new PotionEffect(Potion.poison.id, 100, 1));
|
||||
} else {
|
||||
entity.addPotionEffect(new PotionEffect(Potion.wither.id, 100, 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!ArmorRegistry.hasProtection(entity, 3, HazardClass.PARTICLE_FINE) && entity.ticksExisted % 60 == 0) {
|
||||
if(RadiationConfig.enableLeadPoisoning && !ArmorRegistry.hasProtection(entity, 3, HazardClass.PARTICLE_FINE) && entity.ticksExisted % 60 == 0) {
|
||||
|
||||
float poison = PollutionHandler.getPollution(entity.worldObj, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY + entity.getEyeHeight()), (int) Math.floor(entity.posZ), PollutionType.HEAVYMETAL);
|
||||
|
||||
|
||||
@ -7,6 +7,8 @@ import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.hbm.config.RadiationConfig;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.common.gameevent.TickEvent;
|
||||
import cpw.mods.fml.common.gameevent.TickEvent.Phase;
|
||||
@ -39,6 +41,9 @@ public class PollutionHandler {
|
||||
/// UTILITY METHODS ///
|
||||
///////////////////////
|
||||
public static void incrementPollution(World world, int x, int y, int z, PollutionType type, float amount) {
|
||||
|
||||
if(!RadiationConfig.enablePollution) return;
|
||||
|
||||
PollutionPerWorld ppw = perWorld.get(world);
|
||||
if(ppw == null) return;
|
||||
ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6);
|
||||
@ -55,6 +60,9 @@ public class PollutionHandler {
|
||||
}
|
||||
|
||||
public static void setPollution(World world, int x, int y, int z, PollutionType type, float amount) {
|
||||
|
||||
if(!RadiationConfig.enablePollution) return;
|
||||
|
||||
PollutionPerWorld ppw = perWorld.get(world);
|
||||
if(ppw == null) return;
|
||||
ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6);
|
||||
@ -67,6 +75,9 @@ public class PollutionHandler {
|
||||
}
|
||||
|
||||
public static float getPollution(World world, int x, int y, int z, PollutionType type) {
|
||||
|
||||
if(!RadiationConfig.enablePollution) return 0;
|
||||
|
||||
PollutionPerWorld ppw = perWorld.get(world);
|
||||
if(ppw == null) return 0F;
|
||||
ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6);
|
||||
@ -76,6 +87,9 @@ public class PollutionHandler {
|
||||
}
|
||||
|
||||
public static PollutionData getPollutionData(World world, int x, int y, int z) {
|
||||
|
||||
if(!RadiationConfig.enablePollution) return null;
|
||||
|
||||
PollutionPerWorld ppw = perWorld.get(world);
|
||||
if(ppw == null) return null;
|
||||
ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6);
|
||||
@ -88,7 +102,7 @@ public class PollutionHandler {
|
||||
//////////////////////
|
||||
@SubscribeEvent
|
||||
public void onWorldLoad(WorldEvent.Load event) {
|
||||
if(!event.world.isRemote) {
|
||||
if(!event.world.isRemote && RadiationConfig.enablePollution) {
|
||||
WorldServer world = (WorldServer) event.world;
|
||||
String dirPath = getDataDir(world);
|
||||
|
||||
@ -294,6 +308,8 @@ public class PollutionHandler {
|
||||
@SubscribeEvent
|
||||
public void decorateMob(LivingSpawnEvent event) {
|
||||
|
||||
if(!RadiationConfig.enablePollution) return;
|
||||
|
||||
World world = event.world;
|
||||
if(world.isRemote) return;
|
||||
EntityLivingBase living = event.entityLiving;
|
||||
@ -303,7 +319,7 @@ public class PollutionHandler {
|
||||
|
||||
if(living instanceof IMob) {
|
||||
|
||||
if(data.pollution[PollutionType.SOOT.ordinal()] > 15) {
|
||||
if(data.pollution[PollutionType.SOOT.ordinal()] > RadiationConfig.buffMobThreshold) {
|
||||
if(living.getEntityAttribute(SharedMonsterAttributes.maxHealth) != null) living.getEntityAttribute(SharedMonsterAttributes.maxHealth).applyModifier(new AttributeModifier("Soot Anger Health Increase", 2D, 1));
|
||||
if(living.getEntityAttribute(SharedMonsterAttributes.attackDamage) != null) living.getEntityAttribute(SharedMonsterAttributes.attackDamage).applyModifier(new AttributeModifier("Soot Anger Damage Increase", 1.5D, 1));
|
||||
}
|
||||
|
||||
@ -152,6 +152,9 @@ public class Fluids {
|
||||
public static FluidType POTASSIUM_CHLORIDE;
|
||||
public static FluidType CALCIUM_CHLORIDE;
|
||||
public static FluidType CALCIUM_SOLUTION;
|
||||
public static FluidType SMOKE;
|
||||
public static FluidType SMOKE_LEADED;
|
||||
public static FluidType SMOKE_POISON;
|
||||
|
||||
private static final HashMap<Integer, FluidType> idMapping = new HashMap();
|
||||
private static final HashMap<String, FluidType> nameMapping = new HashMap();
|
||||
@ -302,8 +305,11 @@ public class Fluids {
|
||||
CHLOROCALCITE_MIX = new FluidType("CHLOROCALCITE_MIX", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60));
|
||||
CHLOROCALCITE_CLEANED = new FluidType("CHLOROCALCITE_CLEANED", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60));
|
||||
POTASSIUM_CHLORIDE = new FluidType("POTASSIUM_CHLORIDE", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60));
|
||||
CALCIUM_CHLORIDE = new FluidType("CALCIUM_CHLORIDE", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60));
|
||||
CALCIUM_SOLUTION = new FluidType(119, "CALCIUM_SOLUTION", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60));
|
||||
CALCIUM_CHLORIDE = new FluidType("CALCIUM_CHLORIDE", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60));
|
||||
CALCIUM_SOLUTION = new FluidType("CALCIUM_SOLUTION", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60));
|
||||
SMOKE = new FluidType("SMOKE", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON);
|
||||
SMOKE_LEADED = new FluidType("SMOKE_LEADED", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON);
|
||||
SMOKE_POISON = new FluidType(122, "SMOKE_POISON", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON);
|
||||
|
||||
// ^ ^ ^ ^ ^ ^ ^ ^
|
||||
//ADD NEW FLUIDS HERE
|
||||
@ -443,6 +449,10 @@ public class Fluids {
|
||||
metaOrder.add(PLASMA_DH3);
|
||||
metaOrder.add(PLASMA_XM);
|
||||
metaOrder.add(PLASMA_BF);
|
||||
//smoke
|
||||
metaOrder.add(SMOKE);
|
||||
metaOrder.add(SMOKE_LEADED);
|
||||
metaOrder.add(SMOKE_POISON);
|
||||
|
||||
CHLORINE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 2F, 20, HazardClass.GAS_CHLORINE, false)));
|
||||
PHOSGENE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 20, HazardClass.GAS_CHLORINE, false)));
|
||||
|
||||
@ -286,10 +286,6 @@ public class ShredderRecipes extends SerializableRecipe {
|
||||
ShredderRecipes.setRecipe(ModBlocks.chain, new ItemStack(ModItems.powder_steel_tiny, 1));
|
||||
ShredderRecipes.setRecipe(ModBlocks.steel_grate, new ItemStack(ModItems.powder_steel_tiny, 3));
|
||||
ShredderRecipes.setRecipe(ModItems.pipes_steel, new ItemStack(ModItems.powder_steel, 27));
|
||||
ShredderRecipes.setRecipe(ModBlocks.oil_duct, new ItemStack(ModItems.powder_steel_tiny, 3));
|
||||
ShredderRecipes.setRecipe(ModBlocks.oil_duct_solid, new ItemStack(ModItems.powder_steel_tiny, 3));
|
||||
ShredderRecipes.setRecipe(ModBlocks.gas_duct, new ItemStack(ModItems.powder_steel, 1));
|
||||
ShredderRecipes.setRecipe(ModBlocks.gas_duct_solid, new ItemStack(ModItems.powder_steel, 1));
|
||||
ShredderRecipes.setRecipe(ModBlocks.machine_fluidtank, new ItemStack(ModItems.powder_steel, 32));
|
||||
|
||||
/* Sellafite scrapping */
|
||||
|
||||
@ -1703,6 +1703,9 @@ public class ModItems {
|
||||
public static Item marshmallow;
|
||||
public static Item cheese;
|
||||
public static Item quesadilla;
|
||||
public static Item glyphid_meat;
|
||||
public static Item glyphid_meat_grilled;
|
||||
public static Item egg_glyphid;
|
||||
|
||||
public static Item med_ipecac;
|
||||
public static Item med_ptsd;
|
||||
@ -4326,6 +4329,9 @@ public class ModItems {
|
||||
cheese = new ItemLemon(5, 10, false).setUnlocalizedName("cheese").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cheese");
|
||||
quesadilla = new ItemLemon(8, 10, false).setUnlocalizedName("cheese_quesadilla").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":quesadilla");
|
||||
mucho_mango = new ItemMuchoMango(10).setUnlocalizedName("mucho_mango").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mucho_mango");
|
||||
glyphid_meat = new ItemLemon(3, 3, true).setUnlocalizedName("glyphid_meat").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glyphid_meat");
|
||||
glyphid_meat_grilled = new ItemLemon(8, 8, true).setPotionEffect(Potion.damageBoost.id, 180, 1, 1F).setUnlocalizedName("glyphid_meat_grilled").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glyphid_meat_grilled");
|
||||
egg_glyphid = new Item().setUnlocalizedName("egg_glyphid").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":egg_glyphid");
|
||||
|
||||
defuser = new ItemTooling(ToolType.DEFUSER, 100).setUnlocalizedName("defuser").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":defuser");
|
||||
reacher = new Item().setUnlocalizedName("reacher").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":reacher");
|
||||
@ -7527,6 +7533,9 @@ public class ModItems {
|
||||
GameRegistry.registerItem(marshmallow, marshmallow.getUnlocalizedName());
|
||||
GameRegistry.registerItem(cheese, cheese.getUnlocalizedName());
|
||||
GameRegistry.registerItem(quesadilla, quesadilla.getUnlocalizedName());
|
||||
GameRegistry.registerItem(glyphid_meat, glyphid_meat.getUnlocalizedName());
|
||||
GameRegistry.registerItem(glyphid_meat_grilled, glyphid_meat_grilled.getUnlocalizedName());
|
||||
GameRegistry.registerItem(egg_glyphid, egg_glyphid.getUnlocalizedName());
|
||||
GameRegistry.registerItem(med_ipecac, med_ipecac.getUnlocalizedName());
|
||||
GameRegistry.registerItem(med_ptsd, med_ptsd.getUnlocalizedName());
|
||||
GameRegistry.registerItem(canteen_13, canteen_13.getUnlocalizedName());
|
||||
|
||||
@ -60,17 +60,24 @@ public class ItemWiring extends Item {
|
||||
|
||||
TileEntityPylonBase first = (TileEntityPylonBase) world.getTileEntity(x1, y1, z1);
|
||||
TileEntityPylonBase second = ((TileEntityPylonBase) te);
|
||||
|
||||
if(TileEntityPylonBase.canConnect(first, second)) {
|
||||
|
||||
first.addConnection(x, y, z);
|
||||
second.addConnection(x1, y1, z1);
|
||||
player.addChatMessage(new ChatComponentText("Wire end"));
|
||||
|
||||
} else {
|
||||
player.addChatMessage(new ChatComponentText("Wire error"));
|
||||
|
||||
switch (TileEntityPylonBase.canConnect(first, second)) {
|
||||
case 0:
|
||||
first.addConnection(x, y, z);
|
||||
second.addConnection(x1, y1, z1);
|
||||
player.addChatMessage(new ChatComponentText("Wire end"));
|
||||
break;
|
||||
case 1:
|
||||
player.addChatMessage(new ChatComponentText("Wire error - Pylons are not the same type"));
|
||||
break;
|
||||
case 2:
|
||||
player.addChatMessage(new ChatComponentText("Wire error - Cannot connect to the same pylon"));
|
||||
break;
|
||||
case 3:
|
||||
player.addChatMessage(new ChatComponentText("Wire error - Pylon is too far away"));
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
stack.stackTagCompound = null;
|
||||
|
||||
} else {
|
||||
|
||||
@ -19,10 +19,6 @@ import com.hbm.items.ModItems;
|
||||
import com.hbm.tileentity.TileEntityProxyBase;
|
||||
import com.hbm.tileentity.TileEntityProxyInventory;
|
||||
import com.hbm.tileentity.conductor.TileEntityFluidDuctSimple;
|
||||
import com.hbm.tileentity.conductor.TileEntityGasDuct;
|
||||
import com.hbm.tileentity.conductor.TileEntityGasDuctSolid;
|
||||
import com.hbm.tileentity.conductor.TileEntityOilDuct;
|
||||
import com.hbm.tileentity.conductor.TileEntityOilDuctSolid;
|
||||
import com.hbm.tileentity.machine.TileEntityDummy;
|
||||
|
||||
import api.hbm.energy.IBatteryItem;
|
||||
@ -484,102 +480,6 @@ public class Library {
|
||||
((TileEntityFluidDuctSimple)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact));
|
||||
}
|
||||
}
|
||||
if(tileentity instanceof TileEntityGasDuct && ((TileEntityGasDuct)tileentity).type.name().equals(type.name()))
|
||||
{
|
||||
if(Library.checkUnionListForFluids(((TileEntityGasDuct)tileentity).uoteab, that))
|
||||
{
|
||||
for(int i = 0; i < ((TileEntityGasDuct)tileentity).uoteab.size(); i++)
|
||||
{
|
||||
if(((TileEntityGasDuct)tileentity).uoteab.get(i).source == that)
|
||||
{
|
||||
if(((TileEntityGasDuct)tileentity).uoteab.get(i).ticked != newTact)
|
||||
{
|
||||
((TileEntityGasDuct)tileentity).uoteab.get(i).ticked = newTact;
|
||||
transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x + 1, y, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x, y, z - 1, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x, y, z + 1, that.getTact(), that, worldObj, type);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
((TileEntityGasDuct)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact));
|
||||
}
|
||||
}
|
||||
if(tileentity instanceof TileEntityOilDuct && ((TileEntityOilDuct)tileentity).type.name().equals(type.name()))
|
||||
{
|
||||
if(Library.checkUnionListForFluids(((TileEntityOilDuct)tileentity).uoteab, that))
|
||||
{
|
||||
for(int i = 0; i < ((TileEntityOilDuct)tileentity).uoteab.size(); i++)
|
||||
{
|
||||
if(((TileEntityOilDuct)tileentity).uoteab.get(i).source == that)
|
||||
{
|
||||
if(((TileEntityOilDuct)tileentity).uoteab.get(i).ticked != newTact)
|
||||
{
|
||||
((TileEntityOilDuct)tileentity).uoteab.get(i).ticked = newTact;
|
||||
transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x + 1, y, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x, y, z - 1, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x, y, z + 1, that.getTact(), that, worldObj, type);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
((TileEntityOilDuct)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact));
|
||||
}
|
||||
}
|
||||
if(tileentity instanceof TileEntityGasDuctSolid && ((TileEntityGasDuctSolid)tileentity).type.name().equals(type.name()))
|
||||
{
|
||||
if(Library.checkUnionListForFluids(((TileEntityGasDuctSolid)tileentity).uoteab, that))
|
||||
{
|
||||
for(int i = 0; i < ((TileEntityGasDuctSolid)tileentity).uoteab.size(); i++)
|
||||
{
|
||||
if(((TileEntityGasDuctSolid)tileentity).uoteab.get(i).source == that)
|
||||
{
|
||||
if(((TileEntityGasDuctSolid)tileentity).uoteab.get(i).ticked != newTact)
|
||||
{
|
||||
((TileEntityGasDuctSolid)tileentity).uoteab.get(i).ticked = newTact;
|
||||
transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x + 1, y, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x, y, z - 1, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x, y, z + 1, that.getTact(), that, worldObj, type);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
((TileEntityGasDuctSolid)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact));
|
||||
}
|
||||
}
|
||||
if(tileentity instanceof TileEntityOilDuctSolid && ((TileEntityOilDuctSolid)tileentity).type.name().equals(type.name()))
|
||||
{
|
||||
if(Library.checkUnionListForFluids(((TileEntityOilDuctSolid)tileentity).uoteab, that))
|
||||
{
|
||||
for(int i = 0; i < ((TileEntityOilDuctSolid)tileentity).uoteab.size(); i++)
|
||||
{
|
||||
if(((TileEntityOilDuctSolid)tileentity).uoteab.get(i).source == that)
|
||||
{
|
||||
if(((TileEntityOilDuctSolid)tileentity).uoteab.get(i).ticked != newTact)
|
||||
{
|
||||
((TileEntityOilDuctSolid)tileentity).uoteab.get(i).ticked = newTact;
|
||||
transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x + 1, y, z, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x, y, z - 1, that.getTact(), that, worldObj, type);
|
||||
transmitFluid(x, y, z + 1, that.getTact(), that, worldObj, type);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
((TileEntityOilDuctSolid)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(tileentity instanceof IFluidAcceptor && newTact && ((IFluidAcceptor)tileentity).getMaxFluidFillForReceive(type) > 0 &&
|
||||
|
||||
@ -212,6 +212,7 @@ public class ClientProxy extends ServerProxy {
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCyclotron.class, new RenderCyclotron());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOilWell.class, new RenderDerrick());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyBrick.class, new RenderChimneyBrick());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningDrill.class, new RenderMiningDrill());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningLaser.class, new RenderLaserMiner());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssembler.class, new RenderAssembler());
|
||||
@ -306,8 +307,6 @@ public class ClientProxy extends ServerProxy {
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzLauncher.class, new RenderSoyuzLauncher());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzCapsule.class, new RenderCapsule());
|
||||
//network
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityOilDuct.class, new RenderOilDuct());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityGasDuct.class, new RenderGasDuct());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFluidDuct.class, new RenderFluidDuct());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRFDuct.class, new RenderRFCable());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylon.class, new RenderPylon());
|
||||
@ -1989,5 +1988,10 @@ public class ClientProxy extends ServerProxy {
|
||||
public boolean getImpact(World world) {
|
||||
return ImpactWorldHandler.getImpactForClient(world);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playSoundClient(double x, double y, double z, String sound, float volume, float pitch) {
|
||||
Minecraft.getMinecraft().getSoundHandler().playSound(new PositionedSoundRecord(new ResourceLocation(sound), volume, pitch, (float) x, (float) y, (float) z));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -622,6 +622,8 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModBlocks.fluid_duct, 8), new Object[] { "SAS", " D ", "SAS", 'S', STEEL.plate(), 'A', AL.plate(), 'D', ModItems.ducttape });
|
||||
addShapelessAuto(new ItemStack(ModBlocks.fluid_duct_neo, 1, 0), new Object[] { ModBlocks.fluid_duct });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.fluid_duct_solid, 8), new Object[] { "SAS", "ADA", "SAS", 'S', STEEL.ingot(), 'A', AL.plate(), 'D', ModItems.ducttape });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.fluid_valve, 1), new Object[] { "S", "W", 'S', Blocks.lever, 'W', ModBlocks.fluid_duct_paintable });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.fluid_switch, 1), new Object[] { "S", "W", 'S', REDSTONE.dust(), 'W', ModBlocks.fluid_duct_paintable });
|
||||
addRecipeAuto(new ItemStack(ModItems.template_folder, 1), new Object[] { "LPL", "BPB", "LPL", 'P', Items.paper, 'L', "dye", 'B', "dye" });
|
||||
addRecipeAuto(new ItemStack(ModItems.pellet_antimatter, 1), new Object[] { "###", "###", "###", '#', ModItems.cell_antimatter });
|
||||
addRecipeAuto(new ItemStack(ModItems.fluid_tank_empty, 8), new Object[] { "121", "1G1", "121", '1', AL.plate(), '2', IRON.plate(), 'G', KEY_ANYPANE });
|
||||
|
||||
@ -1129,6 +1129,10 @@ public class MainRegistry {
|
||||
ignoreMappings.add("hbm:item.digamma_know");
|
||||
ignoreMappings.add("hbm:item.digamma_kauai_moho");
|
||||
ignoreMappings.add("hbm:item.digamma_up_on_top");
|
||||
ignoreMappings.add("hbm:tile.oil_duct_solid");
|
||||
ignoreMappings.add("hbm:tile.oil_duct");
|
||||
ignoreMappings.add("hbm:tile.gas_duct_solid");
|
||||
ignoreMappings.add("hbm:tile.gas_duct");
|
||||
|
||||
/// REMAP ///
|
||||
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses);
|
||||
|
||||
@ -19,6 +19,7 @@ import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.generic.BlockAshes;
|
||||
import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.config.MobConfig;
|
||||
import com.hbm.config.RadiationConfig;
|
||||
import com.hbm.entity.missile.EntityMissileBaseAdvanced;
|
||||
import com.hbm.entity.missile.EntityMissileCustom;
|
||||
import com.hbm.entity.mob.EntityCyberCrab;
|
||||
@ -218,7 +219,7 @@ public class ModEventHandler {
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onPlayerChaangeDimension(PlayerChangedDimensionEvent event) {
|
||||
public void onPlayerChangeDimension(PlayerChangedDimensionEvent event) {
|
||||
EntityPlayer player = event.player;
|
||||
HbmPlayerProps data = HbmPlayerProps.getData(player);
|
||||
data.setKeyPressed(EnumKeybind.JETPACK, false);
|
||||
@ -1176,18 +1177,20 @@ public class ModEventHandler {
|
||||
}
|
||||
}
|
||||
|
||||
if(!ArmorRegistry.hasProtection(player, 3, HazardClass.PARTICLE_FINE)) {
|
||||
|
||||
float metal = PollutionHandler.getPollution(player.worldObj, event.x, event.y, event.z, PollutionType.HEAVYMETAL);
|
||||
|
||||
if(metal < 5) return;
|
||||
|
||||
if(metal < 10) {
|
||||
player.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 0));
|
||||
} else if(metal < 25) {
|
||||
player.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 1));
|
||||
} else {
|
||||
player.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 2));
|
||||
if(RadiationConfig.enablePollution && RadiationConfig.enableLeadFromBlocks) {
|
||||
if(!ArmorRegistry.hasProtection(player, 3, HazardClass.PARTICLE_FINE)) {
|
||||
|
||||
float metal = PollutionHandler.getPollution(player.worldObj, event.x, event.y, event.z, PollutionType.HEAVYMETAL);
|
||||
|
||||
if(metal < 5) return;
|
||||
|
||||
if(metal < 10) {
|
||||
player.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 0));
|
||||
} else if(metal < 25) {
|
||||
player.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 1));
|
||||
} else {
|
||||
player.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GLContext;
|
||||
|
||||
import com.hbm.blocks.ICustomBlockHighlight;
|
||||
import com.hbm.config.RadiationConfig;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.items.armor.IArmorDisableModel;
|
||||
import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart;
|
||||
@ -330,7 +331,7 @@ public class ModEventHandlerRenderer {
|
||||
@SubscribeEvent
|
||||
public void worldTick(WorldTickEvent event) {
|
||||
|
||||
if(event.phase == event.phase.START) {
|
||||
if(event.phase == event.phase.START && RadiationConfig.enableSootFog) {
|
||||
|
||||
float step = 0.05F;
|
||||
float soot = PermaSyncHandler.pollution[PollutionType.SOOT.ordinal()];
|
||||
@ -347,11 +348,11 @@ public class ModEventHandlerRenderer {
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.LOW)
|
||||
public void thickenFog(FogDensity event) {
|
||||
float soot = renderSoot - 35;
|
||||
if(soot > 0) {
|
||||
//event.density = Math.min((soot - 5) * 0.01F, 0.5F);
|
||||
float soot = (float) (renderSoot - RadiationConfig.sootFogThreshold);
|
||||
if(soot > 0 && RadiationConfig.enableSootFog) {
|
||||
|
||||
float farPlaneDistance = (float) (Minecraft.getMinecraft().gameSettings.renderDistanceChunks * 16);
|
||||
float fogDist = farPlaneDistance / (1 + soot * 0.05F);
|
||||
float fogDist = farPlaneDistance / (1 + soot * 5F / (float) RadiationConfig.sootFogDivisor);
|
||||
GL11.glFogf(GL11.GL_FOG_START, 0);
|
||||
GL11.glFogf(GL11.GL_FOG_END, fogDist);
|
||||
|
||||
@ -366,10 +367,10 @@ public class ModEventHandlerRenderer {
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.LOW)
|
||||
public void tintFog(FogColors event) {
|
||||
float soot = renderSoot - 35;
|
||||
float soot = (float) (renderSoot - RadiationConfig.sootFogThreshold);
|
||||
float sootColor = 0.15F;
|
||||
float sootReq = 100F;
|
||||
if(soot > 0) {
|
||||
float sootReq = (float) RadiationConfig.sootFogDivisor;
|
||||
if(soot > 0 && RadiationConfig.enableSootFog) {
|
||||
float interp = Math.min(soot / sootReq, 1F);
|
||||
event.red = event.red * (1 - interp) + sootColor * interp;
|
||||
event.green = event.green * (1 - interp) + sootColor * interp;
|
||||
|
||||
@ -81,6 +81,7 @@ public class ResourceManager {
|
||||
|
||||
//Flare Stack
|
||||
public static final IModelCustom oilflare = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/flare_stack.obj"));
|
||||
public static final IModelCustom chimney_brick = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chimney_brick.obj"));
|
||||
|
||||
//Tank
|
||||
public static final IModelCustom fluidtank = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fluidtank.obj"));
|
||||
@ -421,6 +422,7 @@ public class ResourceManager {
|
||||
|
||||
//Flare Stack
|
||||
public static final ResourceLocation oilflare_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/flare_stack.png");
|
||||
public static final ResourceLocation chimney_brick_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/chimney_brick.png");
|
||||
|
||||
//Tank
|
||||
public static final ResourceLocation tank_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank.png");
|
||||
|
||||
@ -84,4 +84,6 @@ public class ServerProxy {
|
||||
public boolean getImpact(World world) {
|
||||
return TomSaveData.forWorld(world).impact;
|
||||
}
|
||||
|
||||
public void playSoundClient(double x, double y, double z, String sound, float volume, float pitch) { }
|
||||
}
|
||||
@ -23,7 +23,7 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler {
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
FluidDuctBox duct = (FluidDuctBox) block;
|
||||
int type = metadata % 3;
|
||||
int type = duct.rectify(metadata);
|
||||
|
||||
float lower = 0.125F;
|
||||
float upper = 0.875F;
|
||||
@ -65,7 +65,23 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler {
|
||||
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
boolean pX = false;
|
||||
boolean nX = false;
|
||||
boolean pY = false;
|
||||
boolean nY = false;
|
||||
boolean pZ = false;
|
||||
boolean nZ = false;
|
||||
|
||||
FluidDuctBox.cachedColor = 0xffffff;
|
||||
FluidDuctBox duct = (FluidDuctBox) block;
|
||||
|
||||
pX = duct.canConnectTo(world, x, y, z, Library.POS_X, te);
|
||||
nX = duct.canConnectTo(world, x, y, z, Library.NEG_X, te);
|
||||
pY = duct.canConnectTo(world, x, y, z, Library.POS_Y, te);
|
||||
nY = duct.canConnectTo(world, x, y, z, Library.NEG_Y, te);
|
||||
pZ = duct.canConnectTo(world, x, y, z, Library.POS_Z, te);
|
||||
nZ = duct.canConnectTo(world, x, y, z, Library.NEG_Z, te);
|
||||
|
||||
if(te instanceof TileEntityPipeBaseNT) {
|
||||
TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te;
|
||||
type = pipe.getType();
|
||||
@ -74,13 +90,6 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler {
|
||||
}
|
||||
}
|
||||
|
||||
boolean pX = Library.canConnectFluid(world, x + 1, y, z, Library.POS_X, type);
|
||||
boolean nX = Library.canConnectFluid(world, x - 1, y, z, Library.NEG_X, type);
|
||||
boolean pY = Library.canConnectFluid(world, x, y + 1, z, Library.POS_Y, type);
|
||||
boolean nY = Library.canConnectFluid(world, x, y - 1, z, Library.NEG_Y, type);
|
||||
boolean pZ = Library.canConnectFluid(world, x, y, z + 1, Library.POS_Z, type);
|
||||
boolean nZ = Library.canConnectFluid(world, x, y, z - 1, Library.NEG_Z, type);
|
||||
|
||||
int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0);
|
||||
int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0);
|
||||
|
||||
|
||||
@ -0,0 +1,56 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class RenderChimneyBrick extends TileEntitySpecialRenderer implements IItemRendererProvider {
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glRotatef(180, 0F, 1F, 0F);
|
||||
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
bindTexture(ResourceManager.chimney_brick_tex);
|
||||
ResourceManager.chimney_brick.renderAll();
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemForRenderer() {
|
||||
return Item.getItemFromBlock(ModBlocks.chimney_brick);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase() {
|
||||
public void renderInventory() {
|
||||
GL11.glTranslated(0, -5, 0);
|
||||
GL11.glScaled(2.25, 2.25, 2.25);
|
||||
}
|
||||
public void renderCommon() {
|
||||
GL11.glScaled(0.5, 0.5, 0.5);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
bindTexture(ResourceManager.chimney_brick_tex);
|
||||
ResourceManager.chimney_brick.renderAll();
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
}};
|
||||
}
|
||||
}
|
||||
@ -1,153 +0,0 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.conductor.TileEntityGasDuct;
|
||||
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class RenderGasDuct extends TileEntitySpecialRenderer {
|
||||
|
||||
public ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/blocks/gas_duct.png");
|
||||
float pixel = 1F/16F;
|
||||
float textureP = 1F / 32F;
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity tileentity, double offsetX, double offsetY, double offsetZ, float f) {
|
||||
GL11.glTranslated(offsetX, offsetY, offsetZ);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
this.bindTexture(texture);
|
||||
drawCore(tileentity);
|
||||
TileEntityGasDuct cable = (TileEntityGasDuct) tileentity;
|
||||
for(int i = 0; i < cable.connections.length; i++)
|
||||
{
|
||||
if(cable.connections[i] != null)
|
||||
{
|
||||
drawConnection(cable.connections[i]);
|
||||
}
|
||||
}
|
||||
GL11.glTranslated(-offsetX, -offsetY, -offsetZ);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
|
||||
}
|
||||
|
||||
public void drawCore(TileEntity tileentity) {
|
||||
Tessellator tesseract = Tessellator.instance;
|
||||
tesseract.startDrawingQuads();
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 5 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 5 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP);
|
||||
tesseract.draw();
|
||||
}
|
||||
|
||||
public void drawConnection(ForgeDirection direction)
|
||||
{
|
||||
Tessellator tesseract = Tessellator.instance;
|
||||
tesseract.startDrawingQuads();
|
||||
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
||||
if(direction.equals(ForgeDirection.UP))
|
||||
{
|
||||
|
||||
}
|
||||
if(direction.equals(ForgeDirection.DOWN))
|
||||
{
|
||||
GL11.glRotatef(180, 1, 0, 0);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.NORTH))
|
||||
{
|
||||
GL11.glRotatef(270, 1, 0, 0);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.SOUTH))
|
||||
{
|
||||
GL11.glRotatef(90, 1, 0, 0);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.EAST))
|
||||
{
|
||||
GL11.glRotatef(270, 0, 0, 1);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.WEST))
|
||||
{
|
||||
GL11.glRotatef(90, 0, 0, 1);
|
||||
}
|
||||
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.draw();
|
||||
|
||||
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
||||
if(direction.equals(ForgeDirection.UP))
|
||||
{
|
||||
|
||||
}
|
||||
if(direction.equals(ForgeDirection.DOWN))
|
||||
{
|
||||
GL11.glRotatef(-180, 1, 0, 0);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.NORTH))
|
||||
{
|
||||
GL11.glRotatef(-270, 1, 0, 0);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.SOUTH))
|
||||
{
|
||||
GL11.glRotatef(-90, 1, 0, 0);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.EAST))
|
||||
{
|
||||
GL11.glRotatef(-270, 0, 0, 1);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.WEST))
|
||||
{
|
||||
GL11.glRotatef(-90, 0, 0, 1);
|
||||
}
|
||||
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
}
|
||||
}
|
||||
@ -1,153 +0,0 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.conductor.TileEntityOilDuct;
|
||||
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class RenderOilDuct extends TileEntitySpecialRenderer {
|
||||
|
||||
public ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/blocks/oil_duct_alt.png");
|
||||
float pixel = 1F/16F;
|
||||
float textureP = 1F / 32F;
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity tileentity, double offsetX, double offsetY, double offsetZ, float f) {
|
||||
GL11.glTranslated(offsetX, offsetY, offsetZ);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
this.bindTexture(texture);
|
||||
drawCore(tileentity);
|
||||
TileEntityOilDuct cable = (TileEntityOilDuct) tileentity;
|
||||
for(int i = 0; i < cable.connections.length; i++)
|
||||
{
|
||||
if(cable.connections[i] != null)
|
||||
{
|
||||
drawConnection(cable.connections[i]);
|
||||
}
|
||||
}
|
||||
GL11.glTranslated(-offsetX, -offsetY, -offsetZ);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
|
||||
}
|
||||
|
||||
public void drawCore(TileEntity tileentity) {
|
||||
Tessellator tesseract = Tessellator.instance;
|
||||
tesseract.startDrawingQuads();
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 5 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 5 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP);
|
||||
tesseract.draw();
|
||||
}
|
||||
|
||||
public void drawConnection(ForgeDirection direction)
|
||||
{
|
||||
Tessellator tesseract = Tessellator.instance;
|
||||
tesseract.startDrawingQuads();
|
||||
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
||||
if(direction.equals(ForgeDirection.UP))
|
||||
{
|
||||
|
||||
}
|
||||
if(direction.equals(ForgeDirection.DOWN))
|
||||
{
|
||||
GL11.glRotatef(180, 1, 0, 0);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.NORTH))
|
||||
{
|
||||
GL11.glRotatef(270, 1, 0, 0);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.SOUTH))
|
||||
{
|
||||
GL11.glRotatef(90, 1, 0, 0);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.EAST))
|
||||
{
|
||||
GL11.glRotatef(270, 0, 0, 1);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.WEST))
|
||||
{
|
||||
GL11.glRotatef(90, 0, 0, 1);
|
||||
}
|
||||
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 5 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 0 * textureP);
|
||||
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP);
|
||||
tesseract.draw();
|
||||
|
||||
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
||||
if(direction.equals(ForgeDirection.UP))
|
||||
{
|
||||
|
||||
}
|
||||
if(direction.equals(ForgeDirection.DOWN))
|
||||
{
|
||||
GL11.glRotatef(-180, 1, 0, 0);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.NORTH))
|
||||
{
|
||||
GL11.glRotatef(-270, 1, 0, 0);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.SOUTH))
|
||||
{
|
||||
GL11.glRotatef(-90, 1, 0, 0);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.EAST))
|
||||
{
|
||||
GL11.glRotatef(-270, 0, 0, 1);
|
||||
}
|
||||
if(direction.equals(ForgeDirection.WEST))
|
||||
{
|
||||
GL11.glRotatef(-90, 0, 0, 1);
|
||||
}
|
||||
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
}
|
||||
}
|
||||
@ -87,10 +87,6 @@ public class TileMappings {
|
||||
put(TileEntityPartEmitter.class, "tileentity_partemitter");
|
||||
put(TileEntityDummy.class, "tileentity_dummy");
|
||||
put(TileEntityMachineCyclotron.class, "tileentity_cyclotron");
|
||||
put(TileEntityOilDuct.class, "tileentity_oil_duct");
|
||||
put(TileEntityOilDuctSolid.class, "tileentity_oil_duct_solid");
|
||||
put(TileEntityGasDuct.class, "tileentity_gas_duct");
|
||||
put(TileEntityGasDuctSolid.class, "tileentity_gas_duct_solid");
|
||||
put(TileEntityMachineRTG.class, "tileentity_machine_rtg");
|
||||
put(TileEntityStructureMarker.class, "tileentity_structure_marker");
|
||||
put(TileEntityMachineMiningDrill.class, "tileentity_mining_drill");
|
||||
@ -192,6 +188,8 @@ public class TileMappings {
|
||||
put(TileEntityPipeBaseNT.class, "tileentity_pipe_base");
|
||||
put(TileEntityPipePaintable.class, "tileentity_pipe_paintable");
|
||||
put(TileEntityPipeGauge.class, "tileentity_pipe_gauge");
|
||||
put(TileEntityPipeExhaust.class, "tileentity_pipe_exhaust");
|
||||
put(TileEntityFluidValve.class, "tileentity_pipe_valve");
|
||||
put(TileEntityMachineBAT9000.class, "tileentity_bat9000");
|
||||
put(TileEntityMachineOrbus.class, "tileentity_orbus");
|
||||
put(TileEntityGlpyhidSpawner.class, "tileentity_glyphid_spawner");
|
||||
@ -316,6 +314,7 @@ public class TileMappings {
|
||||
put(TileEntityMachineCatalyticCracker.class, "tileentity_catalytic_cracker");
|
||||
put(TileEntityMachineCatalyticReformer.class, "tileentity_catalytic_reformer");
|
||||
put(TileEntityMachineCoker.class, "tileentity_coker");
|
||||
put(TileEntityChimneyBrick.class, "tileentity_chimney_brick");
|
||||
|
||||
put(TileEntityReactorZirnox.class, "tileentity_zirnox");
|
||||
put(TileEntityZirnoxDestroyed.class, "tileentity_zirnox_destroyed");
|
||||
|
||||
@ -1,97 +0,0 @@
|
||||
package com.hbm.tileentity.conductor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids;
|
||||
import com.hbm.interfaces.IFluidDuct;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityGasDuct extends TileEntity implements IFluidDuct {
|
||||
|
||||
public ForgeDirection[] connections = new ForgeDirection[6];
|
||||
public FluidType type = Fluids.GAS;
|
||||
public List<UnionOfTileEntitiesAndBooleansForFluids> uoteab = new ArrayList<UnionOfTileEntitiesAndBooleansForFluids>();
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
//this.updateConnections();
|
||||
|
||||
worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.fluid_duct_neo, 1, 3);
|
||||
|
||||
TileEntity tile = worldObj.getTileEntity(xCoord, yCoord, zCoord);
|
||||
if(tile instanceof TileEntityPipeBaseNT) {
|
||||
((TileEntityPipeBaseNT) tile).setType(this.type);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateConnections() {
|
||||
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord + 1, zCoord, type))
|
||||
connections[0] = ForgeDirection.UP;
|
||||
else
|
||||
connections[0] = null;
|
||||
|
||||
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord - 1, zCoord, type))
|
||||
connections[1] = ForgeDirection.DOWN;
|
||||
else
|
||||
connections[1] = null;
|
||||
|
||||
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord - 1, type))
|
||||
connections[2] = ForgeDirection.NORTH;
|
||||
else
|
||||
connections[2] = null;
|
||||
|
||||
if(Library.checkFluidConnectables(this.worldObj, xCoord + 1, yCoord, zCoord, type))
|
||||
connections[3] = ForgeDirection.EAST;
|
||||
else
|
||||
connections[3] = null;
|
||||
|
||||
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord + 1, type))
|
||||
connections[4] = ForgeDirection.SOUTH;
|
||||
else
|
||||
connections[4] = null;
|
||||
|
||||
if(Library.checkFluidConnectables(this.worldObj, xCoord - 1, yCoord, zCoord, type))
|
||||
connections[5] = ForgeDirection.WEST;
|
||||
else
|
||||
connections[5] = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
type = Fluids.GAS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double getMaxRenderDistanceSquared() {
|
||||
return 65536.0D;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setType(FluidType type) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -1,45 +0,0 @@
|
||||
package com.hbm.tileentity.conductor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids;
|
||||
import com.hbm.interfaces.IFluidDuct;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public class TileEntityGasDuctSolid extends TileEntity implements IFluidDuct {
|
||||
|
||||
public FluidType type = Fluids.GAS;
|
||||
public List<UnionOfTileEntitiesAndBooleansForFluids> uoteab = new ArrayList<UnionOfTileEntitiesAndBooleansForFluids>();
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
//if(!worldObj.isRemote)
|
||||
// PacketDispatcher.wrapper.sendToAll(new TEFluidPipePacket(xCoord, yCoord, zCoord, type));
|
||||
|
||||
//this.updateConnections();
|
||||
|
||||
worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.fluid_duct_paintable);
|
||||
|
||||
TileEntity tile = worldObj.getTileEntity(xCoord, yCoord, zCoord);
|
||||
if(tile instanceof TileEntityPipeBaseNT) {
|
||||
((TileEntityPipeBaseNT) tile).setType(this.type);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setType(FluidType type) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -1,95 +0,0 @@
|
||||
package com.hbm.tileentity.conductor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids;
|
||||
import com.hbm.interfaces.IFluidDuct;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityOilDuct extends TileEntity implements IFluidDuct {
|
||||
|
||||
public ForgeDirection[] connections = new ForgeDirection[6];
|
||||
public FluidType type = Fluids.OIL;
|
||||
public List<UnionOfTileEntitiesAndBooleansForFluids> uoteab = new ArrayList<UnionOfTileEntitiesAndBooleansForFluids>();
|
||||
|
||||
public TileEntityOilDuct() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
//if(!worldObj.isRemote)
|
||||
// PacketDispatcher.wrapper.sendToAll(new TEFluidPipePacket(xCoord, yCoord, zCoord, type));
|
||||
|
||||
//this.updateConnections();
|
||||
|
||||
worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.fluid_duct_neo, 2, 3);
|
||||
|
||||
TileEntity tile = worldObj.getTileEntity(xCoord, yCoord, zCoord);
|
||||
if(tile instanceof TileEntityPipeBaseNT) {
|
||||
((TileEntityPipeBaseNT) tile).setType(this.type);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateConnections() {
|
||||
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord + 1, zCoord, type)) connections[0] = ForgeDirection.UP;
|
||||
else connections[0] = null;
|
||||
|
||||
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord - 1, zCoord, type)) connections[1] = ForgeDirection.DOWN;
|
||||
else connections[1] = null;
|
||||
|
||||
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord - 1, type)) connections[2] = ForgeDirection.NORTH;
|
||||
else connections[2] = null;
|
||||
|
||||
if(Library.checkFluidConnectables(this.worldObj, xCoord + 1, yCoord, zCoord, type)) connections[3] = ForgeDirection.EAST;
|
||||
else connections[3] = null;
|
||||
|
||||
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord + 1, type)) connections[4] = ForgeDirection.SOUTH;
|
||||
else connections[4] = null;
|
||||
|
||||
if(Library.checkFluidConnectables(this.worldObj, xCoord - 1, yCoord, zCoord, type)) connections[5] = ForgeDirection.WEST;
|
||||
else connections[5] = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt)
|
||||
{
|
||||
super.readFromNBT(nbt);
|
||||
type = Fluids.OIL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt)
|
||||
{
|
||||
super.writeToNBT(nbt);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double getMaxRenderDistanceSquared()
|
||||
{
|
||||
return 65536.0D;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setType(FluidType type) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -1,45 +0,0 @@
|
||||
package com.hbm.tileentity.conductor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids;
|
||||
import com.hbm.interfaces.IFluidDuct;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public class TileEntityOilDuctSolid extends TileEntity implements IFluidDuct {
|
||||
|
||||
public FluidType type = Fluids.OIL;
|
||||
public List<UnionOfTileEntitiesAndBooleansForFluids> uoteab = new ArrayList<UnionOfTileEntitiesAndBooleansForFluids>();
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
//if(!worldObj.isRemote)
|
||||
// PacketDispatcher.wrapper.sendToAll(new TEFluidPipePacket(xCoord, yCoord, zCoord, type));
|
||||
|
||||
//this.updateConnections();
|
||||
|
||||
worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.fluid_duct_paintable);
|
||||
|
||||
TileEntity tile = worldObj.getTileEntity(xCoord, yCoord, zCoord);
|
||||
if(tile instanceof TileEntityPipeBaseNT) {
|
||||
((TileEntityPipeBaseNT) tile).setType(this.type);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setType(FluidType type) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,80 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
|
||||
import api.hbm.fluid.IFluidUser;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityChimneyBrick extends TileEntityLoadedBase implements IFluidUser {
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) {
|
||||
FluidType[] types = new FluidType[] {Fluids.SMOKE, Fluids.SMOKE_LEADED, Fluids.SMOKE_POISON};
|
||||
|
||||
for(FluidType type : types) {
|
||||
this.trySubscribe(type, worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X);
|
||||
this.trySubscribe(type, worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X);
|
||||
this.trySubscribe(type, worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z);
|
||||
this.trySubscribe(type, worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnect(FluidType type, ForgeDirection dir) {
|
||||
return (dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH || dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) &&
|
||||
(type == Fluids.SMOKE || type == Fluids.SMOKE_LEADED || type == Fluids.SMOKE_POISON);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long transferFluid(FluidType type, int pressure, long fluid) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDemand(FluidType type, int pressure) {
|
||||
return 1_000_000;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTank[] getAllTanks() {
|
||||
return new FluidTank[] {};
|
||||
}
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
|
||||
if(bb == null) {
|
||||
bb = AxisAlignedBB.getBoundingBox(
|
||||
xCoord - 1,
|
||||
yCoord,
|
||||
zCoord - 1,
|
||||
xCoord + 2,
|
||||
yCoord + 13,
|
||||
zCoord + 2
|
||||
);
|
||||
}
|
||||
|
||||
return bb;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double getMaxRenderDistanceSquared() {
|
||||
return 65536.0D;
|
||||
}
|
||||
}
|
||||
@ -5,6 +5,8 @@ import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.machine.MachineBoiler;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidContainer;
|
||||
import com.hbm.interfaces.IFluidSource;
|
||||
@ -253,6 +255,7 @@ public class TileEntityMachineBoiler extends TileEntityLoadedBase implements ISi
|
||||
|
||||
if(burnTime > 0) {
|
||||
burnTime--;
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND);
|
||||
heat += 50;
|
||||
flag1 = true;
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ import com.hbm.inventory.recipes.CompressorRecipes;
|
||||
import com.hbm.inventory.recipes.CompressorRecipes.CompressorRecipe;
|
||||
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
import com.hbm.util.Tuple.Pair;
|
||||
@ -20,15 +21,12 @@ import api.hbm.energy.IEnergyUser;
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@ -133,7 +131,7 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement
|
||||
if(this.pistonDir) {
|
||||
this.piston -= randSpeed;
|
||||
if(this.piston <= 0) {
|
||||
Minecraft.getMinecraft().getSoundHandler().playSound(new PositionedSoundRecord(new ResourceLocation("hbm:item.boltgun"), 0.5F, 0.75F, xCoord, yCoord, zCoord));
|
||||
MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:item.boltgun", 0.5F, 0.75F);
|
||||
this.pistonDir = !this.pistonDir;
|
||||
}
|
||||
} else {
|
||||
|
||||
@ -3,6 +3,8 @@ package com.hbm.tileentity.machine;
|
||||
import java.util.HashMap;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||
import com.hbm.inventory.fluid.trait.FT_Combustible;
|
||||
@ -298,6 +300,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement
|
||||
}
|
||||
|
||||
double consumption = fuelMaxCons.containsKey(tanks[0].getTankType()) ? fuelMaxCons.get(tanks[0].getTankType()) : 5D;
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * (float) consumption * 0.25F);
|
||||
makePower(consumption, throttle);
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,8 @@ import java.util.List;
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.handler.MultiblockHandlerXR;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidContainer;
|
||||
import com.hbm.inventory.UpgradeManager;
|
||||
@ -161,6 +163,8 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements
|
||||
this.wasOn = true;
|
||||
this.tank.setFill(this.tank.getFill() - amountToBurn);
|
||||
this.power += burnValue * amountToBurn;
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * amountToBurn);
|
||||
}
|
||||
|
||||
power = Library.chargeItemsFromTE(slots, 3, power, power);
|
||||
|
||||
@ -0,0 +1,27 @@
|
||||
package com.hbm.tileentity.network;
|
||||
|
||||
import api.hbm.fluid.PipeNet;
|
||||
|
||||
public class TileEntityFluidValve extends TileEntityPipeBaseNT {
|
||||
|
||||
@Override
|
||||
public boolean canUpdate() {
|
||||
return this.worldObj != null && this.getBlockMetadata() == 1 && super.canUpdate();
|
||||
}
|
||||
|
||||
public void updateState() {
|
||||
|
||||
if(this.getBlockMetadata() == 0 && this.network != null) {
|
||||
this.network.destroy();
|
||||
this.network = null;
|
||||
}
|
||||
|
||||
if(this.getBlockMetadata() == 1) {
|
||||
this.connect();
|
||||
|
||||
if(this.getPipeNet(type) == null) {
|
||||
new PipeNet(type).joinLink(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,115 @@
|
||||
package com.hbm.tileentity.network;
|
||||
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.util.Compat;
|
||||
|
||||
import api.hbm.fluid.IFluidConductor;
|
||||
import api.hbm.fluid.IPipeNet;
|
||||
import api.hbm.fluid.PipeNet;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityPipeExhaust extends TileEntity implements IFluidConductor {
|
||||
|
||||
public IPipeNet[] nets = new IPipeNet[3];
|
||||
|
||||
public FluidType[] getSmokes() {
|
||||
return new FluidType[] {Fluids.SMOKE, Fluids.SMOKE_LEADED, Fluids.SMOKE_POISON};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote && canUpdate()) {
|
||||
|
||||
for(int i = 0; i < 3; i++) nets[i] = null;
|
||||
|
||||
for(FluidType type : getSmokes()) {
|
||||
this.connect(type);
|
||||
|
||||
if(this.getPipeNet(type) == null) {
|
||||
this.setPipeNet(type, new PipeNet(type).joinLink(this));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void connect(FluidType type) {
|
||||
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
||||
|
||||
TileEntity te = Compat.getTileStandard(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
|
||||
|
||||
if(te instanceof IFluidConductor) {
|
||||
|
||||
IFluidConductor conductor = (IFluidConductor) te;
|
||||
|
||||
if(!conductor.canConnect(type, dir.getOpposite()))
|
||||
continue;
|
||||
|
||||
if(this.getPipeNet(type) == null && conductor.getPipeNet(type) != null) {
|
||||
conductor.getPipeNet(type).joinLink(this);
|
||||
}
|
||||
|
||||
if(this.getPipeNet(type) != null && conductor.getPipeNet(type) != null && this.getPipeNet(type) != conductor.getPipeNet(type)) {
|
||||
conductor.getPipeNet(type).joinNetworks(this.getPipeNet(type));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
if(nets[i] != null) {
|
||||
nets[i].destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public boolean canUpdate() {
|
||||
|
||||
if(this.isInvalid()) return false;
|
||||
|
||||
for(IPipeNet net : nets) {
|
||||
if(net == null || !net.isValid()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnect(FluidType type, ForgeDirection dir) {
|
||||
return dir != ForgeDirection.UNKNOWN && (type == Fluids.SMOKE || type == Fluids.SMOKE_LEADED || type == Fluids.SMOKE_POISON);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDemand(FluidType type, int pressure) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPipeNet getPipeNet(FluidType type) {
|
||||
|
||||
if(type == Fluids.SMOKE) return nets[0];
|
||||
if(type == Fluids.SMOKE_LEADED) return nets[1];
|
||||
if(type == Fluids.SMOKE_POISON) return nets[2];
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPipeNet(FluidType type, IPipeNet network) {
|
||||
|
||||
if(type == Fluids.SMOKE) nets[0] = network;
|
||||
if(type == Fluids.SMOKE_LEADED) nets[1] = network;
|
||||
if(type == Fluids.SMOKE_POISON) nets[2] = network;
|
||||
}
|
||||
}
|
||||
@ -19,13 +19,13 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT {
|
||||
|
||||
public List<int[]> connected = new ArrayList<int[]>();
|
||||
|
||||
public static boolean canConnect(TileEntityPylonBase first, TileEntityPylonBase second) {
|
||||
public static int canConnect(TileEntityPylonBase first, TileEntityPylonBase second) {
|
||||
|
||||
if(first.getConnectionType() != second.getConnectionType())
|
||||
return false;
|
||||
return 1;
|
||||
|
||||
if(first == second)
|
||||
return false;
|
||||
return 2;
|
||||
|
||||
double len = Math.min(first.getMaxWireLength(), second.getMaxWireLength());
|
||||
|
||||
@ -38,7 +38,7 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT {
|
||||
(secondPos.zCoord) - (firstPos.zCoord)
|
||||
);
|
||||
|
||||
return len >= delta.lengthVector();
|
||||
return len >= delta.lengthVector() ? 0 : 3;
|
||||
}
|
||||
|
||||
public void addConnection(int x, int y, int z) {
|
||||
|
||||
@ -1689,6 +1689,7 @@ item.dysfunctional_reactor.name=Funktionsunfähiger Atomreaktor
|
||||
item.egg_balefire.name=Balefire-Ei
|
||||
item.egg_balefire.desc=Was für ein Vogel legt denn ein radioaktives Ei?
|
||||
item.egg_balefire_shard.name=Balefire-Scherbe
|
||||
item.egg_glyphid.name=Glyphid-Ei
|
||||
item.elec_axe.name=Elektrische Kettensäge
|
||||
item.elec_pickaxe.name=Schlagbohrmaschine
|
||||
item.elec_shovel.name=Spiralbohrer
|
||||
@ -1798,6 +1799,8 @@ item.generator_front.name=Generatorfront
|
||||
item.generator_steel.name=Generator
|
||||
item.glitch.name=Glitch
|
||||
item.glowing_stew.name=Leuchtende Pilzsuppe
|
||||
item.glyphid_meat.name=Glyphidfleisch
|
||||
item.glyphid_meat_grilled.name=Gegrilltes Glyphidfleisch
|
||||
item.goggles.name=Schutzbrille
|
||||
item.grenade_aschrab.name=Werfbare Antischrabidiumzelle
|
||||
item.grenade_black_hole.name=Schwarzes-Loch-Granate
|
||||
@ -3790,11 +3793,14 @@ tile.flame_war.name=Flamewar aus der Box
|
||||
tile.float_bomb.name=Schwebebombe
|
||||
tile.fluid_duct.name=Universelles Flüssigkeitsrohr (Veraltet)
|
||||
tile.fluid_duct_box.name=Universelles Flüssigkeitsrohr (Boxrohr)
|
||||
tile.fluid_duct_exhaust.name=Abgasrohr
|
||||
tile.fluid_duct_gauge.name=Flussmessrohr
|
||||
tile.fluid_duct_gauge.desc=Rohr welches anzeight, wie viel Flüssigkeit$sich pro Tick im Netzwerk bewegt.$Geteilte Netzwerke die über Fässer oder Tanks$verbunden sind, werden als ein einzelnes gezählt.
|
||||
tile.fluid_duct_neo.name=Universelles Flüssigkeitsrohr
|
||||
tile.fluid_duct_paintable.name=Geschirmtes universelles Flüssigkeitsrohr (Färbbar)
|
||||
tile.fluid_duct_solid.name=Geschirmtes universelles Flüssigkeitsrohr (Veraltet)
|
||||
tile.fluid_switch.name=Redstone-Ventil
|
||||
tile.fluid_valve.name=Ventil
|
||||
tile.foam_layer.name=Schaumdecke
|
||||
tile.foundry_basin.name=Gussbecken
|
||||
tile.foundry_channel.name=Gusskanal
|
||||
|
||||
@ -2365,6 +2365,7 @@ item.early_explosive_lenses.desc=Assembly of 8 high-explosive lenses with an alu
|
||||
item.egg_balefire.name=Balefire Egg
|
||||
item.egg_balefire.desc=What kind of bird lays a radioactive egg?
|
||||
item.egg_balefire_shard.name=Balefire Shard
|
||||
item.egg_glyphid.name=Glyphid Egg
|
||||
item.elec_axe.name=Electric Chainsaw
|
||||
item.elec_pickaxe.name=Impact Drill
|
||||
item.elec_shovel.name=Spiral Drill
|
||||
@ -2486,6 +2487,8 @@ item.generator_front.name=Generator Front
|
||||
item.generator_steel.name=Generator Body
|
||||
item.glitch.name=Glitch
|
||||
item.glowing_stew.name=Glowing Mushroom Stew
|
||||
item.glyphid_meat.name=Glyphid Meat
|
||||
item.glyphid_meat_grilled.name=Grilled Glyphid Meat
|
||||
item.goggles.name=Protection Goggles
|
||||
item.grenade_aschrab.name=Tossable Antischrabidium Cell
|
||||
item.grenade_black_hole.name=Black Hole Grenade
|
||||
@ -4665,11 +4668,14 @@ tile.flame_war.name=Flame War in a Box
|
||||
tile.float_bomb.name=Levitation Bomb
|
||||
tile.fluid_duct.name=Universal Fluid Duct (Deprecated)
|
||||
tile.fluid_duct_box.name=Universal Fluid Duct (Boxduct)
|
||||
tile.fluid_duct_exhaust.name=Exhaust Pipe
|
||||
tile.fluid_duct_gauge.name=Flow Gauge Pipe
|
||||
tile.fluid_duct_gauge.desc=Pipe that displays how much fluid$moves within the network per tick.$Split networks connected by barrels$or tanks are considered as one shared network.
|
||||
tile.fluid_duct_neo.name=Universal Fluid Duct
|
||||
tile.fluid_duct_paintable.name=Paintable Coated Universal Fluid Duct
|
||||
tile.fluid_duct_solid.name=Coated Universal Fluid Duct (Deprecated)
|
||||
tile.fluid_switch.name=Redstone Fluid Valve
|
||||
tile.fluid_valve.name=Fluid Valve
|
||||
tile.foam_layer.name=Foam layer
|
||||
tile.foundry_basin.name=Foundry Basin
|
||||
tile.foundry_channel.name=Foundry Channel
|
||||
|
||||
@ -313,57 +313,97 @@ book.starter.page18=v?r只是一个被困在"传声头像"的§o《一生一次
|
||||
book_lore.author=By %s
|
||||
book_lore.test.name=测试
|
||||
book_lore.test.author=那个家伙
|
||||
book_lore.test.page.0=>hello anons before i begin let me clarify that i'm not gay. >Be me >This night >18 > At hanging out with my best friend with my parents gone for a few days >We've been best friends for a year now >Been drinking a bit and playing lots of video games and ordered a pizza >We were having a blast >At a certain point in the night like around 9:00 he makes a really funny joke that I don't remember but I know that it made us both laugh really hard > With out thinking I brush my right hand through his semi-curly black hair and call him a funny boy >He blushes >I realize I'm feeling flustered >We're kinda close >All of the sudden he kisses me and for some reason I kiss him back >We make love >Cuddle together and fall asleep >Wake up in the middle of the night with his head snuggled up on my chest and neck area >It feels nice but I'm not a homosexual
|
||||
book_lore.test.page.1=>你好,在我开始之前,让我澄清我不是同性恋。>做我>今天晚上>18>和我最好的朋友和我的父母出去玩了几天>我们已经是最好的朋友一年了>喝了点酒,玩了很多电子游戏,还点了一份披萨>我们玩得很开心>在晚上的某个时候,比如9点左右,他开了一个非常有趣的玩笑,我不记得了,但我知道这让我们俩都笑得很厉害>没有我想我用右手摸了摸他那半卷曲的黑发,然后叫他一个有趣的男孩>他脸红了>我意识到我很慌张>我们有点亲密>突然他吻了我,出于某种原因我又吻了他>我们做爱>拥抱在一起睡着了>半夜醒来时,他的头贴在我的胸部和颈部>感觉很好,但我不是同性恋
|
||||
book_lore.test.page.2=他在我怀里睡着时,我正在打字。我怎么才能让我最好的朋友失望呢?我不想成为[编辑]/b/
|
||||
book_lore.test.page.3=3
|
||||
book_lore.test.page.4=4
|
||||
book_lore.test.page.5=5
|
||||
book_lore.book_iodine.name=笔记
|
||||
book_lore.book_iodine.author=戴夫
|
||||
book_lore.book_iodine.page.0=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon:
|
||||
book_lore.book_iodine.page.1=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon:
|
||||
book_lore.book_iodine.page.2=apparently the morons from R&D discovered a compound that is mostly inorganic, pretty much like a toxin in nature, but get this: the dying cells will reproduce said toxin and excrete it through the skin, creating an aerosol that is highly contagious.
|
||||
book_lore.book_iodine.page.3=it's just like a virus, but not a virus. the composition is weird, you can mix it in any household bottle but you do have to get the order right. the doc told me that the first ingredient which is just powdered iodine crystals goes into slot %d
|
||||
book_lore.book_phosphorous.name=笔记
|
||||
book_lore.book_phosphorous.author=戴夫
|
||||
book_lore.book_phosphorous.page.0=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second
|
||||
book_lore.book_phosphorous.page.1=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second
|
||||
book_lore.book_phosphorous.page.2=ingredient is red phosphorous, whihc has to be mixed into slot %d
|
||||
book_lore.book_dust.name=笔记
|
||||
book_lore.book_dust.author=戴夫
|
||||
book_lore.book_dust.page.0=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not
|
||||
book_lore.book_dust.page.1=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not
|
||||
book_lore.book_dust.page.2=that he has much blood left to begin with. one of the R&D morons slipped some more info into last week's circular, they call their little concoction \"MKU\" whatever that means, and that it contains actual household lint. can you believe that? one of the most
|
||||
book_lore.book_dust.page.3=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d
|
||||
book_lore.book_mercury.name=笔记
|
||||
book_lore.book_mercury.author=戴夫
|
||||
book_lore.book_mercury.page.0=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being
|
||||
book_lore.book_mercury.page.1=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being
|
||||
book_lore.book_mercury.page.2=replicated by the body? whatever, the mercury goes into slot %d
|
||||
book_lore.book_flower.name=笔记
|
||||
book_lore.book_flower.author=戴夫
|
||||
book_lore.book_flower.page.0=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case,
|
||||
book_lore.book_flower.page.1=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case,
|
||||
book_lore.book_flower.page.2=it does not work with other flowers. the morning glory goes into slot %d
|
||||
book_lore.book_syringe.name=笔记
|
||||
book_lore.book_syringe.author=戴夫
|
||||
book_lore.book_syringe.page.0=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal
|
||||
book_lore.book_syringe.page.1=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal
|
||||
book_lore.book_syringe.page.2=syringe goes into slot %d
|
||||
book_lore.resignation_note.name=辞职信
|
||||
book_lore.resignation_note.author=科斯马
|
||||
book_lore.resignation_note.page.0=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and
|
||||
book_lore.resignation_note.page.1=管理层昨天又对我们的部门进行裁员了。那群白痴要怪只能怪他们自己,我都不知道他们在那场惨败后还在期待什么。到底是谁他妈泄露了那种程度的信息?
|
||||
book_lore.resignation_note.page.2=我们损失了几百万,而且现在失业的还是爷。老子希望你们这帮混蛋最后能从你们的一堆问题中学到点教训然后给爷滚去自闭。
|
||||
book_lore.resignation_note.page.3=我周五不回来了。工资寄过来就行。
|
||||
book_lore.memo_stocks.name=公司内部备忘录
|
||||
book_lore.memo_stocks.page.1=投资者报告 - $$最新的季度报告中提供的数据存在一些明显的差异。财政部所作出一些调整是明智的,因此不必有任何担忧。
|
||||
book_lore.memo_stocks.page.0=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern.
|
||||
book_lore.memo_schrab_gsa.name=内部备忘录
|
||||
book_lore.memo_schrab_gsa.page.0=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum
|
||||
book_lore.memo_schrab_gsa.page.1=合同管理记录 - 法务部在与美国国防部后勤局的谈判中取得了突破。他们批准了450亿的联邦采购服务总署投资资金用于异变金属的采购与研究。
|
||||
book_lore.memo_schrab_gsa.page.2=就目前预期来看,这将至少产生40%的利润,更不必说以后行动所产生的利润,同时这将使我们未来有机会签订更多合同。鉴于此事的保密性质,所有财政证据都将为机密级别
|
||||
book_lore.memo_schrab_rd.name=内部备忘录
|
||||
book_lore.memo_schrab_rd.page.0=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output.
|
||||
book_lore.memo_schrab_rd.page.1=研发 - 目前我们主要生产方法是使用新型粒子加速器。然而,与产出量相比,能源成本高得惊人。
|
||||
book_lore.memo_schrab_rd.page.2=然而,Schrabauer博士发现了一种全新的相互作用——暂称为“奇异轻子振荡”——该作用可以显著降低生产成本。通过一个目前未被完全理解的的过程,提供的电子被一种奇特的“魔力”转化为极高能量的光子。
|
||||
book_lore.memo_schrab_rd.page.3=这是许多已明确的粒子转换定律的极端例外。但初步实验证明,这些质子先转变为上下夸克,最终形成了异变金属。奇怪的是,原型机中需要钨与少量异变金属合金化所得到的合金。
|
||||
book_lore.memo_schrab_rd.page.4=除此之外,还需要一个特殊的电容器用来抵消掉多余的正电荷。
|
||||
book_lore.memo_schrab_nuke.name=研究报告
|
||||
book_lore.memo_schrab_nuke.author=Schrabauer博士
|
||||
book_lore.memo_schrab_nuke.page.0=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium.
|
||||
book_lore.memo_schrab_nuke.page.1=最近的调查使我们了解了核爆炸对材料造成的影响。多亏外界给我们的赠款,我们*意外地*测试了铀直接合成异变金属的理论。
|
||||
book_lore.memo_schrab_nuke.page.2=而此前我们只在回旋加速器中制作出异变金属。但这次,我们在对Everwerpen的地下拍摄中,在该地点的铀矿石中发现了微量的异变金属。其附近所有的纯金属铀则都发生了裂变。
|
||||
book_lore.memo_schrab_nuke.page.3=因此,如果有足够多的铀矿石集中在核弹周围,甚至可能只需要一个富含裂变物质废料的脏弹,就有可能制造出质量大到可以被直接收集的异变金属。
|
||||
book_lore.bf_bomb_1.name=私人笔记
|
||||
book_lore.bf_bomb_1.author=M. 波特
|
||||
book_lore.bf_bomb_1.page.0=Took long enough, but my transfer was accepted. Those new grads were already hard to handle, let alone all the unprofessionalism of the lead. $ Not all good news - this lab was withholding further detail, and I didn't need more chaos over another magic new discovery.
|
||||
book_lore.bf_bomb_1.page.1=Of course that was the case. The alumni had their doubts (surprising, considering how bright-eyed they were), but my only... competent? colleague actually got his hands on the primer hand-out. Must have more connections than I thought. His memo is discouraging:
|
||||
book_lore.bf_bomb_1.page.2=apparently, there's yet ANOTHER miracle material that they prodded out of some concoction of antimatter and a fringe isotope. The brochure calls it "SWIRLMAT" - hell if I know - and that's it. No wonder they wanted a theoretical physicist,
|
||||
book_lore.bf_bomb_1.page.3=they don't even know what it is yet. Either way, practically any job would be better than my old position, so I can't complain much about sketchiness.
|
||||
book_lore.bf_bomb_2.name=私人笔记
|
||||
book_lore.bf_bomb_2.author=M. 波特
|
||||
book_lore.bf_bomb_2.page.0=Despite the absence of information in that primer, I still had some hope they knew a bit more. Not at all. Every other senior researcher has a blind faith in this material; their propositions were practically biblical. I was near speechless.
|
||||
book_lore.bf_bomb_2.page.1=And yet I can't even blame them. Swirlmat makes no goddamn sense - it is completely unlike any other substance I've seen before. Its appearance was near frightening, a literal mass of swirling colors, with darker lines permeating through the neon green surface.
|
||||
book_lore.bf_bomb_2.page.2=Even worse, this thing is an energy source. The existence of our sample is a violation of ALARA: the lab was vacated when it arrived, and the only person brave enough (one Dr. Melfyn) donned a level A hazmat just to carry it 20 meters.
|
||||
book_lore.bf_bomb_2.page.3=The empirical data isn't better, as we're breaking the first law of thermodynamics with how much energy it radiates. Being anywhere near that thing - even behind a meter of lead - was terrifying. We sprinted out of the chamber upon conclusion of the spectroscopy
|
||||
book_lore.bf_bomb_2.page.4=and we got nothing new out of it. Those idiots in the science team, god, did not even waver after all that. Sitting through those "discussions" was horrible; that quack of a head researcher even rumored that the test ban would be lifted, that we could be
|
||||
book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison.
|
||||
book_lore.bf_bomb_3.name=私人笔记
|
||||
book_lore.bf_bomb_3.author=M. 波特
|
||||
book_lore.bf_bomb_3.page.0=The team and I have made some breakthroughs. Emphasis on the separation - isolating myself from the more devout has made working there so much more bearable. While we still have no idea about the actual properties of balefire (it's difficult to analyze
|
||||
book_lore.bf_bomb_3.page.1=a sample that fries your equipment) its interactions with other matter has proved fruitful. Notably, they synthesized a "gaseous" form: Andrew, of all people, informed me that it was really a colloid consisting of microscopic balefire particles, suspended in some
|
||||
book_lore.bf_bomb_3.page.2=noble gas. Each particle is enveloped by a positively-charged 'bubble' of ionized gas, preventing it from settling. Who could've guessed that fatal gamma radiation had a benefit? Not me. $ I'm choosing not to think about how they transformed the sample into
|
||||
book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off.
|
||||
book_lore.bf_bomb_3.page.4=He decided to get "dirty" by letting a cell of our new colloid interact directly with some very expensive antimatter: the resulting explosion turned the table it was on into a piece of radiation-bleached slag, carved a near-perfect hemisphere through
|
||||
book_lore.bf_bomb_3.page.5=the top, and gave the head a healthy dose of ARS. I guess we know how to make it explode now, but god, some people...
|
||||
book_lore.bf_bomb_4.name=私人笔记
|
||||
book_lore.bf_bomb_4.author=M. 波特
|
||||
book_lore.bf_bomb_4.page.0=I just can't escape my old work. They're the only place that's hiring despite all this godforsaken turmoil, but I'm not going back into that hole. $ They only tempted me because I need out, fast. Remember that atmospheric testing treaty we withdrew from a week ago?
|
||||
book_lore.bf_bomb_4.page.1=Well, the dipshit in charge of our lab got something right for once. The denunciation came with a flurry of new "scientists" joining, just so we could weaponize balefire. The lack of critical thought here is honestly baffling - bless him, Andrew even jumped ship the
|
||||
book_lore.bf_bomb_4.page.2=second the first fucking BOMB DESIGN was drafted. That ass Melfyn looked so happy with his little mechanism - perhaps he got brainworms from carrying that sample? - which involved some stupid shit using the solidified, base balefire and an HV
|
||||
book_lore.bf_bomb_4.page.3=battery. $ Apparently, the form matters for energy output and activation method or whatever, kind of like uranium versus plutonium in regular nukes, but the end result is an initial shock starting the explosion. I find it funny, hilarious even.
|
||||
book_lore.bf_bomb_4.page.4=All of them place such emphasis on the activation; they ignore the actual mechanism of it all because they don't have a single clue how it works! It may as well be magic at this point, and yet they're still trying to twist and bend it - just for more weapons of war.
|
||||
book_lore.bf_bomb_5.name=私人笔记
|
||||
book_lore.bf_bomb_5.author=M. 波特
|
||||
book_lore.bf_bomb_5.page.0=I just... can't come to grips with it, even days after. It was a foregone conclusion, really, with how flippant the science team was with safety. $ $ Doctor Melfyn, M.S., is gone. Dead, maybe. I saw it happen before my own eyes, in their test chamber.
|
||||
book_lore.bf_bomb_5.page.1=We had just gotten another batch of pure balefire, and he had recovered electrical equipment and an energy source to test his proposal. I don't know what caused it (was the power on? had he begun too soon?), but it seemingly progressed in agonizingly slow motion,
|
||||
book_lore.bf_bomb_5.page.2=as the green-tinted light consumed the table, the battery, and Dr. Melfyn standing only a meter away. Even when the table had degraded into a pool of broiling metal on the floor, he did not burn. I don't know what I saw in his eyes... $ $ Terror, or awe
|
||||
book_lore.bf_bomb_5.page.3=over his continued survival, maybe? Whatever our "miracle" material was, it didn't care. With a bright blaze of light, he disappeared in the next moment. Was he evaporated? incinerated? annihilated? sent to fucking hell itself, I don't know anymore!
|
||||
book_lore.bf_bomb_5.page.4=The head researcher sickens me. Said we could be more careful, keep trucking, whatever other morale-improving filth he spewed. That dipshit won't ever figure out that playing with fire will get you burned. $ I didn't bother
|
||||
book_lore.bf_bomb_5.page.5=resigning, I just grabbed my shit and ran for the hills. Not like it matters, anyway; considering the lack of calls, and the mushroom cloud that rose over my (now former) workplace, they've either blown everything up or entered full-on military jurisdiction.
|
||||
book_lore.bf_bomb_5.page.6=There's a vital distinction to be made between dissection and VIVISECTION, one which was clearly lost on them. They can dissect metal or atoms as much as they like, but tearing into, vivisecting reality itself is only going to end in more Dr. Melfyns. Who knows!
|
||||
book_lore.bf_bomb_5.page.7=The government wants to put this shit into bombs after all, maybe we'll see a couple more wars, couple more million resigned to a fate worse than death. They can't hide this forever. $ $ I don't care. Not anymore. Please, god, let me go back
|
||||
book_lore.bf_bomb_5.page.8=to actual science. $ $ Goddamnit, Mae, get ahold of yourself...
|
||||
cannery.f1=[按F1键获取帮助]
|
||||
cannery.centrifuge=气体离心机
|
||||
cannery.centrifuge.0=气体离心机可以使用通用流体管道传输流体。
|
||||
@ -394,7 +434,7 @@ cannery.firebox.0=燃烧室通过燃烧可燃物品产生热量。
|
||||
cannery.firebox.1=它可以燃烧任何可燃物品,但更高质量的燃料如煤、焦炭和固体燃料燃烧时间更长,温度更高。
|
||||
cannery.firebox.2=燃烧室顶部的铜触点可以传导热量。底部具有相同触点的机器可以通过放置在燃烧室顶部来接收热量。
|
||||
cannery.firebox.3=如果热量没有用完,且热量缓冲器变满,燃烧室将暂停运行,以防止燃料浪费。
|
||||
cannery.firebox.4=一种这样的机器是斯特林发动机,它将热量直接转化为能量。
|
||||
cannery.firebox.4=一种这样的机器是斯特林发电机,它将热量直接转化为能量。
|
||||
cannery.foundryChannel=铸造通道
|
||||
cannery.foundryChannel.0=铸造通道用于将熔融材料从坩埚或储罐输送到模具中。
|
||||
cannery.foundryChannel.1=通道可以通过从顶部(通过出口或直接连接坩埚)或从其他通道的侧面倾倒来接收材料。
|
||||
@ -412,7 +452,7 @@ cannery.silex.6=除了侧面的两个连接口之外,底部还有第三个隐
|
||||
cannery.silex.7=每个配方都需要特定的激光类型。使用比所需类型更强的激光将更快地处理项目。
|
||||
cannery.silex.8=一台FEL最多可以为5台SILEX供能。每个SILEX之间必须间隔一个方块。
|
||||
cannery.stirling=斯特林发电机
|
||||
cannery.stirling.0=斯特林发动机使用来自外部的热能来产生能量。
|
||||
cannery.stirling.0=斯特林发电机使用来自外部的热能来产生能量。
|
||||
cannery.stirling.1=它需要放置在发热机器的顶部,如燃烧室。
|
||||
cannery.stirling.2=然而,它可以利用的热量有限,过旋转可能导致灾难性故障。
|
||||
cannery.stirling.3=升级版可以在不损坏的情况下承受更多热量。
|
||||
@ -434,6 +474,8 @@ chem.BALEFIRE=野火火箭燃料混合
|
||||
chem.BP_BIOFUEL=生物燃料酯化
|
||||
chem.BP_BIOGAS=沼气生产
|
||||
chem.C4=C-4合成
|
||||
chem.CC_CENTRIFUGE=氯方解石分离
|
||||
chem.CC_ELECTROLYSIS=氯化钙电解
|
||||
chem.CC_HEATING=高级煤液化
|
||||
chem.CC_HEAVY=初级煤液化
|
||||
chem.CC_I=强化煤液化
|
||||
@ -485,6 +527,7 @@ chem.NITAN=NITAN牌超级燃料混合
|
||||
chem.NITRIC_ACID=硝酸生产
|
||||
chem.OIL_SAND=沥青砂提取
|
||||
chem.OSMIRIDIUM_DEATH=锇酸溶液生产
|
||||
chem.PC_ELECTROLYSIS=氯化钾电解
|
||||
chem.PEROXIDE=过氧化氢生产
|
||||
chem.PET=PET合成
|
||||
chem.PETROIL_LEADED=含铅石油混合
|
||||
@ -589,10 +632,11 @@ container.machineBoiler=锅炉
|
||||
container.machineCMB=CMB炼钢炉
|
||||
container.machineCoal=火力发电机
|
||||
container.machineCoker=焦化装置
|
||||
container.machineCompressor=压缩机
|
||||
container.machineCrucible=坩埚
|
||||
container.machineDiesel=柴油发电机
|
||||
container.machineElectricBoiler=电锅炉
|
||||
container.machineFEL=FEL自由电子激光器
|
||||
container.machineFEL=FEL
|
||||
container.machineITER=聚变反应堆
|
||||
container.machineLargeTurbine=工业汽轮机
|
||||
container.machineLiquefactor=液化机
|
||||
@ -600,7 +644,7 @@ container.machineMixer=工业搅拌机
|
||||
container.machineRefinery=炼油厂
|
||||
container.machineSelenium=星型发动机
|
||||
container.machineShredder=粉碎机
|
||||
container.machineSILEX=SILEX激光同位素分离室
|
||||
container.machineSILEX=激光同位素分离室
|
||||
container.machineSolidifier=固化机
|
||||
container.machineTurbine=汽轮机
|
||||
container.machineTurbofan=涡扇发动机
|
||||
@ -911,6 +955,14 @@ digamma.title=玩家F-迪伽马辐射自检器
|
||||
entity.entity_cyber_crab.name=赛博螃蟹
|
||||
entity.entity_elder_one.name=上古鸭神
|
||||
entity.entity_fucc_a_ducc.name=鸭子
|
||||
entity.entity_glyphid.name=异虫
|
||||
entity.entity_glyphid_behemoth.name=巨兽异虫
|
||||
entity.entity_glyphid_blaster.name=爆破异虫
|
||||
entity.entity_glyphid_bombardier.name=投弹手异虫
|
||||
entity.entity_glyphid_brawler.name=狂战士异虫
|
||||
entity.entity_glyphid_brenda.name=布伦达
|
||||
entity.entity_glyphid_nuclear.name=大个子强森
|
||||
entity.entity_glyphid_scout.name=侦察异虫
|
||||
entity.entity_ntm_fbi.name=FBI探员
|
||||
entity.entity_ntm_radiation_blaze.name=核融元素
|
||||
entity.hbm.entity_ntm_ufo.name=火星入侵者飞船
|
||||
@ -1130,8 +1182,13 @@ hbmfluid.biogas=沼气
|
||||
hbmfluid.bitumen=沥青
|
||||
hbmfluid.blood=血
|
||||
hbmfluid.blood_hot=热的血
|
||||
hbmfluid.calcium_chloride=氯化钙溶液
|
||||
hbmfluid.calcium_solution=钙溶液
|
||||
hbmfluid.carbondioxide=二氧化碳
|
||||
hbmfluid.chlorine=氯气
|
||||
hbmfluid.chlorocalcite_cleaned=纯净氯方解石溶液
|
||||
hbmfluid.chlorocalcite_mix=混合氯方解石溶液
|
||||
hbmfluid.chlorocalcite_solution=氯方解石溶液
|
||||
hbmfluid.cholesterol=胆固醇溶液
|
||||
hbmfluid.coalcreosote=煤焦杂酚油
|
||||
hbmfluid.coalgas=煤汽油
|
||||
@ -1203,6 +1260,7 @@ hbmfluid.plasma_dt=氘-氚等离子体
|
||||
hbmfluid.plasma_hd=氢-氘等离子体
|
||||
hbmfluid.plasma_ht=氢-氚等离子体
|
||||
hbmfluid.plasma_xm=氙-汞等离子体
|
||||
hbmfluid.potassium_chloride=氯化钾溶液
|
||||
hbmfluid.puf6=六氟化钚
|
||||
hbmfluid.radiosolvent=高性能溶剂
|
||||
hbmfluid.reclaimed=再生油
|
||||
@ -1290,7 +1348,7 @@ hbmmat.lithium=锂
|
||||
hbmmat.magnetizedtungsten=磁化钨
|
||||
hbmmat.malachite=孔雀石
|
||||
hbmmat.meteoriciron=陨铁
|
||||
hbmmat.mingrade=工业级铜
|
||||
hbmmat.mingrade=紫铜
|
||||
hbmmat.neptunium237=镎-237
|
||||
hbmmat.niobium=铌
|
||||
hbmmat.obsidian=黑曜岩
|
||||
@ -1471,11 +1529,14 @@ item.ammo_9mm_du.name=9mm子弹[贫铀]
|
||||
item.ammo_9mm_rocket.name=9mm火箭弹
|
||||
item.ammo_arty.name=16英寸炮弹
|
||||
item.ammo_arty_cargo.name=16英寸快递炮弹
|
||||
item.ammo_arty_chlorine.name=16英寸氯气炮弹
|
||||
item.ammo_arty_classic.name=16英寸炮弹 (特制)
|
||||
item.ammo_arty_he.name=16英寸高爆炮弹
|
||||
item.ammo_arty_mini_nuke.name=16英寸微型核炮弹
|
||||
item.ammo_arty_mini_nuke_multi.name=16英寸多弹头微型核炮弹
|
||||
item.ammo_arty_mustard_gas.name=16英寸芥子气炮炮弹
|
||||
item.ammo_arty_nuke.name=16英寸核炮弹
|
||||
item.ammo_arty_phosgene.name=16英寸光气炮弹
|
||||
item.ammo_arty_phosphorus.name=16英寸磷炮弹
|
||||
item.ammo_arty_phosphorus_multi.name=16英寸多弹头磷炮弹
|
||||
item.ammo_cell.name=能量单元
|
||||
@ -1508,6 +1569,7 @@ item.ammo_grenade_toxic.name=40mm榴弹[化学]
|
||||
item.ammo_grenade_tracer.name=40mm训练榴弹
|
||||
item.ammo_himars_standard.name=M28制导火箭炮系统火箭弹舱
|
||||
item.ammo_himars_standard_he.name=227毫米制导火箭炮系统火箭吊舱(HE)
|
||||
item.ammo_himars_standard_lava.name=227毫米制导火箭炮系统火箭吊舱(熔岩)
|
||||
item.ammo_himars_standard_mini_nuke.name=227毫米制导火箭炮系统火箭吊舱(迷你核弹)
|
||||
item.ammo_himars_standard_tb.name=227毫米制导火箭炮系统火箭吊舱(温压弹)
|
||||
item.ammo_himars_standard_wp.name=227毫米制导火箭炮系统火箭吊舱(白磷)
|
||||
@ -1672,6 +1734,7 @@ item.battery_steam_large.name=大型蒸汽动力储能罐
|
||||
item.battery_su.name=SU-电池
|
||||
item.battery_su_l.name=大型SU-电池
|
||||
item.battery_trixite.name=杂牌Spark电池
|
||||
item.bdcl.name=BDCL
|
||||
item.beta.name=Bata测试版功能
|
||||
item.big_sword.name=大剑
|
||||
item.billet_actinium.name=锕-227坯料
|
||||
@ -1818,7 +1881,7 @@ item.canister_ethanol.name=桶装乙醇
|
||||
item.canister_fracksol.name=桶装压裂液
|
||||
item.canister_fuel.name=桶装柴油
|
||||
item.canister_fuel.desc=大家欢呼吧!
|
||||
item.canister_full.name=容器:
|
||||
item.canister_full.name=油桶:
|
||||
item.canister_gasoline.name=桶装含铅汽油
|
||||
item.canister_gasoline.desc=铅就是朋友$让朋友进入你的血液$*上膛声*现在就做
|
||||
item.canister_heatingoil.name=桶装燃油
|
||||
@ -2076,8 +2139,8 @@ item.coffee.name=咖啡
|
||||
item.coffee_radium.name=加镭咖啡
|
||||
item.coil_advanced_alloy.name=超导线圈
|
||||
item.coil_advanced_torus.name=超导环形线圈
|
||||
item.coil_copper.name=铜线圈
|
||||
item.coil_copper_torus.name=铜环形线圈
|
||||
item.coil_copper.name=紫铜线圈
|
||||
item.coil_copper_torus.name=紫铜环形线圈
|
||||
item.coil_gold.name=金线圈
|
||||
item.coil_gold_torus.name=金环形线圈
|
||||
item.coil_magnetized_tungsten.name=4000K高温超导线圈
|
||||
@ -2254,6 +2317,8 @@ item.energy_core.name=临时能源核心
|
||||
item.entanglement_kit.name=纠缠部件
|
||||
item.entanglement_kit.desc=传送机制作零件$通过$铍增强型资源扫描仪实现尺寸转换。
|
||||
item.euphemium_boots.name=Ep靴子
|
||||
item.euphemium_capacitor.name=Ep电容
|
||||
item.euphemium_capacitor.desc=允许被动分散累积的正能量。
|
||||
item.euphemium_helmet.name=Ep头盔
|
||||
item.euphemium_kit.name=Ep工具箱
|
||||
item.euphemium_legs.name=Ep护腿
|
||||
@ -2340,7 +2405,7 @@ item.gadget_kit.name=小玩意 套件
|
||||
item.gadget_wireing.name=线路
|
||||
item.gas_biogas.name=沼气罐
|
||||
item.gas_empty.name=空气罐
|
||||
item.gas_full.name=气体罐
|
||||
item.gas_full.name=气体罐:
|
||||
item.gas_lpg.name=液化石油气罐
|
||||
item.gas_mask.name=防毒面具
|
||||
item.gas_mask_filter.name=防毒面具过滤器
|
||||
@ -2609,7 +2674,7 @@ item.ingot_co60.name=钴-60锭
|
||||
item.ingot_cobalt.name=钴锭
|
||||
item.ingot_combine_steel.name=CMB钢锭
|
||||
item.ingot_combine_steel.desc=*在此处插入民事保护参考*
|
||||
item.ingot_copper.name=工业级铜
|
||||
item.ingot_copper.name=工业级铜锭
|
||||
item.ingot_daffergon.name=达夫贡锭
|
||||
item.ingot_desh.name=Desh锭
|
||||
item.ingot_dineutronium.name=双聚中子态素锭
|
||||
@ -2656,7 +2721,7 @@ item.ingot_pu240.name=钚-240锭
|
||||
item.ingot_pu241.name=钚-241锭
|
||||
item.ingot_pvc.name=聚氯乙烯锭(PVC)
|
||||
item.ingot_ra226.name=镭-226锭
|
||||
item.ingot_red_copper.name=紫铜
|
||||
item.ingot_red_copper.name=紫铜锭
|
||||
item.ingot_reiium.name=雷恩锭
|
||||
item.ingot_rubber.name=橡胶锭
|
||||
item.ingot_saturnite.name=土星锭
|
||||
@ -3295,6 +3360,7 @@ item.plate_schrabidium.name=Sa326板
|
||||
item.plate_steel.name=钢板
|
||||
item.plate_titanium.name=钛板
|
||||
item.polaroid.name=偏光片
|
||||
item.pollution_detector.name=污染探测器
|
||||
item.powder_actinium.name=锕粉
|
||||
item.powder_actinium_tiny.name=小撮锕粉
|
||||
item.powder_advanced_alloy.name=高级合金粉
|
||||
@ -3455,7 +3521,7 @@ item.rbmk_fuel_mox.name=MOX RBMK反应堆燃料棒
|
||||
item.rbmk_fuel_po210be.name=钋210-铍 RBMK反应堆中子源
|
||||
item.rbmk_fuel_pu238be.name=钚238-铍 RBMK反应堆中子源
|
||||
item.rbmk_fuel_ra226be.name=镭226-铍 RBMK反应堆中子源
|
||||
item.rbmk_fuel_thmeu.name=ThMEU RBMK反应堆中浓缩度铀-235导向钍燃料棒
|
||||
item.rbmk_fuel_thmeu.name=ThMEU RBMK反应堆中浓缩度铀-233导向钍燃料棒
|
||||
item.rbmk_fuel_ueu.name=NU RBMK反应堆未浓缩铀燃料棒
|
||||
item.rbmk_fuel_zfb_am_mix.name=ZFB 燃料级镅RBMK反应堆燃料棒
|
||||
item.rbmk_fuel_zfb_bismuth.name=ZFB 铋RBMK反应堆燃料棒
|
||||
@ -3792,12 +3858,16 @@ item.spider_milk.name=一瓶蜘蛛奶
|
||||
item.spongebob_macaroni.name=海绵宝宝通心粉
|
||||
item.stamp_357.name=.357马格南锻模
|
||||
item.stamp_44.name=.44马格南锻模
|
||||
item.stamp_50.name=大口径锻模
|
||||
item.stamp_9.name=小口径锻模
|
||||
item.stamp_50.name=大口径弹壳锻模
|
||||
item.stamp_9.name=小口径弹壳锻模
|
||||
item.stamp_desh_circuit.name=Desh电路板锻模
|
||||
item.stamp_desh_flat.name=Desh锻模
|
||||
item.stamp_desh_plate.name=Desh板锻模
|
||||
item.stamp_desh_wire.name=Desh电线锻模
|
||||
item.stamp_desh_357.name=.357马格南锻模 (Desh)
|
||||
item.stamp_desh_44.name=.44马格南锻模 (Desh)
|
||||
item.stamp_desh_50.name=大口径弹壳锻模(Desh)
|
||||
item.stamp_desh_9.name=小口径弹壳锻模(Desh)
|
||||
item.stamp_iron_circuit.name=铁质电路板锻模
|
||||
item.stamp_iron_flat.name=铁质锻模
|
||||
item.stamp_iron_plate.name=铁质板锻模
|
||||
@ -4110,7 +4180,7 @@ rbmk.screen.rod=控制:%s
|
||||
rbmk.screen.temp=温度:%s
|
||||
rbmk.screen.xenon=氙:%s
|
||||
shape.billet=钢坯
|
||||
shape.blade=刀身
|
||||
shape.blade=扇叶
|
||||
shape.blades=切碎机刀片
|
||||
shape.block=块
|
||||
shape.dust=粉末
|
||||
@ -4337,6 +4407,13 @@ tile.c4.name=C-4
|
||||
tile.cable_detector.name=红石电源开关
|
||||
tile.cable_diode.name=紫铜二极管
|
||||
tile.cable_switch.name=电源开关
|
||||
tile.capacitor_bus.name=电容总线
|
||||
tile.capacitor_bus.desc=电容器的输出方块$可以连成一条直线
|
||||
tile.capacitor_copper.name=铜电容
|
||||
tile.capacitor_gold.name=金电容
|
||||
tile.capacitor_niobium.name=铌电容
|
||||
tile.capacitor_tantalium.name=钽电容
|
||||
tile.capacitor.desc=输入:顶部$输出:底部,通过电容总线
|
||||
tile.charge_c4.name=炸药包
|
||||
tile.charge_dynamite.name=定时炸弹
|
||||
tile.charge_miner.name=定时采矿炸药
|
||||
@ -4543,6 +4620,7 @@ tile.furnace_steel.name=钢炉
|
||||
tile.furnace_steel.desc=非常大的熔炉,冶炼矿石时可提供加成。$这需要外部热源$传热率:ΔT*0.05tu/T$(Δ表示差值,T表示温度)
|
||||
tile.fusion_center.name=中心磁铁
|
||||
tile.fusion_conductor.name=超导磁体
|
||||
tile.fusion_conductor_welded.name=超导磁体(焊接)
|
||||
tile.fusion_core.name=聚变反应堆控制器
|
||||
tile.fusion_hatch.name=聚变反应堆端口
|
||||
tile.fusion_heater.name=等离子加热器
|
||||
@ -4574,6 +4652,8 @@ tile.glass_polonium.name=钋玻璃
|
||||
tile.glass_quartz.name=石英玻璃
|
||||
tile.glass_trinitite.name=核融玻璃
|
||||
tile.glass_uranium.name=铀玻璃
|
||||
tile.glyphid_base.name=异虫蜂巢块
|
||||
tile.glyphid_spawner.name=异虫蜂巢繁殖方块
|
||||
tile.gneiss_brick.name=页岩砖
|
||||
tile.gneiss_chiseled.name=錾制页岩砖
|
||||
tile.gneiss_tile.name=页岩瓷砖
|
||||
@ -4668,6 +4748,7 @@ tile.machine_coker.name=焦化装置
|
||||
tile.machine_coker.desc=炼焦,并产生各类流体副产品$需要外部热源$传热速率:ΔT*0.025 TU/T
|
||||
tile.machine_combine_factory.name=CMB炼钢炉
|
||||
tile.machine_combustion_engine.name=工业内燃机
|
||||
tile.machine_compressor.name=压缩机
|
||||
tile.machine_condenser.name=蒸汽冷凝器
|
||||
tile.machine_controller.name=反应堆遥控模块
|
||||
tile.machine_converter_he_rf.name=HE→RF转换器
|
||||
@ -4724,7 +4805,7 @@ tile.machine_radar.name=雷达
|
||||
tile.machine_radgen.name=辐射能量发电机
|
||||
tile.machine_radiolysis.name=放射性同位素热电机和辐射裂解室
|
||||
tile.machine_reactor.name=增殖反应堆
|
||||
tile.machine_reactor_small.name=核反应堆
|
||||
tile.machine_reactor_small.name=研究型反应堆
|
||||
tile.machine_refinery.name=炼油厂
|
||||
tile.machine_reix_mainframe.name=Rei-X主机[开发中]
|
||||
tile.machine_rtg_blue.name=对流发电机
|
||||
@ -4744,7 +4825,7 @@ tile.machine_schrabidium_battery.name=Sa326蓄电池
|
||||
tile.machine_schrabidium_transmutator.name=Sa326嬗变装置
|
||||
tile.machine_selenium.name=星型发动机
|
||||
tile.machine_shredder.name=粉碎机
|
||||
tile.machine_silex.name=激光同位素分离室
|
||||
tile.machine_silex.name=SILEX激光同位素分离室
|
||||
tile.machine_siren.name=警报器
|
||||
tile.machine_solar_boiler.name=太阳能锅炉
|
||||
tile.machine_solidifier.name=工业固化机
|
||||
@ -4755,7 +4836,7 @@ tile.machine_steam_engine.name=蒸汽机
|
||||
tile.machine_steam_engine.desc=效率:85%
|
||||
tile.machine_stirling.name=斯特林发电机
|
||||
tile.machine_stirling.desc=它将热量转化为能量。这需要外部热源$传热率:T*0.1 TU/T$最大进气量:300 TU/T$效率:50%
|
||||
tile.machine_stirling_steel.name=重型斯特林发动机
|
||||
tile.machine_stirling_steel.name=重型斯特林发电机
|
||||
tile.machine_stirling_steel.desc=它将热量转化为能量。这需要外部热源$使用更重的齿轮来支持更高的温度$传热率:T*0.1 TU/T$最大进气量:1500 TU/T$效率:50%
|
||||
tile.machine_storage_drum.name=核废料处理桶
|
||||
tile.machine_telelinker.name=炮塔ID管理器
|
||||
@ -4965,8 +5046,8 @@ tile.reinforced_light.name=强化萤石
|
||||
tile.reinforced_sand.name=强化砂石
|
||||
tile.reinforced_stone.name=致密石头
|
||||
tile.reinforced_stone_stairs.name=致密石头楼梯
|
||||
tile.reinforced_laminate.name=强化层压板
|
||||
tile.reinforced_laminate_pane.name=强化层压板隔板
|
||||
tile.reinforced_laminate.name=强化夹层玻璃
|
||||
tile.reinforced_laminate_pane.name=强化夹层隔板
|
||||
tile.rejuvinator.name=再生装置
|
||||
tile.residue.name=云残留
|
||||
tile.safe.name=保险箱
|
||||
|
||||
704
src/main/resources/assets/hbm/models/machines/chimney_brick.obj
Normal file
@ -0,0 +1,704 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: 'chimney_brick.blend'
|
||||
# www.blender.org
|
||||
o Plane
|
||||
v -1.500000 0.000000 1.500000
|
||||
v 1.500000 0.000000 1.500000
|
||||
v -1.500000 0.000000 -1.500000
|
||||
v 1.500000 0.000000 -1.500000
|
||||
v -1.500000 2.000000 1.500000
|
||||
v 1.500000 2.000000 1.500000
|
||||
v -1.500000 2.000000 -1.500000
|
||||
v 1.500000 2.000000 -1.500000
|
||||
v 1.500000 0.687500 0.187500
|
||||
v 1.500000 0.312500 0.187500
|
||||
v 1.500000 0.687500 -0.187500
|
||||
v 1.500000 0.312500 -0.187500
|
||||
v 1.500000 0.875000 0.375000
|
||||
v 1.500000 0.125000 0.375000
|
||||
v 1.500000 0.875000 -0.375000
|
||||
v 1.500000 0.125000 -0.375000
|
||||
v 1.375000 0.312500 0.187500
|
||||
v 1.375000 0.125000 0.375000
|
||||
v 1.375000 0.312500 -0.187500
|
||||
v 1.375000 0.125000 -0.375000
|
||||
v 1.375000 0.687500 -0.187500
|
||||
v 1.375000 0.875000 -0.375000
|
||||
v 1.375000 0.687500 0.187500
|
||||
v 1.375000 0.875000 0.375000
|
||||
v 0.187500 0.687500 -1.500000
|
||||
v 0.187500 0.312500 -1.500000
|
||||
v -0.187500 0.687500 -1.500000
|
||||
v -0.187500 0.312500 -1.500000
|
||||
v 0.375000 0.875000 -1.500000
|
||||
v 0.375000 0.125000 -1.500000
|
||||
v -0.375000 0.875000 -1.500000
|
||||
v -0.375000 0.125000 -1.500000
|
||||
v 0.187500 0.312500 -1.375000
|
||||
v 0.375000 0.125000 -1.375000
|
||||
v -0.187500 0.312500 -1.375000
|
||||
v -0.375000 0.125000 -1.375000
|
||||
v -0.187500 0.687500 -1.375000
|
||||
v -0.375000 0.875000 -1.375000
|
||||
v 0.187500 0.687500 -1.375000
|
||||
v 0.375000 0.875000 -1.375000
|
||||
v -1.500000 0.687500 -0.187500
|
||||
v -1.500000 0.312500 -0.187500
|
||||
v -1.500000 0.687500 0.187500
|
||||
v -1.500000 0.312500 0.187500
|
||||
v -1.500000 0.875000 -0.375000
|
||||
v -1.500000 0.125000 -0.375000
|
||||
v -1.500000 0.875000 0.375000
|
||||
v -1.500000 0.125000 0.375000
|
||||
v -1.375000 0.312500 -0.187500
|
||||
v -1.375000 0.125000 -0.375000
|
||||
v -1.375000 0.312500 0.187500
|
||||
v -1.375000 0.125000 0.375000
|
||||
v -1.375000 0.687500 0.187500
|
||||
v -1.375000 0.875000 0.375000
|
||||
v -1.375000 0.687500 -0.187500
|
||||
v -1.375000 0.875000 -0.375000
|
||||
v -0.187500 0.687500 1.500000
|
||||
v -0.187500 0.312500 1.500000
|
||||
v 0.187500 0.687500 1.500000
|
||||
v 0.187500 0.312500 1.500000
|
||||
v -0.375000 0.875000 1.500000
|
||||
v -0.375000 0.125000 1.500000
|
||||
v 0.375000 0.875000 1.500000
|
||||
v 0.375000 0.125000 1.500000
|
||||
v -0.187500 0.312500 1.375000
|
||||
v -0.375000 0.125000 1.375000
|
||||
v 0.187500 0.312500 1.375000
|
||||
v 0.375000 0.125000 1.375000
|
||||
v 0.187500 0.687500 1.375000
|
||||
v 0.375000 0.875000 1.375000
|
||||
v -0.187500 0.687500 1.375000
|
||||
v -0.375000 0.875000 1.375000
|
||||
v 0.000000 2.000000 -1.250000
|
||||
v -0.478354 2.000000 -1.154849
|
||||
v -0.883883 2.000000 -0.883883
|
||||
v -1.154849 2.000000 -0.478354
|
||||
v -1.250000 2.000000 0.000000
|
||||
v -1.154849 2.000000 0.478354
|
||||
v -0.883883 2.000000 0.883883
|
||||
v -0.478354 2.000000 1.154849
|
||||
v -0.000000 2.000000 1.250000
|
||||
v 0.478354 2.000000 1.154850
|
||||
v 0.883883 2.000000 0.883884
|
||||
v 1.154849 2.000000 0.478354
|
||||
v 1.250000 2.000000 -0.000000
|
||||
v 1.154849 2.000000 -0.478355
|
||||
v 0.883883 2.000000 -0.883884
|
||||
v 0.478354 2.000000 -1.154850
|
||||
v 0.000000 13.000000 -0.750000
|
||||
v -0.287013 13.000000 -0.692910
|
||||
v -0.530330 13.000000 -0.530330
|
||||
v -0.692910 13.000000 -0.287013
|
||||
v -0.750000 13.000000 0.000000
|
||||
v -0.692910 13.000000 0.287013
|
||||
v -0.530330 13.000000 0.530330
|
||||
v -0.287013 13.000000 0.692910
|
||||
v -0.000000 13.000000 0.750000
|
||||
v 0.287012 13.000000 0.692910
|
||||
v 0.530330 13.000000 0.530330
|
||||
v 0.692910 13.000000 0.287013
|
||||
v 0.750000 13.000000 -0.000000
|
||||
v 0.692910 13.000000 -0.287013
|
||||
v 0.530330 13.000000 -0.530330
|
||||
v 0.287012 13.000000 -0.692910
|
||||
v -0.000000 13.000000 -0.500000
|
||||
v -0.191342 13.000000 -0.461940
|
||||
v -0.353553 13.000000 -0.353553
|
||||
v -0.461940 13.000000 -0.191342
|
||||
v -0.500000 13.000000 0.000000
|
||||
v -0.461940 13.000000 0.191342
|
||||
v -0.353553 13.000000 0.353553
|
||||
v -0.191342 13.000000 0.461940
|
||||
v -0.000000 13.000000 0.500000
|
||||
v 0.191342 13.000000 0.461940
|
||||
v 0.353553 13.000000 0.353554
|
||||
v 0.461940 13.000000 0.191342
|
||||
v 0.500000 13.000000 -0.000000
|
||||
v 0.461940 13.000000 -0.191342
|
||||
v 0.353553 13.000000 -0.353554
|
||||
v 0.191341 13.000000 -0.461940
|
||||
v -0.000000 11.000000 -0.500000
|
||||
v -0.191342 11.000000 -0.461940
|
||||
v -0.353553 11.000000 -0.353553
|
||||
v -0.461940 11.000000 -0.191342
|
||||
v -0.500000 11.000000 0.000000
|
||||
v -0.461940 11.000000 0.191342
|
||||
v -0.353553 11.000000 0.353553
|
||||
v -0.191342 11.000000 0.461940
|
||||
v -0.000000 11.000000 0.500000
|
||||
v 0.191342 11.000000 0.461940
|
||||
v 0.353553 11.000000 0.353554
|
||||
v 0.461940 11.000000 0.191342
|
||||
v 0.500000 11.000000 -0.000000
|
||||
v 0.461940 11.000000 -0.191342
|
||||
v 0.353553 11.000000 -0.353554
|
||||
v 0.191341 11.000000 -0.461940
|
||||
vt 0.272727 0.000000
|
||||
vt 0.000000 0.265193
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 0.441989
|
||||
vt 0.272727 0.707182
|
||||
vt 0.000000 0.707182
|
||||
vt 0.181818 0.895028
|
||||
vt 0.130682 0.911602
|
||||
vt 0.113636 0.895028
|
||||
vt 0.130682 0.955801
|
||||
vt 0.119318 0.922652
|
||||
vt 0.130682 0.922652
|
||||
vt 0.164773 0.922652
|
||||
vt 0.176136 0.955801
|
||||
vt 0.164773 0.955801
|
||||
vt 0.090909 0.906077
|
||||
vt 0.102273 0.972376
|
||||
vt 0.090909 0.972376
|
||||
vt 0.204545 0.972376
|
||||
vt 0.193182 0.906077
|
||||
vt 0.204545 0.906077
|
||||
vt 0.113636 0.983425
|
||||
vt 0.164773 0.966851
|
||||
vt 0.181818 0.983425
|
||||
vt 0.193182 0.972376
|
||||
vt 0.176136 0.922652
|
||||
vt 0.102273 0.906077
|
||||
vt 0.181818 0.883978
|
||||
vt 0.113636 0.883978
|
||||
vt 0.113636 0.994475
|
||||
vt 0.181818 0.994475
|
||||
vt 0.164773 0.911602
|
||||
vt 0.130682 0.966851
|
||||
vt 0.181818 0.895028
|
||||
vt 0.130682 0.911602
|
||||
vt 0.113636 0.895028
|
||||
vt 0.130682 0.955801
|
||||
vt 0.119318 0.922652
|
||||
vt 0.130682 0.922652
|
||||
vt 0.164773 0.922652
|
||||
vt 0.176136 0.955801
|
||||
vt 0.164773 0.955801
|
||||
vt 0.090909 0.906077
|
||||
vt 0.102273 0.972376
|
||||
vt 0.090909 0.972376
|
||||
vt 0.204545 0.972376
|
||||
vt 0.193182 0.906077
|
||||
vt 0.204545 0.906077
|
||||
vt 0.113636 0.983425
|
||||
vt 0.164773 0.966851
|
||||
vt 0.181818 0.983425
|
||||
vt 0.193182 0.972376
|
||||
vt 0.176136 0.922652
|
||||
vt 0.102273 0.906077
|
||||
vt 0.181818 0.883978
|
||||
vt 0.113636 0.883978
|
||||
vt 0.113636 0.994475
|
||||
vt 0.181818 0.994475
|
||||
vt 0.164773 0.911602
|
||||
vt 0.130682 0.966851
|
||||
vt 0.181818 0.895028
|
||||
vt 0.130682 0.911602
|
||||
vt 0.113636 0.895028
|
||||
vt 0.130682 0.955801
|
||||
vt 0.119318 0.922652
|
||||
vt 0.130682 0.922652
|
||||
vt 0.164773 0.922652
|
||||
vt 0.176136 0.955801
|
||||
vt 0.164773 0.955801
|
||||
vt 0.090909 0.906077
|
||||
vt 0.102273 0.972376
|
||||
vt 0.090909 0.972376
|
||||
vt 0.204545 0.972376
|
||||
vt 0.193182 0.906077
|
||||
vt 0.204545 0.906077
|
||||
vt 0.113636 0.983425
|
||||
vt 0.164773 0.966851
|
||||
vt 0.181818 0.983425
|
||||
vt 0.193182 0.972376
|
||||
vt 0.176136 0.922652
|
||||
vt 0.102273 0.906077
|
||||
vt 0.181818 0.883978
|
||||
vt 0.113636 0.883978
|
||||
vt 0.113636 0.994475
|
||||
vt 0.181818 0.994475
|
||||
vt 0.164773 0.911602
|
||||
vt 0.130682 0.966851
|
||||
vt 0.181818 0.895028
|
||||
vt 0.130682 0.911602
|
||||
vt 0.113636 0.895028
|
||||
vt 0.130682 0.955801
|
||||
vt 0.119318 0.922652
|
||||
vt 0.130682 0.922652
|
||||
vt 0.164773 0.922652
|
||||
vt 0.176136 0.955801
|
||||
vt 0.164773 0.955801
|
||||
vt 0.090909 0.906077
|
||||
vt 0.102273 0.972376
|
||||
vt 0.090909 0.972376
|
||||
vt 0.204545 0.972376
|
||||
vt 0.193182 0.906077
|
||||
vt 0.204545 0.906077
|
||||
vt 0.113636 0.983425
|
||||
vt 0.164773 0.966851
|
||||
vt 0.181818 0.983425
|
||||
vt 0.193182 0.972376
|
||||
vt 0.176136 0.922652
|
||||
vt 0.102273 0.906077
|
||||
vt 0.181818 0.883978
|
||||
vt 0.113636 0.883978
|
||||
vt 0.113636 0.994475
|
||||
vt 0.181818 0.994475
|
||||
vt 0.164773 0.911602
|
||||
vt 0.130682 0.966851
|
||||
vt 0.272727 0.265193
|
||||
vt 0.102273 0.276243
|
||||
vt 0.102273 0.342541
|
||||
vt 0.272727 0.441989
|
||||
vt 0.102273 0.342541
|
||||
vt 0.272727 0.441989
|
||||
vt -0.000000 0.441989
|
||||
vt 0.272727 0.265193
|
||||
vt 0.102273 0.276243
|
||||
vt -0.000000 0.265193
|
||||
vt 0.170455 0.342541
|
||||
vt 0.170455 0.276243
|
||||
vt 0.170455 0.342541
|
||||
vt 0.102273 0.342541
|
||||
vt 0.272727 0.441989
|
||||
vt -0.000000 0.441989
|
||||
vt 0.272727 0.265193
|
||||
vt 0.170455 0.342541
|
||||
vt 0.170455 0.276243
|
||||
vt 0.102273 0.276243
|
||||
vt -0.000000 0.265193
|
||||
vt 0.272727 0.265193
|
||||
vt 0.102273 0.276243
|
||||
vt -0.000000 0.265193
|
||||
vt 0.170455 0.342541
|
||||
vt 0.272727 0.441989
|
||||
vt 0.102273 0.342541
|
||||
vt -0.000000 0.441989
|
||||
vt 0.630682 0.972376
|
||||
vt 0.607955 1.000000
|
||||
vt 0.602273 0.972376
|
||||
vt 0.647727 0.972376
|
||||
vt 0.670455 1.000000
|
||||
vt 0.653409 1.000000
|
||||
vt 0.721591 0.972376
|
||||
vt 0.698864 1.000000
|
||||
vt 0.693182 0.972376
|
||||
vt 0.767045 0.972376
|
||||
vt 0.744318 1.000000
|
||||
vt 0.738636 0.972376
|
||||
vt 0.812500 0.972376
|
||||
vt 0.789773 1.000000
|
||||
vt 0.784091 0.972376
|
||||
vt 0.857955 0.972376
|
||||
vt 0.835227 1.000000
|
||||
vt 0.829545 0.972376
|
||||
vt 0.903409 0.972376
|
||||
vt 0.880682 1.000000
|
||||
vt 0.875000 0.972376
|
||||
vt 0.948864 0.972376
|
||||
vt 0.926136 1.000000
|
||||
vt 0.920455 0.972376
|
||||
vt 0.994318 0.972376
|
||||
vt 0.971591 1.000000
|
||||
vt 0.965909 0.972376
|
||||
vt 0.312500 0.972376
|
||||
vt 0.289773 1.000000
|
||||
vt 0.284091 0.972376
|
||||
vt 0.329545 0.972376
|
||||
vt 0.352273 1.000000
|
||||
vt 0.335227 1.000000
|
||||
vt 0.375000 0.972376
|
||||
vt 0.397727 1.000000
|
||||
vt 0.380682 1.000000
|
||||
vt 0.420455 0.972376
|
||||
vt 0.443182 1.000000
|
||||
vt 0.426136 1.000000
|
||||
vt 0.465909 0.972376
|
||||
vt 0.488636 1.000000
|
||||
vt 0.471591 1.000000
|
||||
vt 0.511364 0.972376
|
||||
vt 0.534091 1.000000
|
||||
vt 0.517045 1.000000
|
||||
vt 0.585227 0.972376
|
||||
vt 0.562500 1.000000
|
||||
vt 0.556818 0.972376
|
||||
vt 0.090053 0.936803
|
||||
vt 0.070717 0.964941
|
||||
vt 0.036583 0.971543
|
||||
vt 0.119318 0.955801
|
||||
vt 0.119318 0.955801
|
||||
vt 0.119318 0.955801
|
||||
vt 0.119318 0.955801
|
||||
vt 0.170455 0.276243
|
||||
vt 0.170455 0.276243
|
||||
vt 0.625000 1.000000
|
||||
vt 0.676136 0.972376
|
||||
vt 0.715909 1.000000
|
||||
vt 0.761364 1.000000
|
||||
vt 0.806818 1.000000
|
||||
vt 0.852273 1.000000
|
||||
vt 0.897727 1.000000
|
||||
vt 0.943182 1.000000
|
||||
vt 0.988636 1.000000
|
||||
vt 0.306818 1.000000
|
||||
vt 0.357955 0.972376
|
||||
vt 0.403409 0.972376
|
||||
vt 0.448864 0.972376
|
||||
vt 0.494318 0.972376
|
||||
vt 0.539773 0.972376
|
||||
vt 0.579545 1.000000
|
||||
vt 0.020192 0.964941
|
||||
vt 0.007646 0.952742
|
||||
vt 0.000856 0.936803
|
||||
vt 0.000856 0.919551
|
||||
vt 0.007646 0.903612
|
||||
vt 0.020192 0.891413
|
||||
vt 0.036583 0.884810
|
||||
vt 0.054326 0.884810
|
||||
vt 0.070717 0.891413
|
||||
vt 0.083263 0.903612
|
||||
vt 0.090053 0.919551
|
||||
vt 0.083263 0.952742
|
||||
vt 0.054326 0.971543
|
||||
vt 0.681818 -0.000000
|
||||
vt 0.636364 -0.000000
|
||||
vt 0.727273 -0.000000
|
||||
vt 0.772727 -0.000000
|
||||
vt 0.818182 0.000000
|
||||
vt 0.863636 0.000000
|
||||
vt 0.909091 0.000000
|
||||
vt 0.954545 0.000000
|
||||
vt 1.000000 -0.000000
|
||||
vt 0.318182 0.000000
|
||||
vt 0.272727 0.000000
|
||||
vt 0.363636 0.000000
|
||||
vt 0.409091 -0.000000
|
||||
vt 0.454545 -0.000000
|
||||
vt 0.500000 0.000000
|
||||
vt 0.545455 0.000000
|
||||
vt 0.590909 0.000000
|
||||
vt 0.102273 0.707182
|
||||
vt 0.085227 0.883978
|
||||
vt 0.085227 0.707182
|
||||
vt 0.255682 0.707182
|
||||
vt 0.238636 0.883978
|
||||
vt 0.238636 0.707182
|
||||
vt 0.119318 0.707182
|
||||
vt 0.102273 0.883978
|
||||
vt 0.272727 0.707182
|
||||
vt 0.255682 0.883978
|
||||
vt 0.136364 0.707182
|
||||
vt 0.119318 0.883978
|
||||
vt 0.017045 0.707182
|
||||
vt 0.000000 0.883978
|
||||
vt -0.000000 0.707182
|
||||
vt 0.153409 0.707182
|
||||
vt 0.136364 0.883978
|
||||
vt 0.034091 0.707182
|
||||
vt 0.017045 0.883978
|
||||
vt 0.170455 0.707182
|
||||
vt 0.153409 0.883978
|
||||
vt 0.051136 0.707182
|
||||
vt 0.034091 0.883978
|
||||
vt 0.187500 0.707182
|
||||
vt 0.170455 0.883978
|
||||
vt 0.068182 0.707182
|
||||
vt 0.051136 0.883978
|
||||
vt 0.221591 0.707182
|
||||
vt 0.204545 0.883978
|
||||
vt 0.204545 0.707182
|
||||
vt 0.187500 0.883978
|
||||
vt 0.068182 0.883978
|
||||
vt 0.221591 0.883978
|
||||
vt 0.272727 0.883978
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 -0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.9229 0.0454 -0.3823
|
||||
vn 0.9990 0.0454 0.0000
|
||||
vn 0.7064 0.0454 -0.7064
|
||||
vn 0.3823 0.0454 -0.9229
|
||||
vn -0.0000 0.0454 -0.9990
|
||||
vn -0.3823 0.0454 -0.9229
|
||||
vn -0.7064 0.0454 -0.7064
|
||||
vn -0.9229 0.0454 -0.3823
|
||||
vn -0.9990 0.0454 0.0000
|
||||
vn -0.9229 0.0454 0.3823
|
||||
vn -0.7064 0.0454 0.7064
|
||||
vn -0.3823 0.0454 0.9229
|
||||
vn 0.0000 0.0454 0.9990
|
||||
vn 0.3823 0.0454 0.9229
|
||||
vn 0.7064 0.0454 0.7064
|
||||
vn 0.9229 0.0454 0.3823
|
||||
vn -0.7071 0.0000 -0.7071
|
||||
vn -0.3827 0.0000 -0.9239
|
||||
vn 0.9239 0.0000 0.3827
|
||||
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
|
||||
vn 0.7071 0.0000 -0.7071
|
||||
vn -0.7071 0.0000 0.7071
|
||||
vn 0.3827 0.0000 -0.9239
|
||||
vn -0.3827 0.0000 0.9239
|
||||
vn 0.3827 0.0000 0.9239
|
||||
s off
|
||||
f 3/1/1 2/2/1 1/3/1
|
||||
f 6/4/2 7/5/2 5/6/2
|
||||
f 20/7/3 17/8/3 18/9/3
|
||||
f 9/10/4 17/11/4 10/12/4
|
||||
f 12/13/5 21/14/5 11/15/5
|
||||
f 14/16/5 24/17/5 13/18/5
|
||||
f 10/12/3 11/15/3 9/10/3
|
||||
f 15/19/4 20/20/4 16/21/4
|
||||
f 24/22/3 21/23/3 22/24/3
|
||||
f 22/25/3 19/26/3 20/20/3
|
||||
f 17/11/3 24/17/3 18/27/3
|
||||
f 16/28/2 18/9/2 14/29/2
|
||||
f 13/30/1 22/24/1 15/31/1
|
||||
f 10/12/1 19/32/1 12/13/1
|
||||
f 11/15/2 23/33/2 9/10/2
|
||||
f 36/34/5 33/35/5 34/36/5
|
||||
f 25/37/3 33/38/3 26/39/3
|
||||
f 28/40/6 37/41/6 27/42/6
|
||||
f 30/43/6 40/44/6 29/45/6
|
||||
f 26/39/5 27/42/5 25/37/5
|
||||
f 31/46/3 36/47/3 32/48/3
|
||||
f 40/49/5 37/50/5 38/51/5
|
||||
f 38/52/5 35/53/5 36/47/5
|
||||
f 33/38/5 40/44/5 34/54/5
|
||||
f 32/55/2 34/36/2 30/56/2
|
||||
f 29/57/1 38/51/1 31/58/1
|
||||
f 26/39/1 35/59/1 28/40/1
|
||||
f 27/42/2 39/60/2 25/37/2
|
||||
f 52/61/6 49/62/6 50/63/6
|
||||
f 41/64/5 49/65/5 42/66/5
|
||||
f 44/67/4 53/68/4 43/69/4
|
||||
f 46/70/4 56/71/4 45/72/4
|
||||
f 42/66/6 43/69/6 41/64/6
|
||||
f 47/73/5 52/74/5 48/75/5
|
||||
f 56/76/6 53/77/6 54/78/6
|
||||
f 54/79/6 51/80/6 52/74/6
|
||||
f 49/65/6 56/71/6 50/81/6
|
||||
f 48/82/2 50/63/2 46/83/2
|
||||
f 45/84/1 54/78/1 47/85/1
|
||||
f 42/66/1 51/86/1 44/67/1
|
||||
f 43/69/2 55/87/2 41/64/2
|
||||
f 68/88/4 65/89/4 66/90/4
|
||||
f 57/91/6 65/92/6 58/93/6
|
||||
f 60/94/3 69/95/3 59/96/3
|
||||
f 62/97/3 72/98/3 61/99/3
|
||||
f 58/93/4 59/96/4 57/91/4
|
||||
f 63/100/6 68/101/6 64/102/6
|
||||
f 72/103/4 69/104/4 70/105/4
|
||||
f 70/106/4 67/107/4 68/101/4
|
||||
f 65/92/4 72/98/4 66/108/4
|
||||
f 64/109/2 66/90/2 62/110/2
|
||||
f 61/111/1 70/105/1 63/112/1
|
||||
f 58/93/1 67/113/1 60/94/1
|
||||
f 59/96/2 71/114/2 57/91/2
|
||||
f 4/115/3 14/116/3 2/2/3
|
||||
f 13/117/3 8/118/3 6/4/3
|
||||
f 45/119/6 5/120/6 7/121/6
|
||||
f 1/122/6 46/123/6 3/124/6
|
||||
f 45/119/6 3/124/6 46/123/6
|
||||
f 1/122/6 47/125/6 48/126/6
|
||||
f 13/117/3 2/2/3 14/116/3
|
||||
f 15/127/3 4/115/3 8/118/3
|
||||
f 29/128/5 7/129/5 8/130/5
|
||||
f 3/131/5 31/132/5 32/133/5
|
||||
f 3/131/5 30/134/5 4/135/5
|
||||
f 29/128/5 4/135/5 30/134/5
|
||||
f 2/136/4 62/137/4 1/138/4
|
||||
f 63/139/4 2/136/4 6/140/4
|
||||
f 61/141/4 6/140/4 5/142/4
|
||||
f 61/141/4 1/138/4 62/137/4
|
||||
f 101/143/2 116/144/2 100/145/2
|
||||
f 101/146/2 118/147/2 117/148/2
|
||||
f 103/149/2 118/150/2 102/151/2
|
||||
f 104/152/2 119/153/2 103/154/2
|
||||
f 89/155/2 120/156/2 104/157/2
|
||||
f 90/158/2 105/159/2 89/160/2
|
||||
f 91/161/2 106/162/2 90/163/2
|
||||
f 92/164/2 107/165/2 91/166/2
|
||||
f 93/167/2 108/168/2 92/169/2
|
||||
f 94/170/2 109/171/2 93/172/2
|
||||
f 94/173/2 111/174/2 110/175/2
|
||||
f 95/176/2 112/177/2 111/178/2
|
||||
f 96/179/2 113/180/2 112/181/2
|
||||
f 97/182/2 114/183/2 113/184/2
|
||||
f 98/185/2 115/186/2 114/187/2
|
||||
f 100/188/2 115/189/2 99/190/2
|
||||
f 133/191/2 135/192/2 121/193/2
|
||||
f 3/1/1 4/115/1 2/2/1
|
||||
f 6/4/2 8/118/2 7/5/2
|
||||
f 20/7/3 19/32/3 17/8/3
|
||||
f 9/10/4 23/194/4 17/11/4
|
||||
f 12/13/5 19/26/5 21/14/5
|
||||
f 14/16/5 18/27/5 24/17/5
|
||||
f 10/12/3 12/13/3 11/15/3
|
||||
f 15/19/4 22/25/4 20/20/4
|
||||
f 24/22/3 23/33/3 21/23/3
|
||||
f 22/25/3 21/14/3 19/26/3
|
||||
f 17/11/3 23/194/3 24/17/3
|
||||
f 16/28/2 20/7/2 18/9/2
|
||||
f 13/30/1 24/22/1 22/24/1
|
||||
f 10/12/1 17/8/1 19/32/1
|
||||
f 11/15/2 21/23/2 23/33/2
|
||||
f 36/34/5 35/59/5 33/35/5
|
||||
f 25/37/3 39/195/3 33/38/3
|
||||
f 28/40/6 35/53/6 37/41/6
|
||||
f 30/43/6 34/54/6 40/44/6
|
||||
f 26/39/5 28/40/5 27/42/5
|
||||
f 31/46/3 38/52/3 36/47/3
|
||||
f 40/49/5 39/60/5 37/50/5
|
||||
f 38/52/5 37/41/5 35/53/5
|
||||
f 33/38/5 39/195/5 40/44/5
|
||||
f 32/55/2 36/34/2 34/36/2
|
||||
f 29/57/1 40/49/1 38/51/1
|
||||
f 26/39/1 33/35/1 35/59/1
|
||||
f 27/42/2 37/50/2 39/60/2
|
||||
f 52/61/6 51/86/6 49/62/6
|
||||
f 41/64/5 55/196/5 49/65/5
|
||||
f 44/67/4 51/80/4 53/68/4
|
||||
f 46/70/4 50/81/4 56/71/4
|
||||
f 42/66/6 44/67/6 43/69/6
|
||||
f 47/73/5 54/79/5 52/74/5
|
||||
f 56/76/6 55/87/6 53/77/6
|
||||
f 54/79/6 53/68/6 51/80/6
|
||||
f 49/65/6 55/196/6 56/71/6
|
||||
f 48/82/2 52/61/2 50/63/2
|
||||
f 45/84/1 56/76/1 54/78/1
|
||||
f 42/66/1 49/62/1 51/86/1
|
||||
f 43/69/2 53/77/2 55/87/2
|
||||
f 68/88/4 67/113/4 65/89/4
|
||||
f 57/91/6 71/197/6 65/92/6
|
||||
f 60/94/3 67/107/3 69/95/3
|
||||
f 62/97/3 66/108/3 72/98/3
|
||||
f 58/93/4 60/94/4 59/96/4
|
||||
f 63/100/6 70/106/6 68/101/6
|
||||
f 72/103/4 71/114/4 69/104/4
|
||||
f 70/106/4 69/95/4 67/107/4
|
||||
f 65/92/4 71/197/4 72/98/4
|
||||
f 64/109/2 68/88/2 66/90/2
|
||||
f 61/111/1 72/103/1 70/105/1
|
||||
f 58/93/1 65/89/1 67/113/1
|
||||
f 59/96/2 69/104/2 71/114/2
|
||||
f 4/115/3 16/198/3 14/116/3
|
||||
f 13/117/3 15/127/3 8/118/3
|
||||
f 45/119/6 47/125/6 5/120/6
|
||||
f 1/122/6 48/126/6 46/123/6
|
||||
f 45/119/6 7/121/6 3/124/6
|
||||
f 1/122/6 5/120/6 47/125/6
|
||||
f 13/117/3 6/4/3 2/2/3
|
||||
f 15/127/3 16/198/3 4/115/3
|
||||
f 29/128/5 31/132/5 7/129/5
|
||||
f 3/131/5 7/129/5 31/132/5
|
||||
f 3/131/5 32/133/5 30/134/5
|
||||
f 29/128/5 8/130/5 4/135/5
|
||||
f 2/136/4 64/199/4 62/137/4
|
||||
f 63/139/4 64/199/4 2/136/4
|
||||
f 61/141/4 63/139/4 6/140/4
|
||||
f 61/141/4 5/142/4 1/138/4
|
||||
f 101/143/2 117/200/2 116/144/2
|
||||
f 101/146/2 102/201/2 118/147/2
|
||||
f 103/149/2 119/202/2 118/150/2
|
||||
f 104/152/2 120/203/2 119/153/2
|
||||
f 89/155/2 105/204/2 120/156/2
|
||||
f 90/158/2 106/205/2 105/159/2
|
||||
f 91/161/2 107/206/2 106/162/2
|
||||
f 92/164/2 108/207/2 107/165/2
|
||||
f 93/167/2 109/208/2 108/168/2
|
||||
f 94/170/2 110/209/2 109/171/2
|
||||
f 94/173/2 95/210/2 111/174/2
|
||||
f 95/176/2 96/211/2 112/177/2
|
||||
f 96/179/2 97/212/2 113/180/2
|
||||
f 97/182/2 98/213/2 114/183/2
|
||||
f 98/185/2 99/214/2 115/186/2
|
||||
f 100/188/2 116/215/2 115/189/2
|
||||
f 121/193/2 122/216/2 123/217/2
|
||||
f 123/217/2 124/218/2 125/219/2
|
||||
f 125/219/2 126/220/2 127/221/2
|
||||
f 127/221/2 128/222/2 129/223/2
|
||||
f 129/223/2 130/224/2 131/225/2
|
||||
f 131/225/2 132/226/2 133/191/2
|
||||
f 133/191/2 134/227/2 135/192/2
|
||||
f 135/192/2 136/228/2 121/193/2
|
||||
f 121/193/2 123/217/2 125/219/2
|
||||
f 125/219/2 127/221/2 121/193/2
|
||||
f 127/221/2 129/223/2 121/193/2
|
||||
f 129/223/2 131/225/2 121/193/2
|
||||
f 131/225/2 133/191/2 121/193/2
|
||||
s 1
|
||||
f 86/229/7 101/146/8 85/230/8
|
||||
f 87/231/9 102/151/7 86/229/7
|
||||
f 88/232/10 103/154/9 87/231/9
|
||||
f 73/233/11 104/157/10 88/232/10
|
||||
f 74/234/12 89/160/11 73/233/11
|
||||
f 75/235/13 90/163/12 74/234/12
|
||||
f 76/236/14 91/166/13 75/235/13
|
||||
f 77/237/15 92/169/14 76/236/14
|
||||
f 78/238/16 93/172/15 77/239/15
|
||||
f 79/240/17 94/173/16 78/238/16
|
||||
f 80/241/18 95/176/17 79/240/17
|
||||
f 81/242/19 96/179/18 80/241/18
|
||||
f 82/243/20 97/182/19 81/242/19
|
||||
f 83/244/21 98/185/20 82/243/20
|
||||
f 84/245/22 99/190/21 83/244/21
|
||||
f 85/230/8 100/145/22 84/245/22
|
||||
f 115/246/23 130/247/24 114/248/24
|
||||
f 108/249/25 123/250/26 107/251/26
|
||||
f 116/252/27 131/253/23 115/246/23
|
||||
f 109/254/3 124/255/25 108/249/25
|
||||
f 117/256/6 132/257/27 116/252/27
|
||||
f 110/258/28 125/259/3 109/260/3
|
||||
f 118/261/29 133/262/6 117/256/6
|
||||
f 111/263/30 126/264/28 110/258/28
|
||||
f 119/265/31 134/266/29 118/261/29
|
||||
f 112/267/32 127/268/30 111/263/30
|
||||
f 120/269/33 135/270/31 119/265/31
|
||||
f 113/271/5 128/272/32 112/267/32
|
||||
f 106/273/34 121/274/4 105/275/4
|
||||
f 105/275/4 136/276/33 120/269/33
|
||||
f 114/248/24 129/277/5 113/271/5
|
||||
f 107/251/26 122/278/34 106/273/34
|
||||
f 86/229/7 102/201/7 101/146/8
|
||||
f 87/231/9 103/149/9 102/151/7
|
||||
f 88/232/10 104/152/10 103/154/9
|
||||
f 73/233/11 89/155/11 104/157/10
|
||||
f 74/234/12 90/158/12 89/160/11
|
||||
f 75/235/13 91/161/13 90/163/12
|
||||
f 76/236/14 92/164/14 91/166/13
|
||||
f 77/237/15 93/167/15 92/169/14
|
||||
f 78/238/16 94/170/16 93/172/15
|
||||
f 79/240/17 95/210/17 94/173/16
|
||||
f 80/241/18 96/211/18 95/176/17
|
||||
f 81/242/19 97/212/19 96/179/18
|
||||
f 82/243/20 98/213/20 97/182/19
|
||||
f 83/244/21 99/214/21 98/185/20
|
||||
f 84/245/22 100/188/22 99/190/21
|
||||
f 85/230/8 101/143/8 100/145/22
|
||||
f 115/246/23 131/253/23 130/247/24
|
||||
f 108/249/25 124/255/25 123/250/26
|
||||
f 116/252/27 132/257/27 131/253/23
|
||||
f 109/254/3 125/279/3 124/255/25
|
||||
f 117/256/6 133/262/6 132/257/27
|
||||
f 110/258/28 126/264/28 125/259/3
|
||||
f 118/261/29 134/266/29 133/262/6
|
||||
f 111/263/30 127/268/30 126/264/28
|
||||
f 119/265/31 135/270/31 134/266/29
|
||||
f 112/267/32 128/272/32 127/268/30
|
||||
f 120/269/33 136/276/33 135/270/31
|
||||
f 113/271/5 129/277/5 128/272/32
|
||||
f 106/273/34 122/278/34 121/274/4
|
||||
f 105/275/4 121/274/4 136/276/33
|
||||
f 114/248/24 130/247/24 129/277/5
|
||||
f 107/251/26 123/250/26 122/278/34
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 395 B |
|
After Width: | Height: | Size: 389 B |
|
After Width: | Height: | Size: 362 B |
|
After Width: | Height: | Size: 423 B |
|
After Width: | Height: | Size: 517 B |
|
After Width: | Height: | Size: 305 B |
|
After Width: | Height: | Size: 309 B |
|
After Width: | Height: | Size: 326 B |
|
After Width: | Height: | Size: 333 B |
|
Before Width: | Height: | Size: 359 B After Width: | Height: | Size: 273 B |
|
Before Width: | Height: | Size: 372 B After Width: | Height: | Size: 270 B |
BIN
src/main/resources/assets/hbm/textures/items/egg_glyphid.png
Normal file
|
After Width: | Height: | Size: 393 B |
|
After Width: | Height: | Size: 281 B |
BIN
src/main/resources/assets/hbm/textures/items/glyphid_meat.png
Normal file
|
After Width: | Height: | Size: 414 B |
|
After Width: | Height: | Size: 471 B |
|
After Width: | Height: | Size: 4.7 KiB |
BIN
src/main/resources/assets/hbm/textures/models/trinkets/peep.png
Normal file
|
After Width: | Height: | Size: 888 B |