new concrete, sound fixes, additions, slag tap
@ -1,6 +1,6 @@
|
|||||||
mod_version=1.0.27
|
mod_version=1.0.27
|
||||||
# Empty build number makes a release type
|
# Empty build number makes a release type
|
||||||
mod_build_number=4592
|
mod_build_number=4606
|
||||||
|
|
||||||
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
|
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
|
||||||
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\
|
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\
|
||||||
|
|||||||
@ -11,6 +11,8 @@ import com.hbm.blocks.machine.*;
|
|||||||
import com.hbm.blocks.machine.pile.*;
|
import com.hbm.blocks.machine.pile.*;
|
||||||
import com.hbm.blocks.machine.rbmk.*;
|
import com.hbm.blocks.machine.rbmk.*;
|
||||||
import com.hbm.blocks.network.*;
|
import com.hbm.blocks.network.*;
|
||||||
|
import com.hbm.blocks.rail.RailNarrowCurve;
|
||||||
|
import com.hbm.blocks.rail.RailNarrowStraight;
|
||||||
import com.hbm.blocks.rail.RailStandardCurve;
|
import com.hbm.blocks.rail.RailStandardCurve;
|
||||||
import com.hbm.blocks.rail.RailStandardStraight;
|
import com.hbm.blocks.rail.RailStandardStraight;
|
||||||
import com.hbm.blocks.siege.*;
|
import com.hbm.blocks.siege.*;
|
||||||
@ -328,6 +330,7 @@ public class ModBlocks {
|
|||||||
public static Block reinforced_stone;
|
public static Block reinforced_stone;
|
||||||
public static Block concrete_smooth;
|
public static Block concrete_smooth;
|
||||||
public static Block concrete_colored;
|
public static Block concrete_colored;
|
||||||
|
public static Block concrete_colored_ext;
|
||||||
public static Block concrete;
|
public static Block concrete;
|
||||||
public static Block concrete_asbestos;
|
public static Block concrete_asbestos;
|
||||||
public static Block concrete_super;
|
public static Block concrete_super;
|
||||||
@ -664,6 +667,8 @@ public class ModBlocks {
|
|||||||
public static Block foundry_channel;
|
public static Block foundry_channel;
|
||||||
public static Block foundry_tank;
|
public static Block foundry_tank;
|
||||||
public static Block foundry_outlet;
|
public static Block foundry_outlet;
|
||||||
|
public static Block foundry_slagtap;
|
||||||
|
public static Block slag;
|
||||||
|
|
||||||
public static Block machine_difurnace_off;
|
public static Block machine_difurnace_off;
|
||||||
public static Block machine_difurnace_on;
|
public static Block machine_difurnace_on;
|
||||||
@ -1090,6 +1095,8 @@ public class ModBlocks {
|
|||||||
public static Block rail_highspeed;
|
public static Block rail_highspeed;
|
||||||
public static Block rail_booster;
|
public static Block rail_booster;
|
||||||
|
|
||||||
|
public static Block rail_narrow_straight;
|
||||||
|
public static Block rail_narrow_curve;
|
||||||
public static Block rail_large_straight;
|
public static Block rail_large_straight;
|
||||||
public static Block rail_large_curve;
|
public static Block rail_large_curve;
|
||||||
|
|
||||||
@ -1507,6 +1514,7 @@ public class ModBlocks {
|
|||||||
reinforced_stone = new BlockGeneric(Material.rock).setBlockName("reinforced_stone").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(3000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_stone");
|
reinforced_stone = new BlockGeneric(Material.rock).setBlockName("reinforced_stone").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(3000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_stone");
|
||||||
concrete_smooth = new BlockRadResistant(Material.rock).setBlockName("concrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete");
|
concrete_smooth = new BlockRadResistant(Material.rock).setBlockName("concrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete");
|
||||||
concrete_colored = new BlockConcreteColored(Material.rock).setBlockName("concrete_colored").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete");
|
concrete_colored = new BlockConcreteColored(Material.rock).setBlockName("concrete_colored").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete");
|
||||||
|
concrete_colored_ext = new BlockConcreteColoredExt(Material.rock).setBlockName("concrete_colored_ext").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_colored_ext");
|
||||||
concrete = new BlockGeneric(Material.rock).setBlockName("concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_tile");
|
concrete = new BlockGeneric(Material.rock).setBlockName("concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_tile");
|
||||||
concrete_asbestos = new BlockGeneric(Material.rock).setBlockName("concrete_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_asbestos");
|
concrete_asbestos = new BlockGeneric(Material.rock).setBlockName("concrete_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_asbestos");
|
||||||
concrete_super = new BlockUberConcrete().setBlockName("concrete_super").setCreativeTab(MainRegistry.blockTab).setHardness(150.0F).setResistance(10000.0F);
|
concrete_super = new BlockUberConcrete().setBlockName("concrete_super").setCreativeTab(MainRegistry.blockTab).setHardness(150.0F).setResistance(10000.0F);
|
||||||
@ -1780,6 +1788,8 @@ public class ModBlocks {
|
|||||||
foundry_channel = new FoundryChannel().setBlockName("foundry_channel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire");
|
foundry_channel = new FoundryChannel().setBlockName("foundry_channel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire");
|
||||||
foundry_tank = new FoundryTank().setBlockName("foundry_tank").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire");
|
foundry_tank = new FoundryTank().setBlockName("foundry_tank").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire");
|
||||||
foundry_outlet = new FoundryOutlet().setBlockName("foundry_outlet").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire");
|
foundry_outlet = new FoundryOutlet().setBlockName("foundry_outlet").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire");
|
||||||
|
foundry_slagtap = new FoundrySlagtap().setBlockName("foundry_slagtap").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire");
|
||||||
|
slag = new BlockDynamicSlag().setBlockName("slag").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":slag");
|
||||||
|
|
||||||
machine_difurnace_off = new MachineDiFurnace(false).setBlockName("machine_difurnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
machine_difurnace_off = new MachineDiFurnace(false).setBlockName("machine_difurnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||||
machine_difurnace_on = new MachineDiFurnace(true).setBlockName("machine_difurnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F);
|
machine_difurnace_on = new MachineDiFurnace(true).setBlockName("machine_difurnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F);
|
||||||
@ -2113,6 +2123,8 @@ public class ModBlocks {
|
|||||||
rail_narrow = new RailGeneric().setBlockName("rail_narrow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow");
|
rail_narrow = new RailGeneric().setBlockName("rail_narrow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow");
|
||||||
rail_highspeed = new RailGeneric().setMaxSpeed(1F).setFlexible(false).setBlockName("rail_highspeed").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_highspeed");
|
rail_highspeed = new RailGeneric().setMaxSpeed(1F).setFlexible(false).setBlockName("rail_highspeed").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_highspeed");
|
||||||
rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster");
|
rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster");
|
||||||
|
rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
||||||
|
rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
||||||
rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||||
|
|
||||||
@ -2639,6 +2651,7 @@ public class ModBlocks {
|
|||||||
GameRegistry.registerBlock(reinforced_ducrete, ItemBlockBlastInfo.class, reinforced_ducrete.getUnlocalizedName());
|
GameRegistry.registerBlock(reinforced_ducrete, ItemBlockBlastInfo.class, reinforced_ducrete.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(concrete_smooth, ItemBlockBlastInfo.class, concrete_smooth.getUnlocalizedName());
|
GameRegistry.registerBlock(concrete_smooth, ItemBlockBlastInfo.class, concrete_smooth.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(concrete_colored, ItemBlockColoredConcrete.class, concrete_colored.getUnlocalizedName());
|
GameRegistry.registerBlock(concrete_colored, ItemBlockColoredConcrete.class, concrete_colored.getUnlocalizedName());
|
||||||
|
register(concrete_colored_ext);
|
||||||
GameRegistry.registerBlock(concrete, ItemBlockBlastInfo.class, concrete.getUnlocalizedName());
|
GameRegistry.registerBlock(concrete, ItemBlockBlastInfo.class, concrete.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(concrete_asbestos, ItemBlockBlastInfo.class, concrete_asbestos.getUnlocalizedName());
|
GameRegistry.registerBlock(concrete_asbestos, ItemBlockBlastInfo.class, concrete_asbestos.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(concrete_super, ItemBlockBlastInfo.class, concrete_super.getUnlocalizedName());
|
GameRegistry.registerBlock(concrete_super, ItemBlockBlastInfo.class, concrete_super.getUnlocalizedName());
|
||||||
@ -2993,6 +3006,8 @@ public class ModBlocks {
|
|||||||
register(foundry_channel);
|
register(foundry_channel);
|
||||||
register(foundry_tank);
|
register(foundry_tank);
|
||||||
register(foundry_outlet);
|
register(foundry_outlet);
|
||||||
|
register(foundry_slagtap);
|
||||||
|
register(slag);
|
||||||
register(machine_difurnace_off);
|
register(machine_difurnace_off);
|
||||||
register(machine_difurnace_on);
|
register(machine_difurnace_on);
|
||||||
register(machine_difurnace_extension);
|
register(machine_difurnace_extension);
|
||||||
@ -3337,6 +3352,8 @@ public class ModBlocks {
|
|||||||
GameRegistry.registerBlock(rail_narrow, ItemBlockBase.class, rail_narrow.getUnlocalizedName());
|
GameRegistry.registerBlock(rail_narrow, ItemBlockBase.class, rail_narrow.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(rail_highspeed, ItemBlockBase.class, rail_highspeed.getUnlocalizedName());
|
GameRegistry.registerBlock(rail_highspeed, ItemBlockBase.class, rail_highspeed.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(rail_booster, ItemBlockBase.class, rail_booster.getUnlocalizedName());
|
GameRegistry.registerBlock(rail_booster, ItemBlockBase.class, rail_booster.getUnlocalizedName());
|
||||||
|
register(rail_narrow_straight);
|
||||||
|
register(rail_narrow_curve);
|
||||||
register(rail_large_straight);
|
register(rail_large_straight);
|
||||||
register(rail_large_curve);
|
register(rail_large_curve);
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,35 @@
|
|||||||
|
package com.hbm.blocks.generic;
|
||||||
|
|
||||||
|
import com.hbm.blocks.BlockEnumMulti;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
|
||||||
|
public class BlockConcreteColoredExt extends BlockEnumMulti {
|
||||||
|
|
||||||
|
public BlockConcreteColoredExt(Material mat) {
|
||||||
|
super(mat, EnumConcreteType.class, true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public IIcon getIcon(int side, int meta) {
|
||||||
|
|
||||||
|
if(meta == EnumConcreteType.MACHINE_STRIPE.ordinal() && (side == 0 || side == 1)) {
|
||||||
|
return super.getIcon(side, EnumConcreteType.MACHINE.ordinal());
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.getIcon(side, meta);
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum EnumConcreteType {
|
||||||
|
MACHINE,
|
||||||
|
MACHINE_STRIPE,
|
||||||
|
INDIGO,
|
||||||
|
PURPLE,
|
||||||
|
PINK,
|
||||||
|
HAZARD
|
||||||
|
}
|
||||||
|
}
|
||||||
278
src/main/java/com/hbm/blocks/generic/BlockDynamicSlag.java
Normal file
@ -0,0 +1,278 @@
|
|||||||
|
package com.hbm.blocks.generic;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import com.hbm.blocks.ModBlocks;
|
||||||
|
import com.hbm.inventory.material.MaterialShapes;
|
||||||
|
import com.hbm.inventory.material.Mats;
|
||||||
|
import com.hbm.inventory.material.Mats.MaterialStack;
|
||||||
|
import com.hbm.inventory.material.NTMMaterial;
|
||||||
|
import com.hbm.items.machine.ItemScraps;
|
||||||
|
import com.hbm.render.icon.RGBMutatorInterpolatedComponentRemap;
|
||||||
|
import com.hbm.render.icon.TextureAtlasSpriteMutatable;
|
||||||
|
import com.hbm.util.Compat;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import net.minecraft.block.BlockContainer;
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
import net.minecraft.client.renderer.texture.TextureMap;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.network.NetworkManager;
|
||||||
|
import net.minecraft.network.Packet;
|
||||||
|
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
|
||||||
|
import net.minecraft.stats.StatList;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
|
import net.minecraft.world.IBlockAccess;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
public class BlockDynamicSlag extends BlockContainer {
|
||||||
|
|
||||||
|
private HashMap<NTMMaterial, IIcon> iconMap = new HashMap();
|
||||||
|
|
||||||
|
public BlockDynamicSlag() {
|
||||||
|
super(Material.iron);
|
||||||
|
this.useNeighborBrightness = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createNewTileEntity(World world, int meta) {
|
||||||
|
return new TileEntitySlag();
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void registerBlockIcons(IIconRegister reg) {
|
||||||
|
super.registerBlockIcons(reg);
|
||||||
|
|
||||||
|
if(reg instanceof TextureMap) {
|
||||||
|
TextureMap map = (TextureMap) reg;
|
||||||
|
|
||||||
|
for(NTMMaterial mat : Mats.orderedList) {
|
||||||
|
if(mat.solidColorLight != mat.solidColorDark) {
|
||||||
|
String placeholderName = this.getTextureName() + "-" + mat.names[0];
|
||||||
|
TextureAtlasSpriteMutatable mutableIcon = new TextureAtlasSpriteMutatable(placeholderName, new RGBMutatorInterpolatedComponentRemap(0xFFFFFF, 0x505050, mat.solidColorLight, mat.solidColorDark)).setBlockAtlas();
|
||||||
|
map.setTextureEntry(placeholderName, mutableIcon);
|
||||||
|
iconMap.put(mat, mutableIcon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
|
||||||
|
|
||||||
|
TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if(tile != null && tile.mat != null) {
|
||||||
|
IIcon override = iconMap.get(tile.mat);
|
||||||
|
if(override != null) {
|
||||||
|
return override;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.blockIcon;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public int colorMultiplier(IBlockAccess world, int x, int y, int z) {
|
||||||
|
|
||||||
|
TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if(tile != null && tile.mat != null) {
|
||||||
|
if(!iconMap.containsKey(tile.mat)) {
|
||||||
|
return tile.mat.moltenColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0xffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isOpaqueCube() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||||
|
TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z);
|
||||||
|
if(tile != null) {
|
||||||
|
this.setBlockBounds(0F, 0F, 0F, 1F, (float) tile.amount / (float) TileEntitySlag.maxAmount, 1F);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||||
|
TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z);
|
||||||
|
if(tile != null) {
|
||||||
|
this.setBlockBounds(0F, 0F, 0F, 1F, (float) tile.amount / (float) TileEntitySlag.maxAmount, 1F);
|
||||||
|
}
|
||||||
|
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateTick(World world, int x, int y, int z, Random rand) {
|
||||||
|
|
||||||
|
TileEntity s = Compat.getTileStandard(world, x, y, z);
|
||||||
|
TileEntity b = Compat.getTileStandard(world, x, y - 1, z);
|
||||||
|
|
||||||
|
/* Error here, delete the block */
|
||||||
|
if(s == null || !(s instanceof TileEntitySlag)) {
|
||||||
|
world.setBlockToAir(x, y, z);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
TileEntitySlag self = (TileEntitySlag) s;
|
||||||
|
|
||||||
|
/* Flow down */
|
||||||
|
if(world.getBlock(x, y - 1, z).isReplaceable(world, x, y - 1, z)) {
|
||||||
|
world.setBlock(x, y - 1, z, ModBlocks.slag);
|
||||||
|
TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, x, y - 1, z);
|
||||||
|
tile.mat = self.mat;
|
||||||
|
tile.amount = self.amount;
|
||||||
|
world.markBlockForUpdate(x, y - 1, z);
|
||||||
|
world.setBlockToAir(x, y, z);
|
||||||
|
return;
|
||||||
|
} else if(b instanceof TileEntitySlag) {
|
||||||
|
|
||||||
|
TileEntitySlag below = (TileEntitySlag) b;
|
||||||
|
|
||||||
|
if(below.mat == self.mat && below.amount < TileEntitySlag.maxAmount) {
|
||||||
|
int transfer = Math.min(TileEntitySlag.maxAmount - below.amount, self.amount);
|
||||||
|
below.amount += transfer;
|
||||||
|
self.amount -= transfer;
|
||||||
|
|
||||||
|
if(self.amount <= 0){
|
||||||
|
world.setBlockToAir(x, y, z);
|
||||||
|
} else {
|
||||||
|
world.markBlockForUpdate(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
world.markBlockForUpdate(x, y - 1, z);
|
||||||
|
world.scheduleBlockUpdate(x, y - 1, z, ModBlocks.slag, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Flow sideways, no neighbors */
|
||||||
|
ForgeDirection[] sides = new ForgeDirection[] { ForgeDirection.NORTH, ForgeDirection.SOUTH, ForgeDirection.EAST, ForgeDirection.WEST };
|
||||||
|
int count = 0;
|
||||||
|
for(ForgeDirection dir : sides) {
|
||||||
|
int iX = x + dir.offsetX;
|
||||||
|
int iZ = z + dir.offsetZ;
|
||||||
|
|
||||||
|
if(world.getBlock(iX, y, iZ).isReplaceable(world, iX, y, iZ)) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(self.amount >= self.maxAmount / 5 && count > 0) {
|
||||||
|
int toSpread = Math.max(self.amount / (count * 2), 1);
|
||||||
|
|
||||||
|
for(ForgeDirection dir : sides) {
|
||||||
|
int iX = x + dir.offsetX;
|
||||||
|
int iZ = z + dir.offsetZ;
|
||||||
|
|
||||||
|
if(world.getBlock(iX, y, iZ).isReplaceable(world, iX, y, iZ)) {
|
||||||
|
world.setBlock(iX, y, iZ, ModBlocks.slag);
|
||||||
|
TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, iX, y, iZ);
|
||||||
|
world.markBlockForUpdate(iX, y, iZ);
|
||||||
|
world.scheduleBlockUpdate(iX, y, iZ, ModBlocks.slag, 1);
|
||||||
|
tile.mat = self.mat;
|
||||||
|
tile.amount = toSpread;
|
||||||
|
self.amount -= toSpread;
|
||||||
|
world.markBlockForUpdate(x, y, z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) {
|
||||||
|
|
||||||
|
if(!player.capabilities.isCreativeMode) {
|
||||||
|
harvesters.set(player);
|
||||||
|
this.dropBlockAsItem(world, x, y, z, meta, 0);
|
||||||
|
harvesters.set(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) {
|
||||||
|
player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1);
|
||||||
|
player.addExhaustion(0.025F);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
|
||||||
|
ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
|
||||||
|
|
||||||
|
TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if(tile != null && tile.mat != null && tile.amount > 0) {
|
||||||
|
ret.add(ItemScraps.create(new MaterialStack(tile.mat, tile.amount)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) {
|
||||||
|
|
||||||
|
TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if(tile != null) {
|
||||||
|
return ItemScraps.create(new MaterialStack(tile.mat, tile.amount));
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.getPickBlock(target, world, x, y, z, player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class TileEntitySlag extends TileEntity {
|
||||||
|
|
||||||
|
public NTMMaterial mat;
|
||||||
|
public int amount;
|
||||||
|
public static int maxAmount = MaterialShapes.BLOCK.q(16);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canUpdate() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Packet getDescriptionPacket() {
|
||||||
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
|
this.writeToNBT(nbt);
|
||||||
|
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
|
||||||
|
this.readFromNBT(pkt.func_148857_g());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromNBT(NBTTagCompound nbt) {
|
||||||
|
super.readFromNBT(nbt);
|
||||||
|
this.mat = Mats.matById.get(nbt.getInteger("mat"));
|
||||||
|
this.amount = nbt.getInteger("amount");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNBT(NBTTagCompound nbt) {
|
||||||
|
super.writeToNBT(nbt);
|
||||||
|
if(this.mat != null) nbt.setInteger("mat", this.mat.id);
|
||||||
|
nbt.setInteger("amount", this.amount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -131,7 +131,7 @@ public class FoundryChannel extends BlockContainer implements ICrucibleAcceptor
|
|||||||
if(b == ModBlocks.foundry_outlet && meta == dir.ordinal())
|
if(b == ModBlocks.foundry_outlet && meta == dir.ordinal())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return b == ModBlocks.foundry_channel || b == ModBlocks.foundry_mold;
|
return b == ModBlocks.foundry_channel || b == ModBlocks.foundry_mold || b == ModBlocks.foundry_slagtap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
||||||
|
|||||||
@ -167,12 +167,12 @@ public class FoundryOutlet extends BlockContainer implements ICrucibleAcceptor,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) {
|
public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) {
|
||||||
return ((TileEntityFoundryOutlet) world.getTileEntity(x, y, z)).canAcceptPartialFlow(world, x, y, z, side, stack);
|
return ((ICrucibleAcceptor) world.getTileEntity(x, y, z)).canAcceptPartialFlow(world, x, y, z, side, stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) {
|
public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) {
|
||||||
return ((TileEntityFoundryOutlet) world.getTileEntity(x, y, z)).flow(world, x, y, z, side, stack);
|
return ((ICrucibleAcceptor) world.getTileEntity(x, y, z)).flow(world, x, y, z, side, stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
||||||
|
|||||||
35
src/main/java/com/hbm/blocks/machine/FoundrySlagtap.java
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
package com.hbm.blocks.machine;
|
||||||
|
|
||||||
|
import com.hbm.lib.RefStrings;
|
||||||
|
import com.hbm.tileentity.machine.TileEntityFoundrySlagtap;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||||
|
|
||||||
|
public class FoundrySlagtap extends FoundryOutlet {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||||
|
super.registerBlockIcons(iconRegister);
|
||||||
|
this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_top");
|
||||||
|
this.iconSide = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_side");
|
||||||
|
this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_bottom");
|
||||||
|
this.iconInner = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_inner");
|
||||||
|
this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_front");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createNewTileEntity(World world, int meta) {
|
||||||
|
return new TileEntityFoundrySlagtap();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { return false; }
|
||||||
|
@Override public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { return false; }
|
||||||
|
@Override public void printHook(Pre event, World world, int x, int y, int z) { }
|
||||||
|
}
|
||||||
@ -25,7 +25,8 @@ public interface IRailNTM {
|
|||||||
public TrackGauge getGauge(World world, int x, int y, int z);
|
public TrackGauge getGauge(World world, int x, int y, int z);
|
||||||
|
|
||||||
public static enum TrackGauge {
|
public static enum TrackGauge {
|
||||||
STANDARD //roughly 1.5m
|
STANDARD, //roughly 1.5m
|
||||||
|
NARROW //roughly 0.75m
|
||||||
}
|
}
|
||||||
|
|
||||||
/** A wrapper for all relevant info required when leaving a rail */
|
/** A wrapper for all relevant info required when leaving a rail */
|
||||||
|
|||||||
144
src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
package com.hbm.blocks.rail;
|
||||||
|
|
||||||
|
import com.hbm.blocks.BlockDummyable;
|
||||||
|
import com.hbm.lib.Library;
|
||||||
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||||
|
|
||||||
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
|
import net.minecraft.util.Vec3;
|
||||||
|
import net.minecraft.world.IBlockAccess;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
public class RailNarrowCurve extends BlockDummyable implements IRailNTM {
|
||||||
|
|
||||||
|
public RailNarrowCurve() {
|
||||||
|
super(Material.iron);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRenderType() {
|
||||||
|
return renderID;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) {
|
||||||
|
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) {
|
||||||
|
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Very simple function determining the snapping position and adding the motion value to it, if desired. */
|
||||||
|
public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) {
|
||||||
|
int[] pos = this.findCore(world, x, y, z);
|
||||||
|
if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ);
|
||||||
|
int cX = pos[0];
|
||||||
|
int cY = pos[1];
|
||||||
|
int cZ = pos[2];
|
||||||
|
int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset;
|
||||||
|
ForgeDirection dir = ForgeDirection.getOrientation(meta);
|
||||||
|
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||||
|
|
||||||
|
double turnRadius = 4.5D;
|
||||||
|
|
||||||
|
Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ);
|
||||||
|
double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * turnRadius;
|
||||||
|
double axisZ = cZ + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * turnRadius;
|
||||||
|
|
||||||
|
Vec3 dist = Vec3.createVectorHelper(vec.xCoord - axisX, 0, vec.zCoord - axisZ);
|
||||||
|
dist = dist.normalize();
|
||||||
|
dist.xCoord *= turnRadius;
|
||||||
|
dist.zCoord *= turnRadius;
|
||||||
|
|
||||||
|
double moveAngle = Math.atan2(motionX, motionZ) * 180D / Math.PI + 90;
|
||||||
|
|
||||||
|
if(speed == 0) {
|
||||||
|
info.dist(0).pos(new BlockPos(x, y, z)).yaw((float) moveAngle);
|
||||||
|
return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord);
|
||||||
|
}
|
||||||
|
|
||||||
|
double angleDeg = Math.atan2(dist.xCoord, dist.zCoord) * 180D / Math.PI + 90;
|
||||||
|
if(dir == Library.NEG_X) angleDeg -= 90;
|
||||||
|
if(dir == Library.POS_X) angleDeg += 90;
|
||||||
|
if(dir == Library.POS_Z) angleDeg += 180;
|
||||||
|
angleDeg = MathHelper.wrapAngleTo180_double(angleDeg);
|
||||||
|
double length90Deg = turnRadius * Math.PI / 2D;
|
||||||
|
double angularChange = speed / length90Deg * 90D;
|
||||||
|
|
||||||
|
ForgeDirection moveDir = ForgeDirection.UNKNOWN;
|
||||||
|
|
||||||
|
if(Math.abs(motionX) > Math.abs(motionZ)) {
|
||||||
|
moveDir = motionX > 0 ? Library.POS_X : Library.NEG_X;
|
||||||
|
} else {
|
||||||
|
moveDir = motionZ > 0 ? Library.POS_Z : Library.NEG_Z;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(moveDir == dir || moveDir == rot.getOpposite()) {
|
||||||
|
angularChange *= -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
double effAngle = angleDeg + angularChange;
|
||||||
|
moveAngle += angularChange;
|
||||||
|
|
||||||
|
if(effAngle > 90) {
|
||||||
|
double angleOvershoot = effAngle - 90D;
|
||||||
|
moveAngle -= angleOvershoot;
|
||||||
|
double lengthOvershoot = angleOvershoot * length90Deg / 90D;
|
||||||
|
info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)).yaw((float) moveAngle);
|
||||||
|
return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y, axisZ - dir.offsetZ * turnRadius);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(effAngle < 0) {
|
||||||
|
double angleOvershoot = -effAngle;
|
||||||
|
moveAngle -= angleOvershoot;
|
||||||
|
double lengthOvershoot = angleOvershoot * length90Deg / 90D;
|
||||||
|
info.dist(-lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)).yaw((float) moveAngle);
|
||||||
|
return Vec3.createVectorHelper(axisX - rot.offsetX * turnRadius, y, axisZ -rot.offsetZ * turnRadius);
|
||||||
|
}
|
||||||
|
|
||||||
|
double radianChange = angularChange * Math.PI / 180D;
|
||||||
|
dist.rotateAroundY((float) radianChange);
|
||||||
|
|
||||||
|
return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TrackGauge getGauge(World world, int x, int y, int z) {
|
||||||
|
return TrackGauge.NARROW;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getDimensions() {
|
||||||
|
return new int[] {0, 0, 4, 0, 4, 0};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getOffset() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||||
|
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||||
|
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
|
||||||
|
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||||
|
}
|
||||||
|
}
|
||||||
115
src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
package com.hbm.blocks.rail;
|
||||||
|
|
||||||
|
import com.hbm.blocks.BlockDummyable;
|
||||||
|
import com.hbm.lib.Library;
|
||||||
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||||
|
|
||||||
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
|
import net.minecraft.util.Vec3;
|
||||||
|
import net.minecraft.world.IBlockAccess;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
public class RailNarrowStraight extends BlockDummyable implements IRailNTM {
|
||||||
|
|
||||||
|
public RailNarrowStraight() {
|
||||||
|
super(Material.iron);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createNewTileEntity(World world, int meta) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRenderType() {
|
||||||
|
return renderID;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getDimensions() {
|
||||||
|
return new int[] {0, 0, 2, 2, 0, 0};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getOffset() {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||||
|
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||||
|
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
|
||||||
|
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) {
|
||||||
|
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) {
|
||||||
|
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Very simple function determining the snapping position and adding the motion value to it, if desired. */
|
||||||
|
public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) {
|
||||||
|
int[] pos = this.findCore(world, x, y, z);
|
||||||
|
if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ);
|
||||||
|
int cX = pos[0];
|
||||||
|
int cY = pos[1];
|
||||||
|
int cZ = pos[2];
|
||||||
|
int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset;
|
||||||
|
ForgeDirection dir = ForgeDirection.getOrientation(meta);
|
||||||
|
|
||||||
|
Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ);
|
||||||
|
|
||||||
|
if(dir == Library.POS_X || dir == Library.NEG_X) {
|
||||||
|
double targetX = trainX;
|
||||||
|
if(motionX > 0) {
|
||||||
|
targetX += speed;
|
||||||
|
info.yaw(-90F);
|
||||||
|
} else {
|
||||||
|
targetX -= speed;
|
||||||
|
info.yaw(90F);
|
||||||
|
}
|
||||||
|
vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3);
|
||||||
|
vec.yCoord = y;
|
||||||
|
vec.zCoord = cZ + 0.5;
|
||||||
|
info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed));
|
||||||
|
info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), y, cZ));
|
||||||
|
} else {
|
||||||
|
double targetZ = trainZ;
|
||||||
|
if(motionZ > 0) {
|
||||||
|
targetZ += speed;
|
||||||
|
info.yaw(0F);
|
||||||
|
} else {
|
||||||
|
targetZ -= speed;
|
||||||
|
info.yaw(180F);
|
||||||
|
}
|
||||||
|
vec.xCoord = cX + 0.5;
|
||||||
|
vec.yCoord = y;
|
||||||
|
vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3);
|
||||||
|
info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed));
|
||||||
|
info.pos(new BlockPos(cX, y, cZ + (motionZ * speed > 0 ? 3 : -3)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return vec;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TrackGauge getGauge(World world, int x, int y, int z) {
|
||||||
|
return TrackGauge.NARROW;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -50,11 +50,12 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM {
|
|||||||
ForgeDirection dir = ForgeDirection.getOrientation(meta);
|
ForgeDirection dir = ForgeDirection.getOrientation(meta);
|
||||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||||
|
|
||||||
double turnRadius = 4.5D;
|
double turnRadius = 4D;
|
||||||
|
double axisDist = 4.5D;
|
||||||
|
|
||||||
Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ);
|
Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ);
|
||||||
double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * turnRadius;
|
double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * axisDist;
|
||||||
double axisZ = cZ + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * turnRadius;
|
double axisZ = cZ + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * axisDist;
|
||||||
|
|
||||||
Vec3 dist = Vec3.createVectorHelper(vec.xCoord - axisX, 0, vec.zCoord - axisZ);
|
Vec3 dist = Vec3.createVectorHelper(vec.xCoord - axisX, 0, vec.zCoord - axisZ);
|
||||||
dist = dist.normalize();
|
dist = dist.normalize();
|
||||||
|
|||||||
@ -31,7 +31,7 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] getDimensions() {
|
public int[] getDimensions() {
|
||||||
return new int[] {0, 0, 2, 2, 0, 0};
|
return new int[] {0, 0, 2, 2, 1, 0};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -69,6 +69,7 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM {
|
|||||||
int cZ = pos[2];
|
int cZ = pos[2];
|
||||||
int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset;
|
int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset;
|
||||||
ForgeDirection dir = ForgeDirection.getOrientation(meta);
|
ForgeDirection dir = ForgeDirection.getOrientation(meta);
|
||||||
|
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||||
|
|
||||||
Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ);
|
Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ);
|
||||||
|
|
||||||
@ -87,7 +88,7 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM {
|
|||||||
}
|
}
|
||||||
vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3);
|
vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3);
|
||||||
vec.yCoord = y;
|
vec.yCoord = y;
|
||||||
vec.zCoord = cZ + 0.5;
|
vec.zCoord = cZ + 0.5 + rot.offsetZ * 0.5;
|
||||||
info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed));
|
info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed));
|
||||||
info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), y, cZ));
|
info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), y, cZ));
|
||||||
} else {
|
} else {
|
||||||
@ -99,7 +100,7 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM {
|
|||||||
targetZ -= speed;
|
targetZ -= speed;
|
||||||
info.yaw(180F);
|
info.yaw(180F);
|
||||||
}
|
}
|
||||||
vec.xCoord = cX + 0.5;
|
vec.xCoord = cX + 0.5 + rot.offsetX * 0.5;
|
||||||
vec.yCoord = y;
|
vec.yCoord = y;
|
||||||
vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3);
|
vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3);
|
||||||
info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed));
|
info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed));
|
||||||
|
|||||||
@ -452,6 +452,7 @@ public class OreDictManager {
|
|||||||
ANY_HIGHEXPLOSIVE .ingot(ball_tnt).ingot(ball_tatb);
|
ANY_HIGHEXPLOSIVE .ingot(ball_tnt).ingot(ball_tatb);
|
||||||
ANY_CONCRETE .any(concrete, concrete_smooth, concrete_asbestos, ducrete, ducrete_smooth);
|
ANY_CONCRETE .any(concrete, concrete_smooth, concrete_asbestos, ducrete, ducrete_smooth);
|
||||||
for(int i = 0; i < 16; i++) { ANY_CONCRETE.any(new ItemStack(ModBlocks.concrete_colored, 1, i)); }
|
for(int i = 0; i < 16; i++) { ANY_CONCRETE.any(new ItemStack(ModBlocks.concrete_colored, 1, i)); }
|
||||||
|
for(int i = 0; i < 16; i++) { ANY_CONCRETE.any(new ItemStack(ModBlocks.concrete_colored_ext, 1, i)); }
|
||||||
ANY_COKE .gem(fromAll(coke, EnumCokeType.class)).block(fromAll(block_coke, EnumCokeType.class));
|
ANY_COKE .gem(fromAll(coke, EnumCokeType.class)).block(fromAll(block_coke, EnumCokeType.class));
|
||||||
ANY_BISMOID .ingot(ingot_bismuth, ingot_arsenic).nugget(nugget_bismuth, nugget_arsenic).block(block_bismuth);
|
ANY_BISMOID .ingot(ingot_bismuth, ingot_arsenic).nugget(nugget_bismuth, nugget_arsenic).block(block_bismuth);
|
||||||
|
|
||||||
|
|||||||
@ -229,14 +229,11 @@ public class ChemplantRecipes extends SerializableRecipe {
|
|||||||
.outputFluids(new FluidStack(Fluids.XENON, 50)));
|
.outputFluids(new FluidStack(Fluids.XENON, 50)));
|
||||||
recipes.add(new ChemRecipe(61, "SATURN", 60)
|
recipes.add(new ChemRecipe(61, "SATURN", 60)
|
||||||
.inputItems(
|
.inputItems(
|
||||||
new ComparableStack(ModItems.powder_dura_steel),
|
new OreDictStack(DURA.dust(), 2),
|
||||||
new OreDictStack(P_RED.dust()))
|
new OreDictStack(CU.dust(), 1),
|
||||||
.inputFluids(
|
new OreDictStack(COAL.dust(), 1))
|
||||||
new FluidStack(Fluids.ACID, 100),
|
.inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100))
|
||||||
(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ?
|
.outputItems(new ItemStack(ModItems.ingot_saturnite, 4)));
|
||||||
new FluidStack(Fluids.WATER, 200) :
|
|
||||||
new FluidStack(Fluids.MERCURY, 50))
|
|
||||||
.outputItems(new ItemStack(ModItems.ingot_saturnite, 2)));
|
|
||||||
recipes.add(new ChemRecipe(62, "BALEFIRE", 100)
|
recipes.add(new ChemRecipe(62, "BALEFIRE", 100)
|
||||||
.inputItems(new ComparableStack(ModItems.egg_balefire_shard))
|
.inputItems(new ComparableStack(ModItems.egg_balefire_shard))
|
||||||
.inputFluids(new FluidStack(Fluids.KEROSENE, 6000))
|
.inputFluids(new FluidStack(Fluids.KEROSENE, 6000))
|
||||||
|
|||||||
@ -99,7 +99,7 @@ public class ItemAutogen extends Item {
|
|||||||
NTMMaterial mat = Mats.matById.get(stack.getItemDamage());
|
NTMMaterial mat = Mats.matById.get(stack.getItemDamage());
|
||||||
|
|
||||||
if(mat != null) {
|
if(mat != null) {
|
||||||
return mat.solidColorLight;
|
return mat.moltenColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0xffffff;
|
return 0xffffff;
|
||||||
|
|||||||
@ -59,7 +59,7 @@ public class ItemGunGauss extends ItemGunBase {
|
|||||||
public void startActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) {
|
public void startActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) {
|
||||||
|
|
||||||
if(!main && getItemWear(stack) < mainConfig.durability && player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) {
|
if(!main && getItemWear(stack) < mainConfig.durability && player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) {
|
||||||
chargeLoop = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, 1.0F, 0.75F);
|
chargeLoop = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, 1.0F, 5F, 0.75F);
|
||||||
world.playSoundAtEntity(player, "hbm:weapon.tauChargeLoop2", 1.0F, 0.75F);
|
world.playSoundAtEntity(player, "hbm:weapon.tauChargeLoop2", 1.0F, 0.75F);
|
||||||
|
|
||||||
if(chargeLoop != null) {
|
if(chargeLoop != null) {
|
||||||
@ -120,7 +120,7 @@ public class ItemGunGauss extends ItemGunBase {
|
|||||||
|
|
||||||
public AudioWrapper rebootAudio(AudioWrapper wrapper, EntityPlayer player) {
|
public AudioWrapper rebootAudio(AudioWrapper wrapper, EntityPlayer player) {
|
||||||
wrapper.stopSound();
|
wrapper.stopSound();
|
||||||
AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, wrapper.getVolume(), wrapper.getPitch());
|
AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, wrapper.getVolume(), wrapper.getRange(), wrapper.getPitch());
|
||||||
audio.startSound();
|
audio.startSound();
|
||||||
return audio;
|
return audio;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package com.hbm.lib;
|
|||||||
public class RefStrings {
|
public class RefStrings {
|
||||||
public static final String MODID = "hbm";
|
public static final String MODID = "hbm";
|
||||||
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
||||||
public static final String VERSION = "1.0.27 BETA (4592)";
|
public static final String VERSION = "1.0.27 BETA (4606)";
|
||||||
//HBM's Beta Naming Convention:
|
//HBM's Beta Naming Convention:
|
||||||
//V T (X)
|
//V T (X)
|
||||||
//V -> next release version
|
//V -> next release version
|
||||||
|
|||||||
@ -783,6 +783,9 @@ public class ClientProxy extends ServerProxy {
|
|||||||
RenderingRegistry.registerBlockHandler(new RenderFoundryTank());
|
RenderingRegistry.registerBlockHandler(new RenderFoundryTank());
|
||||||
RenderingRegistry.registerBlockHandler(new RenderFoundryOutlet());
|
RenderingRegistry.registerBlockHandler(new RenderFoundryOutlet());
|
||||||
|
|
||||||
|
RenderingRegistry.registerBlockHandler(new RenderNarrowStraightRail());
|
||||||
|
RenderingRegistry.registerBlockHandler(new RenderNarrowCurveRail());
|
||||||
|
|
||||||
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite));
|
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite));
|
||||||
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4));
|
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4));
|
||||||
|
|
||||||
@ -1875,13 +1878,23 @@ public class ClientProxy extends ServerProxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch) {
|
public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch) {
|
||||||
|
|
||||||
AudioWrapperClient audio = new AudioWrapperClient(new ResourceLocation(sound));
|
AudioWrapperClient audio = new AudioWrapperClient(new ResourceLocation(sound));
|
||||||
audio.updatePosition(x, y, z);
|
audio.updatePosition(x, y, z);
|
||||||
|
audio.updateVolume(volume);
|
||||||
|
audio.updateRange(range);
|
||||||
return audio;
|
return audio;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch, int keepAlive) {
|
||||||
|
AudioWrapper audio = getLoopedSound(sound, x, y, z, volume, range, pitch);
|
||||||
|
audio.setKeepAlive(keepAlive);
|
||||||
|
return audio;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Only used for doors */
|
||||||
@Override
|
@Override
|
||||||
public AudioWrapper getLoopedSoundStartStop(World world, String sound, String start, String stop, float x, float y, float z, float volume, float pitch) {
|
public AudioWrapper getLoopedSoundStartStop(World world, String sound, String start, String stop, float x, float y, float z, float volume, float pitch) {
|
||||||
AudioWrapperClientStartStop audio = new AudioWrapperClientStartStop(world, sound == null ? null : new ResourceLocation(sound), start, stop, volume * 5);
|
AudioWrapperClientStartStop audio = new AudioWrapperClientStartStop(world, sound == null ? null : new ResourceLocation(sound), start, stop, volume * 5);
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import com.hbm.blocks.BlockEnums.DecoCabinetEnum;
|
import com.hbm.blocks.BlockEnums.DecoCabinetEnum;
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
|
import com.hbm.blocks.generic.BlockConcreteColoredExt.EnumConcreteType;
|
||||||
import com.hbm.blocks.generic.BlockGenericStairs;
|
import com.hbm.blocks.generic.BlockGenericStairs;
|
||||||
import com.hbm.blocks.generic.BlockMultiSlab;
|
import com.hbm.blocks.generic.BlockMultiSlab;
|
||||||
import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType;
|
import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType;
|
||||||
@ -406,9 +407,16 @@ public class CraftingManager {
|
|||||||
for(int i = 0; i < 16; i++) {
|
for(int i = 0; i < 16; i++) {
|
||||||
String dyeName = "dye" + dyes[15 - i];
|
String dyeName = "dye" + dyes[15 - i];
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.concrete_colored, 8, i), new Object[] { "CCC", "CDC", "CCC", 'C', ModBlocks.concrete_smooth, 'D', dyeName });
|
addRecipeAuto(new ItemStack(ModBlocks.concrete_colored, 8, i), new Object[] { "CCC", "CDC", "CCC", 'C', ModBlocks.concrete_smooth, 'D', dyeName });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.concrete_colored, 8, i), new Object[] { "CCC", "CDC", "CCC", 'C', ModBlocks.concrete_colored, 'D', dyeName });
|
|
||||||
}
|
}
|
||||||
addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { ModBlocks.concrete_colored });
|
addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { ModBlocks.concrete_colored });
|
||||||
|
addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { ModBlocks.concrete_colored_ext });
|
||||||
|
|
||||||
|
addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_GRAY });
|
||||||
|
addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE_STRIPE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_BLACK });
|
||||||
|
addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.INDIGO.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BLUE, '2', KEY_PURPLE });
|
||||||
|
addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.PURPLE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_PURPLE, '2', KEY_PURPLE });
|
||||||
|
addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.PINK.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_PINK, '2', KEY_RED });
|
||||||
|
addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.HAZARD.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_YELLOW, '2', KEY_BLACK });
|
||||||
|
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.gneiss_tile, 4), new Object[] { "CC", "CC", 'C', ModBlocks.stone_gneiss });
|
addRecipeAuto(new ItemStack(ModBlocks.gneiss_tile, 4), new Object[] { "CC", "CC", 'C', ModBlocks.stone_gneiss });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.gneiss_brick, 4), new Object[] { "CC", "CC", 'C', ModBlocks.gneiss_tile });
|
addRecipeAuto(new ItemStack(ModBlocks.gneiss_brick, 4), new Object[] { "CC", "CC", 'C', ModBlocks.gneiss_tile });
|
||||||
@ -961,6 +969,7 @@ public class CraftingManager {
|
|||||||
addRecipeAuto(new ItemStack(ModBlocks.foundry_channel, 4), new Object[] { "B B", " S ", 'B', ModItems.ingot_firebrick, 'S', Blocks.stone_slab });
|
addRecipeAuto(new ItemStack(ModBlocks.foundry_channel, 4), new Object[] { "B B", " S ", 'B', ModItems.ingot_firebrick, 'S', Blocks.stone_slab });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.foundry_tank), new Object[] { "B B", "I I", "BSB", 'B', ModItems.ingot_firebrick, 'I', STEEL.ingot(), 'S', Blocks.stone_slab });
|
addRecipeAuto(new ItemStack(ModBlocks.foundry_tank), new Object[] { "B B", "I I", "BSB", 'B', ModItems.ingot_firebrick, 'I', STEEL.ingot(), 'S', Blocks.stone_slab });
|
||||||
addShapelessAuto(new ItemStack(ModBlocks.foundry_outlet), new Object[] { ModBlocks.foundry_channel, STEEL.plate() });
|
addShapelessAuto(new ItemStack(ModBlocks.foundry_outlet), new Object[] { ModBlocks.foundry_channel, STEEL.plate() });
|
||||||
|
addShapelessAuto(new ItemStack(ModBlocks.foundry_slagtap), new Object[] { ModBlocks.foundry_channel, Blocks.stonebrick });
|
||||||
addRecipeAuto(new ItemStack(ModItems.mold_base), new Object[] { " B ", "BIB", " B ", 'B', ModItems.ingot_firebrick, 'I', IRON.ingot() });
|
addRecipeAuto(new ItemStack(ModItems.mold_base), new Object[] { " B ", "BIB", " B ", 'B', ModItems.ingot_firebrick, 'I', IRON.ingot() });
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.brick_fire), new Object[] { "BB", "BB", 'B', ModItems.ingot_firebrick });
|
addRecipeAuto(new ItemStack(ModBlocks.brick_fire), new Object[] { "BB", "BB", 'B', ModItems.ingot_firebrick });
|
||||||
addShapelessAuto(new ItemStack(ModItems.ingot_firebrick, 4), new Object[] { ModBlocks.brick_fire });
|
addShapelessAuto(new ItemStack(ModItems.ingot_firebrick, 4), new Object[] { ModBlocks.brick_fire });
|
||||||
|
|||||||
@ -129,7 +129,7 @@ public class ResourceManager {
|
|||||||
public static final IModelCustom assemfac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/assemfac.obj"));
|
public static final IModelCustom assemfac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/assemfac.obj"));
|
||||||
|
|
||||||
//Chemplant
|
//Chemplant
|
||||||
public static final IModelCustom chemplant_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_body.obj"));
|
public static final IModelCustom chemplant_body = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_body.obj"));
|
||||||
public static final IModelCustom chemplant_spinner = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_spinner.obj"));
|
public static final IModelCustom chemplant_spinner = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_spinner.obj"));
|
||||||
public static final IModelCustom chemplant_piston = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_piston.obj"));
|
public static final IModelCustom chemplant_piston = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_piston.obj"));
|
||||||
public static final IModelCustom chemplant_fluid = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_fluid.hmf"));
|
public static final IModelCustom chemplant_fluid = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_fluid.hmf"));
|
||||||
@ -1327,6 +1327,8 @@ public class ResourceManager {
|
|||||||
public static final IModelCustom pipe_neo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/pipe_neo.obj"));
|
public static final IModelCustom pipe_neo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/pipe_neo.obj"));
|
||||||
public static final IModelCustom difurnace_extension = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/difurnace_extension.obj"));
|
public static final IModelCustom difurnace_extension = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/difurnace_extension.obj"));
|
||||||
public static final IModelCustom splitter = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/splitter.obj"));
|
public static final IModelCustom splitter = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/splitter.obj"));
|
||||||
|
public static final IModelCustom rail_narrow_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow.obj"));
|
||||||
|
public static final IModelCustom rail_narrow_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow_bend.obj"));
|
||||||
|
|
||||||
public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj"));
|
public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj"));
|
||||||
public static final IModelCustom charge_c4 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_c4.obj"));
|
public static final IModelCustom charge_c4 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_c4.obj"));
|
||||||
|
|||||||
@ -41,7 +41,8 @@ public class ServerProxy {
|
|||||||
|
|
||||||
public void registerMissileItems() { }
|
public void registerMissileItems() { }
|
||||||
|
|
||||||
public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch) { return null; }
|
public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch) { return null; }
|
||||||
|
public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch, int keepAlive) { return null; }
|
||||||
public AudioWrapper getLoopedSoundStartStop(World world, String sound, String start, String stop, float x, float y, float z, float volume, float pitch) { return null; }
|
public AudioWrapper getLoopedSoundStartStop(World world, String sound, String start, String stop, float x, float y, float z, float volume, float pitch) { return null; }
|
||||||
|
|
||||||
public void playSound(String sound, Object data) { }
|
public void playSound(String sound, Object data) { }
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import net.minecraft.block.Block;
|
|||||||
import net.minecraft.client.renderer.EntityRenderer;
|
import net.minecraft.client.renderer.EntityRenderer;
|
||||||
import net.minecraft.client.renderer.RenderBlocks;
|
import net.minecraft.client.renderer.RenderBlocks;
|
||||||
import net.minecraft.client.renderer.Tessellator;
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
|
|
||||||
public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler {
|
public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler {
|
||||||
@ -82,7 +83,8 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler {
|
|||||||
|
|
||||||
FoundryOutlet outlet = (FoundryOutlet) block;
|
FoundryOutlet outlet = (FoundryOutlet) block;
|
||||||
int meta = world.getBlockMetadata(x, y, z);
|
int meta = world.getBlockMetadata(x, y, z);
|
||||||
TileEntityFoundryOutlet tile = (TileEntityFoundryOutlet) world.getTileEntity(x, y, z);
|
TileEntity tile = world.getTileEntity(x, y, z);
|
||||||
|
TileEntityFoundryOutlet tileOutlet = tile instanceof TileEntityFoundryOutlet ? (TileEntityFoundryOutlet) tile : null;
|
||||||
|
|
||||||
int brightness = block.getMixedBrightnessForBlock(world, x, y, z);
|
int brightness = block.getMixedBrightnessForBlock(world, x, y, z);
|
||||||
tessellator.setBrightness(brightness);
|
tessellator.setBrightness(brightness);
|
||||||
@ -105,13 +107,13 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler {
|
|||||||
renderer.renderFaceXPos(block, x, y, z, outlet.iconFront);
|
renderer.renderFaceXPos(block, x, y, z, outlet.iconFront);
|
||||||
renderer.renderFaceXNeg(block, x, y, z, outlet.iconFront);
|
renderer.renderFaceXNeg(block, x, y, z, outlet.iconFront);
|
||||||
|
|
||||||
if(tile.filter != null) {
|
if(tileOutlet != null && tileOutlet.filter != null) {
|
||||||
renderer.setRenderBounds(0.96875D, 0.0625, 0.375D, 0.96875D, top, 0.625D);
|
renderer.setRenderBounds(0.96875D, 0.0625, 0.375D, 0.96875D, top, 0.625D);
|
||||||
renderer.renderFaceXPos(block, x, y, z, outlet.iconFilter);
|
renderer.renderFaceXPos(block, x, y, z, outlet.iconFilter);
|
||||||
renderer.renderFaceXNeg(block, x, y, z, outlet.iconFilter);
|
renderer.renderFaceXNeg(block, x, y, z, outlet.iconFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tile.isClosed()) {
|
if(tileOutlet != null && tileOutlet.isClosed()) {
|
||||||
renderer.setRenderBounds(0.9375D, 0.0625, 0.375D, 0.9375D, top, 0.625D);
|
renderer.setRenderBounds(0.9375D, 0.0625, 0.375D, 0.9375D, top, 0.625D);
|
||||||
renderer.renderFaceXPos(block, x, y, z, outlet.iconLock);
|
renderer.renderFaceXPos(block, x, y, z, outlet.iconLock);
|
||||||
renderer.renderFaceXNeg(block, x, y, z, outlet.iconLock);
|
renderer.renderFaceXNeg(block, x, y, z, outlet.iconLock);
|
||||||
@ -136,13 +138,13 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler {
|
|||||||
renderer.renderFaceXPos(block, x, y, z, outlet.iconFront);
|
renderer.renderFaceXPos(block, x, y, z, outlet.iconFront);
|
||||||
renderer.renderFaceXNeg(block, x, y, z, outlet.iconFront);
|
renderer.renderFaceXNeg(block, x, y, z, outlet.iconFront);
|
||||||
|
|
||||||
if(tile.filter != null) {
|
if(tileOutlet != null && tileOutlet.filter != null) {
|
||||||
renderer.setRenderBounds(0.03125D, 0.0625, 0.375D, 0.03125D, top, 0.625D);
|
renderer.setRenderBounds(0.03125D, 0.0625, 0.375D, 0.03125D, top, 0.625D);
|
||||||
renderer.renderFaceXPos(block, x, y, z, outlet.iconFilter);
|
renderer.renderFaceXPos(block, x, y, z, outlet.iconFilter);
|
||||||
renderer.renderFaceXNeg(block, x, y, z, outlet.iconFilter);
|
renderer.renderFaceXNeg(block, x, y, z, outlet.iconFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tile.isClosed()) {
|
if(tileOutlet != null && tileOutlet.isClosed()) {
|
||||||
renderer.setRenderBounds(0.0625D, 0.0625, 0.375D, 0.0625D, top, 0.625D);
|
renderer.setRenderBounds(0.0625D, 0.0625, 0.375D, 0.0625D, top, 0.625D);
|
||||||
renderer.renderFaceXPos(block, x, y, z, outlet.iconLock);
|
renderer.renderFaceXPos(block, x, y, z, outlet.iconLock);
|
||||||
renderer.renderFaceXNeg(block, x, y, z, outlet.iconLock);
|
renderer.renderFaceXNeg(block, x, y, z, outlet.iconLock);
|
||||||
@ -167,13 +169,13 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler {
|
|||||||
renderer.renderFaceZPos(block, x, y, z, outlet.iconFront);
|
renderer.renderFaceZPos(block, x, y, z, outlet.iconFront);
|
||||||
renderer.renderFaceZNeg(block, x, y, z, outlet.iconFront);
|
renderer.renderFaceZNeg(block, x, y, z, outlet.iconFront);
|
||||||
|
|
||||||
if(tile.filter != null) {
|
if(tileOutlet != null && tileOutlet.filter != null) {
|
||||||
renderer.setRenderBounds(0.375D, 0.0625, 0.96875D, 0.625D, top, 0.96875D);
|
renderer.setRenderBounds(0.375D, 0.0625, 0.96875D, 0.625D, top, 0.96875D);
|
||||||
renderer.renderFaceZPos(block, x, y, z, outlet.iconFilter);
|
renderer.renderFaceZPos(block, x, y, z, outlet.iconFilter);
|
||||||
renderer.renderFaceZNeg(block, x, y, z, outlet.iconFilter);
|
renderer.renderFaceZNeg(block, x, y, z, outlet.iconFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tile.isClosed()) {
|
if(tileOutlet != null && tileOutlet.isClosed()) {
|
||||||
renderer.setRenderBounds(0.375D, 0.0625, 0.9375D, 0.625D, top, 0.9375D);
|
renderer.setRenderBounds(0.375D, 0.0625, 0.9375D, 0.625D, top, 0.9375D);
|
||||||
renderer.renderFaceZPos(block, x, y, z, outlet.iconLock);
|
renderer.renderFaceZPos(block, x, y, z, outlet.iconLock);
|
||||||
renderer.renderFaceZNeg(block, x, y, z, outlet.iconLock);
|
renderer.renderFaceZNeg(block, x, y, z, outlet.iconLock);
|
||||||
@ -198,13 +200,13 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler {
|
|||||||
renderer.renderFaceZPos(block, x, y, z, outlet.iconFront);
|
renderer.renderFaceZPos(block, x, y, z, outlet.iconFront);
|
||||||
renderer.renderFaceZNeg(block, x, y, z, outlet.iconFront);
|
renderer.renderFaceZNeg(block, x, y, z, outlet.iconFront);
|
||||||
|
|
||||||
if(tile.filter != null) {
|
if(tileOutlet != null && tileOutlet.filter != null) {
|
||||||
renderer.setRenderBounds(0.375D, 0.0625D, 0.03125, 0.625D, top, 0.03125D);
|
renderer.setRenderBounds(0.375D, 0.0625D, 0.03125, 0.625D, top, 0.03125D);
|
||||||
renderer.renderFaceZPos(block, x, y, z, outlet.iconFilter);
|
renderer.renderFaceZPos(block, x, y, z, outlet.iconFilter);
|
||||||
renderer.renderFaceZNeg(block, x, y, z, outlet.iconFilter);
|
renderer.renderFaceZNeg(block, x, y, z, outlet.iconFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tile.isClosed()) {
|
if(tileOutlet != null && tileOutlet.isClosed()) {
|
||||||
renderer.setRenderBounds(0.375D, 0.0625, 0.0625D, 0.625D, top, 0.0625D);
|
renderer.setRenderBounds(0.375D, 0.0625, 0.0625D, 0.625D, top, 0.0625D);
|
||||||
renderer.renderFaceZPos(block, x, y, z, outlet.iconLock);
|
renderer.renderFaceZPos(block, x, y, z, outlet.iconLock);
|
||||||
renderer.renderFaceZNeg(block, x, y, z, outlet.iconLock);
|
renderer.renderFaceZNeg(block, x, y, z, outlet.iconLock);
|
||||||
|
|||||||
@ -0,0 +1,69 @@
|
|||||||
|
package com.hbm.render.block;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import com.hbm.blocks.rail.RailNarrowCurve;
|
||||||
|
import com.hbm.main.ResourceManager;
|
||||||
|
import com.hbm.render.util.ObjUtil;
|
||||||
|
|
||||||
|
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.renderer.RenderBlocks;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraft.world.IBlockAccess;
|
||||||
|
import net.minecraftforge.client.model.obj.WavefrontObject;
|
||||||
|
|
||||||
|
public class RenderNarrowCurveRail implements ISimpleBlockRenderingHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
Tessellator tessellator = Tessellator.instance;
|
||||||
|
|
||||||
|
GL11.glScaled(0.2, 0.2, 0.2);
|
||||||
|
GL11.glTranslated(2.5, -0.0625, -1.5);
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_curve, block.getIcon(1, 0), tessellator, 0, false);
|
||||||
|
tessellator.draw();
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
|
||||||
|
|
||||||
|
int meta = world.getBlockMetadata(x, y, z);
|
||||||
|
if(meta < 12) return true;
|
||||||
|
|
||||||
|
Tessellator tessellator = Tessellator.instance;
|
||||||
|
|
||||||
|
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
|
||||||
|
tessellator.setColorOpaque_F(1, 1, 1);
|
||||||
|
|
||||||
|
float rotation = 0;
|
||||||
|
|
||||||
|
if(meta == 12)
|
||||||
|
rotation = 90F / 180F * (float) Math.PI;
|
||||||
|
if(meta == 14)
|
||||||
|
rotation = 180F / 180F * (float) Math.PI;
|
||||||
|
if(meta == 13)
|
||||||
|
rotation = 270F / 180F * (float) Math.PI;
|
||||||
|
|
||||||
|
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
|
||||||
|
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_curve, block.getIcon(1, 0), tessellator, rotation, true);
|
||||||
|
tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldRender3DInInventory(int modelId) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRenderId() {
|
||||||
|
return RailNarrowCurve.renderID;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,62 @@
|
|||||||
|
package com.hbm.render.block;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import com.hbm.blocks.rail.RailNarrowStraight;
|
||||||
|
import com.hbm.main.ResourceManager;
|
||||||
|
import com.hbm.render.util.ObjUtil;
|
||||||
|
|
||||||
|
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.renderer.RenderBlocks;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraft.world.IBlockAccess;
|
||||||
|
import net.minecraftforge.client.model.obj.WavefrontObject;
|
||||||
|
|
||||||
|
public class RenderNarrowStraightRail implements ISimpleBlockRenderingHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
Tessellator tessellator = Tessellator.instance;
|
||||||
|
|
||||||
|
GL11.glTranslated(0, -0.0625, 0);
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_straight, block.getIcon(1, 0), tessellator, 0, false);
|
||||||
|
tessellator.draw();
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
|
||||||
|
|
||||||
|
Tessellator tessellator = Tessellator.instance;
|
||||||
|
|
||||||
|
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
|
||||||
|
tessellator.setColorOpaque_F(1, 1, 1);
|
||||||
|
int meta = world.getBlockMetadata(x, y, z);
|
||||||
|
|
||||||
|
float rotation = 0;
|
||||||
|
|
||||||
|
if(meta == 2 || meta == 3 || meta == 12 || meta == 13)
|
||||||
|
rotation = 90F / 180F * (float) Math.PI;
|
||||||
|
|
||||||
|
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
|
||||||
|
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_straight, block.getIcon(1, 0), tessellator, rotation, true);
|
||||||
|
tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldRender3DInInventory(int modelId) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRenderId() {
|
||||||
|
return RailNarrowStraight.renderID;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -52,7 +52,8 @@ public class TextureAtlasSpriteMutatable extends TextureAtlasSprite {
|
|||||||
if(mutator != null) {
|
if(mutator != null) {
|
||||||
for(int i = 0; i < frames.length; i++) {
|
for(int i = 0; i < frames.length; i++) {
|
||||||
BufferedImage frame = frames[i];
|
BufferedImage frame = frames[i];
|
||||||
mutator.mutate(frame, i, frames.length);
|
|
||||||
|
if(frame != null) mutator.mutate(frame, i, frames.length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -257,7 +257,9 @@ public class ItemRenderLibrary {
|
|||||||
}
|
}
|
||||||
public void renderCommon() {
|
public void renderCommon() {
|
||||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||||
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
bindTexture(ResourceManager.chemplant_body_tex); ResourceManager.chemplant_body.renderAll();
|
bindTexture(ResourceManager.chemplant_body_tex); ResourceManager.chemplant_body.renderAll();
|
||||||
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
bindTexture(ResourceManager.chemplant_piston_tex); ResourceManager.chemplant_piston.renderAll();
|
bindTexture(ResourceManager.chemplant_piston_tex); ResourceManager.chemplant_piston.renderAll();
|
||||||
bindTexture(ResourceManager.chemplant_spinner_tex);
|
bindTexture(ResourceManager.chemplant_spinner_tex);
|
||||||
GL11.glTranslated(-0.625, 0, 0.625);
|
GL11.glTranslated(-0.625, 0, 0.625);
|
||||||
|
|||||||
@ -42,7 +42,9 @@ public class RenderChemplant extends TileEntitySpecialRenderer {
|
|||||||
|
|
||||||
bindTexture(ResourceManager.chemplant_body_tex);
|
bindTexture(ResourceManager.chemplant_body_tex);
|
||||||
|
|
||||||
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
ResourceManager.chemplant_body.renderAll();
|
ResourceManager.chemplant_body.renderAll();
|
||||||
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
|
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
|||||||
@ -11,10 +11,9 @@ import net.minecraft.tileentity.TileEntity;
|
|||||||
public class RenderMicrowave extends TileEntitySpecialRenderer {
|
public class RenderMicrowave extends TileEntitySpecialRenderer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f)
|
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) {
|
||||||
{
|
|
||||||
GL11.glPushMatrix();
|
GL11.glPushMatrix();
|
||||||
GL11.glTranslated(x + 0.5D, y - 0.75, z + 0.5D);
|
GL11.glTranslated(x + 0.5D, y - 0.785, z + 0.5D);
|
||||||
GL11.glEnable(GL11.GL_LIGHTING);
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
|
||||||
switch(tileEntity.getBlockMetadata()) {
|
switch(tileEntity.getBlockMetadata()) {
|
||||||
@ -23,9 +22,9 @@ public class RenderMicrowave extends TileEntitySpecialRenderer {
|
|||||||
case 3: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
case 3: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
||||||
case 5: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
case 5: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
||||||
}
|
}
|
||||||
GL11.glTranslated(-0.5D, 0.0D, 0.5D);
|
GL11.glTranslated(-0.5D, 0.0D, 0.65D);
|
||||||
|
|
||||||
TileEntityMicrowave mic = (TileEntityMicrowave)tileEntity;
|
TileEntityMicrowave mic = (TileEntityMicrowave) tileEntity;
|
||||||
|
|
||||||
bindTexture(ResourceManager.microwave_tex);
|
bindTexture(ResourceManager.microwave_tex);
|
||||||
ResourceManager.microwave.renderPart("mainbody_Cube.001");
|
ResourceManager.microwave.renderPart("mainbody_Cube.001");
|
||||||
|
|||||||
@ -11,13 +11,17 @@ import net.minecraft.util.ResourceLocation;
|
|||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public class AudioDynamic extends MovingSound {
|
public class AudioDynamic extends MovingSound {
|
||||||
|
|
||||||
public float intendedVolume;
|
public float maxVolume = 1;
|
||||||
|
public float range;
|
||||||
|
public int keepAlive;
|
||||||
|
public int timeSinceKA;;
|
||||||
|
public boolean shouldExpire = false;;
|
||||||
|
|
||||||
protected AudioDynamic(ResourceLocation loc) {
|
protected AudioDynamic(ResourceLocation loc) {
|
||||||
super(loc);
|
super(loc);
|
||||||
this.repeat = true;
|
this.repeat = true;
|
||||||
this.field_147666_i = ISound.AttenuationType.LINEAR;
|
this.field_147666_i = ISound.AttenuationType.NONE;
|
||||||
this.intendedVolume = 10;
|
this.range = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPosition(float x, float y, float z) {
|
public void setPosition(float x, float y, float z) {
|
||||||
@ -34,9 +38,18 @@ public class AudioDynamic extends MovingSound {
|
|||||||
|
|
||||||
if(player != null) {
|
if(player != null) {
|
||||||
f = (float)Math.sqrt(Math.pow(xPosF - player.posX, 2) + Math.pow(yPosF - player.posY, 2) + Math.pow(zPosF - player.posZ, 2));
|
f = (float)Math.sqrt(Math.pow(xPosF - player.posX, 2) + Math.pow(yPosF - player.posY, 2) + Math.pow(zPosF - player.posZ, 2));
|
||||||
volume = func(f, intendedVolume);
|
volume = func(f);
|
||||||
} else {
|
} else {
|
||||||
volume = intendedVolume;
|
volume = maxVolume;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.shouldExpire) {
|
||||||
|
|
||||||
|
if(this.timeSinceKA > this.keepAlive) {
|
||||||
|
this.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.timeSinceKA++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,15 +62,28 @@ public class AudioDynamic extends MovingSound {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setVolume(float volume) {
|
public void setVolume(float volume) {
|
||||||
this.intendedVolume = volume;
|
this.volume = volume;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRange(float range) {
|
||||||
|
this.range = range;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setKeepAlive(int keepAlive) {
|
||||||
|
this.keepAlive = keepAlive;
|
||||||
|
this.shouldExpire = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void keepAlive() {
|
||||||
|
this.timeSinceKA = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPitch(float pitch) {
|
public void setPitch(float pitch) {
|
||||||
this.field_147663_c = pitch;
|
this.field_147663_c = pitch;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float func(float f, float v) {
|
public float func(float dist) {
|
||||||
return (f / v) * -2 + 2;
|
return (dist / range) * -maxVolume + maxVolume;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isPlaying() {
|
public boolean isPlaying() {
|
||||||
|
|||||||
@ -2,13 +2,18 @@ package com.hbm.sound;
|
|||||||
|
|
||||||
public class AudioWrapper {
|
public class AudioWrapper {
|
||||||
|
|
||||||
|
public void setKeepAlive(int keepAlive) { }
|
||||||
|
public void keepAlive() { }
|
||||||
|
|
||||||
public void updatePosition(float x, float y, float z) { }
|
public void updatePosition(float x, float y, float z) { }
|
||||||
|
|
||||||
public void updateVolume(float volume) { }
|
public void updateVolume(float volume) { }
|
||||||
|
public void updateRange(float range) { }
|
||||||
|
|
||||||
public void updatePitch(float pitch) { }
|
public void updatePitch(float pitch) { }
|
||||||
|
|
||||||
public float getVolume() { return 0F; }
|
public float getVolume() { return 0F; }
|
||||||
|
public float getRange() { return 0F; }
|
||||||
|
|
||||||
public float getPitch() { return 0F; }
|
public float getPitch() { return 0F; }
|
||||||
|
|
||||||
|
|||||||
@ -14,6 +14,18 @@ public class AudioWrapperClient extends AudioWrapper {
|
|||||||
sound = new AudioDynamic(source);
|
sound = new AudioDynamic(source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setKeepAlive(int keepAlive) {
|
||||||
|
if(sound != null)
|
||||||
|
sound.setKeepAlive(keepAlive);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keepAlive() {
|
||||||
|
if(sound != null)
|
||||||
|
sound.keepAlive();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updatePosition(float x, float y, float z) {
|
public void updatePosition(float x, float y, float z) {
|
||||||
if(sound != null)
|
if(sound != null)
|
||||||
@ -26,6 +38,12 @@ public class AudioWrapperClient extends AudioWrapper {
|
|||||||
sound.setVolume(volume);
|
sound.setVolume(volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateRange(float range) {
|
||||||
|
if(sound != null)
|
||||||
|
sound.setRange(range);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updatePitch(float pitch) {
|
public void updatePitch(float pitch) {
|
||||||
if(sound != null)
|
if(sound != null)
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.hbm.sound;
|
|||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
/** Only used for doors */
|
||||||
public class AudioWrapperClientStartStop extends AudioWrapperClient {
|
public class AudioWrapperClientStartStop extends AudioWrapperClient {
|
||||||
|
|
||||||
public String start;
|
public String start;
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package com.hbm.tileentity;
|
package com.hbm.tileentity;
|
||||||
|
|
||||||
|
import com.hbm.sound.AudioWrapper;
|
||||||
|
|
||||||
import api.hbm.energy.ILoadedTile;
|
import api.hbm.energy.ILoadedTile;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
@ -17,4 +19,13 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile {
|
|||||||
super.onChunkUnload();
|
super.onChunkUnload();
|
||||||
this.isLoaded = false;
|
this.isLoaded = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AudioWrapper createAudioLoop() { return null; }
|
||||||
|
|
||||||
|
public AudioWrapper rebootAudio(AudioWrapper wrapper) {
|
||||||
|
wrapper.stopSound();
|
||||||
|
AudioWrapper audio = createAudioLoop();
|
||||||
|
audio.startSound();
|
||||||
|
return audio;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import com.hbm.blocks.ModBlocks;
|
|||||||
import com.hbm.packet.AuxGaugePacket;
|
import com.hbm.packet.AuxGaugePacket;
|
||||||
import com.hbm.packet.NBTPacket;
|
import com.hbm.packet.NBTPacket;
|
||||||
import com.hbm.packet.PacketDispatcher;
|
import com.hbm.packet.PacketDispatcher;
|
||||||
import com.hbm.sound.AudioWrapper;
|
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
@ -222,13 +221,4 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme
|
|||||||
|
|
||||||
return Math.max(volume, 0);
|
return Math.max(volume, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public AudioWrapper createAudioLoop() { return null; }
|
|
||||||
|
|
||||||
public AudioWrapper rebootAudio(AudioWrapper wrapper) {
|
|
||||||
wrapper.stopSound();
|
|
||||||
AudioWrapper audio = createAudioLoop();
|
|
||||||
audio.startSound();
|
|
||||||
return audio;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import java.util.List;
|
|||||||
import com.hbm.blocks.bomb.BlockVolcano.TileEntityVolcanoCore;
|
import com.hbm.blocks.bomb.BlockVolcano.TileEntityVolcanoCore;
|
||||||
import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre;
|
import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre;
|
||||||
import com.hbm.blocks.generic.BlockBobble.TileEntityBobble;
|
import com.hbm.blocks.generic.BlockBobble.TileEntityBobble;
|
||||||
|
import com.hbm.blocks.generic.BlockDynamicSlag.TileEntitySlag;
|
||||||
import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter;
|
import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter;
|
||||||
import com.hbm.blocks.generic.BlockLoot.TileEntityLoot;
|
import com.hbm.blocks.generic.BlockLoot.TileEntityLoot;
|
||||||
import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre;
|
import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre;
|
||||||
@ -268,6 +269,8 @@ public class TileMappings {
|
|||||||
put(TileEntityFoundryChannel.class, "tileentity_foundry_channel");
|
put(TileEntityFoundryChannel.class, "tileentity_foundry_channel");
|
||||||
put(TileEntityFoundryTank.class, "tileentity_foundry_tank");
|
put(TileEntityFoundryTank.class, "tileentity_foundry_tank");
|
||||||
put(TileEntityFoundryOutlet.class, "tileentity_foundry_outlet");
|
put(TileEntityFoundryOutlet.class, "tileentity_foundry_outlet");
|
||||||
|
put(TileEntityFoundrySlagtap.class, "tileentity_foundry_slagtap");
|
||||||
|
put(TileEntitySlag.class, "tileentity_foundry_slag");
|
||||||
|
|
||||||
put(TileEntityMachineAutocrafter.class, "tileentity_autocrafter");
|
put(TileEntityMachineAutocrafter.class, "tileentity_autocrafter");
|
||||||
put(TileEntityDiFurnaceRTG.class, "tileentity_rtg_difurnace");
|
put(TileEntityDiFurnaceRTG.class, "tileentity_rtg_difurnace");
|
||||||
|
|||||||
@ -0,0 +1,115 @@
|
|||||||
|
package com.hbm.tileentity.machine;
|
||||||
|
|
||||||
|
import com.hbm.blocks.ModBlocks;
|
||||||
|
import com.hbm.blocks.generic.BlockDynamicSlag.TileEntitySlag;
|
||||||
|
import com.hbm.inventory.material.Mats.MaterialStack;
|
||||||
|
import com.hbm.packet.AuxParticlePacketNT;
|
||||||
|
import com.hbm.packet.PacketDispatcher;
|
||||||
|
import com.hbm.util.Compat;
|
||||||
|
|
||||||
|
import api.hbm.block.ICrucibleAcceptor;
|
||||||
|
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
|
import net.minecraft.util.Vec3;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
public class TileEntityFoundrySlagtap extends TileEntity implements ICrucibleAcceptor {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) {
|
||||||
|
|
||||||
|
Vec3 start = Vec3.createVectorHelper(x + 0.5, y - 0.125, z + 0.5);
|
||||||
|
Vec3 end = Vec3.createVectorHelper(x + 0.5, y + 0.125 - 15, z + 0.5);
|
||||||
|
|
||||||
|
MovingObjectPosition mop = world.func_147447_a(start, end, true, true, true);
|
||||||
|
|
||||||
|
if(mop == null || mop.typeOfHit != mop.typeOfHit.BLOCK) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) {
|
||||||
|
|
||||||
|
if(stack == null || stack.material == null || stack.amount <= 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vec3 start = Vec3.createVectorHelper(x + 0.5, y - 0.125, z + 0.5);
|
||||||
|
Vec3 end = Vec3.createVectorHelper(x + 0.5, y + 0.125 - 15, z + 0.5);
|
||||||
|
|
||||||
|
MovingObjectPosition mop = world.func_147447_a(start, end, true, true, true);
|
||||||
|
|
||||||
|
if(mop == null || mop.typeOfHit != mop.typeOfHit.BLOCK) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Block hit = world.getBlock(mop.blockX, mop.blockY, mop.blockZ);
|
||||||
|
Block above = world.getBlock(mop.blockX, mop.blockY + 1, mop.blockZ);
|
||||||
|
|
||||||
|
boolean didFlow = false;
|
||||||
|
|
||||||
|
if(hit == ModBlocks.slag) {
|
||||||
|
TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, mop.blockX, mop.blockY, mop.blockZ);
|
||||||
|
if(tile.mat == stack.material) {
|
||||||
|
int transfer = Math.min(tile.maxAmount - tile.amount, stack.amount);
|
||||||
|
tile.amount += transfer;
|
||||||
|
stack.amount -= transfer;
|
||||||
|
didFlow = didFlow || transfer > 0;
|
||||||
|
world.markBlockForUpdate(mop.blockX, mop.blockY, mop.blockZ);
|
||||||
|
world.scheduleBlockUpdate(mop.blockX, mop.blockY, mop.blockZ, ModBlocks.slag, 1);
|
||||||
|
}
|
||||||
|
} else if(hit.isReplaceable(world, mop.blockX, mop.blockY, mop.blockZ)) {
|
||||||
|
world.setBlock(mop.blockX, mop.blockY, mop.blockZ, ModBlocks.slag);
|
||||||
|
TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, mop.blockX, mop.blockY, mop.blockZ);
|
||||||
|
tile.mat = stack.material;
|
||||||
|
int transfer = Math.min(tile.maxAmount, stack.amount);
|
||||||
|
tile.amount += transfer;
|
||||||
|
stack.amount -= transfer;
|
||||||
|
didFlow = didFlow || transfer > 0;
|
||||||
|
world.markBlockForUpdate(mop.blockX, mop.blockY, mop.blockZ);
|
||||||
|
world.scheduleBlockUpdate(mop.blockX, mop.blockY, mop.blockZ, ModBlocks.slag, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(stack.amount > 0 && above.isReplaceable(world, mop.blockX, mop.blockY + 1, mop.blockZ)) {
|
||||||
|
world.setBlock(mop.blockX, mop.blockY + 1, mop.blockZ, ModBlocks.slag);
|
||||||
|
TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, mop.blockX, mop.blockY + 1, mop.blockZ);
|
||||||
|
tile.mat = stack.material;
|
||||||
|
int transfer = Math.min(tile.maxAmount, stack.amount);
|
||||||
|
tile.amount += transfer;
|
||||||
|
stack.amount -= transfer;
|
||||||
|
didFlow = didFlow || transfer > 0;
|
||||||
|
world.markBlockForUpdate(mop.blockX, mop.blockY + 1, mop.blockZ);
|
||||||
|
world.scheduleBlockUpdate(mop.blockX, mop.blockY + 1, mop.blockZ, ModBlocks.slag, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(didFlow) {
|
||||||
|
ForgeDirection dir = side.getOpposite();
|
||||||
|
double hitY = mop.blockY;
|
||||||
|
|
||||||
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
|
data.setString("type", "foundry");
|
||||||
|
data.setInteger("color", stack.material.moltenColor);
|
||||||
|
data.setByte("dir", (byte) dir.ordinal());
|
||||||
|
data.setFloat("off", 0.375F);
|
||||||
|
data.setFloat("base", 0F);
|
||||||
|
data.setFloat("len", Math.max(1F, yCoord - (float) (Math.ceil(hitY))));
|
||||||
|
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D - dir.offsetX * 0.125, yCoord + 0.125, zCoord + 0.5D - dir.offsetZ * 0.125), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord, zCoord + 0.5, 50));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(stack.amount <= 0) {
|
||||||
|
stack = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { return false; }
|
||||||
|
@Override public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { return stack; }
|
||||||
|
}
|
||||||
@ -20,7 +20,9 @@ import com.hbm.inventory.fluid.trait.FT_Heatable;
|
|||||||
import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingStep;
|
import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingStep;
|
||||||
import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType;
|
import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType;
|
||||||
import com.hbm.lib.Library;
|
import com.hbm.lib.Library;
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.saveddata.TomSaveData;
|
import com.hbm.saveddata.TomSaveData;
|
||||||
|
import com.hbm.sound.AudioWrapper;
|
||||||
import com.hbm.tileentity.IConfigurableMachine;
|
import com.hbm.tileentity.IConfigurableMachine;
|
||||||
import com.hbm.tileentity.INBTPacketReceiver;
|
import com.hbm.tileentity.INBTPacketReceiver;
|
||||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||||
@ -41,8 +43,12 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid
|
|||||||
public int heat;
|
public int heat;
|
||||||
public FluidTank[] tanks;
|
public FluidTank[] tanks;
|
||||||
public List<IFluidAcceptor> list = new ArrayList();
|
public List<IFluidAcceptor> list = new ArrayList();
|
||||||
|
public boolean isOn;
|
||||||
public boolean hasExploded = false;
|
public boolean hasExploded = false;
|
||||||
|
|
||||||
|
private AudioWrapper audio;
|
||||||
|
private int audioTime;
|
||||||
|
|
||||||
/* CONFIGURABLE */
|
/* CONFIGURABLE */
|
||||||
public static int maxHeat = 12_800_000; //the heat required to turn 64k of water into steam
|
public static int maxHeat = 12_800_000; //the heat required to turn 64k of water into steam
|
||||||
public static double diffusion = 0.1D;
|
public static double diffusion = 0.1D;
|
||||||
@ -76,6 +82,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid
|
|||||||
data.setInteger("heat", lastHeat);
|
data.setInteger("heat", lastHeat);
|
||||||
|
|
||||||
tanks[0].writeToNBT(data, "0");
|
tanks[0].writeToNBT(data, "0");
|
||||||
|
this.isOn = false;
|
||||||
this.tryConvert();
|
this.tryConvert();
|
||||||
tanks[1].writeToNBT(data, "1");
|
tanks[1].writeToNBT(data, "1");
|
||||||
|
|
||||||
@ -86,7 +93,57 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid
|
|||||||
}
|
}
|
||||||
|
|
||||||
data.setBoolean("exploded", this.hasExploded);
|
data.setBoolean("exploded", this.hasExploded);
|
||||||
|
data.setBoolean("isOn", this.isOn);
|
||||||
INBTPacketReceiver.networkPack(this, data, 25);
|
INBTPacketReceiver.networkPack(this, data, 25);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if(this.isOn) audioTime = 20;
|
||||||
|
|
||||||
|
if(audioTime > 0) {
|
||||||
|
|
||||||
|
audioTime--;
|
||||||
|
|
||||||
|
if(audio == null) {
|
||||||
|
audio = createAudioLoop();
|
||||||
|
audio.startSound();
|
||||||
|
} else if(!audio.isPlaying()) {
|
||||||
|
audio = rebootAudio(audio);
|
||||||
|
}
|
||||||
|
|
||||||
|
audio.keepAlive();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AudioWrapper createAudioLoop() {
|
||||||
|
return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.125F, 10F, 1.0F, 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChunkUnload() {
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidate() {
|
||||||
|
|
||||||
|
super.invalidate();
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,6 +153,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid
|
|||||||
this.heat = nbt.getInteger("heat");
|
this.heat = nbt.getInteger("heat");
|
||||||
this.tanks[0].readFromNBT(nbt, "0");
|
this.tanks[0].readFromNBT(nbt, "0");
|
||||||
this.tanks[1].readFromNBT(nbt, "1");
|
this.tanks[1].readFromNBT(nbt, "1");
|
||||||
|
this.isOn = nbt.getBoolean("isOn");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void tryPullHeat() {
|
protected void tryPullHeat() {
|
||||||
@ -159,6 +217,10 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid
|
|||||||
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.boilerGroan", 0.5F, 1.0F);
|
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.boilerGroan", 0.5F, 1.0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(ops > 0) {
|
||||||
|
this.isOn = true;
|
||||||
|
}
|
||||||
|
|
||||||
if(outputOps == 0 && canExplode) {
|
if(outputOps == 0 && canExplode) {
|
||||||
this.hasExploded = true;
|
this.hasExploded = true;
|
||||||
BlockDummyable.safeRem = true;
|
BlockDummyable.safeRem = true;
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
package com.hbm.tileentity.machine;
|
package com.hbm.tileentity.machine;
|
||||||
|
|
||||||
import com.hbm.blocks.BlockDummyable;
|
import com.hbm.blocks.BlockDummyable;
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
|
import com.hbm.sound.AudioWrapper;
|
||||||
import com.hbm.tileentity.INBTPacketReceiver;
|
import com.hbm.tileentity.INBTPacketReceiver;
|
||||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||||
|
|
||||||
@ -17,8 +19,11 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH
|
|||||||
|
|
||||||
public long power;
|
public long power;
|
||||||
public int heatEnergy;
|
public int heatEnergy;
|
||||||
|
public boolean isOn;
|
||||||
protected int setting = 0;
|
protected int setting = 0;
|
||||||
|
|
||||||
|
private AudioWrapper audio;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateEntity() {
|
public void updateEntity() {
|
||||||
|
|
||||||
@ -33,15 +38,63 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH
|
|||||||
|
|
||||||
this.tryPullHeat();
|
this.tryPullHeat();
|
||||||
|
|
||||||
|
this.isOn = false;
|
||||||
if(setting > 0 && this.power >= this.getConsumption()) {
|
if(setting > 0 && this.power >= this.getConsumption()) {
|
||||||
this.power -= this.getConsumption();
|
this.power -= this.getConsumption();
|
||||||
this.heatEnergy += getHeatGen();
|
this.heatEnergy += getHeatGen();
|
||||||
|
this.isOn = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
NBTTagCompound data = new NBTTagCompound();
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
data.setByte("s", (byte) this.setting);
|
data.setByte("s", (byte) this.setting);
|
||||||
data.setInteger("h", this.heatEnergy);
|
data.setInteger("h", this.heatEnergy);
|
||||||
|
data.setBoolean("o", isOn);
|
||||||
INBTPacketReceiver.networkPack(this, data, 25);
|
INBTPacketReceiver.networkPack(this, data, 25);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if(isOn) {
|
||||||
|
|
||||||
|
if(audio == null) {
|
||||||
|
audio = createAudioLoop();
|
||||||
|
audio.startSound();
|
||||||
|
} else if(!audio.isPlaying()) {
|
||||||
|
audio = rebootAudio(audio);
|
||||||
|
}
|
||||||
|
|
||||||
|
audio.keepAlive();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AudioWrapper createAudioLoop() {
|
||||||
|
return MainRegistry.proxy.getLoopedSound("hbm:block.electricHum", xCoord, yCoord, zCoord, 0.25F, 7.5F, 1.0F, 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChunkUnload() {
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidate() {
|
||||||
|
|
||||||
|
super.invalidate();
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,6 +102,7 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH
|
|||||||
public void networkUnpack(NBTTagCompound nbt) {
|
public void networkUnpack(NBTTagCompound nbt) {
|
||||||
this.setting = nbt.getByte("s");
|
this.setting = nbt.getByte("s");
|
||||||
this.heatEnergy = nbt.getInteger("h");
|
this.heatEnergy = nbt.getInteger("h");
|
||||||
|
this.isOn = nbt.getBoolean("o");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -256,7 +256,7 @@ public class TileEntityMachineAssembler extends TileEntityMachineBase implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AudioWrapper createAudioLoop() {
|
public AudioWrapper createAudioLoop() {
|
||||||
return MainRegistry.proxy.getLoopedSound("hbm:block.assemblerOperate", xCoord, yCoord, zCoord, 1.0F, 1.0F);
|
return MainRegistry.proxy.getLoopedSound("hbm:block.assemblerOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateConnections() {
|
private void updateConnections() {
|
||||||
|
|||||||
@ -224,14 +224,16 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void networkUnpack(NBTTagCompound data) {
|
public void networkUnpack(NBTTagCompound data) {
|
||||||
this.power = data.getLong("power");
|
this.power = data.getLong("power");
|
||||||
this.progress = data.getInteger("progress");
|
this.progress = data.getInteger("progress");
|
||||||
this.isProgressing = data.getBoolean("isProgressing");
|
this.isProgressing = data.getBoolean("isProgressing");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public AudioWrapper createAudioLoop() {
|
public AudioWrapper createAudioLoop() {
|
||||||
return MainRegistry.proxy.getLoopedSound("hbm:block.centrifugeOperate", xCoord, yCoord, zCoord, 2.0F, 1.0F);
|
return MainRegistry.proxy.getLoopedSound("hbm:block.centrifugeOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -93,8 +93,8 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements
|
|||||||
this.isProgressing = false;
|
this.isProgressing = false;
|
||||||
this.power = Library.chargeTEFromItems(slots, 0, power, maxPower);
|
this.power = Library.chargeTEFromItems(slots, 0, power, maxPower);
|
||||||
|
|
||||||
if(!tanks[0].loadTank(17, 19, slots)) tanks[0].unloadTank(17, 19, slots);
|
if(!tanks[0].loadTank(17, 19, slots) && (slots[17] == null || slots[17].getItem() != ModItems.fluid_barrel_infinite)) tanks[0].unloadTank(17, 19, slots);
|
||||||
if(!tanks[1].loadTank(18, 20, slots)) tanks[1].unloadTank(18, 20, slots);
|
if(!tanks[1].loadTank(18, 20, slots) && (slots[18] == null || slots[18].getItem() != ModItems.fluid_barrel_infinite)) tanks[1].unloadTank(18, 20, slots);
|
||||||
|
|
||||||
tanks[2].unloadTank(9, 11, slots);
|
tanks[2].unloadTank(9, 11, slots);
|
||||||
tanks[3].unloadTank(10, 12, slots);
|
tanks[3].unloadTank(10, 12, slots);
|
||||||
@ -162,7 +162,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements
|
|||||||
worldObj.spawnParticle("cloud", x, y, z, 0.0, 0.1, 0.0);
|
worldObj.spawnParticle("cloud", x, y, z, 0.0, 0.1, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
float volume = this.getVolume(2);
|
float volume = 1;//this.getVolume(2);
|
||||||
|
|
||||||
if(isProgressing && volume > 0) {
|
if(isProgressing && volume > 0) {
|
||||||
|
|
||||||
@ -187,7 +187,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AudioWrapper createAudioLoop() {
|
public AudioWrapper createAudioLoop() {
|
||||||
return MainRegistry.proxy.getLoopedSound("hbm:block.chemplantOperate", xCoord, yCoord, zCoord, 1.0F, 1.0F);
|
return MainRegistry.proxy.getLoopedSound("hbm:block.chemplantOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -157,7 +157,7 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp
|
|||||||
}
|
}
|
||||||
|
|
||||||
public AudioWrapper createAudioLoop() {
|
public AudioWrapper createAudioLoop() {
|
||||||
return MainRegistry.proxy.getLoopedSound("hbm:block.igeneratorOperate", xCoord, yCoord, zCoord, 2.0F, 1.0F);
|
return MainRegistry.proxy.getLoopedSound("hbm:block.igeneratorOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -196,7 +196,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB
|
|||||||
}
|
}
|
||||||
|
|
||||||
public AudioWrapper createAudioLoop() {
|
public AudioWrapper createAudioLoop() {
|
||||||
return MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop", xCoord, yCoord, zCoord, 1.0F, 1.0F);
|
return MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateConnections() {
|
private void updateConnections() {
|
||||||
|
|||||||
@ -170,12 +170,12 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement
|
|||||||
|
|
||||||
if(audio == null) { //if there is no sound playing, start it
|
if(audio == null) { //if there is no sound playing, start it
|
||||||
|
|
||||||
audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 1.0F);
|
audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 20F, 1.0F);
|
||||||
audio.startSound();
|
audio.startSound();
|
||||||
|
|
||||||
} else if(!audio.isPlaying()) {
|
} else if(!audio.isPlaying()) {
|
||||||
audio.stopSound();
|
audio.stopSound();
|
||||||
audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 1.0F);
|
audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 20F, 1.0F);
|
||||||
audio.startSound();
|
audio.startSound();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -382,7 +382,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
public AudioWrapper createAudioLoop() {
|
public AudioWrapper createAudioLoop() {
|
||||||
return MainRegistry.proxy.getLoopedSound("hbm:block.turbofanOperate", xCoord, yCoord, zCoord, 5.0F, 1.0F);
|
return MainRegistry.proxy.getLoopedSound("hbm:block.turbofanOperate", xCoord, yCoord, zCoord, 1.0F, 50F, 1.0F, 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -171,7 +171,7 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AudioWrapper createAudioLoop() {
|
public AudioWrapper createAudioLoop() {
|
||||||
return MainRegistry.proxy.getLoopedSound("hbm:block.soyuzReady", xCoord, yCoord, zCoord, 1.0F, 1.0F);
|
return MainRegistry.proxy.getLoopedSound("hbm:block.soyuzReady", xCoord, yCoord, zCoord, 2.0F, 100F, 1.0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onChunkUnload() {
|
public void onChunkUnload() {
|
||||||
|
|||||||
@ -24,6 +24,8 @@ import com.hbm.inventory.gui.GUIMachineRefinery;
|
|||||||
import com.hbm.inventory.recipes.RefineryRecipes;
|
import com.hbm.inventory.recipes.RefineryRecipes;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.lib.Library;
|
import com.hbm.lib.Library;
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
|
import com.hbm.sound.AudioWrapper;
|
||||||
import com.hbm.tileentity.IGUIProvider;
|
import com.hbm.tileentity.IGUIProvider;
|
||||||
import com.hbm.tileentity.IOverpressurable;
|
import com.hbm.tileentity.IOverpressurable;
|
||||||
import com.hbm.tileentity.IPersistentNBT;
|
import com.hbm.tileentity.IPersistentNBT;
|
||||||
@ -66,6 +68,10 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements
|
|||||||
public boolean onFire = false;
|
public boolean onFire = false;
|
||||||
public Explosion lastExplosion = null;
|
public Explosion lastExplosion = null;
|
||||||
|
|
||||||
|
private AudioWrapper audio;
|
||||||
|
private int audioTime;
|
||||||
|
public boolean isOn;
|
||||||
|
|
||||||
private static final int[] slot_access = new int[] {11};
|
private static final int[] slot_access = new int[] {11};
|
||||||
|
|
||||||
public TileEntityMachineRefinery() {
|
public TileEntityMachineRefinery() {
|
||||||
@ -138,6 +144,8 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements
|
|||||||
|
|
||||||
if(!worldObj.isRemote) {
|
if(!worldObj.isRemote) {
|
||||||
|
|
||||||
|
this.isOn = false;
|
||||||
|
|
||||||
if(this.getBlockMetadata() < 12) {
|
if(this.getBlockMetadata() < 12) {
|
||||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getRotation(ForgeDirection.DOWN);
|
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getRotation(ForgeDirection.DOWN);
|
||||||
worldObj.removeTileEntity(xCoord, yCoord, zCoord);
|
worldObj.removeTileEntity(xCoord, yCoord, zCoord);
|
||||||
@ -201,7 +209,57 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements
|
|||||||
for(int i = 0; i < 5; i++) tanks[i].writeToNBT(data, "" + i);
|
for(int i = 0; i < 5; i++) tanks[i].writeToNBT(data, "" + i);
|
||||||
data.setBoolean("exploded", hasExploded);
|
data.setBoolean("exploded", hasExploded);
|
||||||
data.setBoolean("onFire", onFire);
|
data.setBoolean("onFire", onFire);
|
||||||
|
data.setBoolean("isOn", this.isOn);
|
||||||
this.networkPack(data, 150);
|
this.networkPack(data, 150);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if(this.isOn) audioTime = 20;
|
||||||
|
|
||||||
|
if(audioTime > 0) {
|
||||||
|
|
||||||
|
audioTime--;
|
||||||
|
|
||||||
|
if(audio == null) {
|
||||||
|
audio = createAudioLoop();
|
||||||
|
audio.startSound();
|
||||||
|
} else if(!audio.isPlaying()) {
|
||||||
|
audio = rebootAudio(audio);
|
||||||
|
}
|
||||||
|
|
||||||
|
audio.keepAlive();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AudioWrapper createAudioLoop() {
|
||||||
|
return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.25F, 15F, 1.0F, 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChunkUnload() {
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidate() {
|
||||||
|
|
||||||
|
super.invalidate();
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,6 +269,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements
|
|||||||
for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i);
|
for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i);
|
||||||
this.hasExploded = nbt.getBoolean("exploded");
|
this.hasExploded = nbt.getBoolean("exploded");
|
||||||
this.onFire = nbt.getBoolean("onFire");
|
this.onFire = nbt.getBoolean("onFire");
|
||||||
|
this.isOn = nbt.getBoolean("isOn");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refine() {
|
private void refine() {
|
||||||
@ -233,6 +292,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.isOn = true;
|
||||||
tanks[0].setFill(tanks[0].getFill() - 100);
|
tanks[0].setFill(tanks[0].getFill() - 100);
|
||||||
|
|
||||||
for(int i = 0; i < stacks.length; i++)
|
for(int i = 0; i < stacks.length; i++)
|
||||||
|
|||||||
@ -7,6 +7,8 @@ import com.hbm.inventory.fluid.tank.FluidTank;
|
|||||||
import com.hbm.inventory.gui.GUIMachineVacuumDistill;
|
import com.hbm.inventory.gui.GUIMachineVacuumDistill;
|
||||||
import com.hbm.inventory.recipes.RefineryRecipes;
|
import com.hbm.inventory.recipes.RefineryRecipes;
|
||||||
import com.hbm.lib.Library;
|
import com.hbm.lib.Library;
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
|
import com.hbm.sound.AudioWrapper;
|
||||||
import com.hbm.tileentity.IGUIProvider;
|
import com.hbm.tileentity.IGUIProvider;
|
||||||
import com.hbm.tileentity.IPersistentNBT;
|
import com.hbm.tileentity.IPersistentNBT;
|
||||||
import com.hbm.tileentity.TileEntityMachineBase;
|
import com.hbm.tileentity.TileEntityMachineBase;
|
||||||
@ -31,6 +33,10 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem
|
|||||||
|
|
||||||
public FluidTank[] tanks;
|
public FluidTank[] tanks;
|
||||||
|
|
||||||
|
private AudioWrapper audio;
|
||||||
|
private int audioTime;
|
||||||
|
public boolean isOn;
|
||||||
|
|
||||||
public TileEntityMachineVacuumDistill() {
|
public TileEntityMachineVacuumDistill() {
|
||||||
super(11);
|
super(11);
|
||||||
|
|
||||||
@ -52,6 +58,8 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem
|
|||||||
|
|
||||||
if(!worldObj.isRemote) {
|
if(!worldObj.isRemote) {
|
||||||
|
|
||||||
|
this.isOn = false;
|
||||||
|
|
||||||
this.updateConnections();
|
this.updateConnections();
|
||||||
power = Library.chargeTEFromItems(slots, 0, power, maxPower);
|
power = Library.chargeTEFromItems(slots, 0, power, maxPower);
|
||||||
tanks[0].loadTank(1, 2, slots);
|
tanks[0].loadTank(1, 2, slots);
|
||||||
@ -73,14 +81,65 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem
|
|||||||
|
|
||||||
NBTTagCompound data = new NBTTagCompound();
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
data.setLong("power", this.power);
|
data.setLong("power", this.power);
|
||||||
|
data.setBoolean("isOn", this.isOn);
|
||||||
for(int i = 0; i < 5; i++) tanks[i].writeToNBT(data, "" + i);
|
for(int i = 0; i < 5; i++) tanks[i].writeToNBT(data, "" + i);
|
||||||
this.networkPack(data, 150);
|
this.networkPack(data, 150);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if(this.isOn) audioTime = 20;
|
||||||
|
|
||||||
|
if(audioTime > 0) {
|
||||||
|
|
||||||
|
audioTime--;
|
||||||
|
|
||||||
|
if(audio == null) {
|
||||||
|
audio = createAudioLoop();
|
||||||
|
audio.startSound();
|
||||||
|
} else if(!audio.isPlaying()) {
|
||||||
|
audio = rebootAudio(audio);
|
||||||
|
}
|
||||||
|
|
||||||
|
audio.keepAlive();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AudioWrapper createAudioLoop() {
|
||||||
|
return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.25F, 15F, 1.0F, 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChunkUnload() {
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidate() {
|
||||||
|
|
||||||
|
super.invalidate();
|
||||||
|
|
||||||
|
if(audio != null) {
|
||||||
|
audio.stopSound();
|
||||||
|
audio = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void networkUnpack(NBTTagCompound nbt) {
|
public void networkUnpack(NBTTagCompound nbt) {
|
||||||
this.power = nbt.getLong("power");
|
this.power = nbt.getLong("power");
|
||||||
|
this.isOn = nbt.getBoolean("isOn");
|
||||||
for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i);
|
for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,6 +152,7 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem
|
|||||||
if(tanks[3].getFill() + RefineryRecipes.vac_frac_light > tanks[3].getMaxFill()) return;
|
if(tanks[3].getFill() + RefineryRecipes.vac_frac_light > tanks[3].getMaxFill()) return;
|
||||||
if(tanks[4].getFill() + RefineryRecipes.vac_frac_sour > tanks[4].getMaxFill()) return;
|
if(tanks[4].getFill() + RefineryRecipes.vac_frac_sour > tanks[4].getMaxFill()) return;
|
||||||
|
|
||||||
|
this.isOn = true;
|
||||||
power -= 10_000;
|
power -= 10_000;
|
||||||
tanks[0].setFill(tanks[0].getFill() - 100);
|
tanks[0].setFill(tanks[0].getFill() - 100);
|
||||||
tanks[1].setFill(tanks[1].getFill() + RefineryRecipes.vac_frac_heavy);
|
tanks[1].setFill(tanks[1].getFill() + RefineryRecipes.vac_frac_heavy);
|
||||||
|
|||||||
@ -100,6 +100,7 @@ public class Compat {
|
|||||||
public static List<ItemStack> scrapeItemFromME(ItemStack meDrive) {
|
public static List<ItemStack> scrapeItemFromME(ItemStack meDrive) {
|
||||||
List<ItemStack> stacks = new ArrayList();
|
List<ItemStack> stacks = new ArrayList();
|
||||||
|
|
||||||
|
try {
|
||||||
if(meDrive != null && meDrive.hasTagCompound()) {
|
if(meDrive != null && meDrive.hasTagCompound()) {
|
||||||
NBTTagCompound nbt = meDrive.getTagCompound();
|
NBTTagCompound nbt = meDrive.getTagCompound();
|
||||||
int types = nbt.getShort("it"); //ITEM_TYPE_TAG
|
int types = nbt.getShort("it"); //ITEM_TYPE_TAG
|
||||||
@ -113,11 +114,11 @@ public class Compat {
|
|||||||
|
|
||||||
int count = nbt.getInteger("@" + i);
|
int count = nbt.getInteger("@" + i);
|
||||||
stack.stackSize = count;
|
stack.stackSize = count;
|
||||||
|
|
||||||
stacks.add(stack);
|
stacks.add(stack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch(Exception ex) { }
|
||||||
|
|
||||||
return stacks;
|
return stacks;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3606,6 +3606,12 @@ tile.concrete_colored.red.name=Roter Beton
|
|||||||
tile.concrete_colored.silver.name=Hellgrauer Beton
|
tile.concrete_colored.silver.name=Hellgrauer Beton
|
||||||
tile.concrete_colored.white.name=Weißer Beton
|
tile.concrete_colored.white.name=Weißer Beton
|
||||||
tile.concrete_colored.yellow.name=Gelber Beton
|
tile.concrete_colored.yellow.name=Gelber Beton
|
||||||
|
tile.concrete_colored_ext.hazard.name=Builder's Choice Concrete - Gefahrenstreifen
|
||||||
|
tile.concrete_colored_ext.indigo.name=Builder's Choice Concrete - Tiefes Indigo
|
||||||
|
tile.concrete_colored_ext.machine.name=Builder's Choice Concrete - Industrieller Ton
|
||||||
|
tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Industrieller Streifen
|
||||||
|
tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - Männliches Pink
|
||||||
|
tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysteriöses Lila
|
||||||
tile.concrete_pillar.name=Stahlbetonsäule
|
tile.concrete_pillar.name=Stahlbetonsäule
|
||||||
tile.concrete_slab.concrete.name=Betonfliesenstufe
|
tile.concrete_slab.concrete.name=Betonfliesenstufe
|
||||||
tile.concrete_slab.concrete_asbestos.name=Asbestbetonstufe
|
tile.concrete_slab.concrete_asbestos.name=Asbestbetonstufe
|
||||||
@ -3745,6 +3751,7 @@ tile.foundry_channel.name=Gusskanal
|
|||||||
tile.foundry_tank.name=Gießerei-Lagerbecken
|
tile.foundry_tank.name=Gießerei-Lagerbecken
|
||||||
tile.foundry_mold.name=Seichtes Gussbecken
|
tile.foundry_mold.name=Seichtes Gussbecken
|
||||||
tile.foundry_outlet.name=Ausguss
|
tile.foundry_outlet.name=Ausguss
|
||||||
|
tile.foundry_slagtap.name=Schlackeausguss
|
||||||
tile.fraction_spacer.name=Fraktionierungsturm-Teiler
|
tile.fraction_spacer.name=Fraktionierungsturm-Teiler
|
||||||
tile.frozen_dirt.name=Gefrorene Erde
|
tile.frozen_dirt.name=Gefrorene Erde
|
||||||
tile.frozen_grass.name=Gefrorenes Gras
|
tile.frozen_grass.name=Gefrorenes Gras
|
||||||
|
|||||||
@ -4418,6 +4418,12 @@ tile.concrete_colored.red.name=Red Concrete
|
|||||||
tile.concrete_colored.silver.name=Light Gray Concrete
|
tile.concrete_colored.silver.name=Light Gray Concrete
|
||||||
tile.concrete_colored.white.name=White Concrete
|
tile.concrete_colored.white.name=White Concrete
|
||||||
tile.concrete_colored.yellow.name=Yellow Concrete
|
tile.concrete_colored.yellow.name=Yellow Concrete
|
||||||
|
tile.concrete_colored_ext.hazard.name=Builder's Choice Concrete - Hazard Stripe
|
||||||
|
tile.concrete_colored_ext.indigo.name=Builder's Choice Concrete - Deep Indigo
|
||||||
|
tile.concrete_colored_ext.machine.name=Builder's Choice Concrete - Industrial Tinge
|
||||||
|
tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Industrial Stripe
|
||||||
|
tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - Manly Pink
|
||||||
|
tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysterious Purple
|
||||||
tile.concrete_pillar.name=Rebar Reinforced Concrete Pillar
|
tile.concrete_pillar.name=Rebar Reinforced Concrete Pillar
|
||||||
tile.concrete_slab.concrete.name=Concrete Tile Slab
|
tile.concrete_slab.concrete.name=Concrete Tile Slab
|
||||||
tile.concrete_slab.concrete_asbestos.name=Asbestos Concrete Slab
|
tile.concrete_slab.concrete_asbestos.name=Asbestos Concrete Slab
|
||||||
@ -4562,6 +4568,7 @@ tile.foundry_channel.name=Foundry Channel
|
|||||||
tile.foundry_tank.name=Foundry Storage Basin
|
tile.foundry_tank.name=Foundry Storage Basin
|
||||||
tile.foundry_mold.name=Shallow Foundry Basin
|
tile.foundry_mold.name=Shallow Foundry Basin
|
||||||
tile.foundry_outlet.name=Foundry Outlet
|
tile.foundry_outlet.name=Foundry Outlet
|
||||||
|
tile.foundry_slagtap.name=Foundry Slag Outlet
|
||||||
tile.fraction_spacer.name=Fractioning Tower Separator
|
tile.fraction_spacer.name=Fractioning Tower Separator
|
||||||
tile.frozen_dirt.name=Frozen Dirt
|
tile.frozen_dirt.name=Frozen Dirt
|
||||||
tile.frozen_grass.name=Frozen Grass
|
tile.frozen_grass.name=Frozen Grass
|
||||||
|
|||||||
314
src/main/resources/assets/hbm/models/blocks/rail_narrow.obj
Normal file
@ -0,0 +1,314 @@
|
|||||||
|
# Blender v2.79 (sub 0) OBJ File: 'rail_narrow.blend'
|
||||||
|
# www.blender.org
|
||||||
|
o Plane
|
||||||
|
v 0.500000 0.125000 0.375000
|
||||||
|
v -0.500000 0.125000 0.375000
|
||||||
|
v -0.500000 0.125000 -0.375000
|
||||||
|
v 0.500000 0.125000 -0.375000
|
||||||
|
v -0.500000 0.000000 0.375000
|
||||||
|
v 0.500000 0.000000 0.375000
|
||||||
|
v -0.500000 0.000000 -0.437500
|
||||||
|
v 0.500000 0.000000 -0.437500
|
||||||
|
v -0.500000 0.000000 0.437500
|
||||||
|
v 0.500000 0.000000 0.437500
|
||||||
|
v -0.500000 0.000000 -0.375000
|
||||||
|
v 0.500000 0.000000 -0.375000
|
||||||
|
v -0.500000 0.125000 0.437500
|
||||||
|
v 0.500000 0.125000 0.437500
|
||||||
|
v 0.500000 0.125000 -0.437500
|
||||||
|
v -0.500000 0.125000 -0.437500
|
||||||
|
v 0.187500 0.000000 0.375000
|
||||||
|
v 0.312500 0.000000 0.375000
|
||||||
|
v 0.187500 0.000000 -0.375000
|
||||||
|
v 0.312500 0.000000 -0.375000
|
||||||
|
v 0.187500 0.062500 -0.375000
|
||||||
|
v 0.187500 0.062500 0.375000
|
||||||
|
v 0.312500 0.062500 0.375000
|
||||||
|
v 0.312500 0.062500 -0.375000
|
||||||
|
v 0.187500 0.000000 -0.437500
|
||||||
|
v 0.312500 0.000000 -0.437500
|
||||||
|
v 0.187500 0.062500 -0.437500
|
||||||
|
v 0.312500 0.062500 -0.437500
|
||||||
|
v 0.187500 0.000000 -0.500000
|
||||||
|
v 0.312500 0.000000 -0.500000
|
||||||
|
v 0.187500 0.062500 -0.500000
|
||||||
|
v 0.312500 0.062500 -0.500000
|
||||||
|
v 0.187500 0.000000 0.437500
|
||||||
|
v 0.312500 0.000000 0.437500
|
||||||
|
v 0.187500 0.062500 0.437500
|
||||||
|
v 0.312500 0.062500 0.437500
|
||||||
|
v 0.187500 0.000000 0.500000
|
||||||
|
v 0.312500 0.000000 0.500000
|
||||||
|
v 0.187500 0.062500 0.500000
|
||||||
|
v 0.312500 0.062500 0.500000
|
||||||
|
v -0.312500 0.000000 0.375000
|
||||||
|
v -0.187500 0.000000 0.375000
|
||||||
|
v -0.312500 0.000000 -0.375000
|
||||||
|
v -0.187500 0.000000 -0.375000
|
||||||
|
v -0.312500 0.062500 -0.375000
|
||||||
|
v -0.312500 0.062500 0.375000
|
||||||
|
v -0.187500 0.062500 0.375000
|
||||||
|
v -0.187500 0.062500 -0.375000
|
||||||
|
v -0.312500 0.000000 -0.437500
|
||||||
|
v -0.187500 0.000000 -0.437500
|
||||||
|
v -0.312500 0.062500 -0.437500
|
||||||
|
v -0.187500 0.062500 -0.437500
|
||||||
|
v -0.312500 0.000000 -0.500000
|
||||||
|
v -0.187500 0.000000 -0.500000
|
||||||
|
v -0.312500 0.062500 -0.500000
|
||||||
|
v -0.187500 0.062500 -0.500000
|
||||||
|
v -0.312500 0.000000 0.437500
|
||||||
|
v -0.187500 0.000000 0.437500
|
||||||
|
v -0.312500 0.062500 0.437500
|
||||||
|
v -0.187500 0.062500 0.437500
|
||||||
|
v -0.312500 0.000000 0.500000
|
||||||
|
v -0.187500 0.000000 0.500000
|
||||||
|
v -0.312500 0.062500 0.500000
|
||||||
|
v -0.187500 0.062500 0.500000
|
||||||
|
vt 0.125000 0.000000
|
||||||
|
vt 0.062500 1.000000
|
||||||
|
vt 0.062500 0.000000
|
||||||
|
vt 0.937500 1.000000
|
||||||
|
vt 0.875000 0.000000
|
||||||
|
vt 0.937500 0.000000
|
||||||
|
vt 0.062500 1.000000
|
||||||
|
vt 0.125000 0.000000
|
||||||
|
vt 0.125000 1.000000
|
||||||
|
vt 0.875000 0.000000
|
||||||
|
vt 0.937500 1.000000
|
||||||
|
vt 0.875000 1.000000
|
||||||
|
vt 0.125000 -0.000000
|
||||||
|
vt 0.062500 0.125000
|
||||||
|
vt 0.062500 -0.000000
|
||||||
|
vt 1.000000 0.000000
|
||||||
|
vt -0.000000 0.125000
|
||||||
|
vt -0.000000 0.000000
|
||||||
|
vt 1.000000 0.000000
|
||||||
|
vt -0.000000 0.125000
|
||||||
|
vt -0.000000 0.000000
|
||||||
|
vt 0.937500 -0.000000
|
||||||
|
vt 0.875000 0.125000
|
||||||
|
vt 0.875000 -0.000000
|
||||||
|
vt 0.937500 0.000000
|
||||||
|
vt 0.875000 0.125000
|
||||||
|
vt 0.875000 0.000000
|
||||||
|
vt 1.000000 -0.000000
|
||||||
|
vt -0.000000 0.125000
|
||||||
|
vt -0.000000 -0.000000
|
||||||
|
vt 1.000000 -0.000000
|
||||||
|
vt -0.000000 0.125000
|
||||||
|
vt -0.000000 -0.000000
|
||||||
|
vt 0.125000 0.000000
|
||||||
|
vt 0.062500 0.125000
|
||||||
|
vt 0.062500 0.000000
|
||||||
|
vt 0.875000 0.687500
|
||||||
|
vt 0.125000 0.812500
|
||||||
|
vt 0.125000 0.687500
|
||||||
|
vt 0.875000 0.812500
|
||||||
|
vt 0.125000 0.687500
|
||||||
|
vt 0.875000 0.687500
|
||||||
|
vt 0.875000 0.000000
|
||||||
|
vt 0.125000 0.062500
|
||||||
|
vt 0.125000 0.000000
|
||||||
|
vt 0.875000 -0.000000
|
||||||
|
vt 0.125000 0.062500
|
||||||
|
vt 0.125000 -0.000000
|
||||||
|
vt 0.062500 0.812500
|
||||||
|
vt 0.000000 0.687500
|
||||||
|
vt 0.062500 0.687500
|
||||||
|
vt 0.062500 0.062500
|
||||||
|
vt -0.000000 -0.000000
|
||||||
|
vt 0.062500 -0.000000
|
||||||
|
vt 0.937500 0.000000
|
||||||
|
vt 1.000000 0.062500
|
||||||
|
vt 0.937500 0.062500
|
||||||
|
vt 1.000000 0.687500
|
||||||
|
vt 0.937500 0.812500
|
||||||
|
vt 0.937500 0.687500
|
||||||
|
vt 0.312500 0.062500
|
||||||
|
vt 0.187500 -0.000000
|
||||||
|
vt 0.312500 -0.000000
|
||||||
|
vt 0.062500 0.062500
|
||||||
|
vt 0.000000 0.000000
|
||||||
|
vt 0.062500 0.000000
|
||||||
|
vt 0.000000 0.812500
|
||||||
|
vt 0.062500 0.687500
|
||||||
|
vt 0.062500 0.812500
|
||||||
|
vt 0.937500 -0.000000
|
||||||
|
vt 1.000000 0.062500
|
||||||
|
vt 0.937500 0.062500
|
||||||
|
vt 0.937500 0.687500
|
||||||
|
vt 1.000000 0.812500
|
||||||
|
vt 0.937500 0.812500
|
||||||
|
vt 0.812500 0.062500
|
||||||
|
vt 0.687500 0.000000
|
||||||
|
vt 0.812500 0.000000
|
||||||
|
vt 0.875000 0.187500
|
||||||
|
vt 0.125000 0.312500
|
||||||
|
vt 0.125000 0.187500
|
||||||
|
vt 0.875000 0.312500
|
||||||
|
vt 0.125000 0.187500
|
||||||
|
vt 0.875000 0.187500
|
||||||
|
vt 0.875000 0.000000
|
||||||
|
vt 0.125000 0.062500
|
||||||
|
vt 0.125000 0.000000
|
||||||
|
vt 0.875000 -0.000000
|
||||||
|
vt 0.125000 0.062500
|
||||||
|
vt 0.125000 -0.000000
|
||||||
|
vt 0.062500 0.312500
|
||||||
|
vt 0.000000 0.187500
|
||||||
|
vt 0.062500 0.187500
|
||||||
|
vt 0.062500 0.062500
|
||||||
|
vt -0.000000 -0.000000
|
||||||
|
vt 0.062500 -0.000000
|
||||||
|
vt 0.937500 0.000000
|
||||||
|
vt 1.000000 0.062500
|
||||||
|
vt 0.937500 0.062500
|
||||||
|
vt 1.000000 0.187500
|
||||||
|
vt 0.937500 0.312500
|
||||||
|
vt 0.937500 0.187500
|
||||||
|
vt 0.812500 0.062500
|
||||||
|
vt 0.687500 -0.000000
|
||||||
|
vt 0.812500 -0.000000
|
||||||
|
vt 0.062500 0.062500
|
||||||
|
vt 0.000000 0.000000
|
||||||
|
vt 0.062500 0.000000
|
||||||
|
vt 0.000000 0.312500
|
||||||
|
vt 0.062500 0.187500
|
||||||
|
vt 0.062500 0.312500
|
||||||
|
vt 0.937500 -0.000000
|
||||||
|
vt 1.000000 0.062500
|
||||||
|
vt 0.937500 0.062500
|
||||||
|
vt 0.937500 0.187500
|
||||||
|
vt 1.000000 0.312500
|
||||||
|
vt 0.937500 0.312500
|
||||||
|
vt 0.312500 0.062500
|
||||||
|
vt 0.187500 0.000000
|
||||||
|
vt 0.312500 0.000000
|
||||||
|
vt 0.125000 1.000000
|
||||||
|
vt 0.875000 1.000000
|
||||||
|
vt 0.062500 0.000000
|
||||||
|
vt 0.937500 0.000000
|
||||||
|
vt 0.125000 0.125000
|
||||||
|
vt 1.000000 0.125000
|
||||||
|
vt 1.000000 0.125000
|
||||||
|
vt 0.937500 0.125000
|
||||||
|
vt 0.937500 0.125000
|
||||||
|
vt 1.000000 0.125000
|
||||||
|
vt 1.000000 0.125000
|
||||||
|
vt 0.125000 0.125000
|
||||||
|
vt 0.875000 0.812500
|
||||||
|
vt 0.125000 0.812500
|
||||||
|
vt 0.875000 0.062500
|
||||||
|
vt 0.875000 0.062500
|
||||||
|
vt 0.000000 0.812500
|
||||||
|
vt -0.000000 0.062500
|
||||||
|
vt 1.000000 0.000000
|
||||||
|
vt 1.000000 0.812500
|
||||||
|
vt 0.187500 0.062500
|
||||||
|
vt 0.000000 0.062500
|
||||||
|
vt 0.000000 0.687500
|
||||||
|
vt 1.000000 -0.000000
|
||||||
|
vt 1.000000 0.687500
|
||||||
|
vt 0.687500 0.062500
|
||||||
|
vt 0.875000 0.312500
|
||||||
|
vt 0.125000 0.312500
|
||||||
|
vt 0.875000 0.062500
|
||||||
|
vt 0.875000 0.062500
|
||||||
|
vt 0.000000 0.312500
|
||||||
|
vt -0.000000 0.062500
|
||||||
|
vt 1.000000 0.000000
|
||||||
|
vt 1.000000 0.312500
|
||||||
|
vt 0.687500 0.062500
|
||||||
|
vt 0.000000 0.062500
|
||||||
|
vt 0.000000 0.187500
|
||||||
|
vt 1.000000 -0.000000
|
||||||
|
vt 1.000000 0.187500
|
||||||
|
vt 0.187500 0.062500
|
||||||
|
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 1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 0.0000 -1.0000
|
||||||
|
s off
|
||||||
|
f 3/1/1 15/2/1 16/3/1
|
||||||
|
f 8/4/2 11/5/2 7/6/2
|
||||||
|
f 10/7/2 5/8/2 6/9/2
|
||||||
|
f 2/10/1 14/11/1 1/12/1
|
||||||
|
f 11/13/3 16/14/3 7/15/3
|
||||||
|
f 10/16/4 13/17/4 9/18/4
|
||||||
|
f 12/19/4 3/20/4 11/21/4
|
||||||
|
f 9/22/3 2/23/3 5/24/3
|
||||||
|
f 8/25/5 4/26/5 12/27/5
|
||||||
|
f 7/28/6 15/29/6 8/30/6
|
||||||
|
f 5/31/6 1/32/6 6/33/6
|
||||||
|
f 6/34/5 14/35/5 10/36/5
|
||||||
|
f 19/37/2 18/38/2 17/39/2
|
||||||
|
f 23/40/1 21/41/1 22/42/1
|
||||||
|
f 20/43/5 23/44/5 18/45/5
|
||||||
|
f 17/46/3 21/47/3 19/48/3
|
||||||
|
f 28/49/1 31/50/1 27/51/1
|
||||||
|
f 27/52/3 29/53/3 25/54/3
|
||||||
|
f 26/55/5 32/56/5 28/57/5
|
||||||
|
f 29/58/2 26/59/2 25/60/2
|
||||||
|
f 31/61/6 30/62/6 29/63/6
|
||||||
|
f 36/64/5 38/65/5 34/66/5
|
||||||
|
f 38/67/2 33/68/2 34/69/2
|
||||||
|
f 33/70/3 39/71/3 35/72/3
|
||||||
|
f 35/73/1 40/74/1 36/75/1
|
||||||
|
f 40/76/4 37/77/4 38/78/4
|
||||||
|
f 43/79/2 42/80/2 41/81/2
|
||||||
|
f 47/82/1 45/83/1 46/84/1
|
||||||
|
f 44/85/5 47/86/5 42/87/5
|
||||||
|
f 41/88/3 45/89/3 43/90/3
|
||||||
|
f 52/91/1 55/92/1 51/93/1
|
||||||
|
f 51/94/3 53/95/3 49/96/3
|
||||||
|
f 50/97/5 56/98/5 52/99/5
|
||||||
|
f 53/100/2 50/101/2 49/102/2
|
||||||
|
f 55/103/6 54/104/6 53/105/6
|
||||||
|
f 60/106/5 62/107/5 58/108/5
|
||||||
|
f 62/109/2 57/110/2 58/111/2
|
||||||
|
f 57/112/3 63/113/3 59/114/3
|
||||||
|
f 59/115/1 64/116/1 60/117/1
|
||||||
|
f 64/118/4 61/119/4 62/120/4
|
||||||
|
f 3/1/1 4/121/1 15/2/1
|
||||||
|
f 8/4/2 12/122/2 11/5/2
|
||||||
|
f 10/7/2 9/123/2 5/8/2
|
||||||
|
f 2/10/1 13/124/1 14/11/1
|
||||||
|
f 11/13/3 3/125/3 16/14/3
|
||||||
|
f 10/16/4 14/126/4 13/17/4
|
||||||
|
f 12/19/4 4/127/4 3/20/4
|
||||||
|
f 9/22/3 13/128/3 2/23/3
|
||||||
|
f 8/25/5 15/129/5 4/26/5
|
||||||
|
f 7/28/6 16/130/6 15/29/6
|
||||||
|
f 5/31/6 2/131/6 1/32/6
|
||||||
|
f 6/34/5 1/132/5 14/35/5
|
||||||
|
f 19/37/2 20/133/2 18/38/2
|
||||||
|
f 23/40/1 24/134/1 21/41/1
|
||||||
|
f 20/43/5 24/135/5 23/44/5
|
||||||
|
f 17/46/3 22/136/3 21/47/3
|
||||||
|
f 28/49/1 32/137/1 31/50/1
|
||||||
|
f 27/52/3 31/138/3 29/53/3
|
||||||
|
f 26/55/5 30/139/5 32/56/5
|
||||||
|
f 29/58/2 30/140/2 26/59/2
|
||||||
|
f 31/61/6 32/141/6 30/62/6
|
||||||
|
f 36/64/5 40/142/5 38/65/5
|
||||||
|
f 38/67/2 37/143/2 33/68/2
|
||||||
|
f 33/70/3 37/144/3 39/71/3
|
||||||
|
f 35/73/1 39/145/1 40/74/1
|
||||||
|
f 40/76/4 39/146/4 37/77/4
|
||||||
|
f 43/79/2 44/147/2 42/80/2
|
||||||
|
f 47/82/1 48/148/1 45/83/1
|
||||||
|
f 44/85/5 48/149/5 47/86/5
|
||||||
|
f 41/88/3 46/150/3 45/89/3
|
||||||
|
f 52/91/1 56/151/1 55/92/1
|
||||||
|
f 51/94/3 55/152/3 53/95/3
|
||||||
|
f 50/97/5 54/153/5 56/98/5
|
||||||
|
f 53/100/2 54/154/2 50/101/2
|
||||||
|
f 55/103/6 56/155/6 54/104/6
|
||||||
|
f 60/106/5 64/156/5 62/107/5
|
||||||
|
f 62/109/2 61/157/2 57/110/2
|
||||||
|
f 57/112/3 61/158/3 63/113/3
|
||||||
|
f 59/115/1 63/159/1 64/116/1
|
||||||
|
f 64/118/4 63/160/4 61/119/4
|
||||||
681
src/main/resources/assets/hbm/models/blocks/rail_narrow_bend.obj
Normal file
@ -0,0 +1,681 @@
|
|||||||
|
# Blender v2.79 (sub 0) OBJ File: 'rail_narrow_bend.blend'
|
||||||
|
# www.blender.org
|
||||||
|
o Plane
|
||||||
|
v 0.500000 0.125000 0.375000
|
||||||
|
v 0.500000 0.125000 -0.375000
|
||||||
|
v 0.500000 0.000000 0.375000
|
||||||
|
v 0.500000 0.000000 -0.437500
|
||||||
|
v -0.463258 0.125000 -0.342627
|
||||||
|
v 0.500000 0.000000 0.437500
|
||||||
|
v -0.292554 0.125000 0.515560
|
||||||
|
v 0.500000 0.000000 -0.375000
|
||||||
|
v -0.451065 0.000000 -0.281328
|
||||||
|
v 0.500000 0.125000 0.437500
|
||||||
|
v 0.500000 0.125000 -0.437500
|
||||||
|
v -0.292554 0.000000 0.515560
|
||||||
|
v -3.325402 0.062500 1.279721
|
||||||
|
v -3.404702 0.062500 1.376347
|
||||||
|
v -3.325402 0.000000 1.279721
|
||||||
|
v -3.404702 0.000000 1.376347
|
||||||
|
v -3.057147 0.000000 2.669533
|
||||||
|
v -2.998222 0.000000 2.559293
|
||||||
|
v -3.057147 0.062500 2.669533
|
||||||
|
v -2.998222 0.062500 2.559293
|
||||||
|
v -0.601330 0.062500 0.654096
|
||||||
|
v -0.720948 0.062500 0.690382
|
||||||
|
v -0.601330 0.000000 0.654096
|
||||||
|
v -0.720948 0.000000 0.690382
|
||||||
|
v -0.052285 0.000000 -0.469798
|
||||||
|
v 0.072113 0.000000 -0.482049
|
||||||
|
v -0.052285 0.062500 -0.469798
|
||||||
|
v 0.072113 0.062500 -0.482049
|
||||||
|
v -0.891615 0.062500 -0.302844
|
||||||
|
v -1.011232 0.062500 -0.266559
|
||||||
|
v -0.891615 0.000000 -0.302844
|
||||||
|
v -1.011232 0.000000 -0.266559
|
||||||
|
v 0.045732 0.000000 0.525387
|
||||||
|
v 0.170130 0.000000 0.513135
|
||||||
|
v 0.045732 0.062500 0.525387
|
||||||
|
v 0.170130 0.062500 0.513135
|
||||||
|
v -0.463258 0.000000 -0.342627
|
||||||
|
v -0.304748 0.000000 0.454261
|
||||||
|
v -0.451065 0.125000 -0.281328
|
||||||
|
v -0.304748 0.125000 0.454261
|
||||||
|
v -3.605381 0.125000 1.756872
|
||||||
|
v -2.877845 0.125000 2.242996
|
||||||
|
v -3.553414 0.000000 1.791595
|
||||||
|
v -2.877845 0.000000 2.242996
|
||||||
|
v -3.605381 0.000000 1.756872
|
||||||
|
v -2.929812 0.000000 2.208273
|
||||||
|
v -3.553414 0.125000 1.791595
|
||||||
|
v -2.929812 0.125000 2.208273
|
||||||
|
v -2.243128 0.125000 0.394619
|
||||||
|
v -1.757004 0.125000 1.122155
|
||||||
|
v -2.208405 0.000000 0.446586
|
||||||
|
v -1.757004 0.000000 1.122155
|
||||||
|
v -2.243128 0.000000 0.394619
|
||||||
|
v -1.791727 0.000000 1.070188
|
||||||
|
v -2.208405 0.125000 0.446586
|
||||||
|
v -1.791727 0.125000 1.070188
|
||||||
|
v -4.342627 0.125000 3.536741
|
||||||
|
v -3.484440 0.125000 3.707446
|
||||||
|
v -4.281328 0.000000 3.548935
|
||||||
|
v -3.484440 0.000000 3.707446
|
||||||
|
v -4.342627 0.000000 3.536741
|
||||||
|
v -3.545739 0.000000 3.695252
|
||||||
|
v -4.281328 0.125000 3.548935
|
||||||
|
v -3.545739 0.125000 3.695252
|
||||||
|
v 0.500000 0.000000 4.500000
|
||||||
|
v -3.625000 0.125000 4.500000
|
||||||
|
v -4.375000 0.125000 4.500000
|
||||||
|
v -3.625000 0.000000 4.500000
|
||||||
|
v -4.437500 0.000000 4.500000
|
||||||
|
v -3.562500 0.000000 4.500000
|
||||||
|
v -4.375000 0.000000 4.500000
|
||||||
|
v -3.562500 0.125000 4.500000
|
||||||
|
v -4.437500 0.125000 4.500000
|
||||||
|
v -2.416816 0.125000 1.583184
|
||||||
|
v -2.947145 0.125000 1.052855
|
||||||
|
v -2.416816 0.000000 1.583184
|
||||||
|
v -2.991340 0.000000 1.008660
|
||||||
|
v -2.372621 0.000000 1.627379
|
||||||
|
v -2.947145 0.000000 1.052855
|
||||||
|
v -2.372621 0.125000 1.627379
|
||||||
|
v -2.991340 0.125000 1.008660
|
||||||
|
v -3.311003 0.125000 2.921431
|
||||||
|
v -4.003912 0.125000 2.634418
|
||||||
|
v -3.311003 0.000000 2.921431
|
||||||
|
v -4.061655 0.000000 2.610501
|
||||||
|
v -3.253261 0.000000 2.945349
|
||||||
|
v -4.003912 0.000000 2.634418
|
||||||
|
v -3.253261 0.125000 2.945349
|
||||||
|
v -4.061655 0.125000 2.610501
|
||||||
|
v -1.078569 0.125000 0.688997
|
||||||
|
v -1.365582 0.125000 -0.003912
|
||||||
|
v -1.078569 0.000000 0.688997
|
||||||
|
v -1.389499 0.000000 -0.061655
|
||||||
|
v -1.054651 0.000000 0.746740
|
||||||
|
v -1.365582 0.000000 -0.003912
|
||||||
|
v -1.054651 0.125000 0.746740
|
||||||
|
v -1.389499 0.125000 -0.061655
|
||||||
|
v -3.880144 0.062500 2.087896
|
||||||
|
v -3.939068 0.062500 2.198136
|
||||||
|
v -3.880144 0.000000 2.087896
|
||||||
|
v -3.939068 0.000000 2.198136
|
||||||
|
v -2.631691 0.000000 2.010740
|
||||||
|
v -2.552392 0.000000 1.914114
|
||||||
|
v -2.631691 0.062500 2.010740
|
||||||
|
v -2.552392 0.062500 1.914114
|
||||||
|
v -4.266559 0.062500 2.988768
|
||||||
|
v -4.302845 0.062500 3.108386
|
||||||
|
v -4.266559 0.000000 2.988768
|
||||||
|
v -4.302845 0.000000 3.108386
|
||||||
|
v -3.486865 0.000000 4.170131
|
||||||
|
v -3.474612 0.000000 4.045732
|
||||||
|
v -3.486865 0.062500 4.170131
|
||||||
|
v -3.474612 0.062500 4.045732
|
||||||
|
v -1.989260 0.062500 1.368309
|
||||||
|
v -2.085886 0.062500 1.447608
|
||||||
|
v -1.989260 0.000000 1.368309
|
||||||
|
v -2.085886 0.000000 1.447608
|
||||||
|
v -1.912104 0.000000 0.119856
|
||||||
|
v -1.801864 0.000000 0.060932
|
||||||
|
v -1.912104 0.062500 0.119856
|
||||||
|
v -1.801864 0.062500 0.060932
|
||||||
|
v -2.623653 0.062500 0.595299
|
||||||
|
v -2.720279 0.062500 0.674598
|
||||||
|
v -2.623653 0.000000 0.595299
|
||||||
|
v -2.720279 0.000000 0.674598
|
||||||
|
v -1.440707 0.000000 1.001778
|
||||||
|
v -1.330467 0.000000 0.942852
|
||||||
|
v -1.440707 0.062500 1.001778
|
||||||
|
v -1.330467 0.062500 0.942852
|
||||||
|
v -4.469797 0.062500 3.947715
|
||||||
|
v -4.482049 0.062500 4.072114
|
||||||
|
v -4.469797 0.000000 3.947715
|
||||||
|
v -4.482049 0.000000 4.072114
|
||||||
|
v -3.345904 0.000000 3.398670
|
||||||
|
v -3.309618 0.000000 3.279053
|
||||||
|
v -3.345904 0.062500 3.398670
|
||||||
|
v -3.309618 0.062500 3.279053
|
||||||
|
vt 0.615249 0.562500
|
||||||
|
vt 0.726069 0.437500
|
||||||
|
vt 0.615249 0.437500
|
||||||
|
vt 0.678003 0.453027
|
||||||
|
vt 0.764947 0.316851
|
||||||
|
vt 0.688434 0.459997
|
||||||
|
vt 0.613503 0.437500
|
||||||
|
vt 0.722644 0.562500
|
||||||
|
vt 0.613503 0.562500
|
||||||
|
vt 0.828202 0.562500
|
||||||
|
vt 0.828202 0.437500
|
||||||
|
vt 0.812063 0.161529
|
||||||
|
vt 0.753357 0.312051
|
||||||
|
vt 0.799759 0.159082
|
||||||
|
vt 0.823229 0.437500
|
||||||
|
vt 0.823229 0.562500
|
||||||
|
vt 0.812063 0.161529
|
||||||
|
vt 0.753357 0.312051
|
||||||
|
vt 0.764947 0.316851
|
||||||
|
vt 0.678003 0.453027
|
||||||
|
vt 0.688434 0.459997
|
||||||
|
vt 1.000000 0.437500
|
||||||
|
vt 0.993671 0.562500
|
||||||
|
vt 0.993671 0.437500
|
||||||
|
vt 0.576594 0.576594
|
||||||
|
vt 0.585465 0.585465
|
||||||
|
vt 0.459997 0.688434
|
||||||
|
vt 0.917722 0.437500
|
||||||
|
vt 0.911392 0.562500
|
||||||
|
vt 0.911392 0.437500
|
||||||
|
vt 0.777932 0.500000
|
||||||
|
vt 0.762144 0.437500
|
||||||
|
vt 0.777932 0.437500
|
||||||
|
vt 0.283574 0.500000
|
||||||
|
vt 0.325146 0.437500
|
||||||
|
vt 0.325146 0.500000
|
||||||
|
vt 0.342277 0.500000
|
||||||
|
vt 0.342277 0.437500
|
||||||
|
vt 0.626982 0.783754
|
||||||
|
vt 0.519041 0.612678
|
||||||
|
vt 0.499646 0.628595
|
||||||
|
vt 0.829653 0.500000
|
||||||
|
vt 0.762144 0.500000
|
||||||
|
vt 0.797787 0.091181
|
||||||
|
vt 1.000000 0.085886
|
||||||
|
vt 0.800246 0.066212
|
||||||
|
vt 0.845441 0.437500
|
||||||
|
vt 0.829653 0.437500
|
||||||
|
vt 0.964030 0.279326
|
||||||
|
vt 0.764669 0.245069
|
||||||
|
vt 0.771952 0.221060
|
||||||
|
vt 0.947343 0.500000
|
||||||
|
vt 0.961181 0.437500
|
||||||
|
vt 0.947343 0.437500
|
||||||
|
vt 0.856491 0.437500
|
||||||
|
vt 0.856491 0.500000
|
||||||
|
vt 1.000000 0.085886
|
||||||
|
vt 0.797787 0.091181
|
||||||
|
vt 0.800246 0.066212
|
||||||
|
vt 0.956746 0.303335
|
||||||
|
vt 0.771952 0.221060
|
||||||
|
vt 0.764669 0.245069
|
||||||
|
vt 0.870329 0.500000
|
||||||
|
vt 0.870329 0.437500
|
||||||
|
vt 0.312050 0.753357
|
||||||
|
vt 0.316851 0.764947
|
||||||
|
vt 0.159082 0.799759
|
||||||
|
vt 0.161529 0.812063
|
||||||
|
vt 0.171798 0.437501
|
||||||
|
vt 0.273931 0.562500
|
||||||
|
vt 0.273931 0.437500
|
||||||
|
vt 0.161529 0.812063
|
||||||
|
vt 0.312050 0.753357
|
||||||
|
vt 0.316851 0.764947
|
||||||
|
vt 0.176771 0.562500
|
||||||
|
vt 0.277356 0.437500
|
||||||
|
vt 0.277356 0.562500
|
||||||
|
vt 0.107153 0.562500
|
||||||
|
vt 0.000000 0.437501
|
||||||
|
vt 0.000000 0.562500
|
||||||
|
vt 0.000000 0.991058
|
||||||
|
vt 0.190898 0.959711
|
||||||
|
vt 0.193346 0.972015
|
||||||
|
vt 0.006329 0.437501
|
||||||
|
vt 0.112125 0.562500
|
||||||
|
vt 0.006329 0.562500
|
||||||
|
vt 0.000000 0.991058
|
||||||
|
vt 0.190898 0.959711
|
||||||
|
vt 0.000000 0.978513
|
||||||
|
vt 0.171798 0.562500
|
||||||
|
vt 0.082278 0.437501
|
||||||
|
vt 0.082278 0.562500
|
||||||
|
vt 0.000000 0.815428
|
||||||
|
vt 0.000000 0.827972
|
||||||
|
vt 0.088607 0.437501
|
||||||
|
vt 0.088607 0.562500
|
||||||
|
vt 0.000000 0.827972
|
||||||
|
vt 0.000000 0.815428
|
||||||
|
vt 0.892847 0.562499
|
||||||
|
vt 1.000000 0.562499
|
||||||
|
vt 0.991058 0.000000
|
||||||
|
vt 0.959711 0.190898
|
||||||
|
vt 0.978513 0.000000
|
||||||
|
vt 0.887875 0.562499
|
||||||
|
vt 0.959711 0.190898
|
||||||
|
vt 0.991058 0.000000
|
||||||
|
vt 0.978513 0.000000
|
||||||
|
vt 0.917722 0.562500
|
||||||
|
vt 0.827972 0.000000
|
||||||
|
vt 0.815427 0.000000
|
||||||
|
vt 0.827972 0.000000
|
||||||
|
vt 0.799759 0.159082
|
||||||
|
vt 0.500000 0.562500
|
||||||
|
vt 0.585465 0.585465
|
||||||
|
vt 0.500000 0.437500
|
||||||
|
vt 0.386497 0.437500
|
||||||
|
vt 0.500000 0.437500
|
||||||
|
vt 0.453027 0.678003
|
||||||
|
vt 0.459997 0.688434
|
||||||
|
vt 0.384751 0.437500
|
||||||
|
vt 0.500000 0.562500
|
||||||
|
vt 0.193346 0.972015
|
||||||
|
vt 0.374461 0.904028
|
||||||
|
vt 0.550602 0.824035
|
||||||
|
vt 0.543633 0.813604
|
||||||
|
vt 0.691913 0.691913
|
||||||
|
vt 0.824035 0.550602
|
||||||
|
vt 0.813604 0.543633
|
||||||
|
vt 0.915618 0.379261
|
||||||
|
vt 0.904028 0.374461
|
||||||
|
vt 0.972015 0.193346
|
||||||
|
vt 0.767173 0.562499
|
||||||
|
vt 0.887875 0.437500
|
||||||
|
vt 0.915618 0.379261
|
||||||
|
vt 0.904028 0.374461
|
||||||
|
vt 0.892847 0.437500
|
||||||
|
vt 0.770598 0.562499
|
||||||
|
vt 0.636203 0.437500
|
||||||
|
vt 0.636203 0.562500
|
||||||
|
vt 0.813604 0.543633
|
||||||
|
vt 0.824035 0.550602
|
||||||
|
vt 0.637950 0.437500
|
||||||
|
vt 0.637950 0.562499
|
||||||
|
vt 0.500000 0.562500
|
||||||
|
vt 0.691913 0.691913
|
||||||
|
vt 0.500000 0.562500
|
||||||
|
vt 0.363797 0.437500
|
||||||
|
vt 0.363797 0.562500
|
||||||
|
vt 0.550602 0.824035
|
||||||
|
vt 0.543633 0.813604
|
||||||
|
vt 0.362050 0.437500
|
||||||
|
vt 0.362050 0.562500
|
||||||
|
vt 0.232827 0.562500
|
||||||
|
vt 0.374461 0.904028
|
||||||
|
vt 0.229402 0.562500
|
||||||
|
vt 0.112125 0.437501
|
||||||
|
vt 0.107153 0.437501
|
||||||
|
vt 0.300705 0.437500
|
||||||
|
vt 0.283574 0.437500
|
||||||
|
vt 0.484159 0.879185
|
||||||
|
vt 0.367412 0.713993
|
||||||
|
vt 0.389540 0.702165
|
||||||
|
vt 0.420906 0.500000
|
||||||
|
vt 0.438722 0.437500
|
||||||
|
vt 0.420906 0.437500
|
||||||
|
vt 0.434944 0.437500
|
||||||
|
vt 0.434944 0.500000
|
||||||
|
vt 0.646376 0.767837
|
||||||
|
vt 0.499646 0.628595
|
||||||
|
vt 0.519041 0.612678
|
||||||
|
vt 0.367412 0.713993
|
||||||
|
vt 0.484159 0.879185
|
||||||
|
vt 0.389540 0.702165
|
||||||
|
vt 0.452759 0.500000
|
||||||
|
vt 0.452759 0.437500
|
||||||
|
vt 0.565056 0.500000
|
||||||
|
vt 0.547241 0.437500
|
||||||
|
vt 0.565056 0.437500
|
||||||
|
vt 0.038819 0.500001
|
||||||
|
vt 0.129671 0.437501
|
||||||
|
vt 0.129671 0.500001
|
||||||
|
vt 0.143509 0.500001
|
||||||
|
vt 0.143509 0.437501
|
||||||
|
vt 0.221060 0.771952
|
||||||
|
vt 0.303335 0.956746
|
||||||
|
vt 0.245069 0.764669
|
||||||
|
vt 0.561278 0.500000
|
||||||
|
vt 0.547241 0.500000
|
||||||
|
vt 0.879185 0.484159
|
||||||
|
vt 0.713993 0.367412
|
||||||
|
vt 0.702165 0.389540
|
||||||
|
vt 0.579094 0.437500
|
||||||
|
vt 0.561278 0.437500
|
||||||
|
vt 0.628595 0.499646
|
||||||
|
vt 0.767837 0.646376
|
||||||
|
vt 0.612678 0.519041
|
||||||
|
vt 0.699295 0.500000
|
||||||
|
vt 0.716426 0.437500
|
||||||
|
vt 0.699295 0.437500
|
||||||
|
vt 0.657723 0.437500
|
||||||
|
vt 0.657723 0.500000
|
||||||
|
vt 0.713993 0.367412
|
||||||
|
vt 0.879185 0.484159
|
||||||
|
vt 0.702165 0.389540
|
||||||
|
vt 0.767837 0.646376
|
||||||
|
vt 0.628595 0.499646
|
||||||
|
vt 0.612678 0.519041
|
||||||
|
vt 0.674854 0.500000
|
||||||
|
vt 0.674854 0.437500
|
||||||
|
vt 0.052657 0.437501
|
||||||
|
vt 0.038819 0.437501
|
||||||
|
vt 0.110855 0.997541
|
||||||
|
vt 0.066211 0.800246
|
||||||
|
vt 0.091181 0.797787
|
||||||
|
vt 0.154559 0.500000
|
||||||
|
vt 0.170347 0.437500
|
||||||
|
vt 0.154559 0.437500
|
||||||
|
vt 0.222068 0.437501
|
||||||
|
vt 0.222068 0.500000
|
||||||
|
vt 0.303335 0.956746
|
||||||
|
vt 0.221060 0.771952
|
||||||
|
vt 0.245069 0.764669
|
||||||
|
vt 0.085886 1.000000
|
||||||
|
vt 0.091181 0.797787
|
||||||
|
vt 0.066211 0.800246
|
||||||
|
vt 0.237856 0.500000
|
||||||
|
vt 0.237856 0.437501
|
||||||
|
vt 0.726069 0.562500
|
||||||
|
vt 0.722644 0.437500
|
||||||
|
vt 0.453027 0.678003
|
||||||
|
vt 0.646376 0.767837
|
||||||
|
vt 0.997541 0.110855
|
||||||
|
vt 0.845441 0.500000
|
||||||
|
vt 0.956746 0.303335
|
||||||
|
vt 0.961181 0.500000
|
||||||
|
vt 0.997541 0.110855
|
||||||
|
vt 0.964030 0.279326
|
||||||
|
vt 0.159082 0.799759
|
||||||
|
vt 0.176771 0.437501
|
||||||
|
vt 0.000000 0.978513
|
||||||
|
vt 0.972015 0.193346
|
||||||
|
vt 0.815427 0.000000
|
||||||
|
vt 0.576594 0.576594
|
||||||
|
vt 0.386497 0.562500
|
||||||
|
vt 0.384751 0.562500
|
||||||
|
vt 0.379261 0.915618
|
||||||
|
vt 0.700784 0.700784
|
||||||
|
vt 0.767173 0.437500
|
||||||
|
vt 0.770598 0.437500
|
||||||
|
vt 0.500000 0.437500
|
||||||
|
vt 0.700784 0.700784
|
||||||
|
vt 0.500000 0.437500
|
||||||
|
vt 0.232827 0.437500
|
||||||
|
vt 0.379261 0.915618
|
||||||
|
vt 0.229402 0.437500
|
||||||
|
vt 0.300705 0.500000
|
||||||
|
vt 0.462031 0.891012
|
||||||
|
vt 0.438722 0.500000
|
||||||
|
vt 0.626982 0.783754
|
||||||
|
vt 0.462031 0.891012
|
||||||
|
vt 0.279326 0.964030
|
||||||
|
vt 0.891012 0.462031
|
||||||
|
vt 0.579094 0.500000
|
||||||
|
vt 0.783754 0.626981
|
||||||
|
vt 0.716426 0.500000
|
||||||
|
vt 0.891012 0.462031
|
||||||
|
vt 0.783754 0.626981
|
||||||
|
vt 0.052657 0.500000
|
||||||
|
vt 0.085886 1.000000
|
||||||
|
vt 0.170347 0.500000
|
||||||
|
vt 0.279326 0.964030
|
||||||
|
vt 0.110855 0.997541
|
||||||
|
vn -0.4714 0.0000 -0.8819
|
||||||
|
vn 0.0000 1.0000 0.0000
|
||||||
|
vn 0.4714 0.0000 0.8819
|
||||||
|
vn -0.2903 0.0000 -0.9569
|
||||||
|
vn 0.2903 0.0000 0.9569
|
||||||
|
vn 0.0000 -1.0000 0.0000
|
||||||
|
vn 1.0000 0.0000 0.0000
|
||||||
|
vn -0.4714 0.0000 0.8819
|
||||||
|
vn 0.8819 0.0000 0.4714
|
||||||
|
vn -0.9569 0.0000 0.2903
|
||||||
|
vn -0.0980 0.0000 -0.9952
|
||||||
|
vn -0.9952 0.0000 0.0980
|
||||||
|
vn 0.9952 0.0000 -0.0980
|
||||||
|
vn 0.0980 0.0000 0.9952
|
||||||
|
vn -0.9569 0.0000 -0.2903
|
||||||
|
vn 0.9569 0.0000 0.2903
|
||||||
|
vn -0.9952 0.0000 -0.0980
|
||||||
|
vn 0.9952 0.0000 0.0980
|
||||||
|
vn 0.0000 0.0000 1.0000
|
||||||
|
vn 0.6344 0.0000 0.7730
|
||||||
|
vn -0.6344 0.0000 -0.7730
|
||||||
|
vn 0.7730 0.0000 0.6344
|
||||||
|
vn -0.7730 0.0000 -0.6344
|
||||||
|
vn -0.8819 0.0000 -0.4714
|
||||||
|
vn 0.9569 0.0000 -0.2903
|
||||||
|
vn -0.6344 0.0000 0.7730
|
||||||
|
vn 0.6344 0.0000 -0.7730
|
||||||
|
vn 0.4714 0.0000 -0.8819
|
||||||
|
vn -0.0980 0.0000 0.9952
|
||||||
|
vn -0.7730 0.0000 0.6344
|
||||||
|
vn -0.8819 0.0000 0.4714
|
||||||
|
vn 0.8819 0.0000 -0.4714
|
||||||
|
vn 0.7730 0.0000 -0.6344
|
||||||
|
vn -0.2903 0.0000 0.9569
|
||||||
|
vn 0.2903 0.0000 -0.9569
|
||||||
|
vn 0.0980 0.0000 -0.9952
|
||||||
|
s off
|
||||||
|
f 56/1/1 92/2/1 54/3/1
|
||||||
|
f 50/4/2 90/5/2 56/6/2
|
||||||
|
f 52/7/3 96/8/3 50/9/3
|
||||||
|
f 92/2/4 40/10/4 38/11/4
|
||||||
|
f 40/12/2 96/13/2 7/14/2
|
||||||
|
f 96/8/5 12/15/5 7/16/5
|
||||||
|
f 38/17/6 94/18/6 92/19/6
|
||||||
|
f 92/19/6 52/20/6 54/21/6
|
||||||
|
f 4/22/7 2/23/7 8/24/7
|
||||||
|
f 54/21/6 78/25/6 76/26/6
|
||||||
|
f 78/25/6 46/27/6 76/26/6
|
||||||
|
f 3/28/7 10/29/7 6/30/7
|
||||||
|
f 21/31/5 24/32/5 23/33/5
|
||||||
|
f 99/34/8 17/35/8 19/36/8
|
||||||
|
f 20/37/9 17/35/9 18/38/9
|
||||||
|
f 16/39/6 103/40/6 102/41/6
|
||||||
|
f 30/42/10 24/32/10 22/43/10
|
||||||
|
f 33/44/6 26/45/6 34/46/6
|
||||||
|
f 30/42/4 31/47/4 32/48/4
|
||||||
|
f 29/49/2 22/50/2 21/51/2
|
||||||
|
f 27/52/11 26/53/11 25/54/11
|
||||||
|
f 27/52/12 33/55/12 35/56/12
|
||||||
|
f 28/57/2 35/58/2 36/59/2
|
||||||
|
f 32/60/6 23/61/6 24/62/6
|
||||||
|
f 26/53/13 36/63/13 34/64/13
|
||||||
|
f 36/63/14 33/55/14 34/64/14
|
||||||
|
f 46/27/6 86/65/6 84/66/6
|
||||||
|
f 84/66/6 60/67/6 62/68/6
|
||||||
|
f 62/69/15 82/70/15 84/71/15
|
||||||
|
f 64/72/2 88/73/2 82/74/2
|
||||||
|
f 58/75/16 86/76/16 88/77/16
|
||||||
|
f 57/78/17 69/79/17 73/80/17
|
||||||
|
f 73/81/2 63/82/2 57/83/2
|
||||||
|
f 71/84/18 63/85/18 67/86/18
|
||||||
|
f 69/87/6 59/88/6 71/89/6
|
||||||
|
f 64/90/17 68/91/17 66/92/17
|
||||||
|
f 72/93/2 64/72/2 66/94/2
|
||||||
|
f 70/95/18 58/75/18 72/96/18
|
||||||
|
f 68/97/6 60/67/6 70/98/6
|
||||||
|
f 4/22/11 5/99/11 11/100/11
|
||||||
|
f 11/101/2 39/102/2 2/103/2
|
||||||
|
f 67/86/19 69/79/19 71/84/19
|
||||||
|
f 72/96/19 68/91/19 70/95/19
|
||||||
|
f 39/104/14 8/24/14 2/23/14
|
||||||
|
f 9/105/6 4/106/6 8/107/6
|
||||||
|
f 38/11/11 1/108/11 3/28/11
|
||||||
|
f 1/109/2 7/14/2 10/110/2
|
||||||
|
f 7/16/14 6/30/14 10/29/14
|
||||||
|
f 3/111/6 12/112/6 38/17/6
|
||||||
|
f 80/113/20 52/7/20 50/9/20
|
||||||
|
f 74/114/2 50/4/2 56/6/2
|
||||||
|
f 76/115/21 56/1/21 54/3/21
|
||||||
|
f 80/113/22 44/116/22 78/117/22
|
||||||
|
f 42/118/2 74/114/2 48/119/2
|
||||||
|
f 46/120/23 74/121/23 76/115/23
|
||||||
|
f 44/116/9 88/77/9 86/76/9
|
||||||
|
f 82/74/2 42/118/2 48/119/2
|
||||||
|
f 82/70/24 46/120/24 84/71/24
|
||||||
|
f 61/122/6 87/123/6 59/88/6
|
||||||
|
f 87/123/6 45/124/6 43/125/6
|
||||||
|
f 45/124/6 79/126/6 43/125/6
|
||||||
|
f 79/126/6 53/127/6 51/128/6
|
||||||
|
f 51/128/6 93/129/6 95/130/6
|
||||||
|
f 95/130/6 37/131/6 9/105/6
|
||||||
|
f 91/132/5 9/133/5 39/104/5
|
||||||
|
f 39/102/2 97/134/2 91/135/2
|
||||||
|
f 37/136/4 97/137/4 5/99/4
|
||||||
|
f 51/138/3 91/132/3 55/139/3
|
||||||
|
f 55/140/2 97/134/2 49/141/2
|
||||||
|
f 97/137/1 53/142/1 49/143/1
|
||||||
|
f 75/144/20 51/138/20 55/139/20
|
||||||
|
f 49/141/2 75/145/2 55/140/2
|
||||||
|
f 53/142/21 81/146/21 49/143/21
|
||||||
|
f 43/147/22 75/144/22 47/148/22
|
||||||
|
f 75/145/2 41/149/2 47/150/2
|
||||||
|
f 81/146/23 45/151/23 41/152/23
|
||||||
|
f 83/153/9 43/147/9 47/148/9
|
||||||
|
f 41/149/2 83/154/2 47/150/2
|
||||||
|
f 45/151/24 89/155/24 41/152/24
|
||||||
|
f 59/156/16 83/153/16 63/85/16
|
||||||
|
f 83/154/2 57/83/2 63/82/2
|
||||||
|
f 89/155/15 61/157/15 57/78/15
|
||||||
|
f 31/47/25 21/31/25 23/33/25
|
||||||
|
f 99/34/24 100/158/24 101/159/24
|
||||||
|
f 98/160/2 19/161/2 20/162/2
|
||||||
|
f 14/163/23 15/164/23 16/165/23
|
||||||
|
f 14/163/26 102/166/26 104/167/26
|
||||||
|
f 13/168/2 104/169/2 105/170/2
|
||||||
|
f 17/171/6 100/172/6 18/173/6
|
||||||
|
f 15/164/27 105/174/27 103/175/27
|
||||||
|
f 105/174/22 102/166/22 103/175/22
|
||||||
|
f 100/158/28 20/37/28 18/38/28
|
||||||
|
f 114/176/20 117/177/20 116/178/20
|
||||||
|
f 131/179/29 110/180/29 112/181/29
|
||||||
|
f 113/182/18 110/180/18 111/183/18
|
||||||
|
f 134/184/6 108/185/6 135/186/6
|
||||||
|
f 123/187/30 117/177/30 115/188/30
|
||||||
|
f 118/189/6 127/190/6 126/191/6
|
||||||
|
f 123/187/21 124/192/21 125/193/21
|
||||||
|
f 114/194/2 123/195/2 115/196/2
|
||||||
|
f 120/197/1 119/198/1 118/199/1
|
||||||
|
f 120/197/31 126/200/31 128/201/31
|
||||||
|
f 129/202/2 120/203/2 128/204/2
|
||||||
|
f 125/205/6 116/206/6 117/207/6
|
||||||
|
f 119/198/32 129/208/32 127/209/32
|
||||||
|
f 129/208/3 126/200/3 127/209/3
|
||||||
|
f 124/192/33 114/176/33 116/178/33
|
||||||
|
f 131/179/17 132/210/17 133/211/17
|
||||||
|
f 130/212/2 112/213/2 113/214/2
|
||||||
|
f 107/215/15 108/216/15 109/217/15
|
||||||
|
f 107/215/34 134/218/34 136/219/34
|
||||||
|
f 106/220/2 136/221/2 137/222/2
|
||||||
|
f 133/223/6 111/224/6 110/225/6
|
||||||
|
f 108/216/35 137/226/35 135/227/35
|
||||||
|
f 137/226/16 134/218/16 135/227/16
|
||||||
|
f 132/210/36 113/182/36 111/183/36
|
||||||
|
f 56/1/1 90/228/1 92/2/1
|
||||||
|
f 50/4/2 96/13/2 90/5/2
|
||||||
|
f 52/7/3 94/229/3 96/8/3
|
||||||
|
f 92/2/4 90/228/4 40/10/4
|
||||||
|
f 40/12/2 90/5/2 96/13/2
|
||||||
|
f 96/8/5 94/229/5 12/15/5
|
||||||
|
f 38/17/6 12/112/6 94/18/6
|
||||||
|
f 92/19/6 94/18/6 52/20/6
|
||||||
|
f 4/22/7 11/100/7 2/23/7
|
||||||
|
f 54/21/6 52/20/6 78/25/6
|
||||||
|
f 78/25/6 44/230/6 46/27/6
|
||||||
|
f 3/28/7 1/108/7 10/29/7
|
||||||
|
f 21/31/5 22/43/5 24/32/5
|
||||||
|
f 99/34/8 101/159/8 17/35/8
|
||||||
|
f 20/37/9 19/36/9 17/35/9
|
||||||
|
f 16/39/6 15/231/6 103/40/6
|
||||||
|
f 30/42/10 32/48/10 24/32/10
|
||||||
|
f 33/44/6 25/232/6 26/45/6
|
||||||
|
f 30/42/4 29/233/4 31/47/4
|
||||||
|
f 29/49/2 30/234/2 22/50/2
|
||||||
|
f 27/52/11 28/235/11 26/53/11
|
||||||
|
f 27/52/12 25/54/12 33/55/12
|
||||||
|
f 28/57/2 27/236/2 35/58/2
|
||||||
|
f 32/60/6 31/237/6 23/61/6
|
||||||
|
f 26/53/13 28/235/13 36/63/13
|
||||||
|
f 36/63/14 35/56/14 33/55/14
|
||||||
|
f 46/27/6 44/230/6 86/65/6
|
||||||
|
f 84/66/6 86/65/6 60/67/6
|
||||||
|
f 62/69/15 64/90/15 82/70/15
|
||||||
|
f 64/72/2 58/238/2 88/73/2
|
||||||
|
f 58/75/16 60/239/16 86/76/16
|
||||||
|
f 57/78/17 61/157/17 69/79/17
|
||||||
|
f 73/81/2 67/240/2 63/82/2
|
||||||
|
f 71/84/18 59/156/18 63/85/18
|
||||||
|
f 69/87/6 61/122/6 59/88/6
|
||||||
|
f 64/90/17 62/69/17 68/91/17
|
||||||
|
f 72/93/2 58/238/2 64/72/2
|
||||||
|
f 70/95/18 60/239/18 58/75/18
|
||||||
|
f 68/97/6 62/68/6 60/67/6
|
||||||
|
f 4/22/11 37/136/11 5/99/11
|
||||||
|
f 11/101/2 5/241/2 39/102/2
|
||||||
|
f 67/86/19 73/80/19 69/79/19
|
||||||
|
f 72/96/19 66/92/19 68/91/19
|
||||||
|
f 39/104/14 9/133/14 8/24/14
|
||||||
|
f 9/105/6 37/131/6 4/106/6
|
||||||
|
f 38/11/11 40/10/11 1/108/11
|
||||||
|
f 1/109/2 40/12/2 7/14/2
|
||||||
|
f 7/16/14 12/15/14 6/30/14
|
||||||
|
f 3/111/6 6/242/6 12/112/6
|
||||||
|
f 80/113/20 78/117/20 52/7/20
|
||||||
|
f 74/114/2 80/243/2 50/4/2
|
||||||
|
f 76/115/21 74/121/21 56/1/21
|
||||||
|
f 80/113/22 42/244/22 44/116/22
|
||||||
|
f 42/118/2 80/243/2 74/114/2
|
||||||
|
f 46/120/23 48/245/23 74/121/23
|
||||||
|
f 44/116/9 42/244/9 88/77/9
|
||||||
|
f 82/74/2 88/73/2 42/118/2
|
||||||
|
f 82/70/24 48/245/24 46/120/24
|
||||||
|
f 61/122/6 85/246/6 87/123/6
|
||||||
|
f 87/123/6 85/246/6 45/124/6
|
||||||
|
f 45/124/6 77/247/6 79/126/6
|
||||||
|
f 79/126/6 77/247/6 53/127/6
|
||||||
|
f 51/128/6 53/127/6 93/129/6
|
||||||
|
f 95/130/6 93/129/6 37/131/6
|
||||||
|
f 91/132/5 95/248/5 9/133/5
|
||||||
|
f 39/102/2 5/241/2 97/134/2
|
||||||
|
f 37/136/4 93/249/4 97/137/4
|
||||||
|
f 51/138/3 95/248/3 91/132/3
|
||||||
|
f 55/140/2 91/135/2 97/134/2
|
||||||
|
f 97/137/1 93/249/1 53/142/1
|
||||||
|
f 75/144/20 79/250/20 51/138/20
|
||||||
|
f 49/141/2 81/251/2 75/145/2
|
||||||
|
f 53/142/21 77/252/21 81/146/21
|
||||||
|
f 43/147/22 79/250/22 75/144/22
|
||||||
|
f 75/145/2 81/251/2 41/149/2
|
||||||
|
f 81/146/23 77/252/23 45/151/23
|
||||||
|
f 83/153/9 87/253/9 43/147/9
|
||||||
|
f 41/149/2 89/254/2 83/154/2
|
||||||
|
f 45/151/24 85/255/24 89/155/24
|
||||||
|
f 59/156/16 87/253/16 83/153/16
|
||||||
|
f 83/154/2 89/254/2 57/83/2
|
||||||
|
f 89/155/15 85/255/15 61/157/15
|
||||||
|
f 31/47/25 29/233/25 21/31/25
|
||||||
|
f 99/34/24 98/256/24 100/158/24
|
||||||
|
f 98/160/2 99/257/2 19/161/2
|
||||||
|
f 14/163/23 13/258/23 15/164/23
|
||||||
|
f 14/163/26 16/165/26 102/166/26
|
||||||
|
f 13/168/2 14/259/2 104/169/2
|
||||||
|
f 17/171/6 101/260/6 100/172/6
|
||||||
|
f 15/164/27 13/258/27 105/174/27
|
||||||
|
f 105/174/22 104/167/22 102/166/22
|
||||||
|
f 100/158/28 98/256/28 20/37/28
|
||||||
|
f 114/176/20 115/188/20 117/177/20
|
||||||
|
f 131/179/29 133/211/29 110/180/29
|
||||||
|
f 113/182/18 112/181/18 110/180/18
|
||||||
|
f 134/184/6 109/261/6 108/185/6
|
||||||
|
f 123/187/30 125/193/30 117/177/30
|
||||||
|
f 118/189/6 119/262/6 127/190/6
|
||||||
|
f 123/187/21 122/263/21 124/192/21
|
||||||
|
f 114/194/2 122/264/2 123/195/2
|
||||||
|
f 120/197/1 121/265/1 119/198/1
|
||||||
|
f 120/197/31 118/199/31 126/200/31
|
||||||
|
f 129/202/2 121/266/2 120/203/2
|
||||||
|
f 125/205/6 124/267/6 116/206/6
|
||||||
|
f 119/198/32 121/265/32 129/208/32
|
||||||
|
f 129/208/3 128/201/3 126/200/3
|
||||||
|
f 124/192/33 122/263/33 114/176/33
|
||||||
|
f 131/179/17 130/268/17 132/210/17
|
||||||
|
f 130/212/2 131/269/2 112/213/2
|
||||||
|
f 107/215/15 106/270/15 108/216/15
|
||||||
|
f 107/215/34 109/217/34 134/218/34
|
||||||
|
f 106/220/2 107/271/2 136/221/2
|
||||||
|
f 133/223/6 132/272/6 111/224/6
|
||||||
|
f 108/216/35 106/270/35 137/226/35
|
||||||
|
f 137/226/16 136/219/16 134/218/16
|
||||||
|
f 132/210/36 130/268/36 113/182/36
|
||||||
@ -52,6 +52,8 @@
|
|||||||
"block.turbinegasRunning": {"category": "block", "sounds": [{"name": "block/turbinegasRunning", "stream": false}]},
|
"block.turbinegasRunning": {"category": "block", "sounds": [{"name": "block/turbinegasRunning", "stream": false}]},
|
||||||
"block.turbinegasShutdown": {"category": "block", "sounds": [{"name": "block/turbinegasShutdown", "stream": true}]},
|
"block.turbinegasShutdown": {"category": "block", "sounds": [{"name": "block/turbinegasShutdown", "stream": true}]},
|
||||||
"block.damage": {"category": "block", "sounds": ["block/dam1", "block/dam2", "block/dam3", "block/dam4"]},
|
"block.damage": {"category": "block", "sounds": ["block/dam1", "block/dam2", "block/dam3", "block/dam4"]},
|
||||||
|
"block.electricHum": {"category": "block", "sounds": [{"name": "block/electricHum", "stream": false}]},
|
||||||
|
"block.boiler": {"category": "block", "sounds": [{"name": "block/boiler", "stream": false}]},
|
||||||
|
|
||||||
"door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]},
|
"door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]},
|
||||||
"door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]},
|
"door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]},
|
||||||
|
|||||||
BIN
src/main/resources/assets/hbm/sounds/block/boiler.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/block/electricHum.ogg
Normal file
|
After Width: | Height: | Size: 716 B |
|
After Width: | Height: | Size: 523 B |
|
After Width: | Height: | Size: 515 B |
|
After Width: | Height: | Size: 507 B |
|
After Width: | Height: | Size: 523 B |
|
After Width: | Height: | Size: 523 B |
|
After Width: | Height: | Size: 424 B |
|
After Width: | Height: | Size: 171 B |
|
After Width: | Height: | Size: 306 B |
|
After Width: | Height: | Size: 307 B |
|
After Width: | Height: | Size: 370 B |
|
After Width: | Height: | Size: 134 B |
BIN
src/main/resources/assets/hbm/textures/blocks/slag.png
Normal file
|
After Width: | Height: | Size: 775 B |