mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Merge branch 'HbmMods:master' into OC_bugfix
This commit is contained in:
commit
72e4cb42e0
26
changelog
26
changelog
@ -1,6 +1,26 @@
|
||||
## Changed
|
||||
* Centrifuges and refineries now use analog circuits
|
||||
* Updated boxducts
|
||||
* All boxducts are now way cleaner, only having bolts on intersections, with straight parts only having very light seams
|
||||
* Intersections now have unique textures for each size
|
||||
* Copper boxducts now have a much nicer color gradient
|
||||
* Exhaust pipes now have a more rusted appearance
|
||||
* Added an alternate recipe for blank upgrades using integrated circuits and polymer instead of analog circuits
|
||||
* Update the soyuz and orbital module recipes
|
||||
* Simplified the recipes, fewer microcrafting parts
|
||||
* Both now use low-density elements which are made from aluminium/titanium, fiberglass and hard plastic
|
||||
* Both now make use of more advanced electronics, although in smaller numbers
|
||||
* Removed the recipes for the satellite deco blocks, those will be phased out soon. Existing deco blocks can still be crafted back into functional satellites
|
||||
* Moved the satellite recipes to the welder, the attachment is now welded onto the common satellite body
|
||||
* Simplified the satellite recipes, adjusted cost based on utility (depth scanner, death ray and resonator are more expensive than the mapper/radar)
|
||||
* CTRL + ALT view now shows the item's internal name and domain
|
||||
* Adjusted Mekanism compat
|
||||
* Decreased crafting complexity and time for the digiminer assembler recipe
|
||||
* Replaced recipes for the wind turbine and atomic disassembler
|
||||
* Added a config option for toggling Mekanism compat
|
||||
* Added recipe caching to the combinator funnel, meaning it no longer has to iterate over the entire recipe list all the time for compression/automation, this should improve performance by a fair bit
|
||||
* Diodes now use silicon nuggets instead of nether quartz
|
||||
* Aluminium wire's coloring is now consistent with the ingot
|
||||
|
||||
## Fixed
|
||||
* Fixed hopper IO ignoring the stack limit on arc furnaces under certain circumstances
|
||||
* Fixed the watz powerplant not dropping as many HSS bolts as it should
|
||||
* Fixed crash caused by PRISM updating unloaded worlds
|
||||
* Hopefully fixed another crash caused by PRISM (reproduction was unreliable and sporadic, not confirmed)
|
||||
@ -1,6 +1,6 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=4991
|
||||
mod_build_number=5000
|
||||
|
||||
credits=HbMinecraft,\
|
||||
\ rodolphito (explosion algorithms),\
|
||||
|
||||
@ -19,8 +19,8 @@ import net.minecraft.world.World;
|
||||
public class Nodespace {
|
||||
|
||||
/** Contains all "NodeWorld" instances, i.e. lists of nodes existing per world */
|
||||
public static HashMap<World, NodeWorld> worlds = new HashMap();
|
||||
public static Set<PowerNetMK2> activePowerNets = new HashSet();
|
||||
public static HashMap<World, NodeWorld> worlds = new HashMap<>();
|
||||
public static Set<PowerNetMK2> activePowerNets = new HashSet<>();
|
||||
|
||||
public static PowerNode getNode(World world, int x, int y, int z) {
|
||||
NodeWorld nodeWorld = worlds.get(world);
|
||||
@ -49,6 +49,9 @@ public class Nodespace {
|
||||
|
||||
for(World world : MinecraftServer.getServer().worldServers) {
|
||||
NodeWorld nodes = worlds.get(world);
|
||||
|
||||
if(nodes == null)
|
||||
continue;
|
||||
|
||||
for(Entry<BlockPos, PowerNode> entry : nodes.nodes.entrySet()) {
|
||||
PowerNode node = entry.getValue();
|
||||
@ -120,7 +123,7 @@ public class Nodespace {
|
||||
|
||||
/** Contains a map showing where each node is, a node is every spot that a cable exists at.
|
||||
* Instead of the old proxy system, things like substation now create multiple nodes at their connection points */
|
||||
public static HashMap<BlockPos, PowerNode> nodes = new HashMap();
|
||||
public HashMap<BlockPos, PowerNode> nodes = new HashMap<>();
|
||||
|
||||
/** Adds a node at all its positions to the nodespace */
|
||||
public void pushNode(PowerNode node) {
|
||||
|
||||
@ -61,11 +61,6 @@ public class ModBlocks {
|
||||
public static Block ore_schrabidium;
|
||||
public static Block ore_beryllium;
|
||||
public static Block ore_australium;
|
||||
public static Block ore_weidanium;
|
||||
public static Block ore_reiium;
|
||||
public static Block ore_unobtainium;
|
||||
public static Block ore_daffergon;
|
||||
public static Block ore_verticium;
|
||||
public static Block ore_rare;
|
||||
public static Block ore_cobalt;
|
||||
public static Block ore_cinnebar;
|
||||
@ -983,6 +978,7 @@ public class ModBlocks {
|
||||
public static Block machine_electrolyser;
|
||||
|
||||
public static Block machine_excavator;
|
||||
public static Block machine_ore_slopper;
|
||||
public static Block machine_autosaw;
|
||||
|
||||
public static Block machine_mining_laser;
|
||||
@ -1327,11 +1323,6 @@ public class ModBlocks {
|
||||
basalt_tiles = new BlockGeneric(Material.rock).setBlockName("basalt_tiles").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_tiles");
|
||||
|
||||
ore_australium = new BlockGeneric(Material.rock).setBlockName("ore_australium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_australium");
|
||||
ore_weidanium = new BlockGeneric(Material.rock).setBlockName("ore_weidanium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_weidanium");
|
||||
ore_reiium = new BlockGeneric(Material.rock).setBlockName("ore_reiium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_reiium");
|
||||
ore_unobtainium = new BlockGeneric(Material.rock).setBlockName("ore_unobtainium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_unobtainium");
|
||||
ore_daffergon = new BlockGeneric(Material.rock).setBlockName("ore_daffergon").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_daffergon");
|
||||
ore_verticium = new BlockGeneric(Material.rock).setBlockName("ore_verticium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_verticium");
|
||||
ore_rare = new BlockOre(Material.rock).setBlockName("ore_rare").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_rare");
|
||||
ore_cobalt = new BlockOre(Material.rock).setBlockName("ore_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cobalt");
|
||||
ore_cinnebar = new BlockOre(Material.rock).setBlockName("ore_cinnebar").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cinnebar");
|
||||
@ -2194,6 +2185,7 @@ public class ModBlocks {
|
||||
machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_ore_slopper = new MachineOreSlopper().setBlockName("machine_ore_slopper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_mining_laser = new MachineMiningLaser(Material.iron).setBlockName("machine_mining_laser").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_mining_laser");
|
||||
barricade = new BlockNoDrop(Material.sand).setBlockName("barricade").setHardness(1.0F).setResistance(2.5F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barricade");
|
||||
machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_assembler");
|
||||
@ -2394,11 +2386,6 @@ public class ModBlocks {
|
||||
|
||||
//Rare Minerals
|
||||
GameRegistry.registerBlock(ore_australium, ItemOreBlock.class, ore_australium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_weidanium, ItemOreBlock.class, ore_weidanium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_reiium, ItemOreBlock.class, ore_reiium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_unobtainium, ItemOreBlock.class, ore_unobtainium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_daffergon, ItemOreBlock.class, ore_daffergon.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_verticium, ItemOreBlock.class, ore_verticium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_rare, ItemOreBlock.class, ore_rare.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_cobalt, ore_cobalt.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_cinnebar, ore_cinnebar.getUnlocalizedName());
|
||||
@ -3273,6 +3260,7 @@ public class ModBlocks {
|
||||
register(machine_coker);
|
||||
register(machine_autosaw);
|
||||
register(machine_excavator);
|
||||
register(machine_ore_slopper);
|
||||
register(machine_mining_laser);
|
||||
register(barricade);
|
||||
register(machine_turbofan);
|
||||
|
||||
@ -110,13 +110,13 @@ public class BlockGrate extends Block implements ITooltipProvider {
|
||||
if(meta == 0) {
|
||||
// Check that the block below can fit a grate above it
|
||||
Block block = world.getBlock(x, y - 1, z);
|
||||
AxisAlignedBB otherBB = block.getSelectedBoundingBoxFromPool(world, x, y - 1, z);
|
||||
AxisAlignedBB otherBB = block.getCollisionBoundingBoxFromPool(world, x, y - 1, z);
|
||||
if(!block.isAir(world, x, y + 1, z) && (otherBB == null || otherBB.maxY - (double)y < -0.05)) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 9, 3);
|
||||
}
|
||||
} else if(meta == 7) {
|
||||
Block block = world.getBlock(x, y + 1, z);
|
||||
AxisAlignedBB otherBB = block.getSelectedBoundingBoxFromPool(world, x, y + 1, z);
|
||||
AxisAlignedBB otherBB = block.getCollisionBoundingBoxFromPool(world, x, y + 1, z);
|
||||
if(!block.isAir(world, x, y + 1, z) && (otherBB == null || otherBB.minY - (double)(y + 1) > 0.05)) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 8, 3);
|
||||
}
|
||||
@ -133,10 +133,10 @@ public class BlockGrate extends Block implements ITooltipProvider {
|
||||
boolean breakIt = false;
|
||||
|
||||
if(meta == 9) {
|
||||
AxisAlignedBB otherBB = world.getBlock(x, y - 1, z).getSelectedBoundingBoxFromPool(world, x, y - 1, z);
|
||||
AxisAlignedBB otherBB = world.getBlock(x, y - 1, z).getCollisionBoundingBoxFromPool(world, x, y - 1, z);
|
||||
breakIt = !(otherBB == null || otherBB.maxY - (double)y < -0.05);
|
||||
} else if(meta == 8) {
|
||||
AxisAlignedBB otherBB = world.getBlock(x, y + 1, z).getSelectedBoundingBoxFromPool(world, x, y + 1, z);
|
||||
AxisAlignedBB otherBB = world.getBlock(x, y + 1, z).getCollisionBoundingBoxFromPool(world, x, y + 1, z);
|
||||
breakIt = !(otherBB == null || otherBB.minY - (double)(y + 1) > 0.05);
|
||||
}
|
||||
|
||||
|
||||
@ -3,7 +3,6 @@ package com.hbm.blocks.generic;
|
||||
import com.hbm.blocks.IStepTickReceiver;
|
||||
import com.hbm.blocks.ITooltipProvider;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
@ -14,28 +13,27 @@ import java.util.List;
|
||||
|
||||
public class BlockSpeedyStairs extends BlockGenericStairs implements IStepTickReceiver, ITooltipProvider {
|
||||
|
||||
double speed;
|
||||
double speed;
|
||||
|
||||
public BlockSpeedyStairs(Block block, int meta, double speed) {
|
||||
super(block, meta);
|
||||
this.speed = speed;
|
||||
}
|
||||
public BlockSpeedyStairs(Block block, int meta, double speed) {
|
||||
super(block, meta);
|
||||
this.speed = speed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayerStep(World world, int x, int y, int z, EntityPlayer player) {
|
||||
@Override
|
||||
public void onPlayerStep(World world, int x, int y, int z, EntityPlayer player) {
|
||||
|
||||
if(!world.isRemote)
|
||||
return;
|
||||
if(!world.isRemote)
|
||||
return;
|
||||
|
||||
if(player.moveForward != 0 || player.moveStrafing != 0) {
|
||||
player.motionX *= speed;
|
||||
player.motionZ *= speed;
|
||||
}
|
||||
}
|
||||
if(player.moveForward != 0 || player.moveStrafing != 0) {
|
||||
player.motionX *= speed;
|
||||
player.motionZ *= speed;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||
list.add(EnumChatFormatting.BLUE + "Increases speed by " + (MathHelper.floor_double((speed - 1) * 100)) + "%");
|
||||
}
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||
list.add(EnumChatFormatting.BLUE + "Increases speed by " + (MathHelper.floor_double((speed - 1) * 100)) + "%");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -67,6 +67,12 @@ public class FoundryBasin extends FoundryCastingBase {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.999F, 1.0F); //for some fucking reason setting maxY to something that isn't 1 magically fixes item collisions
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
setBlockBoundsBasedOnState(world, x, y, z);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
|
||||
@ -82,6 +82,12 @@ public class FoundryChannel extends BlockContainer implements ICrucibleAcceptor
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
setBlockBoundsBasedOnState(world, x, y, z);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
|
||||
@ -66,6 +66,11 @@ public class FoundryMold extends FoundryCastingBase {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
return AxisAlignedBB.getBoundingBox(x, y, z, x + 1D, y + 0.5D, z + 1D);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
|
||||
@ -96,6 +96,12 @@ public class FoundryOutlet extends BlockContainer implements ICrucibleAcceptor,
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
setBlockBoundsBasedOnState(world, x, y, z);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
|
||||
37
src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java
Normal file
37
src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java
Normal file
@ -0,0 +1,37 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineOreSlopper;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class MachineOreSlopper extends BlockDummyable {
|
||||
|
||||
public MachineOreSlopper() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
if(meta >= 12) return new TileEntityMachineOreSlopper();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[] {3, 0, 3, 3, 1, 1};
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
return standardOpenBehavior(world, x, y, z, player, side);
|
||||
}
|
||||
}
|
||||
@ -35,7 +35,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
@SideOnly(Side.CLIENT) public IIcon[] iconCurveTR;
|
||||
@SideOnly(Side.CLIENT) public IIcon[] iconCurveBL;
|
||||
@SideOnly(Side.CLIENT) public IIcon[] iconCurveBR;
|
||||
@SideOnly(Side.CLIENT) public IIcon[] iconJunction;
|
||||
@SideOnly(Side.CLIENT) public IIcon[][] iconJunction;
|
||||
|
||||
private static final String[] materials = new String[] { "silver", "copper", "white" };
|
||||
|
||||
@ -55,7 +55,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
iconCurveTR = new IIcon[count];
|
||||
iconCurveBL = new IIcon[count];
|
||||
iconCurveBR = new IIcon[count];
|
||||
iconJunction = new IIcon[count];
|
||||
iconJunction = new IIcon[count][5];
|
||||
|
||||
for(int i = 0; i < count; i++) {
|
||||
iconStraight[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_straight");
|
||||
@ -64,7 +64,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
iconCurveTR[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_tr");
|
||||
iconCurveBL[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_bl");
|
||||
iconCurveBR[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_br");
|
||||
iconJunction[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_junction");
|
||||
for(int j = 0; j < 5; j++) iconJunction[i][j] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_junction_" + j);
|
||||
}
|
||||
}
|
||||
|
||||
@ -83,7 +83,8 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0);
|
||||
int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0);
|
||||
|
||||
int m = rectify(world.getBlockMetadata(x, y, z));
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
int m = rectify(meta);
|
||||
|
||||
if((mask & 0b001111) == 0 && mask > 0) {
|
||||
return (side == 4 || side == 5) ? iconEnd[m] : iconStraight[m];
|
||||
@ -112,10 +113,10 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
if(nX && nZ) return side == 0 ? iconCurveTL[m] : iconCurveTL[m];
|
||||
if(nX && pZ) return side == 0 ? iconCurveBL[m] : iconCurveBL[m];
|
||||
|
||||
return iconJunction[m];
|
||||
return iconJunction[m][meta / 3];
|
||||
}
|
||||
|
||||
return iconJunction[m];
|
||||
return iconJunction[m][meta / 3];
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@ -220,6 +221,12 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
setBlockBoundsBasedOnState(world, x, y, z);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
|
||||
@ -46,7 +46,7 @@ public class FluidDuctBoxExhaust extends FluidDuctBox {
|
||||
iconCurveTR = new IIcon[1];
|
||||
iconCurveBL = new IIcon[1];
|
||||
iconCurveBR = new IIcon[1];
|
||||
iconJunction = new IIcon[1];
|
||||
iconJunction = new IIcon[1][5];
|
||||
|
||||
iconStraight[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_straight");
|
||||
iconEnd[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_end");
|
||||
@ -54,7 +54,7 @@ public class FluidDuctBoxExhaust extends FluidDuctBox {
|
||||
iconCurveTR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_tr");
|
||||
iconCurveBL[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_bl");
|
||||
iconCurveBR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_br");
|
||||
iconJunction[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_junction");
|
||||
for(int i = 0; i < 5; i++) iconJunction[0][i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_junction_" + i);
|
||||
}
|
||||
|
||||
public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, TileEntity tile) {
|
||||
|
||||
@ -183,6 +183,12 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
setBlockBoundsBasedOnState(world, x, y, z);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
|
||||
@ -35,6 +35,7 @@ public class GeneralConfig {
|
||||
public static boolean enableGuideBook = true;
|
||||
public static boolean enableSteamParticles = true;
|
||||
public static boolean enableSoundExtension = true;
|
||||
public static boolean enableMekanismChanges = true;
|
||||
public static int hintPos = 0;
|
||||
|
||||
public static boolean enableExpensiveMode = false;
|
||||
@ -101,8 +102,9 @@ public class GeneralConfig {
|
||||
enableFluidContainerCompat = config.get(CATEGORY_GENERAL, "1.35_enableFluidContainerCompat", true, "If enabled, fluid containers will be oredicted and interchangable in recipes with other mods' containers, as well as TrainCraft's diesel being considered a valid diesel canister.").getBoolean(true);
|
||||
enableMOTD = config.get(CATEGORY_GENERAL, "1.36_enableMOTD", true, "If enabled, shows the 'Loaded mod!' chat message as well as update notifications when joining a world").getBoolean(true);
|
||||
enableGuideBook = config.get(CATEGORY_GENERAL, "1.37_enableGuideBook", true, "If enabled, gives players the guide book when joining the world for the first time").getBoolean(true);
|
||||
enableSteamParticles = config.get(CATEGORY_GENERAL, "1.38_enableSteamParticles",true, "If disabled, auxiliary cooling towers and large cooling towers will not emit steam particles when in use.").getBoolean(true);
|
||||
enableSoundExtension = config.get(CATEGORY_GENERAL, "1.39_enableSoundExtension",true, "If enabled, will change the limit for how many sounds can play at once.").getBoolean(true);
|
||||
enableSteamParticles = config.get(CATEGORY_GENERAL, "1.38_enableSteamParticles", true, "If disabled, auxiliary cooling towers and large cooling towers will not emit steam particles when in use.").getBoolean(true);
|
||||
enableSoundExtension = config.get(CATEGORY_GENERAL, "1.39_enableSoundExtension", true, "If enabled, will change the limit for how many sounds can play at once.").getBoolean(true);
|
||||
enableMekanismChanges = config.get(CATEGORY_GENERAL, "1.40_enableMekanismChanges", true, "If enabled, will change some of Mekanism's recipes.").getBoolean(true);
|
||||
|
||||
enableExpensiveMode = config.get(CATEGORY_GENERAL, "1.99_enableExpensiveMode", false, "It does what the name implies.").getBoolean(false);
|
||||
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
package com.hbm.config;
|
||||
|
||||
import com.hbm.handler.radiation.ChunkRadiationHandlerPRISM;
|
||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||
|
||||
import net.minecraftforge.common.config.Configuration;
|
||||
|
||||
public class RadiationConfig {
|
||||
@ -14,6 +17,7 @@ public class RadiationConfig {
|
||||
|
||||
public static boolean enableContamination = true;
|
||||
public static boolean enableChunkRads = true;
|
||||
public static boolean enablePRISM = false;
|
||||
|
||||
public static boolean disableAsbestos = false;
|
||||
public static boolean disableCoal = false;
|
||||
@ -47,6 +51,8 @@ public class RadiationConfig {
|
||||
|
||||
enableContamination = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_00_enableContamination", "Toggles player contamination (and negative effects from radiation poisoning)", true);
|
||||
enableChunkRads = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_01_enableChunkRads", "Toggles the world radiation system (chunk radiation only, some blocks use an AoE!)", true);
|
||||
enablePRISM = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_99_enablePRISM", "Enables the new 3D resistance-aware PRISM radiation system", false);
|
||||
if(enablePRISM) ChunkRadiationManager.proxy = new ChunkRadiationHandlerPRISM();
|
||||
|
||||
fogCh = CommonConfig.setDef(fogCh, 20);
|
||||
|
||||
|
||||
@ -131,6 +131,7 @@ public class ToolRecipes {
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModBlocks.geiger), new Object[] { ModItems.geiger_counter });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.digamma_diagnostic), new Object[] { ModItems.geiger_counter, PO210.billet(), ASBESTOS.ingot() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.pollution_detector, 1), new Object[] { "SFS", "SCS", " S ", 'S', STEEL.plate(), 'F', ModItems.filter_coal, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ore_density_scanner, 1), new Object[] { "VVV", "CSC", "GGG", " S ", 'V', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR), 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_CHASSIS), 'G', GOLD.plate() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser, 1), new Object[] { " PS", "P P", " P ", 'P', ANY_PLASTIC.ingot(), 'S', STEEL.plate() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.coltan_tool, 1), new Object[] { "ACA", "CXC", "ACA", 'A', ALLOY.ingot(), 'C', CINNABAR.crystal(), 'X', Items.compass });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', W.bolt(), 'I', W.ingot(), 'P', ANY_RUBBER.ingot() });
|
||||
|
||||
@ -126,8 +126,6 @@ public class EntityMappings {
|
||||
addEntity(EntityMissileMicro.class, "entity_missile_micronuclear", 1000);
|
||||
addEntity(EntityCloudSolinium.class, "entity_cloud_rainbow", 1000);
|
||||
addEntity(EntityRagingVortex.class, "entity_raging_vortex", 250);
|
||||
addEntity(EntityCarrier.class, "entity_missile_carrier", 1000);
|
||||
addEntity(EntityBooster.class, "entity_missile_booster", 1000);
|
||||
addEntity(EntityModBeam.class, "entity_beam_bang", 1000);
|
||||
addEntity(EntityMissileBHole.class, "entity_missile_blackhole", 1000);
|
||||
addEntity(EntityMissileSchrabidium.class, "entity_missile_schrabidium", 1000);
|
||||
|
||||
@ -1,100 +0,0 @@
|
||||
package com.hbm.entity.missile;
|
||||
|
||||
import com.hbm.entity.particle.EntityTSmokeFX;
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.entity.projectile.EntityThrowable;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityBooster extends EntityThrowable {
|
||||
|
||||
public EntityBooster(World p_i1582_1_) {
|
||||
super(p_i1582_1_);
|
||||
this.ignoreFrustumCheck = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate() {
|
||||
this.prevPosX = this.posX;
|
||||
this.prevPosY = this.posY;
|
||||
this.prevPosZ = this.posZ;
|
||||
|
||||
this.posX += this.motionX;
|
||||
this.posY += this.motionY;
|
||||
this.posZ += this.motionZ;
|
||||
|
||||
this.motionY -= 0.015;
|
||||
|
||||
if(motionY < -1.5F)
|
||||
motionY = -1.5F;
|
||||
|
||||
this.rotation();
|
||||
|
||||
if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air)
|
||||
{
|
||||
if(!this.worldObj.isRemote)
|
||||
{
|
||||
ExplosionLarge.explodeFire(worldObj, posX, posY, posZ, 10F, true, false, true);
|
||||
}
|
||||
this.setDead();
|
||||
}
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
for(int i = 0; i < 2; i++) {
|
||||
EntityTSmokeFX fx1 = new EntityTSmokeFX(worldObj);
|
||||
fx1.posY = posY - 0.25D;
|
||||
fx1.posX = posX + rand.nextGaussian() * 0.25D;
|
||||
fx1.posZ = posZ + rand.nextGaussian() * 0.25D;
|
||||
fx1.motionY = -0.2D;
|
||||
|
||||
worldObj.spawnEntityInWorld(fx1);
|
||||
}
|
||||
}
|
||||
|
||||
this.motionX *= 0.995;
|
||||
this.motionZ *= 0.995;
|
||||
}
|
||||
|
||||
protected void rotation() {
|
||||
float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
|
||||
this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);
|
||||
|
||||
for (this.rotationPitch = (float)(Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
while (this.rotationPitch - this.prevRotationPitch >= 180.0F)
|
||||
{
|
||||
this.prevRotationPitch += 360.0F;
|
||||
}
|
||||
|
||||
while (this.rotationYaw - this.prevRotationYaw < -180.0F)
|
||||
{
|
||||
this.prevRotationYaw -= 360.0F;
|
||||
}
|
||||
|
||||
while (this.rotationYaw - this.prevRotationYaw >= 180.0F)
|
||||
{
|
||||
this.prevRotationYaw += 360.0F;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onImpact(MovingObjectPosition p_70184_1_) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean isInRangeToRenderDist(double distance)
|
||||
{
|
||||
return distance < 500000;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,178 +0,0 @@
|
||||
package com.hbm.entity.missile;
|
||||
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.items.ISatChip;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.AuxParticlePacketNT;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.saveddata.satellites.Satellite;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.projectile.EntityThrowable;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityCarrier extends EntityThrowable {
|
||||
|
||||
double acceleration = 0.00D;
|
||||
|
||||
private ItemStack payload;
|
||||
|
||||
public EntityCarrier(World p_i1582_1_) {
|
||||
super(p_i1582_1_);
|
||||
this.ignoreFrustumCheck = true;
|
||||
this.setSize(3.0F, 26.0F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate() {
|
||||
|
||||
//this.setDead();
|
||||
|
||||
if(motionY < 3.0D) {
|
||||
acceleration += 0.0005D;
|
||||
motionY += acceleration;
|
||||
}
|
||||
|
||||
this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0);
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
for(int i = 0; i < 10; i++) {
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "gasfire");
|
||||
data.setDouble("mY", -0.2D);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200));
|
||||
}
|
||||
|
||||
if(this.dataWatcher.getWatchableObjectInt(8) == 1)
|
||||
for(int i = 0; i < 2; i++) {
|
||||
NBTTagCompound d1 = new NBTTagCompound();
|
||||
d1.setString("type", "gasfire");
|
||||
d1.setDouble("mY", -0.2D);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d1, posX + rand.nextGaussian() * 0.75D + 2.5, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200));
|
||||
|
||||
NBTTagCompound d2 = new NBTTagCompound();
|
||||
d2.setString("type", "gasfire");
|
||||
d2.setDouble("mY", -0.2D);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d2, posX + rand.nextGaussian() * 0.75D - 2.5, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200));
|
||||
|
||||
NBTTagCompound d3 = new NBTTagCompound();
|
||||
d3.setString("type", "gasfire");
|
||||
d3.setDouble("mY", -0.2D);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d3, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D + 2.5), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200));
|
||||
|
||||
NBTTagCompound d4 = new NBTTagCompound();
|
||||
d4.setString("type", "gasfire");
|
||||
d4.setDouble("mY", -0.2D);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d4, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D - 2.5), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200));
|
||||
}
|
||||
|
||||
|
||||
if(this.ticksExisted < 20) {
|
||||
ExplosionLarge.spawnShock(worldObj, posX, posY, posZ, 13 + rand.nextInt(3), 4 + rand.nextGaussian() * 2);
|
||||
}
|
||||
}
|
||||
|
||||
if(this.posY > 300 && this.dataWatcher.getWatchableObjectInt(8) == 1)
|
||||
this.disengageBoosters();
|
||||
//this.setDead();
|
||||
|
||||
if(this.posY > 600) {
|
||||
deployPayload();
|
||||
}
|
||||
}
|
||||
|
||||
private void deployPayload() {
|
||||
|
||||
if(payload != null) {
|
||||
|
||||
if(payload.getItem() == ModItems.flame_pony) {
|
||||
ExplosionLarge.spawnTracers(worldObj, posX, posY, posZ, 25);
|
||||
for(Object p : worldObj.playerEntities)
|
||||
((EntityPlayer)p).triggerAchievement(MainRegistry.achSpace);
|
||||
}
|
||||
|
||||
if(payload.getItem() == ModItems.sat_foeq) {
|
||||
for(Object p : worldObj.playerEntities)
|
||||
((EntityPlayer)p).triggerAchievement(MainRegistry.achFOEQ);
|
||||
}
|
||||
|
||||
if(payload.getItem() instanceof ISatChip) {
|
||||
|
||||
int freq = ISatChip.getFreqS(payload);
|
||||
|
||||
Satellite.orbit(worldObj, Satellite.getIDFromItem(payload.getItem()), freq, posX, posY, posZ);
|
||||
}
|
||||
}
|
||||
|
||||
this.setDead();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void entityInit() {
|
||||
this.dataWatcher.addObject(8, 1);
|
||||
}
|
||||
|
||||
public void setPayload(ItemStack stack) {
|
||||
this.payload = stack.copy();
|
||||
}
|
||||
|
||||
private void disengageBoosters() {
|
||||
this.dataWatcher.updateObject(8, 0);
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
EntityBooster boost1 = new EntityBooster(worldObj);
|
||||
boost1.posX = posX + 1.5D;
|
||||
boost1.posY = posY;
|
||||
boost1.posZ = posZ;
|
||||
boost1.motionX = 0.45D + rand.nextDouble() * 0.2D;
|
||||
boost1.motionY = motionY;
|
||||
boost1.motionZ = rand.nextGaussian() * 0.1D;
|
||||
worldObj.spawnEntityInWorld(boost1);
|
||||
|
||||
EntityBooster boost2 = new EntityBooster(worldObj);
|
||||
boost2.posX = posX - 1.5D;
|
||||
boost2.posY = posY;
|
||||
boost2.posZ = posZ;
|
||||
boost2.motionX = -0.45D - rand.nextDouble() * 0.2D;
|
||||
boost2.motionY = motionY;
|
||||
boost2.motionZ = rand.nextGaussian() * 0.1D;
|
||||
worldObj.spawnEntityInWorld(boost2);
|
||||
|
||||
EntityBooster boost3 = new EntityBooster(worldObj);
|
||||
boost3.posX = posX;
|
||||
boost3.posY = posY;
|
||||
boost3.posZ = posZ + 1.5D;
|
||||
boost3.motionZ = 0.45D + rand.nextDouble() * 0.2D;
|
||||
boost3.motionY = motionY;
|
||||
boost3.motionX = rand.nextGaussian() * 0.1D;
|
||||
worldObj.spawnEntityInWorld(boost3);
|
||||
|
||||
EntityBooster boost4 = new EntityBooster(worldObj);
|
||||
boost4.posX = posX;
|
||||
boost4.posY = posY;
|
||||
boost4.posZ = posZ - 1.5D;
|
||||
boost4.motionZ = -0.45D - rand.nextDouble() * 0.2D;
|
||||
boost4.motionY = motionY;
|
||||
boost4.motionX = rand.nextGaussian() * 0.1D;
|
||||
worldObj.spawnEntityInWorld(boost4);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onImpact(MovingObjectPosition p_70184_1_) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean isInRangeToRenderDist(double distance)
|
||||
{
|
||||
return distance < 500000;
|
||||
}
|
||||
}
|
||||
@ -120,7 +120,7 @@ public class CyclotronRecipeHandler extends TemplateRecipeHandler implements ICo
|
||||
guiGui = new LinkedList<Class<? extends GuiContainer>>();
|
||||
|
||||
transferRects.add(new RecipeTransferRect(new Rectangle(83 - 3 + 16 - 52, 5 + 18 + 1, 24, 18), "cyclotronProcessing"));
|
||||
transferRectsGui.add(new RecipeTransferRect(new Rectangle(47, 15, 36, 36), "cyclotronProcessing"));
|
||||
transferRectsGui.add(new RecipeTransferRect(new Rectangle(48 - 5, 27 - 11, 34, 34), "cyclotronProcessing"));
|
||||
guiGui.add(GUIMachineCyclotron.class);
|
||||
RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects);
|
||||
RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui);
|
||||
|
||||
@ -11,6 +11,7 @@ import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.hbm.handler.imc.ICompatNHNEI;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.util.InventoryUtil;
|
||||
|
||||
@ -243,9 +244,13 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen
|
||||
|
||||
if(outputId.equals(getKey())) {
|
||||
|
||||
for(Entry<Object, Object> recipe : recipes.entrySet()) {
|
||||
outer: for(Entry<Object, Object> recipe : recipes.entrySet()) {
|
||||
ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey());
|
||||
ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue());
|
||||
|
||||
for(ItemStack[] array : ins) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer;
|
||||
for(ItemStack[] array : outs) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer;
|
||||
|
||||
this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey()));
|
||||
}
|
||||
|
||||
@ -257,10 +262,13 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen
|
||||
@Override
|
||||
public void loadCraftingRecipes(ItemStack result) {
|
||||
|
||||
for(Entry<Object, Object> recipe : recipes.entrySet()) {
|
||||
outer: for(Entry<Object, Object> recipe : recipes.entrySet()) {
|
||||
ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey());
|
||||
ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue());
|
||||
|
||||
for(ItemStack[] array : ins) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer;
|
||||
for(ItemStack[] array : outs) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer;
|
||||
|
||||
match:
|
||||
for(ItemStack[] array : outs) {
|
||||
for(ItemStack stack : array) {
|
||||
@ -285,10 +293,13 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen
|
||||
@Override
|
||||
public void loadUsageRecipes(ItemStack ingredient) {
|
||||
|
||||
for(Entry<Object, Object> recipe : recipes.entrySet()) {
|
||||
outer: for(Entry<Object, Object> recipe : recipes.entrySet()) {
|
||||
ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey());
|
||||
ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue());
|
||||
|
||||
for(ItemStack[] array : ins) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer;
|
||||
for(ItemStack[] array : outs) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer;
|
||||
|
||||
match:
|
||||
for(ItemStack[] array : ins) {
|
||||
for(ItemStack stack : array) {
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.handler.radiation;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.hbm.lib.Library;
|
||||
|
||||
@ -11,8 +12,10 @@ import net.minecraft.block.material.Material;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.ChunkCoordIntPair;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.WorldServer;
|
||||
import net.minecraft.world.chunk.Chunk;
|
||||
import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
|
||||
import net.minecraftforge.common.DimensionManager;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraftforge.event.world.ChunkDataEvent;
|
||||
import net.minecraftforge.event.world.ChunkEvent;
|
||||
@ -42,7 +45,8 @@ import net.minecraftforge.event.world.WorldEvent;
|
||||
*/
|
||||
public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
|
||||
|
||||
private HashMap<World, RadPerWorld> perWorld = new HashMap();
|
||||
public ConcurrentHashMap<World, RadPerWorld> perWorld = new ConcurrentHashMap();
|
||||
public static int cycles = 0;
|
||||
|
||||
public static final float MAX_RADIATION = 1_000_000;
|
||||
private static final String NBT_KEY_CHUNK_RADIATION = "hfr_prism_radiation_";
|
||||
@ -141,15 +145,17 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
|
||||
RadPerWorld radWorld = perWorld.get(event.world);
|
||||
if(radWorld != null) {
|
||||
SubChunk[] chunk = radWorld.radiation.get(event.getChunk().getChunkCoordIntPair());
|
||||
for(int i = 0; i < 16; i++) {
|
||||
SubChunk sub = chunk[i];
|
||||
if(sub != null) {
|
||||
float rad = sub.radiation;
|
||||
event.getData().setFloat(NBT_KEY_CHUNK_RADIATION + i, rad);
|
||||
for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "x_" + j + "_" + i, sub.xResist[j]);
|
||||
for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "y_" + j + "_" + i, sub.yResist[j]);
|
||||
for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "z_" + j + "_" + i, sub.zResist[j]);
|
||||
event.getData().setBoolean(NBT_KEY_CHUNK_EXISTS + i, true);
|
||||
if(chunk != null) {
|
||||
for(int i = 0; i < 16; i++) {
|
||||
SubChunk sub = chunk[i];
|
||||
if(sub != null) {
|
||||
float rad = sub.radiation;
|
||||
event.getData().setFloat(NBT_KEY_CHUNK_RADIATION + i, rad);
|
||||
for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "x_" + j + "_" + i, sub.xResist[j]);
|
||||
for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "y_" + j + "_" + i, sub.yResist[j]);
|
||||
for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "z_" + j + "_" + i, sub.zResist[j]);
|
||||
event.getData().setBoolean(NBT_KEY_CHUNK_EXISTS + i, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -161,23 +167,66 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
|
||||
if(!event.world.isRemote) {
|
||||
RadPerWorld radWorld = perWorld.get(event.world);
|
||||
if(radWorld != null) {
|
||||
radWorld.radiation.remove(event.getChunk());
|
||||
radWorld.radiation.remove(event.getChunk().getChunkCoordIntPair());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static final HashMap<ChunkCoordIntPair, SubChunk[]> newAdditions = new HashMap();
|
||||
|
||||
@Override
|
||||
public void updateSystem() {
|
||||
|
||||
for(Entry<World, RadPerWorld> entries : perWorld.entrySet()) {
|
||||
World world = entries.getKey();
|
||||
RadPerWorld system = entries.getValue();
|
||||
cycles++;
|
||||
|
||||
for(WorldServer world : DimensionManager.getWorlds()) { //only updates loaded worlds
|
||||
|
||||
RadPerWorld system = perWorld.get(world);
|
||||
if(system == null) continue;
|
||||
|
||||
int rebuildAllowance = 25;
|
||||
|
||||
//it would be way to expensive to replace the sub-chunks entirely like with the old system
|
||||
//(that only used floats anyway...) so instead we shift the radiation into the prev value
|
||||
for(Entry<ChunkCoordIntPair, SubChunk[]> chunk : system.radiation.entrySet()) for(SubChunk sub : chunk.getValue()) if(sub != null) {
|
||||
sub.prevRadiation = sub.radiation;
|
||||
sub.radiation = 0;
|
||||
for(Entry<ChunkCoordIntPair, SubChunk[]> chunk : system.radiation.entrySet()) {
|
||||
ChunkCoordIntPair coord = chunk.getKey();
|
||||
|
||||
for(int i = 0; i < 16; i++) {
|
||||
|
||||
SubChunk sub = chunk.getValue()[i];
|
||||
|
||||
boolean hasTriedRebuild = false;
|
||||
|
||||
if(sub != null) {
|
||||
sub.prevRadiation = sub.radiation;
|
||||
sub.radiation = 0;
|
||||
|
||||
//process some chunks that need extra rebuilding
|
||||
if(rebuildAllowance > 0 && sub.needsRebuild) {
|
||||
sub.rebuild(world, coord.chunkXPos << 4, i << 4, coord.chunkZPos << 4);
|
||||
if(!sub.needsRebuild) {
|
||||
rebuildAllowance--;
|
||||
hasTriedRebuild = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(!hasTriedRebuild && Math.abs(coord.chunkXPos * coord.chunkZPos) % 5 == cycles % 5 && world.getChunkProvider().chunkExists(coord.chunkXPos, coord.chunkZPos)) {
|
||||
|
||||
Chunk c = world.getChunkFromChunkCoords(coord.chunkXPos, coord.chunkZPos);
|
||||
ExtendedBlockStorage[] xbs = c.getBlockStorageArray();
|
||||
ExtendedBlockStorage subChunk = xbs[i];
|
||||
int checksum = 0;
|
||||
|
||||
if(subChunk != null) {
|
||||
for(int iX = 0; iX < 16; iX++) for(int iY = 0; iY < 16; iY ++) for(int iZ = 0; iZ < 16; iZ ++) checksum += subChunk.getBlockLSBArray()[MathHelper.clamp_int(iY << 8 | iZ << 4 | iX, 0, 4095)];
|
||||
}
|
||||
|
||||
if(checksum != sub.checksum) {
|
||||
sub.rebuild(world, coord.chunkXPos << 4, i << 4, coord.chunkZPos << 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//has to support additions while iterating
|
||||
@ -190,14 +239,19 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
|
||||
SubChunk sub = chunk.getValue()[i];
|
||||
|
||||
if(sub != null) {
|
||||
if(sub.prevRadiation <= 0 || Float.isNaN(sub.prevRadiation)) continue;
|
||||
if(sub.prevRadiation <= 0 || Float.isNaN(sub.prevRadiation) || Float.isInfinite(sub.prevRadiation)) continue;
|
||||
float radSpread = 0;
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) radSpread += spreadRadiation(world, sub, i, chunk.getKey(), chunk.getValue(), system.radiation, dir);
|
||||
sub.radiation += (sub.prevRadiation - radSpread) * 0.95F;
|
||||
sub.radiation -= 1F;
|
||||
sub.radiation = MathHelper.clamp_float(sub.radiation, 0, MAX_RADIATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
system.radiation.putAll(newAdditions);
|
||||
newAdditions.clear();
|
||||
|
||||
/*
|
||||
//reap chunks with no radiation at all
|
||||
system.radiation.entrySet().removeIf(x -> getTotalChunkRadiation(x.getValue()) <= 0F);
|
||||
@ -206,7 +260,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
|
||||
}
|
||||
|
||||
/** Returns the amount of radiation spread */
|
||||
private static float spreadRadiation(World world, SubChunk source, int y, ChunkCoordIntPair origin, SubChunk[] chunk, HashMap<ChunkCoordIntPair, SubChunk[]> map, ForgeDirection dir) {
|
||||
private static float spreadRadiation(World world, SubChunk source, int y, ChunkCoordIntPair origin, SubChunk[] chunk, ConcurrentHashMap<ChunkCoordIntPair, SubChunk[]> map, ForgeDirection dir) {
|
||||
|
||||
float spread = 0.1F;
|
||||
float amount = source.prevRadiation * spread;
|
||||
@ -225,7 +279,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
|
||||
SubChunk[] newChunk = map.get(newPos);
|
||||
if(newChunk == null) {
|
||||
newChunk = new SubChunk[16];
|
||||
map.put(newPos, newChunk);
|
||||
newAdditions.put(newPos, newChunk);
|
||||
}
|
||||
if(newChunk[y] == null) newChunk[y] = new SubChunk().rebuild(world, newPos.chunkXPos << 4, y << 4, newPos.chunkZPos << 4);
|
||||
SubChunk to = newChunk[y];
|
||||
@ -235,8 +289,8 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
|
||||
|
||||
private static float spreadRadiationTo(SubChunk from, SubChunk to, float amount, ForgeDirection movement) {
|
||||
float resistance = from.getResistanceValue(movement.getOpposite()) + to.getResistanceValue(movement);
|
||||
resistance /= 1_000F;
|
||||
float toMove = Math.min(amount / Math.max(resistance, 1F), amount);
|
||||
double fun = Math.pow(Math.E, -resistance / 10_000D);
|
||||
float toMove = (float) Math.min(amount * fun, amount);
|
||||
to.radiation += toMove;
|
||||
return toMove;
|
||||
}
|
||||
@ -251,7 +305,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
|
||||
}
|
||||
|
||||
public static class RadPerWorld {
|
||||
public HashMap<ChunkCoordIntPair, SubChunk[]> radiation = new HashMap();
|
||||
public ConcurrentHashMap<ChunkCoordIntPair, SubChunk[]> radiation = new ConcurrentHashMap();
|
||||
}
|
||||
|
||||
public static class SubChunk {
|
||||
@ -262,8 +316,9 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
|
||||
public float[] yResist = new float[16];
|
||||
public float[] zResist = new float[16];
|
||||
public boolean needsRebuild = false;
|
||||
public int checksum = 0;
|
||||
|
||||
public void updateBlock(World world, int x, int y, int z) {
|
||||
@Deprecated public void updateBlock(World world, int x, int y, int z) {
|
||||
int cX = x >> 4;
|
||||
int cY = MathHelper.clamp_int(y >> 4, 0, 15);
|
||||
int cZ = z >> 4;
|
||||
@ -292,7 +347,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
|
||||
|
||||
Block b = subChunk.getBlockByExtId(iX, iY, iZ);
|
||||
if(b.getMaterial() == Material.air) continue;
|
||||
float resistance = b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z);
|
||||
float resistance = Math.min(b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z), 100);
|
||||
if(iX == sX) xResist[iX] += resistance;
|
||||
if(iY == sY) yResist[iY] += resistance;
|
||||
if(iZ == sZ) zResist[iZ] += resistance;
|
||||
@ -319,17 +374,21 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
|
||||
Chunk chunk = world.getChunkFromChunkCoords(cX, cZ);
|
||||
ExtendedBlockStorage[] xbs = chunk.getBlockStorageArray();
|
||||
ExtendedBlockStorage subChunk = xbs[cY];
|
||||
checksum = 0;
|
||||
|
||||
for(int iX = 0; iX < 16; iX++) {
|
||||
for(int iY = 0; iY < 16; iY ++) {
|
||||
for(int iZ = 0; iZ < 16; iZ ++) {
|
||||
|
||||
Block b = subChunk.getBlockByExtId(iX, iY, iZ);
|
||||
if(b.getMaterial() == Material.air) continue;
|
||||
float resistance = b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z);
|
||||
xResist[iX] += resistance;
|
||||
yResist[iY] += resistance;
|
||||
zResist[iZ] += resistance;
|
||||
if(subChunk != null) {
|
||||
for(int iX = 0; iX < 16; iX++) {
|
||||
for(int iY = 0; iY < 16; iY ++) {
|
||||
for(int iZ = 0; iZ < 16; iZ ++) {
|
||||
|
||||
Block b = subChunk.getBlockByExtId(iX, iY, iZ);
|
||||
if(b.getMaterial() == Material.air) continue;
|
||||
float resistance = Math.min(b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z), 100);
|
||||
xResist[iX] += resistance;
|
||||
yResist[iY] += resistance;
|
||||
zResist[iZ] += resistance;
|
||||
checksum += subChunk.getBlockLSBArray()[MathHelper.clamp_int(iY << 8 | iZ << 4 | iX, 0, 4095)]; // the "good enough" approach
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -339,18 +398,18 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
|
||||
}
|
||||
|
||||
public float getResistanceValue(ForgeDirection movement) {
|
||||
if(movement == Library.POS_X) return getResistanceFromArray(xResist, false);
|
||||
if(movement == Library.NEG_X) return getResistanceFromArray(xResist, true);
|
||||
if(movement == Library.POS_Y) return getResistanceFromArray(yResist, false);
|
||||
if(movement == Library.NEG_Y) return getResistanceFromArray(yResist, true);
|
||||
if(movement == Library.POS_Z) return getResistanceFromArray(zResist, false);
|
||||
if(movement == Library.NEG_Z) return getResistanceFromArray(zResist, true);
|
||||
if(movement == Library.POS_X) return getResistanceFromArray(xResist, true);
|
||||
if(movement == Library.NEG_X) return getResistanceFromArray(xResist, false);
|
||||
if(movement == Library.POS_Y) return getResistanceFromArray(yResist, true);
|
||||
if(movement == Library.NEG_Y) return getResistanceFromArray(yResist, false);
|
||||
if(movement == Library.POS_Z) return getResistanceFromArray(zResist, true);
|
||||
if(movement == Library.NEG_Z) return getResistanceFromArray(zResist, false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
private float getResistanceFromArray(float[] resist, boolean reverse) {
|
||||
float res = 0F;
|
||||
for(int i = 0; i < 15; i++) {
|
||||
for(int i = 1; i < 16; i++) {
|
||||
int index = reverse ? 15 - i : i;
|
||||
res += resist[index] / 15F * i;
|
||||
}
|
||||
|
||||
@ -12,7 +12,7 @@ import net.minecraftforge.event.world.WorldEvent;
|
||||
|
||||
public class ChunkRadiationManager {
|
||||
|
||||
public static ChunkRadiationHandler proxy = /*new ChunkRadiationHandlerNT();*/ new ChunkRadiationHandlerSimple(); /*new ChunkRadiationHandlerPRISM();*/
|
||||
public static ChunkRadiationHandler proxy = new ChunkRadiationHandlerSimple();
|
||||
|
||||
@SubscribeEvent
|
||||
public void onWorldLoad(WorldEvent.Load event) {
|
||||
|
||||
@ -445,11 +445,11 @@ public class OreDictManager {
|
||||
* RARE METALS
|
||||
*/
|
||||
AUSTRALIUM .nugget(nugget_australium) .billet(billet_australium) .ingot(ingot_australium) .dust(powder_australium) .block(block_australium) .ore(ore_australium);
|
||||
REIIUM .nugget(nugget_reiium) .ingot(ingot_reiium) .dust(powder_reiium) .block(block_reiium) .ore(ore_reiium);
|
||||
WEIDANIUM .nugget(nugget_weidanium) .ingot(ingot_weidanium) .dust(powder_weidanium) .block(block_weidanium) .ore(ore_weidanium);
|
||||
UNOBTAINIUM .nugget(nugget_unobtainium) .ingot(ingot_unobtainium) .dust(powder_unobtainium) .block(block_unobtainium) .ore(ore_unobtainium);
|
||||
VERTICIUM .nugget(nugget_verticium) .ingot(ingot_verticium) .dust(powder_verticium) .block(block_verticium) .ore(ore_verticium);
|
||||
DAFFERGON .nugget(nugget_daffergon) .ingot(ingot_daffergon) .dust(powder_daffergon) .block(block_daffergon) .ore(ore_daffergon);
|
||||
REIIUM .nugget(nugget_reiium) .ingot(ingot_reiium) .dust(powder_reiium) .block(block_reiium);
|
||||
WEIDANIUM .nugget(nugget_weidanium) .ingot(ingot_weidanium) .dust(powder_weidanium) .block(block_weidanium);
|
||||
UNOBTAINIUM .nugget(nugget_unobtainium) .ingot(ingot_unobtainium) .dust(powder_unobtainium) .block(block_unobtainium);
|
||||
VERTICIUM .nugget(nugget_verticium) .ingot(ingot_verticium) .dust(powder_verticium) .block(block_verticium);
|
||||
DAFFERGON .nugget(nugget_daffergon) .ingot(ingot_daffergon) .dust(powder_daffergon) .block(block_daffergon);
|
||||
|
||||
/*
|
||||
* RARE EARTHS
|
||||
|
||||
@ -1,10 +1,7 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.FluidContainerRegistry;
|
||||
import com.hbm.inventory.SlotCraftingOutput;
|
||||
import com.hbm.inventory.SlotTakeOnly;
|
||||
import com.hbm.inventory.SlotUpgrade;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemMachineUpgrade;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineCyclotron;
|
||||
@ -25,42 +22,34 @@ public class ContainerMachineCyclotron extends Container {
|
||||
cyclotron = tile;
|
||||
|
||||
//Input
|
||||
this.addSlotToContainer(new Slot(tile, 0, 17, 18));
|
||||
this.addSlotToContainer(new Slot(tile, 1, 17, 36));
|
||||
this.addSlotToContainer(new Slot(tile, 2, 17, 54));
|
||||
this.addSlotToContainer(new Slot(tile, 0, 11, 18));
|
||||
this.addSlotToContainer(new Slot(tile, 1, 11, 36));
|
||||
this.addSlotToContainer(new Slot(tile, 2, 11, 54));
|
||||
//Targets
|
||||
this.addSlotToContainer(new Slot(tile, 3, 107, 18));
|
||||
this.addSlotToContainer(new Slot(tile, 4, 107, 36));
|
||||
this.addSlotToContainer(new Slot(tile, 5, 107, 54));
|
||||
this.addSlotToContainer(new Slot(tile, 3, 101, 18));
|
||||
this.addSlotToContainer(new Slot(tile, 4, 101, 36));
|
||||
this.addSlotToContainer(new Slot(tile, 5, 101, 54));
|
||||
//Output
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 6, 143, 18));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 7, 143, 36));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 8, 143, 54));
|
||||
//AMAT In
|
||||
this.addSlotToContainer(new Slot(tile, 9, 143, 90));
|
||||
//AMAT Out
|
||||
this.addSlotToContainer(new SlotTakeOnly(tile, 10, 143, 108));
|
||||
//Coolant In
|
||||
this.addSlotToContainer(new Slot(tile, 11, 62, 72));
|
||||
//Coolant Out
|
||||
this.addSlotToContainer(new SlotTakeOnly(tile, 12, 62, 90));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 6, 131, 18));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 7, 131, 36));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 8, 131, 54));
|
||||
//Battery
|
||||
this.addSlotToContainer(new Slot(tile, 13, 62, 108));
|
||||
this.addSlotToContainer(new Slot(tile, 9, 168, 83));
|
||||
//Upgrades
|
||||
this.addSlotToContainer(new SlotUpgrade(tile, 14, 17, 90));
|
||||
this.addSlotToContainer(new SlotUpgrade(tile, 15, 17, 108));
|
||||
this.addSlotToContainer(new SlotUpgrade(tile, 10, 60, 81));
|
||||
this.addSlotToContainer(new SlotUpgrade(tile, 11, 78, 81));
|
||||
|
||||
for(int i = 0; i < 3; i++)
|
||||
{
|
||||
for(int j = 0; j < 9; j++)
|
||||
{
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56));
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 15 + j * 18, 133 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++)
|
||||
{
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56));
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 15 + i * 18, 191));
|
||||
}
|
||||
}
|
||||
|
||||
@ -82,20 +71,12 @@ public class ContainerMachineCyclotron extends Container {
|
||||
} else {
|
||||
|
||||
if(stack.getItem() instanceof IBatteryItem || stack.getItem() == ModItems.battery_creative) {
|
||||
if(!this.mergeItemStack(stack, 13, 14, true))
|
||||
return null;
|
||||
|
||||
} else if(FluidContainerRegistry.getFluidContent(stack, Fluids.COOLANT) > 0) {
|
||||
if(!this.mergeItemStack(stack, 11, 12, true))
|
||||
return null;
|
||||
|
||||
} else if(FluidContainerRegistry.getFullContainer(stack, Fluids.AMAT) != null) {
|
||||
if(!this.mergeItemStack(stack, 9, 10, true))
|
||||
return null;
|
||||
|
||||
} else if(stack.getItem() instanceof ItemMachineUpgrade) {
|
||||
if(!this.mergeItemStack(stack, 14, 15, true))
|
||||
if(!this.mergeItemStack(stack, 15, 16, true))
|
||||
if(!this.mergeItemStack(stack, 10, 11, true))
|
||||
if(!this.mergeItemStack(stack, 11, 12, true))
|
||||
return null;
|
||||
|
||||
} else {
|
||||
|
||||
@ -2,6 +2,7 @@ package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.RecipesCommon.AStack;
|
||||
import com.hbm.inventory.SlotCraftingOutput;
|
||||
import com.hbm.inventory.SlotNonRetarded;
|
||||
import com.hbm.inventory.SlotUpgrade;
|
||||
import com.hbm.inventory.recipes.SolderingRecipes;
|
||||
import com.hbm.items.ModItems;
|
||||
@ -24,7 +25,7 @@ public class ContainerMachineSolderingStation extends Container {
|
||||
solderer = tile;
|
||||
|
||||
//Inputs
|
||||
for(int i = 0; i < 2; i++) for(int j = 0; j < 3; j++) this.addSlotToContainer(new Slot(tile, i * 3 + j, 17 + j * 18, 18 + i * 18));
|
||||
for(int i = 0; i < 2; i++) for(int j = 0; j < 3; j++) this.addSlotToContainer(new SlotNonRetarded(tile, i * 3 + j, 17 + j * 18, 18 + i * 18));
|
||||
//Output
|
||||
this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 6, 107, 27));
|
||||
//Battery
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.SlotCraftingOutput;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineOreSlopper;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.Slot;
|
||||
|
||||
public class ContainerOreSlopper extends Container {
|
||||
|
||||
public TileEntityMachineOreSlopper slopper;
|
||||
|
||||
public ContainerOreSlopper(InventoryPlayer player, TileEntityMachineOreSlopper slopper) {
|
||||
this.slopper = slopper;
|
||||
|
||||
//Battery
|
||||
this.addSlotToContainer(new Slot(slopper, 0, 8, 72));
|
||||
//Fluid ID
|
||||
this.addSlotToContainer(new Slot(slopper, 1, 26, 72));
|
||||
//Input
|
||||
this.addSlotToContainer(new Slot(slopper, 2, 71, 27));
|
||||
//Outputs
|
||||
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 3, 134, 18));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 4, 152, 18));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 5, 134, 36));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 6, 152, 36));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 7, 134, 54));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 8, 152, 54));
|
||||
//Upgrades
|
||||
this.addSlotToContainer(new Slot(slopper, 0, 62, 72));
|
||||
this.addSlotToContainer(new Slot(slopper, 0, 80, 72));
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 9; j++) {
|
||||
this.addSlotToContainer(new Slot(player, j + i * 9 + 9, 8 + j * 18, 122 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++) {
|
||||
this.addSlotToContainer(new Slot(player, i, 8 + i * 18, 180));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
return slopper.isUseableByPlayer(player);
|
||||
}
|
||||
}
|
||||
@ -175,6 +175,7 @@ public class Fluids {
|
||||
public static FluidType THORIUM_SALT_DEPLETED;
|
||||
public static FluidType FULLERENE;
|
||||
public static FluidType STELLAR_FLUX;
|
||||
public static FluidType VITRIOL;
|
||||
|
||||
/* Lagacy names for compatibility purposes */
|
||||
@Deprecated public static FluidType ACID; //JAOPCA uses this, apparently
|
||||
@ -375,7 +376,8 @@ public class Fluids {
|
||||
HOTCRACKOIL_DS = new FluidType("HOTCRACKOIL_DS", 0x3A1A28, 2, 3, 0, EnumSymbol.NONE).setTemp(350).addTraits(LIQUID, VISCOUS, P_OIL);
|
||||
NAPHTHA_DS = new FluidType("NAPHTHA_DS", 0x63614E, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5F6D44)).addTraits(LIQUID, VISCOUS, P_FUEL);
|
||||
LIGHTOIL_DS = new FluidType("LIGHTOIL_DS", 0x63543E, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xB46B52)).addTraits(LIQUID, P_FUEL);
|
||||
STELLAR_FLUX = new FluidType(139, "STELLAR_FLUX", 0xE300FF, 0, 4, 4, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS);
|
||||
STELLAR_FLUX = new FluidType("STELLAR_FLUX", 0xE300FF, 0, 4, 4, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS);
|
||||
VITRIOL = new FluidType(140, "VITRIOL", 0x6E5222, 2, 0, 1, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS);
|
||||
|
||||
// ^ ^ ^ ^ ^ ^ ^ ^
|
||||
//ADD NEW FLUIDS HERE
|
||||
@ -489,6 +491,7 @@ public class Fluids {
|
||||
metaOrder.add(SALIENT);
|
||||
metaOrder.add(SEEDSLURRY);
|
||||
metaOrder.add(COLLOID);
|
||||
metaOrder.add(VITRIOL);
|
||||
metaOrder.add(IONGEL);
|
||||
metaOrder.add(PEROXIDE);
|
||||
metaOrder.add(SULFURIC_ACID);
|
||||
|
||||
@ -250,10 +250,10 @@ public class FluidTank {
|
||||
maxX += i;
|
||||
maxY += height;
|
||||
|
||||
minV = 0;
|
||||
minV = 0D;
|
||||
maxV = height / 16D;
|
||||
minU = 0D;
|
||||
maxU = width / 16D;
|
||||
minU = 1D;
|
||||
maxU = 1D - i / 16D;
|
||||
}
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
@ -4,13 +4,10 @@ import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.inventory.container.ContainerMachineCyclotron;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.packet.AuxButtonPacket;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineCyclotron;
|
||||
import com.hbm.util.I18nUtil;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
@ -24,25 +21,26 @@ public class GUIMachineCyclotron extends GuiInfoContainer {
|
||||
super(new ContainerMachineCyclotron(invPlayer, tile));
|
||||
cyclotron = tile;
|
||||
|
||||
this.xSize = 176;
|
||||
this.ySize = 222;
|
||||
this.xSize = 190;
|
||||
this.ySize = 215;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||
super.drawScreen(mouseX, mouseY, f);
|
||||
|
||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 72, 7, 52, cyclotron.power, cyclotron.maxPower);
|
||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 168, guiTop + 18, 16, 63, cyclotron.power, cyclotron.maxPower);
|
||||
|
||||
cyclotron.coolant.renderTankInfo(this, mouseX, mouseY, guiLeft + 53, guiTop + 72, 7, 52);
|
||||
cyclotron.amat.renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 90, 7, 34);
|
||||
cyclotron.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 11, guiTop + 81, 34, 7);
|
||||
cyclotron.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 11, guiTop + 90, 34, 7);
|
||||
cyclotron.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 107, guiTop + 81, 34, 16);
|
||||
|
||||
String[] upgradeText = new String[4];
|
||||
upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade");
|
||||
upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed");
|
||||
upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.effectiveness");
|
||||
upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.power");
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 21, guiTop + 75, 8, 8, mouseX, mouseY, upgradeText);
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 49, guiTop + 85, 8, 8, mouseX, mouseY, upgradeText);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -50,38 +48,28 @@ public class GUIMachineCyclotron extends GuiInfoContainer {
|
||||
String name = this.cyclotron.hasCustomInventoryName() ? this.cyclotron.getInventoryName() : I18n.format(this.cyclotron.getInventoryName());
|
||||
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 15, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int x, int y, int i) {
|
||||
super.mouseClicked(x, y, i);
|
||||
|
||||
if(guiLeft + 97 <= x && guiLeft + 97 + 18 > x && guiTop + 107 < y && guiTop + 107 + 18 >= y) {
|
||||
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(cyclotron.xCoord, cyclotron.yCoord, cyclotron.zCoord, 0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
|
||||
protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
int k = (int) cyclotron.getPowerScaled(52);
|
||||
drawTexturedModalRect(guiLeft + 80, guiTop + 124 - k, 212, 52 - k, 7, k);
|
||||
|
||||
int l = cyclotron.getProgressScaled(36);
|
||||
drawTexturedModalRect(guiLeft + 52, guiTop + 26, 176, 0, l, 36);
|
||||
|
||||
if(cyclotron.isOn)
|
||||
drawTexturedModalRect(guiLeft + 97, guiTop + 107, 219, 0, 18, 18);
|
||||
|
||||
this.drawInfoPanel(guiLeft + 21, guiTop + 75, 8, 8, 8);
|
||||
|
||||
cyclotron.coolant.renderTank(guiLeft + 53, guiTop + 124, this.zLevel, 7, 52);
|
||||
cyclotron.amat.renderTank(guiLeft + 134, guiTop + 124, this.zLevel, 7, 34);
|
||||
int k = (int) cyclotron.getPowerScaled(63);
|
||||
drawTexturedModalRect(guiLeft + 168, guiTop + 80 - k, 190, 62 - k, 16, k);
|
||||
|
||||
int l = cyclotron.getProgressScaled(34);
|
||||
drawTexturedModalRect(guiLeft + 48, guiTop + 27, 206, 0, l, 34);
|
||||
|
||||
if(l > 0)
|
||||
drawTexturedModalRect(guiLeft + 172, guiTop + 4, 190, 63, 9, 12);
|
||||
|
||||
this.drawInfoPanel(guiLeft + 49, guiTop + 85, 8, 8, 8);
|
||||
|
||||
cyclotron.tanks[0].renderTank(guiLeft + 11, guiTop + 88, this.zLevel, 34, 7, 1);
|
||||
cyclotron.tanks[1].renderTank(guiLeft + 11, guiTop + 97, this.zLevel, 34, 7, 1);
|
||||
cyclotron.tanks[2].renderTank(guiLeft + 107, guiTop + 97, this.zLevel, 34, 16, 1);
|
||||
}
|
||||
}
|
||||
|
||||
41
src/main/java/com/hbm/inventory/gui/GUIOreSlopper.java
Normal file
41
src/main/java/com/hbm/inventory/gui/GUIOreSlopper.java
Normal file
@ -0,0 +1,41 @@
|
||||
package com.hbm.inventory.gui;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.inventory.container.ContainerOreSlopper;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineOreSlopper;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class GUIOreSlopper extends GuiInfoContainer {
|
||||
|
||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_ore_slopper.png");
|
||||
private TileEntityMachineOreSlopper slopper;
|
||||
|
||||
public GUIOreSlopper(InventoryPlayer player, TileEntityMachineOreSlopper slopper) {
|
||||
super(new ContainerOreSlopper(player, slopper));
|
||||
this.slopper = slopper;
|
||||
|
||||
this.xSize = 176;
|
||||
this.ySize = 204;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer( int i, int j) {
|
||||
|
||||
String name = this.slopper.hasCustomInventoryName() ? this.slopper.getInventoryName() : I18n.format(this.slopper.getInventoryName());
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
}
|
||||
}
|
||||
@ -11,6 +11,7 @@ import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
@ -54,10 +55,16 @@ public class GUIScreenPreview extends GuiScreen {
|
||||
this.drawTexturedModalRect(res.getScaledWidth_double() / 2D / zoom - 9D, res.getScaledHeight_double() / 2D / zoom - 9D, 5, 87, 18, 18);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
String nameString = Item.itemRegistry.getNameForObject(preview.getItem()) + ", " + preview.getItemDamage();
|
||||
String zoomString = "Zoom: " + zoom;
|
||||
String scaleString = "Windows Scale: " + res.getScaleFactor();
|
||||
this.fontRendererObj.drawString(zoomString, this.width - this.fontRendererObj.getStringWidth(zoomString) - 2, this.height - 20, 0xff0000);
|
||||
this.fontRendererObj.drawString(scaleString, this.width - this.fontRendererObj.getStringWidth(scaleString) - 2, this.height - 10, 0xff0000);
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glScaled(0.5, 0.5, 1);
|
||||
this.fontRendererObj.drawString(zoomString, this.width * 2 - this.fontRendererObj.getStringWidth(zoomString) - 2, this.height * 2 - 35, 0xff0000);
|
||||
this.fontRendererObj.drawString(scaleString, this.width * 2 - this.fontRendererObj.getStringWidth(scaleString) - 2, this.height * 2 - 25, 0xff0000);
|
||||
this.fontRendererObj.drawString(nameString, this.width * 2 - this.fontRendererObj.getStringWidth(nameString) - 2, this.height * 2 - 15, 0xff0000);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
public void drawTexturedModalRect(double x, double y, int sourceX, int sourceY, int sizeX, int sizeY) {
|
||||
|
||||
@ -25,6 +25,9 @@ import com.hbm.inventory.material.Mats.MaterialStack;
|
||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemScraps;
|
||||
import com.hbm.items.special.ItemBedrockOreNew;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -51,6 +54,24 @@ public class ArcFurnaceRecipes extends SerializableRecipe {
|
||||
recipes.put(new ComparableStack(ModBlocks.sand_quartz), new ArcFurnaceRecipe().solid(new ItemStack(ModBlocks.glass_quartz)));
|
||||
recipes.put(new OreDictStack(BORAX.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.powder_boron_tiny, 3)).fluid(new MaterialStack(Mats.MAT_BORON, MaterialShapes.NUGGET.q(3))));
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 2)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 3)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type, 2)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type, 3)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type, 2)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type, 3)));
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(5)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(2))));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(2)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(5))));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(1)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(1))));
|
||||
|
||||
int i3 = MaterialShapes.INGOT.q(3);
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductAcid1, i3), ItemBedrockOreNew.toFluid(type.byproductAcid2, i3), ItemBedrockOreNew.toFluid(type.byproductAcid3, i3)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductSolvent1, i3), ItemBedrockOreNew.toFluid(type.byproductSolvent2, i3), ItemBedrockOreNew.toFluid(type.byproductSolvent3, i3)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductRad1, i3), ItemBedrockOreNew.toFluid(type.byproductRad2, i3), ItemBedrockOreNew.toFluid(type.byproductRad3, i3)));
|
||||
}
|
||||
|
||||
// Autogen for simple single type items
|
||||
for(NTMMaterial material : Mats.orderedList) {
|
||||
int in = material.convIn;
|
||||
@ -151,7 +172,7 @@ public class ArcFurnaceRecipes extends SerializableRecipe {
|
||||
public static HashMap getFluidRecipes() {
|
||||
HashMap<Object, Object> recipes = new HashMap<Object, Object>();
|
||||
for(Entry<AStack, ArcFurnaceRecipe> recipe : ArcFurnaceRecipes.recipes.entrySet()) {
|
||||
if(recipe.getValue().fluidOutput != null) {
|
||||
if(recipe.getValue().fluidOutput != null && recipe.getValue().fluidOutput.length > 0) {
|
||||
Object[] out = new Object[recipe.getValue().fluidOutput.length];
|
||||
for(int i = 0; i < out.length; i++) out[i] = ItemScraps.create(recipe.getValue().fluidOutput[i], true);
|
||||
recipes.put(recipe.getKey().copy(), out);
|
||||
@ -244,6 +265,13 @@ public class ArcFurnaceRecipes extends SerializableRecipe {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ArcFurnaceRecipe fluidNull(MaterialStack... outputs) {
|
||||
List<MaterialStack> mat = new ArrayList();
|
||||
for(MaterialStack stack : outputs) if(stack != null) mat.add(stack);
|
||||
if(!mat.isEmpty()) this.fluidOutput = mat.toArray(new MaterialStack[0]);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ArcFurnaceRecipe solid(ItemStack output) {
|
||||
this.solidOutput = output;
|
||||
return this;
|
||||
|
||||
@ -20,6 +20,7 @@ import com.hbm.inventory.RecipesCommon.OreDictStack;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.items.ItemGenericPart.EnumPartType;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemFluidIcon;
|
||||
|
||||
@ -37,6 +38,10 @@ public class ArcWelderRecipes extends SerializableRecipe {
|
||||
new OreDictStack(IRON.plate(), 2), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 400L,
|
||||
new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus)));
|
||||
recipes.add(new ArcWelderRecipe(DictFrame.fromOne(ModItems.part_generic, EnumPartType.LDE), 200, 5_000L,
|
||||
new OreDictStack(AL.plate(), 4), new OreDictStack(FIBER.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot())));
|
||||
recipes.add(new ArcWelderRecipe(DictFrame.fromOne(ModItems.part_generic, EnumPartType.LDE), 200, 10_000L,
|
||||
new OreDictStack(TI.plate(), 2), new OreDictStack(FIBER.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot())));
|
||||
|
||||
//Dense Wires
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), 100, 10_000L,
|
||||
@ -68,6 +73,8 @@ public class ArcWelderRecipes extends SerializableRecipe {
|
||||
new OreDictStack(CDALLOY.plateCast(), 2)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_TUNGSTEN.id), 1_200, 250_000L, new FluidStack(Fluids.OXYGEN, 1_000),
|
||||
new OreDictStack(W.plateCast(), 2)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_CMB.id), 1_200, 10_000_000L, new FluidStack(Fluids.REFORMGAS, 1_000),
|
||||
new OreDictStack(CMB.plateCast(), 2)));
|
||||
//pre-DFC
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_OSMIRIDIUM.id), 6_000, 20_000_000L, new FluidStack(Fluids.REFORMGAS, 16_000),
|
||||
new OreDictStack(OSMIRIDIUM.plateCast(), 2)));
|
||||
@ -103,6 +110,12 @@ public class ArcWelderRecipes extends SerializableRecipe {
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear), 600, 50_000L, new ComparableStack(ModItems.warhead_nuclear), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear_cluster), 600, 50_000L, new ComparableStack(ModItems.warhead_mirv), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_volcano), 600, 50_000L, new ComparableStack(ModItems.warhead_volcano), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3)));
|
||||
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_mapper), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_mapper)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_scanner), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_scanner)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_radar), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_radar)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_laser), 600, 50_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_laser)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_resonator), 600, 50_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_resonator)));
|
||||
}
|
||||
|
||||
public static HashMap getRecipes() {
|
||||
|
||||
@ -98,15 +98,6 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.CAPACITOR_BOARD.ordinal()) }, 600);
|
||||
makeRecipe(new ComparableStack(ModItems.missile_stealth, 1), new AStack[] { new OreDictStack(TI.plate(), 20), new OreDictStack(AL.plate(), 20), new OreDictStack(CU.plate(), 10), new OreDictStack(KEY_BLACK, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(STEEL.bolt(), 32) },1200);
|
||||
makeRecipe(new ComparableStack(ModItems.thruster_nuclear, 1), new AStack[] {new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new ComparableStack(ModItems.pipes_steel) },600);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.plate_desh, 4), new OreDictStack(TI.shell(), 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.photo_panel, 24), new OreDictStack(CU.plateCast(), 12), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.BASIC.ordinal()), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },500);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new OreDictStack(STEEL.shell(), 3), new ComparableStack(ModItems.plate_desh, 2), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(RUBBER.ingot(), 12), new OreDictStack(REDSTONE.dust(), 6), new ComparableStack(Items.diamond, 1), new ComparableStack(Blocks.glass_pane, 6), },400);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_scanner, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 6), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.plate_desh, 6), new ComparableStack(ModItems.magnetron, 6), new ComparableStack(ModItems.coil_advanced_torus, 2), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(RUBBER.ingot(), 6), new ComparableStack(Items.diamond, 1), },400);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_radar, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.magnetron, 12), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(MINGRADE.wireFine(), 16), new ComparableStack(ModItems.coil_gold, 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new ComparableStack(Items.diamond, 1), },400);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_laser, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(W.ingot(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(CU.plateCast(), 24), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED), new OreDictStack(REDSTONE.dust(), 16), new ComparableStack(Items.diamond, 5), new ComparableStack(Blocks.glass_pane, 16), },450);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_resonator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 48), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModItems.crystal_xen, 1), new OreDictStack(STAR.ingot(), 7), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED) },1000);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_foeq, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.plate_desh, 8), new OreDictStack(TI.shell(), 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.getID()), new ComparableStack(ModItems.photo_panel, 16), new ComparableStack(ModItems.thruster_nuclear, 1), new ComparableStack(ModItems.ingot_uranium_fuel, 6), new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BASIC), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },1200);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_miner, 1), new AStack[] {new OreDictStack(BIGMT.plate(), 24), new ComparableStack(ModItems.plate_desh, 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.centrifuge_element, 4), new ComparableStack(ModItems.magnetron, 3), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_lunar_miner, 1), new AStack[] {new ComparableStack(ModItems.ingot_meteorite, 4), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.magnetron, 3), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600);
|
||||
makeRecipe(new ComparableStack(ModItems.chopper_head, 1), new AStack[] {new ComparableStack(ModBlocks.reinforced_glass, 2), new OreDictStack(CMB.ingot(), 22), new OreDictStack(MAGTUNG.wireFine(), 4), },300);
|
||||
makeRecipe(new ComparableStack(ModItems.chopper_gun, 1), new AStack[] {new OreDictStack(CMB.plate(), 4), new OreDictStack(CMB.ingot(), 2), new OreDictStack(W.wireFine(), 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 1), new ComparableStack(ModItems.motor, 1), },150);
|
||||
makeRecipe(new ComparableStack(ModItems.chopper_torso, 1), new AStack[] {new OreDictStack(CMB.ingot(), 26), new OreDictStack(MAGTUNG.wireFine(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.chopper_blades, 2), },350);
|
||||
@ -140,7 +131,7 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_battery, 1), new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(NP237.dust(), 12), new OreDictStack(SA326.dust(), 12), new OreDictStack(SA326.ingot(), 2), new OreDictStack(SA326.wireFine(), 4), },800);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_dineutronium_battery, 1), new AStack[] {new OreDictStack(DNT.ingot(), 24), new ComparableStack(ModItems.powder_spark_mix, 12), new ComparableStack(ModItems.battery_spark_cell_1000, 1), new OreDictStack(CMB.ingot(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 8), },1600);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_shredder, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModBlocks.steel_beam, 2), new ComparableStack(Blocks.iron_bars, 2) },200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModBlocks.steel_beam, 8), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.drill_titanium, 1), new OreDictStack(MINGRADE.wireFine(), 6), },250);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.drill_titanium, 1) }, 200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.plateWelded(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor_desh) }, 400);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_flare, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 4), new ComparableStack(ModItems.tank_steel, 1), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(STEEL.shell(), 4), new ComparableStack(ModItems.thermo_element, 3), },200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 16), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200);
|
||||
@ -264,12 +255,109 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModItems.mp_warhead_15_nuclear, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 24), new OreDictStack(TI.plate(), 12), new OreDictStack(PU239.ingot(), 3), new ComparableStack(ModBlocks.det_charge, 6), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.ADVANCED), },500);
|
||||
makeRecipe(new ComparableStack(ModItems.mp_warhead_15_n2, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 20), new ComparableStack(ModBlocks.det_charge, 24), new ComparableStack(Blocks.redstone_block, 12), new OreDictStack(MAGTUNG.dust(), 6), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), },400);
|
||||
makeRecipe(new ComparableStack(ModItems.mp_warhead_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(OreDictManager.getReflector(), 16), new ComparableStack(ModItems.powder_magic, 6), new ComparableStack(ModItems.egg_balefire_shard, 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), }, 60, ModItems.journal_bj);
|
||||
makeRecipe(new ComparableStack(ModItems.missile_soyuz, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 40), new ComparableStack(ModBlocks.det_cord, 20), new ComparableStack(ModItems.thruster_medium, 12), new ComparableStack(ModItems.thruster_small, 12), new ComparableStack(ModItems.tank_steel, 10), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.ADVANCED), new OreDictStack(RUBBER.ingot(), 64), new ComparableStack(ModItems.fins_small_steel, 4), new OreDictStack(TI.shell(), 32), new OreDictStack(STEEL.shell(), 18), new OreDictStack(FIBER.ingot(), 64), },600);
|
||||
makeRecipe(new ComparableStack(ModItems.missile_soyuz_lander, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 10), new ComparableStack(ModItems.thruster_small, 3), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC), new OreDictStack(ANY_RUBBER.ingot(), 32), new OreDictStack(AL.shell(), 2), new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(FIBER.ingot(), 12), },600, ModItems.journal_bj);
|
||||
makeRecipe(new ComparableStack(ModItems.fusion_shield_tungsten, 1), new AStack[] {new OreDictStack(W.block(), 32), new OreDictStack(OreDictManager.getReflector(), 96)}, 600);
|
||||
makeRecipe(new ComparableStack(ModItems.fusion_shield_desh, 1), new AStack[] {new OreDictStack(DESH.block(), 16), new OreDictStack(CO.block(), 16), new OreDictStack(BIGMT.plate(), 96)}, 600);
|
||||
makeRecipe(new ComparableStack(ModItems.fusion_shield_chlorophyte, 1), new AStack[] {new OreDictStack(W.block(), 16), new OreDictStack(DURA.block(), 16), new OreDictStack(OreDictManager.getReflector(), 48), new ComparableStack(ModItems.powder_chlorophyte, 48)}, 600);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.missile_soyuz, 1), new AStack[] {
|
||||
new OreDictStack(TI.shell(), 32),
|
||||
new OreDictStack(RUBBER.ingot(), 64),
|
||||
new ComparableStack(ModItems.rocket_fuel, 64),
|
||||
new ComparableStack(ModItems.thruster_small, 12),
|
||||
new ComparableStack(ModItems.thruster_medium, 12),
|
||||
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER),
|
||||
new ComparableStack(ModItems.part_generic, 32, EnumPartType.LDE)
|
||||
},600);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.missile_soyuz_lander, 1), new AStack[] {
|
||||
new OreDictStack(AL.shell(), 4),
|
||||
new OreDictStack(RUBBER.ingot(), 16),
|
||||
new ComparableStack(ModItems.rocket_fuel, 16),
|
||||
new ComparableStack(ModItems.thruster_small, 3),
|
||||
new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER_ADVANCED),
|
||||
new ComparableStack(ModItems.part_generic, 12, EnumPartType.LDE)
|
||||
},600, ModItems.journal_bj);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {
|
||||
new OreDictStack(RUBBER.ingot(), 12),
|
||||
new OreDictStack(TI.shell(), 3),
|
||||
new ComparableStack(ModItems.thruster_large, 1),
|
||||
new ComparableStack(ModItems.part_generic, 8, EnumPartType.LDE),
|
||||
new ComparableStack(ModItems.plate_desh, 4),
|
||||
new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()),
|
||||
new ComparableStack(ModItems.photo_panel, 24),
|
||||
new ComparableStack(ModItems.circuit, 12, EnumCircuitType.BASIC),
|
||||
new ComparableStack(ModBlocks.machine_lithium_battery, 1)
|
||||
},500);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {
|
||||
new OreDictStack(STEEL.shell(), 3),
|
||||
new ComparableStack(ModItems.plate_desh, 4),
|
||||
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED),
|
||||
new ComparableStack(ModBlocks.glass_quartz, 8),
|
||||
},400);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_scanner, 1), new AStack[] {
|
||||
new OreDictStack(STEEL.shell(), 3),
|
||||
new OreDictStack(TI.plateCast(), 8),
|
||||
new ComparableStack(ModItems.plate_desh, 4),
|
||||
new ComparableStack(ModItems.magnetron, 8),
|
||||
new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED.ordinal())
|
||||
},400);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_radar, 1), new AStack[] {
|
||||
new OreDictStack(STEEL.shell(), 3),
|
||||
new OreDictStack(TI.plateCast(), 12),
|
||||
new ComparableStack(ModItems.magnetron, 12),
|
||||
new ComparableStack(ModItems.coil_gold, 16),
|
||||
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal())
|
||||
},400);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_laser, 1), new AStack[] {
|
||||
new OreDictStack(STEEL.shell(), 6),
|
||||
new OreDictStack(CU.plateCast(), 24),
|
||||
new OreDictStack(ANY_HARDPLASTIC.ingot(), 16),
|
||||
new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD),
|
||||
new ComparableStack(ModItems.crystal_diamond, 8),
|
||||
new ComparableStack(ModBlocks.glass_quartz, 8)
|
||||
},450);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_resonator, 1), new AStack[] {
|
||||
new OreDictStack(STEEL.plateCast(), 6),
|
||||
new OreDictStack(STAR.ingot(), 12),
|
||||
new OreDictStack(ANY_PLASTIC.ingot(), 48),
|
||||
new ComparableStack(ModItems.crystal_xen, 1),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED)
|
||||
},1000);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_foeq, 1), new AStack[] {
|
||||
new OreDictStack(TI.shell(), 3),
|
||||
new ComparableStack(ModItems.plate_desh, 8),
|
||||
new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.getID()),
|
||||
new ComparableStack(ModItems.photo_panel, 16),
|
||||
new ComparableStack(ModItems.thruster_nuclear, 1),
|
||||
new ComparableStack(ModItems.ingot_uranium_fuel, 6),
|
||||
new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BASIC),
|
||||
new ComparableStack(ModItems.magnetron, 3),
|
||||
new ComparableStack(ModBlocks.machine_lithium_battery, 1)
|
||||
},1200);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_miner, 1), new AStack[] {
|
||||
new OreDictStack(BIGMT.plate(), 24),
|
||||
new ComparableStack(ModItems.motor_desh, 2),
|
||||
new ComparableStack(ModItems.drill_titanium, 2),
|
||||
new ComparableStack(ModItems.circuit, 12, EnumCircuitType.ADVANCED),
|
||||
new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()),
|
||||
new ComparableStack(ModItems.thruster_small, 1),
|
||||
new ComparableStack(ModItems.photo_panel, 12),
|
||||
new ComparableStack(ModItems.centrifuge_element, 4),
|
||||
new ComparableStack(ModBlocks.machine_lithium_battery, 1)
|
||||
},600);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_lunar_miner, 1), new AStack[] {
|
||||
new ComparableStack(ModItems.ingot_meteorite, 4),
|
||||
new ComparableStack(ModItems.plate_desh, 4),
|
||||
new ComparableStack(ModItems.motor, 2),
|
||||
new ComparableStack(ModItems.drill_titanium, 2),
|
||||
new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED),
|
||||
new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()),
|
||||
new ComparableStack(ModItems.thruster_small, 1),
|
||||
new ComparableStack(ModItems.photo_panel, 12),
|
||||
new ComparableStack(ModBlocks.machine_lithium_battery, 1)
|
||||
},600);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_1, 1), new AStack[] {
|
||||
new ComparableStack(ModItems.upgrade_speed_3, 1),
|
||||
@ -510,30 +598,26 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
}, 200);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.STOCK.ordinal()), new AStack[] {
|
||||
new OreDictStack(STEEL.plate(), 2),
|
||||
new OreDictStack(CU.plate(), 1),
|
||||
new ComparableStack(ModItems.casing_50, 5),
|
||||
new OreDictStack(STEEL.plate(), 4),
|
||||
new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2),
|
||||
new OreDictStack(ANY_HARDPLASTIC.ingot(), 2),
|
||||
new ComparableStack(ModItems.cordite, 3),
|
||||
new OreDictStack(U238.ingot(), 1)
|
||||
}, 60);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.INCENDIARY.ordinal()), new AStack[] {
|
||||
new OreDictStack(STEEL.plate(), 2),
|
||||
new OreDictStack(CU.plate(), 1),
|
||||
new ComparableStack(ModItems.casing_50, 5),
|
||||
new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 3),
|
||||
new OreDictStack(STEEL.plate(), 4),
|
||||
new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2),
|
||||
new OreDictStack(ANY_HARDPLASTIC.ingot(), 2),
|
||||
new ComparableStack(ModItems.cordite, 3),
|
||||
new OreDictStack(P_WHITE.ingot(), 3)
|
||||
}, 60);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.HE.ordinal()), new AStack[] {
|
||||
new OreDictStack(STEEL.plate(), 2),
|
||||
new OreDictStack(CU.plate(), 1),
|
||||
new ComparableStack(ModItems.casing_50, 5),
|
||||
new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 5),
|
||||
new ComparableStack(ModItems.cordite, 5),
|
||||
new OreDictStack(REDSTONE.dust(), 3)
|
||||
new OreDictStack(STEEL.plate(), 4),
|
||||
new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2),
|
||||
new OreDictStack(ANY_HARDPLASTIC.ingot(), 5),
|
||||
new ComparableStack(ModItems.cordite, 5)
|
||||
}, 60);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.spawn_worm, 1), new AStack[] {
|
||||
@ -1121,8 +1205,7 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_catalytic_cracker), new AStack[] {
|
||||
new ComparableStack(ModBlocks.steel_scaffold, 16),
|
||||
!exp ? new OreDictStack(STEEL.shell(), 4) : new OreDictStack(STEEL.heavyComp()),
|
||||
new ComparableStack(ModItems.tank_steel, 3),
|
||||
!exp ? new OreDictStack(STEEL.shell(), 6) : new OreDictStack(STEEL.heavyComp()),
|
||||
new OreDictStack(ANY_PLASTIC.ingot(), 4),
|
||||
new OreDictStack(NB.ingot(), 2),
|
||||
new ComparableStack(ModItems.catalyst_clay, 12),
|
||||
@ -1132,10 +1215,10 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
new OreDictStack(STEEL.ingot(), 8),
|
||||
new OreDictStack(CU.plate528(), 12),
|
||||
new OreDictStack(ANY_TAR.any(), 8),
|
||||
new OreDictStack(STEEL.shell(), 3),
|
||||
new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CAPACITOR),
|
||||
new ComparableStack(ModItems.catalyst_clay, 4),
|
||||
new ComparableStack(ModItems.coil_tungsten, 8),
|
||||
new ComparableStack(ModItems.tank_steel, 2)
|
||||
new ComparableStack(ModItems.coil_tungsten, 8)
|
||||
}, 200);
|
||||
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_solidifier), new AStack[] {
|
||||
@ -1145,8 +1228,7 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
new OreDictStack(STEEL.shell(), 3),
|
||||
new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CAPACITOR),
|
||||
new ComparableStack(ModItems.catalyst_clay, 4),
|
||||
new ComparableStack(ModItems.coil_copper, 4),
|
||||
new ComparableStack(ModItems.tank_steel, 2)
|
||||
new ComparableStack(ModItems.coil_copper, 4)
|
||||
}, 200);
|
||||
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_radiolysis), new AStack[] {
|
||||
@ -1187,26 +1269,21 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModBlocks.silo_hatch, 1), new AStack[]{new OreDictStack(STEEL.plateWelded(), 4), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.motor, 2), new OreDictStack(STEEL.bolt(), 16), new OreDictStack(KEY_GREEN, 4)}, 200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.silo_hatch_large, 1), new AStack[]{new OreDictStack(STEEL.plateWelded(), 6), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.motor, 2), new OreDictStack(STEEL.bolt(), 16), new OreDictStack(KEY_GREEN, 8)}, 200);
|
||||
|
||||
if(Loader.isModLoaded("Mekanism")) {
|
||||
if(GeneralConfig.enableMekanismChanges && Loader.isModLoaded("Mekanism")) {
|
||||
|
||||
Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock");
|
||||
|
||||
if(mb != null) {
|
||||
|
||||
makeRecipe(new ComparableStack(mb, 1, 4), new AStack[] {
|
||||
new OreDictStack(DURA.ingot(), 16),
|
||||
new OreDictStack(DESH.ingot(), 16),
|
||||
new OreDictStack(STEEL.plateWelded(), 32),
|
||||
new OreDictStack(CU.plateWelded(), 24),
|
||||
new ComparableStack(ModItems.pipes_steel, 8),
|
||||
new OreDictStack(BIGMT.plateCast(), 16),
|
||||
new OreDictStack(CU.plateWelded(), 12),
|
||||
new OreDictStack("alloyUltimate", 32),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID),
|
||||
new ComparableStack(ModItems.wire_dense, 32, Mats.MAT_ALLOY.id),
|
||||
new ComparableStack(ModBlocks.fusion_conductor, 12),
|
||||
new ComparableStack(ModBlocks.capacitor_tantalium, 53),
|
||||
new ComparableStack(ModItems.crystal_redstone, 16),
|
||||
new ComparableStack(ModItems.crystal_diamond, 8),
|
||||
new ComparableStack(ModItems.motor_bismuth, 4)
|
||||
}, 15 * 60 * 20);
|
||||
new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR_BOARD),
|
||||
new ComparableStack(ModItems.wire_dense, 32, Mats.MAT_GOLD.id),
|
||||
new ComparableStack(ModItems.motor_bismuth, 3)
|
||||
}, 1200);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -25,7 +25,10 @@ import com.hbm.items.ItemEnums.EnumChunkType;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel;
|
||||
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
|
||||
import com.hbm.items.special.ItemBedrockOreNew;
|
||||
import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
import com.hbm.items.special.ItemByproduct.EnumByproduct;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.util.ItemStackUtil;
|
||||
@ -509,6 +512,40 @@ public class CentrifugeRecipes extends SerializableRecipe {
|
||||
ItemStackUtil.carefulCopy(by3) });
|
||||
}
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), new ItemStack(Blocks.gravel)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), new ItemStack(Blocks.gravel)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), new ItemStack(Blocks.gravel)});
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type), ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type), ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type), ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)});
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type, 2)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type, 2)});
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1), ItemBedrockOreNew.extract(type.byproductAcid2), ItemBedrockOreNew.extract(type.byproductAcid3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1), ItemBedrockOreNew.extract(type.byproductAcid2), ItemBedrockOreNew.extract(type.byproductAcid3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1), ItemBedrockOreNew.extract(type.byproductAcid2), ItemBedrockOreNew.extract(type.byproductAcid3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1, 2), ItemBedrockOreNew.extract(type.byproductAcid2, 2), ItemBedrockOreNew.extract(type.byproductAcid3, 2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1), ItemBedrockOreNew.extract(type.byproductSolvent2), ItemBedrockOreNew.extract(type.byproductSolvent3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1), ItemBedrockOreNew.extract(type.byproductSolvent2), ItemBedrockOreNew.extract(type.byproductSolvent3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1), ItemBedrockOreNew.extract(type.byproductSolvent2), ItemBedrockOreNew.extract(type.byproductSolvent3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1, 2), ItemBedrockOreNew.extract(type.byproductSolvent2, 2), ItemBedrockOreNew.extract(type.byproductSolvent3, 2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1), ItemBedrockOreNew.extract(type.byproductRad2), ItemBedrockOreNew.extract(type.byproductRad3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1), ItemBedrockOreNew.extract(type.byproductRad2), ItemBedrockOreNew.extract(type.byproductRad3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1), ItemBedrockOreNew.extract(type.byproductRad2), ItemBedrockOreNew.extract(type.byproductRad3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1, 2), ItemBedrockOreNew.extract(type.byproductRad2, 2), ItemBedrockOreNew.extract(type.byproductRad3, 2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
}
|
||||
|
||||
List<ItemStack> quartz = OreDictionary.getOres("crystalCertusQuartz");
|
||||
|
||||
if(quartz != null && !quartz.isEmpty()) {
|
||||
|
||||
@ -24,6 +24,9 @@ import com.hbm.items.ItemEnums.EnumCokeType;
|
||||
import com.hbm.items.ItemEnums.EnumTarType;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemFluidIcon;
|
||||
import com.hbm.items.special.ItemBedrockOreNew;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
import com.hbm.util.Tuple.Pair;
|
||||
|
||||
import net.minecraft.init.Blocks;
|
||||
@ -63,6 +66,14 @@ public class CombinationRecipes extends SerializableRecipe {
|
||||
|
||||
recipes.put(new ComparableStack(Items.reeds), new Pair(new ItemStack(Items.sugar, 2), new FluidStack(Fluids.ETHANOL, 50)));
|
||||
recipes.put(new ComparableStack(Blocks.clay), new Pair(new ItemStack(Blocks.brick_block, 1), null));
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50)));
|
||||
}
|
||||
}
|
||||
|
||||
public static Pair<ItemStack, FluidStack> getOutput(ItemStack stack) {
|
||||
|
||||
@ -25,7 +25,10 @@ import com.hbm.items.ItemEnums.EnumTarType;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemChemicalDye.EnumChemDye;
|
||||
import com.hbm.items.machine.ItemFluidIcon;
|
||||
import com.hbm.items.special.ItemBedrockOreNew;
|
||||
import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
import com.hbm.items.special.ItemPlasticScrap.ScrapType;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.util.Tuple.Pair;
|
||||
@ -83,7 +86,7 @@ public class CrystallizerRecipes extends SerializableRecipe {
|
||||
registerRecipe(new ComparableStack(ModBlocks.gravel_diamond), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime));
|
||||
registerRecipe(SRN.ingot(), new CrystallizerRecipe(ModItems.crystal_schraranium, baseTime));
|
||||
|
||||
registerRecipe("sand", new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime));
|
||||
registerRecipe(KEY_SAND, new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime));
|
||||
registerRecipe(SI.ingot(), new CrystallizerRecipe(new ItemStack(Items.quartz, 2), utilityTime), new FluidStack(Fluids.OXYGEN, 250));
|
||||
registerRecipe(REDSTONE.block(), new CrystallizerRecipe(ModItems.ingot_mercury, baseTime));
|
||||
registerRecipe(CINNABAR.crystal(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_mercury, 3), baseTime));
|
||||
@ -133,6 +136,59 @@ public class CrystallizerRecipes extends SerializableRecipe {
|
||||
registerRecipe(new ComparableStack(ModItems.ore_nitrocrystalline, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_deepcleaned, 1, i), oreTime), organic);
|
||||
registerRecipe(new ComparableStack(ModItems.ore_nitrocrystalline, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_seared, 1, i), oreTime), hiperf);
|
||||
}
|
||||
|
||||
int bedrock = 200;
|
||||
int washing = 100;
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type), bedrock), new FluidStack(Fluids.SULFURIC_ACID, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type), bedrock), new FluidStack(Fluids.SULFURIC_ACID, 250));
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type), bedrock), new FluidStack(Fluids.SOLVENT, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type), bedrock), new FluidStack(Fluids.SOLVENT, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type), bedrock), new FluidStack(Fluids.SOLVENT, 250));
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250));
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
|
||||
FluidStack primary = new FluidStack(Fluids.HYDROGEN, 250);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
|
||||
FluidStack secondary = new FluidStack(Fluids.CHLORINE, 250);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type), bedrock).setReq(64), new FluidStack(Fluids.NITRIC_ACID, 1000));
|
||||
}
|
||||
|
||||
FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100)};
|
||||
for(FluidStack dye : dyes) {
|
||||
|
||||
@ -21,6 +21,9 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemFluidIcon;
|
||||
import com.hbm.items.machine.ItemScraps;
|
||||
import com.hbm.items.special.ItemBedrockOreNew;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
import com.hbm.util.ItemStackUtil;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -128,6 +131,33 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe {
|
||||
new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(4)),
|
||||
new ItemStack(ModItems.powder_copper, 4),
|
||||
new ItemStack(ModItems.powder_lithium_tiny, 3)));
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
|
||||
MaterialStack f0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(7));
|
||||
MaterialStack f1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(4));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ElectrolysisMetalRecipe(
|
||||
f0 != null ? f0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
|
||||
f1 != null ? f1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
|
||||
f0 == null ? ItemBedrockOreNew.extract(type.primary1, 7) : new ItemStack(ModItems.dust),
|
||||
f1 == null ? ItemBedrockOreNew.extract(type.primary2, 4) : new ItemStack(ModItems.dust)));
|
||||
|
||||
MaterialStack s0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(4));
|
||||
MaterialStack s1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(7));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ElectrolysisMetalRecipe(
|
||||
s0 != null ? s0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
|
||||
s1 != null ? s1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
|
||||
s0 == null ? ItemBedrockOreNew.extract(type.primary1, 4) : new ItemStack(ModItems.dust),
|
||||
s1 == null ? ItemBedrockOreNew.extract(type.primary2, 7) : new ItemStack(ModItems.dust)));
|
||||
|
||||
MaterialStack c0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(2));
|
||||
MaterialStack c1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(2));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new ElectrolysisMetalRecipe(
|
||||
c0 != null ? c0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1, 2)),
|
||||
c1 != null ? c1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1, 2)),
|
||||
c0 == null ? ItemBedrockOreNew.extract(type.primary1, 2) : new ItemStack(ModItems.dust),
|
||||
c1 == null ? ItemBedrockOreNew.extract(type.primary2, 2) : new ItemStack(ModItems.dust)));
|
||||
}
|
||||
}
|
||||
|
||||
public static ElectrolysisMetalRecipe getRecipe(ItemStack stack) {
|
||||
|
||||
@ -439,10 +439,9 @@ public class AnvilRecipes {
|
||||
new AStack[] {
|
||||
new ComparableStack(ModItems.deuterium_filter, 2),
|
||||
new OreDictStack(STEEL.shell(), 5),
|
||||
new ComparableStack(ModBlocks.concrete_smooth, 8),
|
||||
new ComparableStack(ModBlocks.concrete_asbestos, 4),
|
||||
new ComparableStack(ModBlocks.steel_scaffold, 16),
|
||||
new OreDictStack(STEEL.pipe(), 12),
|
||||
new ComparableStack(ModBlocks.concrete_asbestos, 8),
|
||||
new ComparableStack(ModBlocks.steel_scaffold, 16),
|
||||
new OreDictStack(Fluids.SOURGAS.getDict(1_000), 8),
|
||||
},
|
||||
new AnvilOutput(new ItemStack(ModBlocks.machine_deuterium_tower))).setTier(4));
|
||||
|
||||
@ -75,4 +75,8 @@ public class ItemEnums {
|
||||
public static enum EnumPages {
|
||||
PAGE1, PAGE2, PAGE3, PAGE4, PAGE5, PAGE6, PAGE7, PAGE8
|
||||
}
|
||||
|
||||
public static enum EnumSecretType {
|
||||
CANISTER, CONTROLLER
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,7 +12,8 @@ public class ItemGenericPart extends ItemEnumMulti {
|
||||
public static enum EnumPartType {
|
||||
PISTON_PNEUMATIC("piston_pneumatic"),
|
||||
PISTON_HYDRAULIC("piston_hydraulic"),
|
||||
PISTON_ELECTRIC("piston_electric");
|
||||
PISTON_ELECTRIC("piston_electric"),
|
||||
LDE("low_density_element");
|
||||
|
||||
private String texName;
|
||||
|
||||
|
||||
@ -213,6 +213,8 @@ public class ModItems {
|
||||
public static Item ore_seared;
|
||||
//public static Item ore_radcleaned;
|
||||
public static Item ore_enriched; //final stage
|
||||
public static Item bedrock_ore_base;
|
||||
public static Item bedrock_ore;
|
||||
|
||||
public static Item billet_uranium;
|
||||
public static Item billet_u233;
|
||||
@ -347,6 +349,7 @@ public class ModItems {
|
||||
public static Item thruster_nuclear;
|
||||
public static Item safety_fuse;
|
||||
public static Item part_generic;
|
||||
public static Item item_secret;
|
||||
public static Item chemical_dye;
|
||||
public static Item crayon;
|
||||
|
||||
@ -675,7 +678,6 @@ public class ModItems {
|
||||
public static Item dysfunctional_reactor;
|
||||
public static Item blade_titanium;
|
||||
public static Item turbine_titanium;
|
||||
public static Item generator_front;
|
||||
public static Item blade_tungsten;
|
||||
public static Item turbine_tungsten;
|
||||
public static Item pellet_coal;
|
||||
@ -702,7 +704,6 @@ public class ModItems {
|
||||
public static Item warhead_buster_medium;
|
||||
public static Item warhead_buster_large;
|
||||
public static Item warhead_nuclear;
|
||||
public static Item warhead_mirvlet;
|
||||
public static Item warhead_mirv;
|
||||
public static Item warhead_volcano;
|
||||
|
||||
@ -1086,7 +1087,7 @@ public class ModItems {
|
||||
public static Item waste_u233;
|
||||
public static Item waste_u235;
|
||||
public static Item waste_schrabidium;
|
||||
public static Item waste_zfb_mox; //TODO: remind me to smite these useless waste items and condense em like the rbmk waste
|
||||
public static Item waste_zfb_mox;
|
||||
|
||||
public static Item waste_plate_u233;
|
||||
public static Item waste_plate_u235;
|
||||
@ -1262,6 +1263,7 @@ public class ModItems {
|
||||
public static Item geiger_counter;
|
||||
public static Item digamma_diagnostic;
|
||||
public static Item pollution_detector;
|
||||
public static Item ore_density_scanner;
|
||||
public static Item survey_scanner;
|
||||
public static Item mirror_tool;
|
||||
public static Item rbmk_tool;
|
||||
@ -2615,6 +2617,7 @@ public class ModItems {
|
||||
thruster_nuclear = new Item().setUnlocalizedName("thruster_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thruster_nuclear");
|
||||
safety_fuse = new Item().setUnlocalizedName("safety_fuse").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":safety_fuse");
|
||||
part_generic = new ItemGenericPart().setUnlocalizedName("part_generic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_generic");
|
||||
item_secret = new ItemEnumMulti(EnumSecretType.class, true, true).setUnlocalizedName("item_secret").setCreativeTab(null).setTextureName(RefStrings.MODID + ":item_secret");
|
||||
chemical_dye = new ItemChemicalDye().setUnlocalizedName("chemical_dye").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chemical_dye");
|
||||
crayon = new ItemCrayon().setUnlocalizedName("crayon").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crayon");
|
||||
|
||||
@ -2720,6 +2723,8 @@ public class ModItems {
|
||||
ore_seared = new ItemBedrockOre().setUnlocalizedName("ore_seared").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_seared");
|
||||
//ore_radcleaned = new ItemBedrockOre().setUnlocalizedName("ore_radcleaned").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_radcleaned");
|
||||
ore_enriched = new ItemBedrockOre().setUnlocalizedName("ore_enriched").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_enriched");
|
||||
bedrock_ore_base = new ItemBedrockOreBase().setUnlocalizedName("bedrock_ore_base").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bedrock_ore_new");
|
||||
bedrock_ore = new ItemBedrockOreNew().setUnlocalizedName("bedrock_ore").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bedrock_ore_new");
|
||||
|
||||
ingot_lanthanium = new ItemCustomLore().setUnlocalizedName("ingot_lanthanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_lanthanium");
|
||||
ingot_actinium = new ItemCustomLore().setUnlocalizedName("ingot_actinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_actinium");
|
||||
@ -3030,7 +3035,6 @@ public class ModItems {
|
||||
dysfunctional_reactor = new Item().setUnlocalizedName("dysfunctional_reactor").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":dysfunctional_reactor");
|
||||
blade_titanium = new Item().setUnlocalizedName("blade_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":blade_titanium");
|
||||
turbine_titanium = new Item().setUnlocalizedName("turbine_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":turbine_titanium");
|
||||
generator_front = new Item().setUnlocalizedName("generator_front").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":generator_front");
|
||||
blade_tungsten = new Item().setUnlocalizedName("blade_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":blade_tungsten");
|
||||
turbine_tungsten = new Item().setUnlocalizedName("turbine_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":turbine_tungsten");
|
||||
|
||||
@ -3051,7 +3055,6 @@ public class ModItems {
|
||||
warhead_buster_medium = new Item().setUnlocalizedName("warhead_buster_medium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_buster_medium");
|
||||
warhead_buster_large = new Item().setUnlocalizedName("warhead_buster_large").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_buster_large");
|
||||
warhead_nuclear = new Item().setUnlocalizedName("warhead_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_nuclear");
|
||||
warhead_mirvlet = new Item().setUnlocalizedName("warhead_mirvlet").setCreativeTab(null).setTextureName(RefStrings.MODID + ":warhead_mirvlet");
|
||||
warhead_mirv = new Item().setUnlocalizedName("warhead_mirv").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_mirv");
|
||||
warhead_volcano = new Item().setUnlocalizedName("warhead_volcano").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_volcano");
|
||||
|
||||
@ -4602,6 +4605,7 @@ public class ModItems {
|
||||
geiger_counter = new ItemGeigerCounter().setUnlocalizedName("geiger_counter").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":geiger_counter");
|
||||
digamma_diagnostic = new ItemDigammaDiagnostic().setUnlocalizedName("digamma_diagnostic").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":digamma_diagnostic");
|
||||
pollution_detector = new ItemPollutionDetector().setUnlocalizedName("pollution_detector").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pollution_detector");
|
||||
ore_density_scanner = new ItemOreDensityScanner().setUnlocalizedName("ore_density_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":ore_density_scanner");
|
||||
survey_scanner = new ItemSurveyScanner().setUnlocalizedName("survey_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":survey_scanner");
|
||||
mirror_tool = new ItemMirrorTool().setUnlocalizedName("mirror_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mirror_tool");
|
||||
rbmk_tool = new ItemRBMKTool().setUnlocalizedName("rbmk_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":rbmk_tool");
|
||||
@ -5939,9 +5943,10 @@ public class ModItems {
|
||||
GameRegistry.registerItem(ore_nitrocrystalline, ore_nitrocrystalline.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ore_deepcleaned, ore_deepcleaned.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ore_seared, ore_seared.getUnlocalizedName());
|
||||
//GameRegistry.registerItem(ore_radcleaned, ore_radcleaned.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ore_enriched, ore_enriched.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ore_byproduct, ore_byproduct.getUnlocalizedName());
|
||||
GameRegistry.registerItem(bedrock_ore_base, bedrock_ore_base.getUnlocalizedName());
|
||||
GameRegistry.registerItem(bedrock_ore, bedrock_ore.getUnlocalizedName());
|
||||
|
||||
//Crystals
|
||||
GameRegistry.registerItem(crystal_coal, crystal_coal.getUnlocalizedName());
|
||||
@ -6153,6 +6158,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(chemical_dye, chemical_dye.getUnlocalizedName());
|
||||
GameRegistry.registerItem(crayon, crayon.getUnlocalizedName());
|
||||
GameRegistry.registerItem(part_generic, part_generic.getUnlocalizedName());
|
||||
GameRegistry.registerItem(item_secret, item_secret.getUnlocalizedName());
|
||||
GameRegistry.registerItem(parts_legendary, parts_legendary.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gear_large, gear_large.getUnlocalizedName());
|
||||
GameRegistry.registerItem(sawblade, sawblade.getUnlocalizedName());
|
||||
@ -6182,7 +6188,6 @@ public class ModItems {
|
||||
GameRegistry.registerItem(turbine_titanium, turbine_titanium.getUnlocalizedName());
|
||||
GameRegistry.registerItem(turbine_tungsten, turbine_tungsten.getUnlocalizedName());
|
||||
GameRegistry.registerItem(flywheel_beryllium, flywheel_beryllium.getUnlocalizedName());
|
||||
GameRegistry.registerItem(generator_front, generator_front.getUnlocalizedName());
|
||||
GameRegistry.registerItem(toothpicks, toothpicks.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ducttape, ducttape.getUnlocalizedName());
|
||||
GameRegistry.registerItem(catalyst_clay, catalyst_clay.getUnlocalizedName());
|
||||
@ -6200,7 +6205,6 @@ public class ModItems {
|
||||
GameRegistry.registerItem(warhead_buster_medium, warhead_buster_medium.getUnlocalizedName());
|
||||
GameRegistry.registerItem(warhead_buster_large, warhead_buster_large.getUnlocalizedName());
|
||||
GameRegistry.registerItem(warhead_nuclear, warhead_nuclear.getUnlocalizedName());
|
||||
GameRegistry.registerItem(warhead_mirvlet, warhead_mirvlet.getUnlocalizedName());
|
||||
GameRegistry.registerItem(warhead_mirv, warhead_mirv.getUnlocalizedName());
|
||||
GameRegistry.registerItem(warhead_volcano, warhead_volcano.getUnlocalizedName());
|
||||
GameRegistry.registerItem(fuel_tank_small, fuel_tank_small.getUnlocalizedName());
|
||||
@ -6845,6 +6849,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(linker, linker.getUnlocalizedName());
|
||||
GameRegistry.registerItem(reactor_sensor, reactor_sensor.getUnlocalizedName());
|
||||
GameRegistry.registerItem(oil_detector, oil_detector.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ore_density_scanner, ore_density_scanner.getUnlocalizedName());
|
||||
GameRegistry.registerItem(survey_scanner, survey_scanner.getUnlocalizedName());
|
||||
GameRegistry.registerItem(mirror_tool, mirror_tool.getUnlocalizedName());
|
||||
GameRegistry.registerItem(rbmk_tool, rbmk_tool.getUnlocalizedName());
|
||||
|
||||
57
src/main/java/com/hbm/items/special/ItemBedrockOreBase.java
Normal file
57
src/main/java/com/hbm/items/special/ItemBedrockOreBase.java
Normal file
@ -0,0 +1,57 @@
|
||||
package com.hbm.items.special;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
import com.hbm.items.tool.ItemOreDensityScanner;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import net.minecraft.world.gen.NoiseGeneratorPerlin;
|
||||
|
||||
public class ItemBedrockOreBase extends Item {
|
||||
|
||||
public static double getOreAmount(ItemStack stack, BedrockOreType type) {
|
||||
if(!stack.hasTagCompound()) return 0;
|
||||
NBTTagCompound data = stack.getTagCompound();
|
||||
return data.getDouble(type.suffix);
|
||||
}
|
||||
|
||||
public static void setOreAmount(ItemStack stack, int x, int z) {
|
||||
if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound();
|
||||
NBTTagCompound data = stack.getTagCompound();
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
data.setDouble(type.suffix, getOreLevel(x, z, type));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
double amount = this.getOreAmount(stack, type);
|
||||
String typeName = StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name");
|
||||
list.add(typeName + ": " + ((int) (amount * 100)) / 100D + " (" + ItemOreDensityScanner.translateDensity(amount) + EnumChatFormatting.RESET + ")");
|
||||
}
|
||||
}
|
||||
|
||||
private static NoiseGeneratorPerlin[] ores = new NoiseGeneratorPerlin[BedrockOreType.values().length];
|
||||
private static NoiseGeneratorPerlin level;
|
||||
|
||||
public static double getOreLevel(int x, int z, BedrockOreType type) {
|
||||
|
||||
if(level == null) level = new NoiseGeneratorPerlin(new Random(2114043), 4);
|
||||
if(ores[type.ordinal()] == null) ores[type.ordinal()] = new NoiseGeneratorPerlin(new Random(2082127 + type.ordinal()), 4);
|
||||
|
||||
double scale = 0.01D;
|
||||
|
||||
return MathHelper.clamp_double(Math.abs(level.func_151601_a(x * scale, z * scale) * ores[type.ordinal()].func_151601_a(x * scale, z * scale)) * 0.05, 0, 2);
|
||||
}
|
||||
}
|
||||
214
src/main/java/com/hbm/items/special/ItemBedrockOreNew.java
Normal file
214
src/main/java/com/hbm/items/special/ItemBedrockOreNew.java
Normal file
@ -0,0 +1,214 @@
|
||||
package com.hbm.items.special;
|
||||
|
||||
import static com.hbm.inventory.OreDictManager.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.util.EnumUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.inventory.material.Mats.MaterialStack;
|
||||
import com.hbm.inventory.material.NTMMaterial;
|
||||
import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior;
|
||||
import com.hbm.items.ItemEnums.EnumChunkType;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.render.icon.RGBMutatorInterpolatedComponentRemap;
|
||||
import com.hbm.render.icon.TextureAtlasSpriteMutatable;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.client.renderer.texture.TextureMap;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
public class ItemBedrockOreNew extends Item {
|
||||
|
||||
public IIcon[] icons = new IIcon[BedrockOreType.values().length * BedrockOreGrade.values().length];
|
||||
|
||||
public ItemBedrockOreNew() {
|
||||
this.setHasSubtypes(true);
|
||||
this.setMaxDamage(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerIcons(IIconRegister reg) {
|
||||
|
||||
|
||||
if(reg instanceof TextureMap) {
|
||||
TextureMap map = (TextureMap) reg;
|
||||
|
||||
for(int i = 0; i < BedrockOreGrade.values().length; i++) { BedrockOreGrade grade = BedrockOreGrade.values()[i];
|
||||
for(int j = 0; j < BedrockOreType.values().length; j++) { BedrockOreType type = BedrockOreType.values()[j];
|
||||
String placeholderName = RefStrings.MODID + ":bedrock_ore_" + grade.prefix + "_" + type.suffix + "-" + (i * BedrockOreType.values().length + j);
|
||||
TextureAtlasSpriteMutatable mutableIcon = new TextureAtlasSpriteMutatable(placeholderName, new RGBMutatorInterpolatedComponentRemap(0xFFFFFF, 0x505050, type.light, type.dark));
|
||||
map.setTextureEntry(placeholderName, mutableIcon);
|
||||
this.icons[i * BedrockOreType.values().length + j] = mutableIcon;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void getSubItems(Item item, CreativeTabs tab, List list) {
|
||||
|
||||
for(int j = 0; j < BedrockOreType.values().length; j++) { BedrockOreType type = BedrockOreType.values()[j];
|
||||
for(int i = 0; i < BedrockOreGrade.values().length; i++) { BedrockOreGrade grade = BedrockOreGrade.values()[i];
|
||||
list.add(this.make(grade, type));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIconFromDamage(int meta) {
|
||||
int icon = this.getGrade(meta).ordinal() * BedrockOreType.values().length + this.getType(meta).ordinal();
|
||||
return icons[Math.abs(icon % icons.length)];
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getItemStackDisplayName(ItemStack stack) {
|
||||
int meta = stack.getItemDamage();
|
||||
String type = StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".type." + this.getType(meta).suffix + ".name");
|
||||
return StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".grade." + this.getGrade(meta).name().toLowerCase(Locale.US) + ".name", type);
|
||||
}
|
||||
|
||||
public static enum BedrockOreType {
|
||||
// primary sulfuric solvent radsolvent
|
||||
LIGHT_METAL( 0xFFFFFF, 0x353535, "light", IRON, CU, TI, AL, AL, CHLOROCALCITE, LI, NA, CHLOROCALCITE, LI, NA),
|
||||
HEAVY_METAL( 0x868686, 0x000000, "heavy", W, PB, GOLD, GOLD, BE, W, PB, GOLD, BI, BI, GOLD),
|
||||
RARE_EARTH( 0xE6E6B6, 0x1C1C00, "rare", CO, EnumChunkType.RARE, B, LA, NB, ND, B, ZR, CO, ND, ZR),
|
||||
ACTINIDE( 0xC1C7BD, 0x2B3227, "actinide", U, TH232, RA226, RA226, PO210, RA226, RA226, PO210, TC99, TC99, U238),
|
||||
NON_METAL( 0xAFAFAF, 0x0F0F0F, "nonmetal", COAL, S, LIGNITE, KNO, F, P_RED, F, S, CHLOROCALCITE, SI, SI),
|
||||
CRYSTALLINE( 0xE2FFFA, 0x1E8A77, "crystal", DIAMOND, SODALITE, CINNABAR, ASBESTOS, REDSTONE, CINNABAR, ASBESTOS, EMERALD, BORAX, MOLYSITE, SODALITE);
|
||||
//sediment
|
||||
|
||||
public int light;
|
||||
public int dark;
|
||||
public String suffix;
|
||||
public Object primary1, primary2;
|
||||
public Object byproductAcid1, byproductAcid2, byproductAcid3;
|
||||
public Object byproductSolvent1, byproductSolvent2, byproductSolvent3;
|
||||
public Object byproductRad1, byproductRad2, byproductRad3;
|
||||
|
||||
private BedrockOreType(int light, int dark, String suffix, Object p1, Object p2, Object bA1, Object bA2, Object bA3, Object bS1, Object bS2, Object bS3, Object bR1, Object bR2, Object bR3) {
|
||||
this.light = light;
|
||||
this.dark = dark;
|
||||
this.suffix = suffix;
|
||||
this.primary1 = p1; this.primary2 = p2;
|
||||
this.byproductAcid1 = bA1; this.byproductAcid2 = bA2; this.byproductAcid3 = bA3;
|
||||
this.byproductSolvent1 = bS1; this.byproductSolvent2 = bS2; this.byproductSolvent3 = bS3;
|
||||
this.byproductRad1 = bR1; this.byproductRad2 = bR2; this.byproductRad3 = bR3;
|
||||
}
|
||||
}
|
||||
|
||||
public static MaterialStack toFluid(Object o, int amount) {
|
||||
if(o instanceof DictFrame) {
|
||||
NTMMaterial mat = Mats.matByName.get(((DictFrame) o).mats[0]);
|
||||
if(mat != null && mat.smeltable == SmeltingBehavior.SMELTABLE) {
|
||||
return new MaterialStack(mat, amount);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ItemStack extract(Object o) {
|
||||
return extract(o, 1);
|
||||
}
|
||||
|
||||
public static ItemStack extract(Object o, int amount) {
|
||||
if(o instanceof EnumChunkType) return new ItemStack(ModItems.chunk_ore, amount, ((EnumChunkType) o).ordinal());
|
||||
if(o instanceof DictFrame) {
|
||||
DictFrame frame = (DictFrame) o;
|
||||
List<ItemStack> gems = OreDictionary.getOres(frame.gem(), false); if(!gems.isEmpty()) return fromList(gems, amount);
|
||||
List<ItemStack> dusts = OreDictionary.getOres(frame.dust(), false); if(!dusts.isEmpty()) return fromList(dusts, amount);
|
||||
List<ItemStack> crystals = OreDictionary.getOres(frame.crystal(), false); if(!crystals.isEmpty()) return fromList(crystals, amount);
|
||||
List<ItemStack> billets = OreDictionary.getOres(frame.billet(), false); if(!billets.isEmpty()) return fromList(billets, amount);
|
||||
List<ItemStack> ingots = OreDictionary.getOres(frame.ingot(), false); if(!ingots.isEmpty()) return fromList(ingots, amount);
|
||||
}
|
||||
return new ItemStack(ModItems.nothing);
|
||||
}
|
||||
|
||||
private static ItemStack fromList(List<ItemStack> list, int amount) {
|
||||
ItemStack first = list.get(0).copy();
|
||||
first.stackSize = amount;
|
||||
return first;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int getColorFromItemStack(ItemStack stack, int pass) {
|
||||
BedrockOreGrade grade = this.getGrade(stack.getItemDamage());
|
||||
return grade.tint;
|
||||
}
|
||||
|
||||
public static final int none = 0xFFFFFF;
|
||||
public static final int roasted = 0xCFCFCF;
|
||||
public static final int arc = 0xC3A2A2;
|
||||
public static final int washed = 0xDBE2CB;
|
||||
|
||||
public static enum BedrockOreGrade {
|
||||
BASE(none, "base"), //from the slopper
|
||||
BASE_ROASTED(roasted, "base"), //optional combination oven step, yields vitriol
|
||||
BASE_WASHED(washed, "base"), //primitive-ass acidizer with water
|
||||
PRIMARY(none, "primary"), //centrifuging for more primary
|
||||
PRIMARY_ROASTED(roasted, "primary"), //optional comboven
|
||||
PRIMARY_SULFURIC(0xFFFFD3, "primary"), //sulfuric acid
|
||||
PRIMARY_NOSULFURIC(0xD3D4FF, "primary"),//from centrifuging, sulfuric byproduct removed
|
||||
PRIMARY_SOLVENT(0xD3F0FF, "primary"), //solvent
|
||||
PRIMARY_NOSOLVENT(0xFFDED3, "primary"), //solvent byproduct removed
|
||||
PRIMARY_RAD(0xECFFD3, "primary"), //radsolvent
|
||||
PRIMARY_NORAD(0xEBD3FF, "primary"), //radsolvent byproduct removed
|
||||
PRIMARY_FIRST(0xFFD3D4, "primary"), //higher first material yield
|
||||
PRIMARY_SECOND(0xD3FFEB, "primary"), //higher second material yield
|
||||
CRUMBS(none, "crumbs"), //endpoint for primary, recycling
|
||||
|
||||
SULFURIC_BYPRODUCT(none, "sulfuric"), //from centrifuging
|
||||
SULFURIC_ROASTED(roasted, "sulfuric"), //comboven again
|
||||
SULFURIC_ARC(arc, "sulfuric"), //alternate step
|
||||
SULFURIC_WASHED(washed, "sulfuric"), //sulfuric endpoint
|
||||
|
||||
SOLVENT_BYPRODUCT(none, "solvent"), //from centrifuging
|
||||
SOLVENT_ROASTED(roasted, "solvent"), //comboven again
|
||||
SOLVENT_ARC(arc, "solvent"), //alternate step
|
||||
SOLVENT_WASHED(washed, "solvent"), //solvent endpoint
|
||||
|
||||
RAD_BYPRODUCT(none, "rad"), //from centrifuging
|
||||
RAD_ROASTED(roasted, "rad"), //comboven again
|
||||
RAD_ARC(arc, "rad"), //alternate step
|
||||
RAD_WASHED(washed, "rad"); //rad endpoint
|
||||
|
||||
public int tint;
|
||||
public String prefix;
|
||||
|
||||
private BedrockOreGrade(int tint, String prefix) {
|
||||
this.tint = tint;
|
||||
this.prefix = prefix;
|
||||
}
|
||||
}
|
||||
|
||||
public static ItemStack make(BedrockOreGrade grade, BedrockOreType type) {
|
||||
return make(grade, type, 1);
|
||||
}
|
||||
|
||||
public static ItemStack make(BedrockOreGrade grade, BedrockOreType type, int amount) {
|
||||
return new ItemStack(ModItems.bedrock_ore, amount, grade.ordinal() << 4 | type.ordinal());
|
||||
}
|
||||
|
||||
public BedrockOreGrade getGrade(int meta) {
|
||||
return EnumUtil.grabEnumSafely(BedrockOreGrade.class, meta >> 4);
|
||||
}
|
||||
|
||||
public BedrockOreType getType(int meta) {
|
||||
return EnumUtil.grabEnumSafely(BedrockOreType.class, meta & 15);
|
||||
}
|
||||
}
|
||||
@ -30,36 +30,6 @@ public class ItemOreBlock extends ItemBlock {
|
||||
list.add("Deposit location: X:-400; Z:-400");
|
||||
list.add("Estimated quantity: 490");
|
||||
}
|
||||
|
||||
if(this.field_150939_a == ModBlocks.ore_weidanium) {
|
||||
list.add("Weidanium ore");
|
||||
list.add("Deposit location: X:0; Z:300");
|
||||
list.add("Estimated quantity: 2800");
|
||||
}
|
||||
|
||||
if(this.field_150939_a == ModBlocks.ore_reiium) {
|
||||
list.add("Reiium ore");
|
||||
list.add("Deposit location: X:0; Z:0");
|
||||
list.add("Estimated quantity: 2800");
|
||||
}
|
||||
|
||||
if(this.field_150939_a == ModBlocks.ore_unobtainium) {
|
||||
list.add("Unobtainium ore");
|
||||
list.add("Deposit location: X:200; Z:200");
|
||||
list.add("Estimated quantity: 12480");
|
||||
}
|
||||
|
||||
if(this.field_150939_a == ModBlocks.ore_daffergon) {
|
||||
list.add("Daffergon ore");
|
||||
list.add("Deposit location: X:400; Z:-200");
|
||||
list.add("Estimated quantity: 14980");
|
||||
}
|
||||
|
||||
if(this.field_150939_a == ModBlocks.ore_verticium) {
|
||||
list.add("Verticium ore");
|
||||
list.add("Deposit location: X:-300; Z:200");
|
||||
list.add("Estimated quantity: 4680");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
42
src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java
Normal file
42
src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java
Normal file
@ -0,0 +1,42 @@
|
||||
package com.hbm.items.tool;
|
||||
|
||||
import com.hbm.items.special.ItemBedrockOreBase;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.PlayerInformPacket;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemOreDensityScanner extends Item {
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean bool) {
|
||||
|
||||
if(!(entity instanceof EntityPlayerMP) || world.getTotalWorldTime() % 5 != 0) return;
|
||||
|
||||
EntityPlayerMP player = (EntityPlayerMP) entity;
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
double level = ItemBedrockOreBase.getOreLevel((int) Math.floor(player.posX), (int) Math.floor(player.posZ), type);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(
|
||||
StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name") + ": " + ((int) (level * 100) / 100D) + " (" + translateDensity(level) + EnumChatFormatting.RESET + ")",
|
||||
777 + type.ordinal(), 4000), player);
|
||||
}
|
||||
}
|
||||
|
||||
public static String translateDensity(double density) {
|
||||
if(density <= 0.1) return EnumChatFormatting.DARK_RED + "Very poor";
|
||||
if(density <= 0.35) return EnumChatFormatting.RED + "Poor";
|
||||
if(density <= 0.75) return EnumChatFormatting.GOLD + "Low";
|
||||
if(density >= 1.9) return EnumChatFormatting.AQUA + "Excellent";
|
||||
if(density >= 1.65) return EnumChatFormatting.BLUE + "Very high";
|
||||
if(density >= 1.25) return EnumChatFormatting.GREEN + "High";
|
||||
return EnumChatFormatting.YELLOW + "Moderate";
|
||||
}
|
||||
}
|
||||
@ -3,7 +3,7 @@ package com.hbm.lib;
|
||||
public class RefStrings {
|
||||
public static final String MODID = "hbm";
|
||||
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
||||
public static final String VERSION = "1.0.27 BETA (4991)";
|
||||
public static final String VERSION = "1.0.27 BETA (5000)";
|
||||
//HBM's Beta Naming Convention:
|
||||
//V T (X)
|
||||
//V -> next release version
|
||||
|
||||
@ -302,6 +302,7 @@ public class ClientProxy extends ServerProxy {
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineDiesel.class, new RenderDieselGen());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCombustionEngine.class, new RenderCombustionEngine());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineExcavator.class, new RenderExcavator());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOreSlopper.class, new RenderOreSlopper());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMixer.class, new RenderMixer());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineHephaestus.class, new RenderHephaestus());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAutosaw.class, new RenderAutosaw());
|
||||
@ -734,8 +735,6 @@ public class ClientProxy extends ServerProxy {
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMIRV.class, new RenderMirv());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsday.class, new RenderMissileNuclear());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsdayRusted.class, new RenderMissileNuclear());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityCarrier.class, new RenderCarrierMissile());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityBooster.class, new RenderBoosterMissile());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntitySoyuz.class, new RenderSoyuz());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntitySoyuzCapsule.class, new RenderSoyuzCapsule());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMissileTaint.class, new RenderMissileTaint());
|
||||
|
||||
@ -254,7 +254,7 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModBlocks.red_cable_paintable, 16), new Object[] { "WRW", "RIR", "WRW", 'W', STEEL.plate(), 'I', MINGRADE.ingot(), 'R', MINGRADE.wireFine() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.cable_switch, 1), new Object[] { "S", "W", 'S', Blocks.lever, 'W', ModBlocks.red_wire_coated });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.cable_detector, 1), new Object[] { "S", "W", 'S', REDSTONE.dust(), 'W', ModBlocks.red_wire_coated });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.cable_diode, 1), new Object[] { " Q ", "CAC", " Q ", 'Q', NETHERQUARTZ.gem(), 'C', ModBlocks.red_cable, 'A', AL.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.cable_diode, 1), new Object[] { " Q ", "CAC", " Q ", 'Q', SI.nugget(), 'C', ModBlocks.red_cable, 'A', AL.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_detector, 1), new Object[] { "IRI", "CTC", "IRI", 'I', ModItems.plate_polymer, 'R', REDSTONE.dust(), 'C', MINGRADE.wireFine(), 'T', ModItems.coil_tungsten });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.red_cable, 16), new Object[] { " W ", "RRR", " W ", 'W', ModItems.plate_polymer, 'R', MINGRADE.wireFine() });
|
||||
addShapelessAuto(new ItemStack(ModBlocks.red_cable_classic, 1), new Object[] { ModBlocks.red_cable });
|
||||
@ -309,6 +309,7 @@ public class CraftingManager {
|
||||
|
||||
addRecipeAuto(new ItemStack(ModItems.upgrade_muffler, 16), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool });
|
||||
addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'P', ModItems.plate_polymer });
|
||||
addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', ANY_PLASTIC.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', ModItems.plate_polymer });
|
||||
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_titanium_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', TI.plate(), 'I', TI.ingot() });
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_advanced_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', ALLOY.plate(), 'I', ALLOY.ingot() });
|
||||
@ -655,11 +656,6 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_satlinker), new Object[] { "PSP", "SCS", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'C', ModItems.sat_chip });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_keyforge), new Object[] { "PCP", "WSW", "WSW", 'P', STEEL.plate(), 'S', W.ingot(), 'C', ModItems.padlock, 'W', KEY_PLANKS });
|
||||
addRecipeAuto(new ItemStack(ModItems.sat_chip), new Object[] { "WWW", "CIC", "WWW", 'W', MINGRADE.wireFine(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'I', ANY_PLASTIC.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModItems.sat_mapper), new Object[] { "H", "B", 'H', ModItems.sat_head_mapper, 'B', ModItems.sat_base });
|
||||
addRecipeAuto(new ItemStack(ModItems.sat_scanner), new Object[] { "H", "B", 'H', ModItems.sat_head_scanner, 'B', ModItems.sat_base });
|
||||
addRecipeAuto(new ItemStack(ModItems.sat_radar), new Object[] { "H", "B", 'H', ModItems.sat_head_radar, 'B', ModItems.sat_base });
|
||||
addRecipeAuto(new ItemStack(ModItems.sat_laser), new Object[] { "H", "B", 'H', ModItems.sat_head_laser, 'B', ModItems.sat_base });
|
||||
addRecipeAuto(new ItemStack(ModItems.sat_resonator), new Object[] { "H", "B", 'H', ModItems.sat_head_resonator, 'B', ModItems.sat_base });
|
||||
addShapelessAuto(new ItemStack(ModItems.sat_mapper), new Object[] { ModBlocks.sat_mapper });
|
||||
addShapelessAuto(new ItemStack(ModItems.sat_scanner), new Object[] { ModBlocks.sat_scanner });
|
||||
addShapelessAuto(new ItemStack(ModItems.sat_radar), new Object[] { ModBlocks.sat_radar });
|
||||
@ -667,12 +663,6 @@ public class CraftingManager {
|
||||
addShapelessAuto(new ItemStack(ModItems.sat_resonator), new Object[] { ModBlocks.sat_resonator });
|
||||
addShapelessAuto(new ItemStack(ModItems.sat_foeq), new Object[] { ModBlocks.sat_foeq });
|
||||
addShapelessAuto(new ItemStack(ModItems.geiger_counter), new Object[] { ModBlocks.geiger });
|
||||
addShapelessAuto(new ItemStack(ModBlocks.sat_mapper), new Object[] { ModItems.sat_mapper });
|
||||
addShapelessAuto(new ItemStack(ModBlocks.sat_scanner), new Object[] { ModItems.sat_scanner });
|
||||
addShapelessAuto(new ItemStack(ModBlocks.sat_radar), new Object[] { ModItems.sat_radar });
|
||||
addShapelessAuto(new ItemStack(ModBlocks.sat_laser), new Object[] { ModItems.sat_laser });
|
||||
addShapelessAuto(new ItemStack(ModBlocks.sat_resonator), new Object[] { ModItems.sat_resonator });
|
||||
addShapelessAuto(new ItemStack(ModBlocks.sat_foeq), new Object[] { ModItems.sat_foeq });
|
||||
addRecipeAuto(new ItemStack(ModItems.sat_interface), new Object[] { "ISI", "PCP", "PAP", 'I', STEEL.ingot(), 'S', STAR.ingot(), 'P', ModItems.plate_polymer, 'C', ModItems.sat_chip, 'A', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) });
|
||||
addRecipeAuto(new ItemStack(ModItems.sat_coord), new Object[] { "SII", "SCA", "SPP", 'I', STEEL.ingot(), 'S', STAR.ingot(), 'P', ModItems.plate_polymer, 'C', ModItems.sat_chip, 'A', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_transformer), new Object[] { "SCS", "MDM", "SCS", 'S', IRON.ingot(), 'D', MINGRADE.ingot(), 'M',ModItems.coil_advanced_alloy, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR) });
|
||||
@ -1008,7 +998,6 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModBlocks.drone_waypoint, 4), new Object[] { "G", "T", "C", 'G', KEY_GREEN, 'T', Blocks.redstone_torch, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.drone_crate), new Object[] { "T", "C", 'T', ModBlocks.drone_waypoint, 'C', ModBlocks.crate_steel });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.drone_waypoint_request, 4), new Object[] { "G", "T", "C", 'G', KEY_BLUE, 'T', Blocks.redstone_torch, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.drone_crate), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.drone_crate_requester), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_YELLOW });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.drone_crate_provider), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_ORANGE });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.drone_dock), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) });
|
||||
@ -1184,21 +1173,32 @@ public class CraftingManager {
|
||||
|
||||
public static void crumple() {
|
||||
|
||||
if(Loader.isModLoaded("Mekanism")) {
|
||||
List<ItemStack> targets = new ArrayList();
|
||||
|
||||
if(GeneralConfig.enableMekanismChanges) {
|
||||
|
||||
if(Loader.isModLoaded("Mekanism")) {
|
||||
Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock");
|
||||
Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler");
|
||||
targets.add(new ItemStack(mb, 1, 4)); // digiminer
|
||||
targets.add(new ItemStack(disassembler)); // atomic disassembler
|
||||
}
|
||||
|
||||
if(Loader.isModLoaded("MekanismGenerators")) {
|
||||
Block mb = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator");
|
||||
targets.add(new ItemStack(mb, 1, 6)); // wind turbine
|
||||
}
|
||||
|
||||
List<IRecipe> toDestroy = new ArrayList();
|
||||
|
||||
Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock");
|
||||
ItemStack digiminer = new ItemStack(mb, 1, 4);
|
||||
|
||||
for(Object o : net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList()) {
|
||||
|
||||
if(o instanceof IRecipe) {
|
||||
IRecipe rec = (IRecipe)o;
|
||||
ItemStack stack = rec.getRecipeOutput();
|
||||
|
||||
if(stack != null && stack.getItem() == digiminer.getItem() && stack.getItemDamage() == digiminer.getItemDamage()) {
|
||||
toDestroy.add(rec);
|
||||
for(ItemStack target : targets) {
|
||||
if(stack != null && stack.getItem() == target.getItem() && stack.getItemDamage() == target.getItemDamage()) toDestroy.add(rec);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1206,6 +1206,18 @@ public class CraftingManager {
|
||||
if(toDestroy.size() > 0) {
|
||||
net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList().removeAll(toDestroy);
|
||||
}
|
||||
|
||||
if(Loader.isModLoaded("Mekanism")) {
|
||||
Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler");
|
||||
|
||||
if(disassembler != null) addRecipeAuto(new ItemStack(disassembler, 1), "GAG", "EIE", " I ", 'G', GOLD.plateCast(), 'A', "alloyUltimate", 'E', "battery", 'I', "ingotRefinedObsidian");
|
||||
}
|
||||
|
||||
if(Loader.isModLoaded("MekanismGenerators")) {
|
||||
Block generator = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator");
|
||||
|
||||
if(generator != null) addRecipeAuto(new ItemStack(generator, 1, 6), " T ", "TAT", "BCB", 'T', TI.plateCast(), 'A', "alloyAdvanced", 'B', "battery", 'C', ANY_PLASTIC.ingot());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1332,6 +1332,13 @@ public class MainRegistry {
|
||||
ignoreMappings.add("hbm:item.arc_electrode_desh");
|
||||
ignoreMappings.add("hbm:tile.sand_gold");
|
||||
ignoreMappings.add("hbm:tile.sand_gold198");
|
||||
ignoreMappings.add("hbm:tile.ore_weidanium");
|
||||
ignoreMappings.add("hbm:tile.ore_reiium");
|
||||
ignoreMappings.add("hbm:tile.ore_unobtainium");
|
||||
ignoreMappings.add("hbm:tile.ore_daffergon");
|
||||
ignoreMappings.add("hbm:tile.ore_verticium");
|
||||
ignoreMappings.add("hbm:item.warhead_mirvlet");
|
||||
ignoreMappings.add("hbm:item.generator_front");
|
||||
|
||||
/// REMAP ///
|
||||
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses);
|
||||
|
||||
@ -7,10 +7,12 @@ import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import org.apache.logging.log4j.Level;
|
||||
|
||||
import com.google.common.collect.HashMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.hbm.blocks.IStepTickReceiver;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
@ -49,6 +51,8 @@ import com.hbm.items.armor.ItemArmorMod;
|
||||
import com.hbm.items.armor.ItemModRevive;
|
||||
import com.hbm.items.armor.ItemModShackles;
|
||||
import com.hbm.items.food.ItemConserve.EnumFoodType;
|
||||
import com.hbm.items.special.ItemBedrockOreBase;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
import com.hbm.items.tool.ItemGuideBook.BookType;
|
||||
import com.hbm.items.weapon.ItemGunBase;
|
||||
import com.hbm.lib.HbmCollection;
|
||||
@ -87,6 +91,8 @@ import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.SharedMonsterAttributes;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.monster.EntityCaveSpider;
|
||||
import net.minecraft.entity.monster.EntityCreeper;
|
||||
@ -117,6 +123,7 @@ import net.minecraft.util.EntityDamageSource;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.FoodStats;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.FakePlayer;
|
||||
@ -848,6 +855,8 @@ public class ModEventHandler {
|
||||
((ArmorFSB)((EntityPlayer)e).inventory.armorInventory[2].getItem()).handleFall((EntityPlayer)e);
|
||||
}
|
||||
|
||||
private static final UUID fopSpeed = UUID.fromString("e5a8c95d-c7a0-4ecf-8126-76fb8c949389");
|
||||
|
||||
@SubscribeEvent
|
||||
public void onWingFlop(TickEvent.PlayerTickEvent event) {
|
||||
|
||||
@ -967,6 +976,17 @@ public class ModEventHandler {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(player.getUniqueID().toString().equals(ShadyUtil.LePeeperSauvage) || player.getDisplayName().equals("LePeeperSauvage")) {
|
||||
|
||||
Multimap multimap = HashMultimap.create();
|
||||
multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(fopSpeed, "FOP SPEED", 0.5, 1));
|
||||
player.getAttributeMap().removeAttributeModifiers(multimap);
|
||||
|
||||
if(player.isSprinting()) {
|
||||
player.getAttributeMap().applyAttributeModifiers(multimap);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1060,34 +1080,62 @@ public class ModEventHandler {
|
||||
/// SYNC END ///
|
||||
}
|
||||
|
||||
//TODO: rewrite this so it doesn't look like shit
|
||||
if(player.worldObj.isRemote && event.phase == event.phase.START && !player.isInvisible() && !player.isSneaking()) {
|
||||
|
||||
if(player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft)) {
|
||||
|
||||
int i = player.ticksExisted * 3;
|
||||
|
||||
Vec3 vec = Vec3.createVectorHelper(3, 0, 0);
|
||||
|
||||
vec.rotateAroundY((float) (i * Math.PI / 180D));
|
||||
|
||||
for(int k = 0; k < 5; k++) {
|
||||
|
||||
vec.rotateAroundY((float) (1F * Math.PI / 180D));
|
||||
//player.worldObj.spawnParticle("townaura", player.posX + vec.xCoord, player.posY + 1 + player.worldObj.rand.nextDouble() * 0.05, player.posZ + vec.zCoord, 0.0, 0.0, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
if(player.getUniqueID().toString().equals(ShadyUtil.Pu_238)) {
|
||||
|
||||
Vec3 vec = Vec3.createVectorHelper(3 * rand.nextDouble(), 0, 0);
|
||||
|
||||
vec.rotateAroundZ((float) (rand.nextDouble() * Math.PI));
|
||||
vec.rotateAroundY((float) (rand.nextDouble() * Math.PI * 2));
|
||||
|
||||
player.worldObj.spawnParticle("townaura", player.posX + vec.xCoord, player.posY + 1 + vec.yCoord, player.posZ + vec.zCoord, 0.0, 0.0, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
// OREDBG
|
||||
/*if(!event.player.worldObj.isRemote) {
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name") + ": " + ((int) (ItemBedrockOreBase.getOreLevel((int) Math.floor(player.posX), (int) Math.floor(player.posZ), type) * 100) / 100D), 777 + type.ordinal()), (EntityPlayerMP) player);
|
||||
}
|
||||
}*/
|
||||
|
||||
// PRISMDBG
|
||||
/*if(!event.player.worldObj.isRemote) {
|
||||
ChunkRadiationHandlerPRISM prism = (ChunkRadiationHandlerPRISM) ChunkRadiationManager.proxy;
|
||||
|
||||
RadPerWorld perWorld = prism.perWorld.get(player.worldObj);
|
||||
|
||||
if(perWorld != null) {
|
||||
SubChunk[] chunk = perWorld.radiation.get(new ChunkCoordIntPair(((int) Math.floor(player.posX)) >> 4, ((int) Math.floor(player.posZ)) >> 4));
|
||||
|
||||
if(chunk != null) {
|
||||
|
||||
int y = ((int) Math.floor(player.posY)) >> 4;
|
||||
|
||||
if(y >= 0 && y <= 15) {
|
||||
SubChunk sub = chunk[y];
|
||||
|
||||
if(sub != null) {
|
||||
float xSum = 0, ySum = 0, zSum = 0;
|
||||
for(int i = 0; i < 16; i++) {
|
||||
xSum += sub.xResist[i]; ySum += sub.yResist[i]; zSum += sub.zResist[i];
|
||||
}
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "FREE SPACE", 1), (EntityPlayerMP) player);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "FREE SPACE", 2), (EntityPlayerMP) player);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.GREEN + "" + sub.checksum + " - " + ((int) sub.radiation) + "RAD/s - " + sub.needsRebuild
|
||||
+ " - " + (int) xSum+ " - " + (int) ySum + " - " + (int) zSum, 3), (EntityPlayerMP) player);
|
||||
} else {
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "SUB IS NULL", 1), (EntityPlayerMP) player);
|
||||
}
|
||||
} else {
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "OUTSIDE OF WORLD", 1), (EntityPlayerMP) player);
|
||||
}
|
||||
} else {
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "CHUNK IS NULL", 1), (EntityPlayerMP) player);
|
||||
}
|
||||
} else {
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "PERWORLD IS NULL", 1), (EntityPlayerMP) player);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
|
||||
@ -577,12 +577,10 @@ public class ModEventHandlerClient {
|
||||
}
|
||||
|
||||
if(player.getCurrentArmor(2) == null && !player.isPotionActive(Potion.invisibility)) {
|
||||
if(player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft) || player.getDisplayName().equals("HbMinecraft"))
|
||||
RenderAccessoryUtility.renderWings(event, 2);
|
||||
if(player.getUniqueID().toString().equals(ShadyUtil.the_NCR) || player.getDisplayName().equals("the_NCR"))
|
||||
RenderAccessoryUtility.renderWings(event, 3);
|
||||
if(player.getUniqueID().toString().equals(ShadyUtil.Barnaby99_x) || player.getDisplayName().equals("pheo7"))
|
||||
RenderAccessoryUtility.renderAxePack(event);
|
||||
if(player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft) || player.getDisplayName().equals("HbMinecraft")) RenderAccessoryUtility.renderWings(event, 2);
|
||||
if(player.getUniqueID().toString().equals(ShadyUtil.the_NCR) || player.getDisplayName().equals("the_NCR")) RenderAccessoryUtility.renderWings(event, 3);
|
||||
if(player.getUniqueID().toString().equals(ShadyUtil.Barnaby99_x) || player.getDisplayName().equals("pheo7")) RenderAccessoryUtility.renderAxePack(event);
|
||||
if(player.getUniqueID().toString().equals(ShadyUtil.LePeeperSauvage) || player.getDisplayName().equals("LePeeperSauvage")) RenderAccessoryUtility.renderFaggot(event);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -36,7 +36,8 @@ public class NEIConfig implements IConfigureNEI {
|
||||
//Some things are even beyond my control...or are they?
|
||||
API.hideItem(ItemBattery.getEmptyBattery(ModItems.memory));
|
||||
API.hideItem(ItemBattery.getFullBattery(ModItems.memory));
|
||||
|
||||
|
||||
API.hideItem(new ItemStack(ModItems.item_secret));
|
||||
API.hideItem(new ItemStack(ModBlocks.machine_electric_furnace_on));
|
||||
API.hideItem(new ItemStack(ModBlocks.machine_difurnace_on));
|
||||
API.hideItem(new ItemStack(ModBlocks.machine_nuke_furnace_on));
|
||||
|
||||
@ -17,11 +17,6 @@ import net.minecraftforge.client.model.IModelCustom;
|
||||
|
||||
public class ResourceManager {
|
||||
|
||||
//public static final Shader test_shader = ShaderManager.loadShader(new ResourceLocation(RefStrings.MODID, "shaders/test_shader"));
|
||||
|
||||
//God
|
||||
public static final IModelCustom error = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/error.obj"));
|
||||
|
||||
////Obj TEs
|
||||
|
||||
//Turrets
|
||||
@ -179,6 +174,7 @@ public class ResourceManager {
|
||||
|
||||
//Mining Drill
|
||||
public static final IModelCustom mining_drill = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mining_drill.obj")).asVBO();
|
||||
public static final IModelCustom ore_slopper = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/ore_slopper.obj")).asVBO();
|
||||
|
||||
//Laser Miner
|
||||
public static final IModelCustom mining_laser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mining_laser.obj")).asVBO();
|
||||
@ -246,7 +242,6 @@ public class ResourceManager {
|
||||
|
||||
//Radar
|
||||
public static final IModelCustom radar_body = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/radar_base.obj"), false).asVBO();
|
||||
public static final IModelCustom radar_head = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/radar_head.obj"), false).asVBO();
|
||||
public static final IModelCustom radar = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar.obj"), false).asVBO();
|
||||
public static final IModelCustom radar_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_large.obj"), false).asVBO();
|
||||
public static final IModelCustom radar_screen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_screen.obj"), false).asVBO();
|
||||
@ -581,9 +576,8 @@ public class ResourceManager {
|
||||
public static final ResourceLocation autosaw_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/autosaw.png");
|
||||
|
||||
//Mining Drill
|
||||
public static final ResourceLocation drill_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mining_drill.png");
|
||||
public static final ResourceLocation drill_bolt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/textureIGenRotor.png");
|
||||
public static final ResourceLocation mining_drill_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mining_drill.png");
|
||||
public static final ResourceLocation ore_slopper_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/ore_slopper.png");
|
||||
|
||||
//Laser Miner
|
||||
public static final ResourceLocation mining_laser_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mining_laser_base.png");
|
||||
@ -796,7 +790,6 @@ public class ResourceManager {
|
||||
public static final IModelCustom shimmer_sledge = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/shimmer_sledge.obj"));
|
||||
public static final IModelCustom shimmer_axe = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/shimmer_axe.obj"));
|
||||
public static final IModelCustom stopsign = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/stopsign.obj"));
|
||||
public static final IModelCustom pch = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/pch.obj"));
|
||||
public static final IModelCustom gavel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/gavel.obj"));
|
||||
public static final IModelCustom crucible = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/crucible.obj"));
|
||||
public static final IModelCustom chainsaw = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/chainsaw.obj"), false);
|
||||
@ -871,6 +864,7 @@ public class ResourceManager {
|
||||
public static final IModelCustom armor_mod_tesla = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/mod_tesla.obj"));
|
||||
public static final IModelCustom armor_wings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/murk.obj"));
|
||||
public static final IModelCustom armor_axepack = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/wings_pheo.obj"));
|
||||
public static final IModelCustom armor_tail = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/tail_peep.obj"));
|
||||
public static final IModelCustom player_manly_af = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/armor/player_fem.obj"));
|
||||
public static final IModelCustom armor_envsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/envsuit.obj"));
|
||||
public static final IModelCustom armor_trenchmaster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/trenchmaster.obj"));
|
||||
@ -1035,6 +1029,7 @@ public class ResourceManager {
|
||||
public static final ResourceLocation wings_bob = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_bob.png");
|
||||
public static final ResourceLocation wings_black = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_black.png");
|
||||
public static final ResourceLocation wings_pheo = new ResourceLocation(RefStrings.MODID, "textures/armor/axepack.png");
|
||||
public static final ResourceLocation tail_peep = new ResourceLocation(RefStrings.MODID, "textures/armor/tail_peep.png");
|
||||
|
||||
public static final ResourceLocation hat = new ResourceLocation(RefStrings.MODID, "textures/armor/hat.png");
|
||||
public static final ResourceLocation no9 = new ResourceLocation(RefStrings.MODID, "textures/armor/no9.png");
|
||||
@ -1074,8 +1069,6 @@ public class ResourceManager {
|
||||
public static final IModelCustom missileNuclear = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_atlas.obj")).asVBO();
|
||||
public static final IModelCustom missileMicro = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_micro.obj")).asVBO();
|
||||
public static final IModelCustom missileShuttle = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileShuttle.obj"));
|
||||
public static final IModelCustom missileCarrier = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileCarrier.obj"));
|
||||
public static final IModelCustom missileBooster = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileBooster.obj"));
|
||||
public static final IModelCustom minerRocket = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/minerRocket.obj"));
|
||||
public static final IModelCustom soyuz = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/soyuz.obj")).asVBO();
|
||||
public static final IModelCustom soyuz_lander = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/soyuz_lander.obj")).asVBO();
|
||||
|
||||
@ -1,39 +0,0 @@
|
||||
package com.hbm.render.entity.rocket;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class RenderBoosterMissile extends Render {
|
||||
|
||||
public RenderBoosterMissile() { }
|
||||
|
||||
@Override
|
||||
public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_);
|
||||
GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F);
|
||||
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
GL11.glScalef(2F, 2F, 2F);
|
||||
|
||||
bindTexture(ResourceManager.missileBooster_tex);
|
||||
ResourceManager.missileBooster.renderAll();
|
||||
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ResourceLocation getEntityTexture(Entity p_110775_1_) {
|
||||
return ResourceManager.missileBooster_tex;
|
||||
}
|
||||
}
|
||||
@ -1,50 +0,0 @@
|
||||
package com.hbm.render.entity.rocket;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class RenderCarrierMissile extends Render {
|
||||
|
||||
public RenderCarrierMissile() { }
|
||||
|
||||
@Override
|
||||
public void doRender(Entity rocket, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_,
|
||||
float p_76986_9_) {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_);
|
||||
GL11.glScalef(1.0F, 1.0F, 1.0F);
|
||||
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
GL11.glScalef(2F, 2F, 2F);
|
||||
bindTexture(ResourceManager.missileCarrier_tex);
|
||||
ResourceManager.missileCarrier.renderAll();
|
||||
|
||||
if(rocket.getDataWatcher().getWatchableObjectInt(8) == 1) {
|
||||
GL11.glTranslated(0.0D, 0.5D, 0.0D);
|
||||
GL11.glTranslated(1.25D, 0.0D, 0.0D);
|
||||
bindTexture(ResourceManager.missileBooster_tex);
|
||||
ResourceManager.missileBooster.renderAll();
|
||||
GL11.glTranslated(-2.5D, 0.0D, 0.0D);
|
||||
ResourceManager.missileBooster.renderAll();
|
||||
GL11.glTranslated(1.25D, 0.0D, 0.0D);
|
||||
GL11.glTranslated(0.0D, 0.0D, 1.25D);
|
||||
ResourceManager.missileBooster.renderAll();
|
||||
GL11.glTranslated(0.0D, 0.0D, -2.5D);
|
||||
ResourceManager.missileBooster.renderAll();
|
||||
GL11.glTranslated(0.0D, 0.0D, 1.25D);
|
||||
}
|
||||
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ResourceLocation getEntityTexture(Entity p_110775_1_) {
|
||||
return ResourceManager.missileCarrier_tex;
|
||||
}
|
||||
}
|
||||
@ -167,24 +167,6 @@ public class ItemRenderMissileGeneric implements IItemRenderer {
|
||||
renderers.put(new ComparableStack(ModItems.missile_doomsday), generateStandard(ResourceManager.missileDoomsday_tex, ResourceManager.missileNuclear));
|
||||
renderers.put(new ComparableStack(ModItems.missile_doomsday_rusted), generateStandard(ResourceManager.missileDoomsdayRusted_tex, ResourceManager.missileNuclear));
|
||||
|
||||
renderers.put(new ComparableStack(ModItems.missile_carrier), x -> {
|
||||
GL11.glScalef(2F, 2F, 2F);
|
||||
x.bindTexture(ResourceManager.missileCarrier_tex);
|
||||
ResourceManager.missileCarrier.renderAll();
|
||||
GL11.glTranslated(0.0D, 0.5D, 0.0D);
|
||||
GL11.glTranslated(1.25D, 0.0D, 0.0D);
|
||||
x.bindTexture(ResourceManager.missileBooster_tex);
|
||||
ResourceManager.missileBooster.renderAll();
|
||||
GL11.glTranslated(-2.5D, 0.0D, 0.0D);
|
||||
ResourceManager.missileBooster.renderAll();
|
||||
GL11.glTranslated(1.25D, 0.0D, 0.0D);
|
||||
GL11.glTranslated(0.0D, 0.0D, 1.25D);
|
||||
ResourceManager.missileBooster.renderAll();
|
||||
GL11.glTranslated(0.0D, 0.0D, -2.5D);
|
||||
ResourceManager.missileBooster.renderAll();
|
||||
GL11.glTranslated(0.0D, 0.0D, 1.25D);
|
||||
});
|
||||
|
||||
renderers.put(new ComparableStack(ModItems.missile_shuttle), generateStandard(ResourceManager.missileShuttle_tex, ResourceManager.missileShuttle));
|
||||
}
|
||||
}
|
||||
|
||||
26
src/main/java/com/hbm/render/model/ModelArmorTailPeep.java
Normal file
26
src/main/java/com/hbm/render/model/ModelArmorTailPeep.java
Normal file
@ -0,0 +1,26 @@
|
||||
package com.hbm.render.model;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.loader.ModelRendererObj;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.entity.Entity;
|
||||
|
||||
public class ModelArmorTailPeep extends ModelArmorBase {
|
||||
|
||||
ModelRendererObj tail;
|
||||
|
||||
public ModelArmorTailPeep() {
|
||||
super(0);
|
||||
tail = new ModelRendererObj(ResourceManager.armor_tail, "FaggyAssFuckingTailThing");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(Entity entity, float par2, float par3, float par4, float par5, float par6, float par7) {
|
||||
setRotationAngles(par2, par3, par4, par5, par6, par7, entity);
|
||||
body.copyTo(tail);
|
||||
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.tail_peep);
|
||||
tail.render(par7);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,95 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class RenderOreSlopper extends TileEntitySpecialRenderer implements IItemRendererProvider {
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
|
||||
switch(tile.getBlockMetadata() - BlockDummyable.offset) {
|
||||
case 3: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
||||
case 5: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
||||
case 2: GL11.glRotatef(0, 0F, 1F, 0F); break;
|
||||
case 4: GL11.glRotatef(90, 0F, 1F, 0F); break;
|
||||
}
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
bindTexture(ResourceManager.ore_slopper_tex);
|
||||
ResourceManager.ore_slopper.renderPart("Base");
|
||||
ResourceManager.ore_slopper.renderPart("Slider");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
double extend = Math.sin(((tile.getWorldObj().getTotalWorldTime() + interp) * 0.1 % (Math.PI * 2))) * 0.625+ 0.625;
|
||||
GL11.glTranslated(0, -MathHelper.clamp_double(extend - 0.25, 0, 1.25), 0);
|
||||
ResourceManager.ore_slopper.renderPart("Hydraulics");
|
||||
GL11.glTranslated(0, -MathHelper.clamp_double(extend, 0, 1.25), 0);
|
||||
ResourceManager.ore_slopper.renderPart("Bucket");
|
||||
GL11.glPopMatrix();
|
||||
|
||||
double speed = 10;
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0.375, 2.75, 0);
|
||||
GL11.glRotated((tile.getWorldObj().getTotalWorldTime() % 360 + interp) * speed, 0, 0, 1);
|
||||
GL11.glTranslated(-0.375, -2.75, 0);
|
||||
ResourceManager.ore_slopper.renderPart("BladesLeft");
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(-0.375, 2.75, 0);
|
||||
GL11.glRotated((tile.getWorldObj().getTotalWorldTime() % 360 + interp) * -speed, 0, 0, 1);
|
||||
GL11.glTranslated(0.375, -2.75, 0);
|
||||
ResourceManager.ore_slopper.renderPart("BladesRight");
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0, 1.875, -1);
|
||||
GL11.glRotated((tile.getWorldObj().getTotalWorldTime() % 360 + interp) * -25, 1, 0, 0);
|
||||
GL11.glTranslated(0, -1.875, 1);
|
||||
ResourceManager.ore_slopper.renderPart("Fan");
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemForRenderer() {
|
||||
return Item.getItemFromBlock(ModBlocks.machine_ore_slopper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() {
|
||||
GL11.glTranslated(0, -3, 0);
|
||||
GL11.glScaled(3.75, 3.75, 3.75);
|
||||
}
|
||||
public void renderCommonWithStack(ItemStack item) {
|
||||
GL11.glScaled(0.5, 0.5, 0.5);
|
||||
GL11.glRotatef(-90, 0F, 1F, 0F);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
bindTexture(ResourceManager.ore_slopper_tex);
|
||||
ResourceManager.ore_slopper.renderAll();
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}};
|
||||
}
|
||||
}
|
||||
@ -23,8 +23,6 @@ import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class RendererObjTester extends TileEntitySpecialRenderer {
|
||||
|
||||
//private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/TestObj.obj");
|
||||
|
||||
private static ResourceLocation extra = new ResourceLocation(RefStrings.MODID, "textures/models/horse/dyx.png");
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
package com.hbm.render.util;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
||||
public class ErrorPronter {
|
||||
|
||||
public static void prontError() {
|
||||
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
|
||||
GL11.glScaled(2, 2, 2);
|
||||
|
||||
GL11.glColor3d(Math.sin(System.currentTimeMillis() % 1000 / 1000D * Math.PI) * 0.5 + 0.5, 0.0, 0.0);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.universal_bright);
|
||||
ResourceManager.error.renderAll();
|
||||
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
}
|
||||
|
||||
}
|
||||
@ -2,6 +2,7 @@ package com.hbm.render.util;
|
||||
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.render.model.ModelArmorTailPeep;
|
||||
import com.hbm.render.model.ModelArmorWings;
|
||||
import com.hbm.render.model.ModelArmorWingsPheo;
|
||||
import com.hbm.util.ShadyUtil;
|
||||
@ -184,4 +185,26 @@ public class RenderAccessoryUtility {
|
||||
|
||||
axePackModel.render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F);
|
||||
}
|
||||
|
||||
private static ModelBiped tailModel;
|
||||
public static void renderFaggot(RenderPlayerEvent.SetArmorModel event) {
|
||||
|
||||
if(tailModel == null)
|
||||
tailModel = new ModelArmorTailPeep();
|
||||
|
||||
RenderPlayer renderer = event.renderer;
|
||||
ModelBiped model = renderer.modelArmor;
|
||||
EntityPlayer player = event.entityPlayer;
|
||||
|
||||
tailModel.isSneak = model.isSneak;
|
||||
|
||||
float interp = event.partialRenderTick;
|
||||
float yawHead = player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead) * interp;
|
||||
float yawOffset = player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * interp;
|
||||
float yaw = yawHead - yawOffset;
|
||||
float yawWrapped = MathHelper.wrapAngleTo180_float(yawHead - yawOffset);
|
||||
float pitch = player.rotationPitch;
|
||||
|
||||
tailModel.render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F);
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,6 +26,5 @@ public interface IUpgradeInfoProvider {
|
||||
public static final String KEY_DELAY = "upgrade.delay";
|
||||
public static final String KEY_EFFICIENCY = "upgrade.efficiency";
|
||||
public static final String KEY_FORTUNE = "upgrade.fortune";
|
||||
public static final String KEY_OVERHEAT_CHANCE = "upgrade.overheatChance";
|
||||
public static final String KEY_RANGE = "upgrade.range";
|
||||
}
|
||||
|
||||
@ -30,6 +30,7 @@ import api.hbm.tile.IHeatSource;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
@ -220,38 +221,47 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro
|
||||
this.wasteStack.removeIf(x -> x.amount <= 0);
|
||||
|
||||
/* sync */
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
int[] rec = new int[recipeStack.size() * 2];
|
||||
int[] was = new int[wasteStack.size() * 2];
|
||||
for(int i = 0; i < recipeStack.size(); i++) { MaterialStack sta = recipeStack.get(i); rec[i * 2] = sta.material.id; rec[i * 2 + 1] = sta.amount; }
|
||||
for(int i = 0; i < wasteStack.size(); i++) { MaterialStack sta = wasteStack.get(i); was[i * 2] = sta.material.id; was[i * 2 + 1] = sta.amount; }
|
||||
data.setIntArray("rec", rec);
|
||||
data.setIntArray("was", was);
|
||||
data.setInteger("progress", progress);
|
||||
data.setInteger("heat", heat);
|
||||
this.networkPack(data, 25);
|
||||
this.networkPackNT(25);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
super.networkUnpack(nbt);
|
||||
|
||||
this.recipeStack.clear();
|
||||
this.wasteStack.clear();
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeInt(progress);
|
||||
buf.writeInt(heat);
|
||||
|
||||
int[] rec = nbt.getIntArray("rec");
|
||||
for(int i = 0; i < rec.length / 2; i++) {
|
||||
recipeStack.add(new MaterialStack(Mats.matById.get(rec[i * 2]), rec[i * 2 + 1]));
|
||||
buf.writeShort(recipeStack.size());
|
||||
for(MaterialStack sta : recipeStack) {
|
||||
buf.writeInt(sta.material.id);
|
||||
buf.writeInt(sta.amount);
|
||||
}
|
||||
|
||||
int[] was = nbt.getIntArray("was");
|
||||
for(int i = 0; i < was.length / 2; i++) {
|
||||
wasteStack.add(new MaterialStack(Mats.matById.get(was[i * 2]), was[i * 2 + 1]));
|
||||
buf.writeShort(wasteStack.size());
|
||||
for(MaterialStack sta : wasteStack) {
|
||||
buf.writeInt(sta.material.id);
|
||||
buf.writeInt(sta.amount);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
progress = buf.readInt();
|
||||
heat = buf.readInt();
|
||||
|
||||
recipeStack.clear();
|
||||
wasteStack.clear();
|
||||
|
||||
int mats = buf.readShort();
|
||||
for(int i = 0; i < mats; i++) {
|
||||
recipeStack.add(new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt()));
|
||||
}
|
||||
|
||||
this.progress = nbt.getInteger("progress");
|
||||
this.heat = nbt.getInteger("heat");
|
||||
mats = buf.readShort();
|
||||
for(int i = 0; i < mats; i++) {
|
||||
wasteStack.add(new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -16,6 +16,7 @@ import com.hbm.main.MainRegistry;
|
||||
import com.hbm.sound.AudioWrapper;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
import com.hbm.util.BufferUtil;
|
||||
import com.hbm.util.ContaminationUtil;
|
||||
import com.hbm.util.ContaminationUtil.ContaminationType;
|
||||
import com.hbm.util.ContaminationUtil.HazardType;
|
||||
@ -23,6 +24,7 @@ import com.hbm.util.ContaminationUtil.HazardType;
|
||||
import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
@ -176,13 +178,7 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyRecei
|
||||
}
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", power);
|
||||
data.setString("mode", mode.toString());
|
||||
data.setBoolean("isOn", isOn);
|
||||
data.setBoolean("valid", missingValidSilex);
|
||||
data.setInteger("distance", distance);
|
||||
this.networkPack(data, 250);
|
||||
this.networkPackNT(250);
|
||||
} else {
|
||||
|
||||
if(power > powerReq * Math.pow(2, mode.ordinal()) && isOn && !(mode == EnumWavelengths.NULL) && distance - 3 > 0) {
|
||||
@ -224,16 +220,25 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyRecei
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
super.networkUnpack(nbt);
|
||||
|
||||
this.power = nbt.getLong("power");
|
||||
this.mode = EnumWavelengths.valueOf(nbt.getString("mode"));
|
||||
this.isOn = nbt.getBoolean("isOn");
|
||||
this.distance = nbt.getInteger("distance");
|
||||
this.missingValidSilex = nbt.getBoolean("valid");
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeLong(power);
|
||||
BufferUtil.writeString(buf, mode.toString());
|
||||
buf.writeBoolean(isOn);
|
||||
buf.writeBoolean(missingValidSilex);
|
||||
buf.writeInt(distance);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
power = buf.readLong();
|
||||
mode = EnumWavelengths.valueOf(BufferUtil.readString(buf));
|
||||
isOn = buf.readBoolean();
|
||||
missingValidSilex = buf.readBoolean();
|
||||
distance = buf.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -17,6 +17,7 @@ import api.hbm.fluid.IFluidStandardSender;
|
||||
import api.hbm.tile.IHeatSource;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
@ -121,14 +122,7 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i
|
||||
this.burnHeat = 0;
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setInteger("maxBurnTime", this.maxBurnTime);
|
||||
data.setInteger("burnTime", this.burnTime);
|
||||
data.setInteger("burnHeat", this.burnHeat);
|
||||
data.setInteger("heatEnergy", this.heatEnergy);
|
||||
data.setInteger("playersUsing", this.playersUsing);
|
||||
data.setBoolean("wasOn", this.wasOn);
|
||||
this.networkPack(data, 50);
|
||||
this.networkPackNT(50);
|
||||
} else {
|
||||
this.prevDoorAngle = this.doorAngle;
|
||||
float swingSpeed = (doorAngle / 10F) + 3;
|
||||
@ -151,6 +145,28 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeInt(maxBurnTime);
|
||||
buf.writeInt(burnTime);
|
||||
buf.writeInt(burnHeat);
|
||||
buf.writeInt(heatEnergy);
|
||||
buf.writeInt(playersUsing);
|
||||
buf.writeBoolean(wasOn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
maxBurnTime = buf.readInt();
|
||||
burnTime = buf.readInt();
|
||||
burnHeat = buf.readInt();
|
||||
heatEnergy = buf.readInt();
|
||||
playersUsing = buf.readInt();
|
||||
wasOn = buf.readBoolean();
|
||||
}
|
||||
|
||||
public static EnumAshType getAshFromFuel(ItemStack stack) {
|
||||
|
||||
List<String> names = ItemStackUtil.getOreDictNames(stack);
|
||||
@ -181,18 +197,6 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i
|
||||
public boolean isItemValidForSlot(int i, ItemStack itemStack) {
|
||||
return getModule().getBurnTime(itemStack) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
super.networkUnpack(nbt);
|
||||
|
||||
this.maxBurnTime = nbt.getInteger("maxBurnTime");
|
||||
this.burnTime = nbt.getInteger("burnTime");
|
||||
this.burnHeat = nbt.getInteger("burnHeat");
|
||||
this.heatEnergy = nbt.getInteger("heatEnergy");
|
||||
this.playersUsing = nbt.getInteger("playersUsing");
|
||||
this.wasOn = nbt.getBoolean("wasOn");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
|
||||
@ -18,6 +18,7 @@ import api.hbm.fluid.IFluidStandardSender;
|
||||
import api.hbm.tile.IHeatSource;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@ -128,12 +129,7 @@ public class TileEntityFurnaceCombination extends TileEntityMachinePolluting imp
|
||||
this.progress = 0;
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setBoolean("wasOn", this.wasOn);
|
||||
data.setInteger("heat", this.heat);
|
||||
data.setInteger("progress", this.progress);
|
||||
tank.writeToNBT(data, "t");
|
||||
this.networkPack(data, 50);
|
||||
this.networkPackNT(50);
|
||||
} else {
|
||||
|
||||
if(this.wasOn && worldObj.rand.nextInt(15) == 0) {
|
||||
@ -142,6 +138,24 @@ public class TileEntityFurnaceCombination extends TileEntityMachinePolluting imp
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeBoolean(wasOn);
|
||||
buf.writeInt(heat);
|
||||
buf.writeInt(progress);
|
||||
tank.serialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
wasOn = buf.readBoolean();
|
||||
heat = buf.readInt();
|
||||
progress = buf.readInt();
|
||||
tank.deserialize(buf);
|
||||
}
|
||||
|
||||
public boolean canSmelt() {
|
||||
if(slots[0] == null) return false;
|
||||
Pair<ItemStack, FluidStack> pair = CombinationRecipes.getOutput(slots[0]);
|
||||
@ -165,16 +179,6 @@ public class TileEntityFurnaceCombination extends TileEntityMachinePolluting imp
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
super.networkUnpack(nbt);
|
||||
|
||||
this.wasOn = nbt.getBoolean("wasOn");
|
||||
this.heat = nbt.getInteger("heat");
|
||||
this.progress = nbt.getInteger("progress");
|
||||
this.tank.readFromNBT(nbt, "t");
|
||||
}
|
||||
|
||||
protected void tryPullHeat() {
|
||||
|
||||
|
||||
@ -16,6 +16,7 @@ import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import api.hbm.tile.IHeatSource;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -94,23 +95,28 @@ public class TileEntityHeaterOilburner extends TileEntityMachinePolluting implem
|
||||
if(shouldCool)
|
||||
this.heatEnergy = Math.max(this.heatEnergy - Math.max(this.heatEnergy / 1000, 1), 0);
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
tank.writeToNBT(data, "tank");
|
||||
data.setBoolean("isOn", isOn);
|
||||
data.setInteger("h", heatEnergy);
|
||||
data.setByte("s", (byte) this.setting);
|
||||
this.networkPack(data, 25);
|
||||
this.networkPackNT(25);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
super.networkUnpack(nbt);
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
tank.serialize(buf);
|
||||
|
||||
tank.readFromNBT(nbt, "tank");
|
||||
isOn = nbt.getBoolean("isOn");
|
||||
heatEnergy = nbt.getInteger("h");
|
||||
setting = nbt.getByte("s");
|
||||
buf.writeBoolean(isOn);
|
||||
buf.writeInt(heatEnergy);
|
||||
buf.writeByte((byte) this.setting);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
tank.deserialize(buf);
|
||||
|
||||
isOn = buf.readBoolean();
|
||||
heatEnergy = buf.readInt();
|
||||
setting = buf.readByte();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -153,6 +153,11 @@ public class TileEntityICFPress extends TileEntityMachineBase implements IFluidS
|
||||
public int[] getAccessibleSlotsFromSide(int side) {
|
||||
return side == 0 || side == 1 ? topBottom : sides;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canExtractItem(int slot, ItemStack itemStack, int side) {
|
||||
return slot == 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
|
||||
@ -29,6 +29,7 @@ import api.hbm.fluid.IFluidStandardReceiver;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -135,21 +136,48 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements
|
||||
|
||||
this.maxPower = Math.max(intendedMaxPower, power);
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", power);
|
||||
data.setLong("maxPower", maxPower);
|
||||
data.setLong("consumption", consumption);
|
||||
data.setInteger("progress", progress);
|
||||
data.setInteger("processTime", processTime);
|
||||
if(recipe != null) {
|
||||
data.setInteger("display", Item.getIdFromItem(recipe.output.getItem()));
|
||||
data.setInteger("displayMeta", recipe.output.getItemDamage());
|
||||
}
|
||||
this.tank.writeToNBT(data, "t");
|
||||
this.networkPack(data, 25);
|
||||
this.networkPackNT(25);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeLong(power);
|
||||
buf.writeLong(maxPower);
|
||||
buf.writeLong(consumption);
|
||||
buf.writeInt(progress);
|
||||
buf.writeInt(processTime);
|
||||
|
||||
tank.serialize(buf);
|
||||
|
||||
ArcWelderRecipe recipe = ArcWelderRecipes.getRecipe(slots[0], slots[1], slots[2]);
|
||||
|
||||
if(recipe != null) {
|
||||
buf.writeBoolean(true);
|
||||
buf.writeInt(Item.getIdFromItem(recipe.output.getItem()));
|
||||
buf.writeInt(recipe.output.getItemDamage());
|
||||
} else
|
||||
buf.writeBoolean(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
power = buf.readLong();
|
||||
maxPower = buf.readLong();
|
||||
consumption = buf.readLong();
|
||||
progress = buf.readInt();
|
||||
processTime = buf.readInt();
|
||||
|
||||
tank.deserialize(buf);
|
||||
|
||||
if(buf.readBoolean()) {
|
||||
this.display = new ItemStack(Item.getItemById(buf.readInt()), 1, buf.readInt());
|
||||
} else
|
||||
this.display = null;
|
||||
}
|
||||
|
||||
public boolean canProcess(ArcWelderRecipe recipe) {
|
||||
|
||||
if(this.power < this.consumption) return false;
|
||||
@ -204,25 +232,6 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements
|
||||
new DirPos(xCoord - dir.offsetX - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ - rot.offsetZ * 2, rot.getOpposite())
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
super.networkUnpack(nbt);
|
||||
|
||||
this.power = nbt.getLong("power");
|
||||
this.maxPower = nbt.getLong("maxPower");
|
||||
this.consumption = nbt.getLong("consumption");
|
||||
this.progress = nbt.getInteger("progress");
|
||||
this.processTime = nbt.getInteger("processTime");
|
||||
|
||||
if(nbt.hasKey("display")) {
|
||||
this.display = new ItemStack(Item.getItemById(nbt.getInteger("display")), 1, nbt.getInteger("displayMeta"));
|
||||
} else {
|
||||
this.display = null;
|
||||
}
|
||||
|
||||
this.tank.readFromNBT(nbt, "t");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
|
||||
@ -6,12 +6,9 @@ import java.util.Random;
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.handler.MultiblockHandlerXR;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.inventory.UpgradeManager;
|
||||
import com.hbm.inventory.container.ContainerMachineAssembler;
|
||||
import com.hbm.inventory.gui.GUIMachineAssembler;
|
||||
import com.hbm.inventory.recipes.AssemblerRecipes;
|
||||
import com.hbm.items.machine.ItemAssemblyTemplate;
|
||||
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.sound.AudioWrapper;
|
||||
@ -23,6 +20,7 @@ import com.hbm.util.fauxpointtwelve.DirPos;
|
||||
import api.hbm.energymk2.IBatteryItem;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -105,19 +103,13 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i
|
||||
speed /= (overLevel + 1);
|
||||
consumption *= (overLevel + 1);
|
||||
|
||||
int rec = -1;
|
||||
/*int rec = -1;
|
||||
if(AssemblerRecipes.getOutputFromTempate(slots[4]) != null) {
|
||||
ComparableStack comp = ItemAssemblyTemplate.readType(slots[4]);
|
||||
rec = AssemblerRecipes.recipeList.indexOf(comp);
|
||||
}
|
||||
}*/
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", power);
|
||||
data.setIntArray("progress", this.progress);
|
||||
data.setIntArray("maxProgress", this.maxProgress);
|
||||
data.setBoolean("isProgressing", isProgressing);
|
||||
data.setInteger("recipe", rec);
|
||||
this.networkPack(data, 150);
|
||||
this.networkPackNT(150);
|
||||
} else {
|
||||
|
||||
float volume = this.getVolume(2F);
|
||||
@ -142,16 +134,31 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
super.networkUnpack(nbt);
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeLong(power);
|
||||
for(int i = 0; i < getRecipeCount(); i++) {
|
||||
buf.writeInt(progress[i]);
|
||||
buf.writeInt(maxProgress[i]);
|
||||
}
|
||||
|
||||
this.power = nbt.getLong("power");
|
||||
this.progress = nbt.getIntArray("progress");
|
||||
this.maxProgress = nbt.getIntArray("maxProgress");
|
||||
this.isProgressing = nbt.getBoolean("isProgressing");
|
||||
this.recipe = nbt.getInteger("recipe");
|
||||
buf.writeBoolean(isProgressing);
|
||||
buf.writeInt(recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
power = buf.readLong();
|
||||
for(int i = 0; i < getRecipeCount(); i++) {
|
||||
progress[i] = buf.readInt();
|
||||
maxProgress[i] = buf.readInt();
|
||||
}
|
||||
|
||||
isProgressing = buf.readBoolean();
|
||||
recipe = buf.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -20,6 +20,7 @@ import com.hbm.util.fauxpointtwelve.DirPos;
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -93,16 +94,7 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im
|
||||
this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", this.power);
|
||||
data.setIntArray("progress", this.progress);
|
||||
data.setIntArray("maxProgress", this.maxProgress);
|
||||
data.setBoolean("isProgressing", isProgressing);
|
||||
|
||||
water.writeToNBT(data, "w");
|
||||
steam.writeToNBT(data, "s");
|
||||
|
||||
this.networkPack(data, 150);
|
||||
this.networkPackNT(150);
|
||||
|
||||
} else {
|
||||
|
||||
@ -114,7 +106,33 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeLong(power);
|
||||
for(int i = 0; i < getRecipeCount(); i++) {
|
||||
buf.writeInt(progress[i]);
|
||||
buf.writeInt(maxProgress[i]);
|
||||
}
|
||||
buf.writeBoolean(isProgressing);
|
||||
water.serialize(buf);
|
||||
steam.serialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
power = buf.readLong();
|
||||
for(int i = 0; i < getRecipeCount(); i++) {
|
||||
progress[i] = buf.readInt();
|
||||
maxProgress[i] = buf.readInt();
|
||||
}
|
||||
isProgressing = buf.readBoolean();
|
||||
water.deserialize(buf);
|
||||
steam.deserialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
super.networkUnpack(nbt);
|
||||
|
||||
@ -8,11 +8,13 @@ import com.hbm.inventory.gui.GUIAutocrafter;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
import com.hbm.util.BufferUtil;
|
||||
import com.hbm.util.ItemStackUtil;
|
||||
|
||||
import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -193,33 +195,38 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen
|
||||
}
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", power);
|
||||
for(int i = 0; i < 9; i++) {
|
||||
if(modes[i] != null) {
|
||||
data.setString("mode" + i, modes[i]);
|
||||
}
|
||||
}
|
||||
data.setInteger("count", this.recipeCount);
|
||||
data.setInteger("rec", this.recipeIndex);
|
||||
this.networkPack(data, 15);
|
||||
this.networkPackNT(15);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound data) {
|
||||
super.networkUnpack(data);
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeLong(power);
|
||||
for(int i = 0; i < 9; i++) {
|
||||
if(modes[i] != null) {
|
||||
buf.writeBoolean(true);
|
||||
BufferUtil.writeString(buf, modes[i]);
|
||||
} else
|
||||
buf.writeBoolean(false);
|
||||
}
|
||||
|
||||
this.power = data.getLong("power");
|
||||
buf.writeInt(recipeCount);
|
||||
buf.writeInt(recipeIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
power = buf.readLong();
|
||||
|
||||
modes = new String[9];
|
||||
for(int i = 0; i < 9; i++) {
|
||||
if(data.hasKey("mode" + i)) {
|
||||
modes[i] = data.getString("mode" + i);
|
||||
}
|
||||
if(buf.readBoolean()) modes[i] = BufferUtil.readString(buf);
|
||||
}
|
||||
this.recipeCount = data.getInteger("count");
|
||||
this.recipeIndex = data.getInteger("rec");
|
||||
|
||||
recipeCount = buf.readInt();
|
||||
recipeIndex = buf.readInt();
|
||||
}
|
||||
|
||||
public void updateTemplateGrid() {
|
||||
|
||||
@ -22,6 +22,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import api.hbm.tile.IInfoProviderEC;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -198,11 +199,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement
|
||||
progress = 0;
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", power);
|
||||
data.setInteger("progress", progress);
|
||||
data.setBoolean("isProgressing", isProgressing);
|
||||
this.networkPack(data, 50);
|
||||
this.networkPackNT(50);
|
||||
} else {
|
||||
|
||||
if(isProgressing) {
|
||||
@ -234,14 +231,21 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound data) {
|
||||
super.networkUnpack(data);
|
||||
|
||||
this.power = data.getLong("power");
|
||||
this.progress = data.getInteger("progress");
|
||||
this.isProgressing = data.getBoolean("isProgressing");
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeLong(power);
|
||||
buf.writeInt(progress);
|
||||
buf.writeBoolean(isProgressing);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
power = buf.readLong();
|
||||
progress = buf.readInt();
|
||||
isProgressing = buf.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -21,6 +21,7 @@ import com.hbm.util.fauxpointtwelve.DirPos;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -101,19 +102,7 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp
|
||||
this.speed = 1;
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", this.power);
|
||||
data.setIntArray("progress", this.progress);
|
||||
data.setIntArray("maxProgress", this.maxProgress);
|
||||
data.setBoolean("isProgressing", isProgressing);
|
||||
|
||||
for(int i = 0; i < tanks.length; i++) {
|
||||
tanks[i].writeToNBT(data, "t" + i);
|
||||
}
|
||||
water.writeToNBT(data, "w");
|
||||
steam.writeToNBT(data, "s");
|
||||
|
||||
this.networkPack(data, 150);
|
||||
this.networkPackNT(150);
|
||||
} else {
|
||||
|
||||
float maxSpeed = 30F;
|
||||
@ -156,21 +145,39 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
super.networkUnpack(nbt);
|
||||
|
||||
this.power = nbt.getLong("power");
|
||||
this.progress = nbt.getIntArray("progress");
|
||||
this.maxProgress = nbt.getIntArray("maxProgress");
|
||||
this.isProgressing = nbt.getBoolean("isProgressing");
|
||||
|
||||
for(int i = 0; i < tanks.length; i++) {
|
||||
tanks[i].readFromNBT(nbt, "t" + i);
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeLong(power);
|
||||
for(int i = 0; i < getRecipeCount(); i++) {
|
||||
buf.writeInt(progress[i]);
|
||||
buf.writeInt(maxProgress[i]);
|
||||
}
|
||||
water.readFromNBT(nbt, "w");
|
||||
steam.readFromNBT(nbt, "s");
|
||||
|
||||
buf.writeBoolean(isProgressing);
|
||||
|
||||
for(int i = 0; i < tanks.length; i++) tanks[i].serialize(buf);
|
||||
|
||||
water.serialize(buf);
|
||||
steam.serialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
power = buf.readLong();
|
||||
for(int i = 0; i < getRecipeCount(); i++) {
|
||||
progress[i] = buf.readInt();
|
||||
maxProgress[i] = buf.readInt();
|
||||
}
|
||||
|
||||
isProgressing = buf.readBoolean();
|
||||
|
||||
for(int i = 0; i < tanks.length; i++) tanks[i].deserialize(buf);
|
||||
|
||||
water.deserialize(buf);
|
||||
steam.deserialize(buf);
|
||||
}
|
||||
|
||||
private int getWaterRequired() {
|
||||
|
||||
@ -27,6 +27,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import api.hbm.fluid.IFluidStandardReceiver;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -97,13 +98,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme
|
||||
}
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setShort("progress", progress);
|
||||
data.setShort("duration", getDuration());
|
||||
data.setLong("power", power);
|
||||
data.setBoolean("isOn", isOn);
|
||||
tank.writeToNBT(data, "t");
|
||||
this.networkPack(data, 25);
|
||||
this.networkPackNT(25);
|
||||
} else {
|
||||
|
||||
prevAngle = angle;
|
||||
@ -124,7 +119,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
List<EntityPlayer> players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.25, yCoord + 1, zCoord + 0.25, xCoord + 0.75, yCoord + 5.875, zCoord + 0.75).offset(rot.offsetX * 1.5, 0, rot.offsetZ * 1.5));
|
||||
List<EntityPlayer> players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.25, yCoord + 1, zCoord + 0.25, xCoord + 0.75, yCoord + 6, zCoord + 0.75).offset(rot.offsetX * 1.5, 0, rot.offsetZ * 1.5));
|
||||
|
||||
for(EntityPlayer player : players) {
|
||||
HbmPlayerProps props = HbmPlayerProps.getData(player);
|
||||
@ -154,14 +149,24 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme
|
||||
};
|
||||
}
|
||||
|
||||
public void networkUnpack(NBTTagCompound data) {
|
||||
super.networkUnpack(data);
|
||||
|
||||
this.power = data.getLong("power");
|
||||
this.progress = data.getShort("progress");
|
||||
this.duration = data.getShort("duration");
|
||||
this.isOn = data.getBoolean("isOn");
|
||||
this.tank.readFromNBT(data, "t");
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeShort(progress);
|
||||
buf.writeShort(getDuration());
|
||||
buf.writeLong(power);
|
||||
buf.writeBoolean(isOn);
|
||||
tank.serialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
progress = buf.readShort();
|
||||
duration = buf.readShort();
|
||||
power = buf.readLong();
|
||||
isOn = buf.readBoolean();
|
||||
tank.deserialize(buf);
|
||||
}
|
||||
|
||||
private void processItem() {
|
||||
|
||||
@ -4,18 +4,10 @@ import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.config.BombConfig;
|
||||
import com.hbm.entity.effect.EntityBlackHole;
|
||||
import com.hbm.entity.logic.EntityBalefire;
|
||||
import com.hbm.entity.logic.EntityNukeExplosionMK5;
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.explosion.ExplosionThermo;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidSource;
|
||||
import com.hbm.inventory.UpgradeManager;
|
||||
import com.hbm.inventory.RecipesCommon.AStack;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.inventory.container.ContainerMachineCyclotron;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||
import com.hbm.inventory.gui.GUIMachineCyclotron;
|
||||
@ -24,8 +16,6 @@ import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemMachineUpgrade;
|
||||
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.packet.AuxParticlePacketNT;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.tileentity.IConditionalInvAccess;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.IUpgradeInfoProvider;
|
||||
@ -38,9 +28,9 @@ import com.hbm.util.fauxpointtwelve.DirPos;
|
||||
import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import api.hbm.tile.IInfoProviderEC;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -52,30 +42,26 @@ import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IFluidSource, IFluidAcceptor, IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess, IUpgradeInfoProvider, IInfoProviderEC {
|
||||
public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess, IUpgradeInfoProvider, IInfoProviderEC {
|
||||
|
||||
public long power;
|
||||
public static final long maxPower = 100000000;
|
||||
public int consumption = 1_000_000;
|
||||
|
||||
public boolean isOn;
|
||||
|
||||
private int age;
|
||||
private int countdown;
|
||||
public static int consumption = 1_000_000;
|
||||
|
||||
private byte plugs;
|
||||
|
||||
public int progress;
|
||||
public static final int duration = 690;
|
||||
|
||||
public FluidTank coolant;
|
||||
public FluidTank amat;
|
||||
public FluidTank[] tanks;
|
||||
|
||||
public TileEntityMachineCyclotron() {
|
||||
super(16);
|
||||
|
||||
coolant = new FluidTank(Fluids.COOLANT, 32000, 0);
|
||||
amat = new FluidTank(Fluids.AMAT, 8000, 1);
|
||||
super(12);
|
||||
|
||||
this.tanks = new FluidTank[3];
|
||||
this.tanks[0] = new FluidTank(Fluids.WATER, 32000);
|
||||
this.tanks[1] = new FluidTank(Fluids.SPENTSTEAM, 32000);
|
||||
this.tanks[2] = new FluidTank(Fluids.AMAT, 8000);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -90,72 +76,22 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements
|
||||
|
||||
this.updateConnections();
|
||||
|
||||
age++;
|
||||
if(age >= 20)
|
||||
{
|
||||
age = 0;
|
||||
}
|
||||
this.power = Library.chargeTEFromItems(slots, 9, power, maxPower);
|
||||
|
||||
if(age == 9 || age == 19)
|
||||
fillFluidInit(amat.getTankType());
|
||||
|
||||
this.power = Library.chargeTEFromItems(slots, 13, power, maxPower);
|
||||
this.coolant.loadTank(11, 12, slots);
|
||||
this.amat.unloadTank(9, 10, slots);
|
||||
UpgradeManager.eval(slots, 10, 11);
|
||||
|
||||
if(isOn) {
|
||||
if(canProcess()) {
|
||||
progress += getSpeed();
|
||||
power -= getConsumption();
|
||||
|
||||
int defConsumption = consumption - 100_000 * getConsumption();
|
||||
int convert = getCoolantConsumption();
|
||||
tanks[0].setFill(tanks[0].getFill() - convert);
|
||||
tanks[1].setFill(tanks[1].getFill() + convert);
|
||||
|
||||
if(canProcess() && power >= defConsumption) {
|
||||
|
||||
progress += this.getSpeed();
|
||||
power -= defConsumption;
|
||||
|
||||
if(progress >= duration) {
|
||||
process();
|
||||
progress = 0;
|
||||
this.markDirty();
|
||||
}
|
||||
|
||||
int safety = this.getSafety();
|
||||
|
||||
if(coolant.getFill() > 0) {
|
||||
|
||||
countdown = 0;
|
||||
|
||||
if(worldObj.rand.nextInt(3 * safety) == 0)
|
||||
coolant.setFill(coolant.getFill() - 1);
|
||||
|
||||
} else if(worldObj.rand.nextInt(safety) == 0) {
|
||||
|
||||
countdown++;
|
||||
|
||||
int chance = 7 - Math.min((int) Math.ceil(countdown / 200D), 6);
|
||||
|
||||
if(worldObj.rand.nextInt(chance) == 0)
|
||||
ExplosionLarge.spawnTracers(worldObj, xCoord + 0.5, yCoord + 3.25, zCoord + 0.5, 1);
|
||||
|
||||
if(countdown > 1000) {
|
||||
ExplosionThermo.setEntitiesOnFire(worldObj, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 25);
|
||||
ExplosionThermo.scorchLight(worldObj, xCoord, yCoord, zCoord, 7);
|
||||
|
||||
if(countdown % 4 == 0)
|
||||
ExplosionLarge.spawnBurst(worldObj, xCoord + 0.5, yCoord + 3.25, zCoord + 0.5, 18, 1);
|
||||
|
||||
} else if(countdown > 600) {
|
||||
ExplosionThermo.setEntitiesOnFire(worldObj, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 10);
|
||||
}
|
||||
|
||||
if(countdown == 1140)
|
||||
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, "hbm:block.shutdown", 10.0F, 1.0F);
|
||||
|
||||
if(countdown > 1200)
|
||||
explode();
|
||||
}
|
||||
|
||||
} else {
|
||||
if(progress >= duration) {
|
||||
process();
|
||||
progress = 0;
|
||||
this.markDirty();
|
||||
}
|
||||
|
||||
} else {
|
||||
@ -163,29 +99,46 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements
|
||||
}
|
||||
|
||||
this.sendFluid();
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", power);
|
||||
data.setInteger("progress", progress);
|
||||
data.setBoolean("isOn", isOn);
|
||||
data.setByte("plugs", plugs);
|
||||
this.networkPack(data, 25);
|
||||
|
||||
coolant.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
||||
amat.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
||||
this.networkPackNT(25);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeLong(power);
|
||||
buf.writeInt(progress);
|
||||
buf.writeByte(plugs);
|
||||
|
||||
for(int i = 0; i < 3; i++)
|
||||
tanks[i].serialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
power = buf.readLong();
|
||||
progress = buf.readInt();
|
||||
plugs = buf.readByte();
|
||||
|
||||
for(int i = 0; i < 3; i++)
|
||||
tanks[i].deserialize(buf);
|
||||
}
|
||||
|
||||
private void updateConnections() {
|
||||
for(DirPos pos : getConPos()) {
|
||||
this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
this.trySubscribe(coolant.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
}
|
||||
}
|
||||
|
||||
private void sendFluid() {
|
||||
for(DirPos pos : getConPos()) {
|
||||
this.sendFluid(amat, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
for(int i = 1; i < 3; i++) {
|
||||
if(tanks[i].getFill() > 0) {
|
||||
for(DirPos pos : getConPos()) {
|
||||
this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -202,62 +155,19 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements
|
||||
};
|
||||
}
|
||||
|
||||
public void networkUnpack(NBTTagCompound data) {
|
||||
super.networkUnpack(data);
|
||||
|
||||
this.isOn = data.getBoolean("isOn");
|
||||
this.power = data.getLong("power");
|
||||
this.progress = data.getInteger("progress");
|
||||
this.plugs = data.getByte("plugs");
|
||||
}
|
||||
|
||||
public void handleButtonPacket(int value, int meta) {
|
||||
|
||||
this.isOn = !this.isOn;
|
||||
}
|
||||
|
||||
private void explode() {
|
||||
|
||||
ExplosionLarge.explodeFire(worldObj, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 25, true, false, true);
|
||||
|
||||
int rand = worldObj.rand.nextInt(10);
|
||||
|
||||
if(rand < 2) {
|
||||
|
||||
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)(BombConfig.fatmanRadius * 1.5), xCoord + 0.5, yCoord + 1.5, zCoord + 0.5));
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "muke");
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 250));
|
||||
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:weapon.mukeExplosion", 15.0F, 1.0F);
|
||||
|
||||
} else if(rand < 4) {
|
||||
|
||||
EntityBalefire bf = new EntityBalefire(worldObj);
|
||||
bf.posX = xCoord + 0.5;
|
||||
bf.posY = yCoord + 1.5;
|
||||
bf.posZ = zCoord + 0.5;
|
||||
bf.destructionRange = (int)(BombConfig.fatmanRadius * 1.5);
|
||||
worldObj.spawnEntityInWorld(bf);
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "muke");
|
||||
data.setBoolean("balefire", true);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 250));
|
||||
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:weapon.mukeExplosion", 15.0F, 1.0F);
|
||||
|
||||
} else if(rand < 5) {
|
||||
|
||||
EntityBlackHole bl = new EntityBlackHole(worldObj, 1.5F + worldObj.rand.nextFloat());
|
||||
bl.posX = xCoord + 0.5F;
|
||||
bl.posY = yCoord + 1.5F;
|
||||
bl.posZ = zCoord + 0.5F;
|
||||
worldObj.spawnEntityInWorld(bl);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean canProcess() {
|
||||
|
||||
if(power < getConsumption())
|
||||
return false;
|
||||
|
||||
int convert = getCoolantConsumption();
|
||||
|
||||
if(tanks[0].getFill() < convert)
|
||||
return false;
|
||||
|
||||
if(tanks[1].getFill() + convert > tanks[1].getMaxFill())
|
||||
return false;
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
|
||||
Object[] res = CyclotronRecipes.getOutput(slots[i + 3], slots[i]);
|
||||
@ -300,7 +210,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements
|
||||
this.decrStackSize(i + 3, 1);
|
||||
slots[i + 6] = out;
|
||||
|
||||
this.amat.setFill(this.amat.getFill() + (Integer)res[1]);
|
||||
this.tanks[2].setFill(this.tanks[2].getFill() + (Integer)res[1]);
|
||||
|
||||
continue;
|
||||
}
|
||||
@ -311,72 +221,28 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements
|
||||
this.decrStackSize(i + 3, 1);
|
||||
slots[i + 6].stackSize++;
|
||||
|
||||
this.amat.setFill(this.amat.getFill() + (Integer)res[1]);
|
||||
this.tanks[2].setFill(this.tanks[2].getFill() + (Integer)res[1]);
|
||||
}
|
||||
}
|
||||
|
||||
if(this.amat.getFill() > this.amat.getMaxFill())
|
||||
this.amat.setFill(this.amat.getMaxFill());
|
||||
if(this.tanks[2].getFill() > this.tanks[2].getMaxFill())
|
||||
this.tanks[2].setFill(this.tanks[2].getMaxFill());
|
||||
}
|
||||
|
||||
public int getSpeed() {
|
||||
|
||||
int speed = 1;
|
||||
|
||||
for(int i = 14; i < 16; i++) {
|
||||
|
||||
if(slots[i] != null) {
|
||||
|
||||
if(slots[i].getItem() == ModItems.upgrade_speed_1)
|
||||
speed += 1;
|
||||
else if(slots[i].getItem() == ModItems.upgrade_speed_2)
|
||||
speed += 2;
|
||||
else if(slots[i].getItem() == ModItems.upgrade_speed_3)
|
||||
speed += 3;
|
||||
}
|
||||
}
|
||||
|
||||
return Math.min(speed, 4);
|
||||
return Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) + 1;
|
||||
}
|
||||
|
||||
public int getConsumption() {
|
||||
int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3);
|
||||
|
||||
int speed = 0;
|
||||
|
||||
for(int i = 14; i < 16; i++) {
|
||||
|
||||
if(slots[i] != null) {
|
||||
|
||||
if(slots[i].getItem() == ModItems.upgrade_power_1)
|
||||
speed += 1;
|
||||
else if(slots[i].getItem() == ModItems.upgrade_power_2)
|
||||
speed += 2;
|
||||
else if(slots[i].getItem() == ModItems.upgrade_power_3)
|
||||
speed += 3;
|
||||
}
|
||||
}
|
||||
|
||||
return Math.min(speed, 3);
|
||||
return consumption - 100_000 * efficiency;
|
||||
}
|
||||
|
||||
public int getSafety() {
|
||||
|
||||
int speed = 1;
|
||||
|
||||
for(int i = 14; i < 16; i++) {
|
||||
|
||||
if(slots[i] != null) {
|
||||
|
||||
if(slots[i].getItem() == ModItems.upgrade_effect_1)
|
||||
speed += 1;
|
||||
else if(slots[i].getItem() == ModItems.upgrade_effect_2)
|
||||
speed += 2;
|
||||
else if(slots[i].getItem() == ModItems.upgrade_effect_3)
|
||||
speed += 3;
|
||||
}
|
||||
}
|
||||
|
||||
return Math.min(speed, 4);
|
||||
public int getCoolantConsumption() {
|
||||
int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3);
|
||||
//half a small tower's worth
|
||||
return 500 / (efficiency + 1) * getSpeed();
|
||||
}
|
||||
|
||||
public long getPowerScaled(long i) {
|
||||
@ -386,56 +252,6 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements
|
||||
public int getProgressScaled(int i) {
|
||||
return (progress * i) / duration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFillForSync(int fill, int index) {
|
||||
|
||||
if(index == 0)
|
||||
coolant.setFill(fill);
|
||||
else if(index == 1)
|
||||
amat.setFill(fill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFluidFill(int fill, FluidType type) {
|
||||
if(type == Fluids.COOLANT)
|
||||
coolant.setFill(fill);
|
||||
else if(type == Fluids.AMAT)
|
||||
amat.setFill(fill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTypeForSync(FluidType type, int index) {
|
||||
if(index == 0)
|
||||
coolant.setTankType(type);
|
||||
else if(index == 1)
|
||||
amat.setTankType(type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFluidFill(FluidType type) {
|
||||
if(type == Fluids.COOLANT)
|
||||
return coolant.getFill();
|
||||
else if(type == Fluids.AMAT)
|
||||
return amat.getFill();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override public void fillFluidInit(FluidType type) { }
|
||||
@Override public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { }
|
||||
@Override public boolean getTact() { return false; }
|
||||
@Override public List<IFluidAcceptor> getFluidList(FluidType type) { return null; }
|
||||
@Override public void clearFluidList(FluidType type) { }
|
||||
|
||||
@Override
|
||||
public int getMaxFluidFill(FluidType type) {
|
||||
|
||||
if(type == Fluids.COOLANT)
|
||||
return coolant.getMaxFill();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
@ -452,11 +268,9 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
|
||||
coolant.readFromNBT(nbt, "coolant");
|
||||
amat.readFromNBT(nbt, "amat");
|
||||
for(int i = 0; i < 3; i++)
|
||||
tanks[i].readFromNBT(nbt, "t" + i);
|
||||
|
||||
this.isOn = nbt.getBoolean("isOn");
|
||||
this.countdown = nbt.getInteger("countdown");
|
||||
this.progress = nbt.getInteger("progress");
|
||||
this.power = nbt.getLong("power");
|
||||
this.plugs = nbt.getByte("plugs");
|
||||
@ -466,11 +280,9 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
|
||||
coolant.writeToNBT(nbt, "coolant");
|
||||
amat.writeToNBT(nbt, "amat");
|
||||
for(int i = 0; i < 3; i++)
|
||||
tanks[i].writeToNBT(nbt, "t" + i);
|
||||
|
||||
nbt.setBoolean("isOn", isOn);
|
||||
nbt.setInteger("countdown", countdown);
|
||||
nbt.setInteger("progress", progress);
|
||||
nbt.setLong("power", power);
|
||||
nbt.setByte("plugs", plugs);
|
||||
@ -522,17 +334,17 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements
|
||||
|
||||
@Override
|
||||
public FluidTank[] getSendingTanks() {
|
||||
return new FluidTank[] { amat };
|
||||
return new FluidTank[] { tanks[1], tanks[2] };
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTank[] getReceivingTanks() {
|
||||
return new FluidTank[] { coolant };
|
||||
return new FluidTank[] { tanks[0] };
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTank[] getAllTanks() {
|
||||
return new FluidTank[] { amat, coolant };
|
||||
return tanks;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -598,13 +410,13 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements
|
||||
info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_cyclotron));
|
||||
if(type == UpgradeType.SPEED) {
|
||||
info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (100 - 100 / (level + 1)) + "%"));
|
||||
info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_COOLANT_CONSUMPTION, "+" + (level * 100) + "%"));
|
||||
}
|
||||
if(type == UpgradeType.POWER) {
|
||||
info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 10) + "%"));
|
||||
}
|
||||
if(type == UpgradeType.EFFECT) {
|
||||
info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_COOLANT_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%"));
|
||||
info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_OVERHEAT_CHANCE, "-" + (100 - 100 / (level + 1)) + "%"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -618,7 +430,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements
|
||||
|
||||
@Override
|
||||
public void provideExtraInfo(NBTTagCompound data) {
|
||||
data.setBoolean(CompatEnergyControl.B_ACTIVE, this.isOn && this.progress > 0);
|
||||
data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, this.progress > 0 ? consumption - 100_000 * getConsumption() : 0);
|
||||
data.setBoolean(CompatEnergyControl.B_ACTIVE, this.progress > 0);
|
||||
data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, this.progress > 0 ? getConsumption() : 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,6 +20,7 @@ import api.hbm.energymk2.IBatteryItem;
|
||||
import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -219,12 +220,8 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl
|
||||
markDirty = true;
|
||||
MachineElectricFurnace.updateBlockState(this.progress > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", this.power);
|
||||
data.setInteger("MaxProgress", this.maxProgress);
|
||||
data.setInteger("progress", this.progress);
|
||||
this.networkPack(data, 50);
|
||||
|
||||
this.networkPackNT(50);
|
||||
|
||||
|
||||
if(markDirty) {
|
||||
@ -232,22 +229,29 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeLong(power);
|
||||
buf.writeInt(maxProgress);
|
||||
buf.writeInt(progress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
power = buf.readLong();
|
||||
maxProgress = buf.readInt();
|
||||
progress = buf.readInt();
|
||||
}
|
||||
|
||||
private void updateConnections() {
|
||||
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||
this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
|
||||
}
|
||||
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
super.networkUnpack(nbt);
|
||||
|
||||
this.power = nbt.getLong("power");
|
||||
this.maxProgress = nbt.getInteger("MaxProgress");
|
||||
this.progress = nbt.getInteger("progress");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPower(long i) {
|
||||
power = i;
|
||||
|
||||
@ -22,6 +22,7 @@ import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemDrillbit;
|
||||
import com.hbm.items.machine.ItemDrillbit.EnumDrillType;
|
||||
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
|
||||
import com.hbm.items.special.ItemBedrockOreBase;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.IUpgradeInfoProvider;
|
||||
@ -40,6 +41,7 @@ import api.hbm.fluid.IFluidStandardReceiver;
|
||||
import cpw.mods.fml.relauncher.ReflectionHelper;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
@ -150,18 +152,7 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements
|
||||
this.targetDepth = 0;
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setBoolean("d", enableDrill);
|
||||
data.setBoolean("c", enableCrusher);
|
||||
data.setBoolean("w", enableWalling);
|
||||
data.setBoolean("v", enableVeinMiner);
|
||||
data.setBoolean("s", enableSilkTouch);
|
||||
data.setBoolean("o", operational);
|
||||
data.setInteger("t", targetDepth);
|
||||
data.setInteger("g", chuteTimer);
|
||||
data.setLong("p", power);
|
||||
tank.writeToNBT(data, "tank");
|
||||
this.networkPack(data, 150);
|
||||
this.networkPackNT(150);
|
||||
|
||||
} else {
|
||||
|
||||
@ -214,19 +205,34 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements
|
||||
};
|
||||
}
|
||||
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
super.networkUnpack(nbt);
|
||||
|
||||
this.enableDrill = nbt.getBoolean("d");
|
||||
this.enableCrusher = nbt.getBoolean("c");
|
||||
this.enableWalling = nbt.getBoolean("w");
|
||||
this.enableVeinMiner = nbt.getBoolean("v");
|
||||
this.enableSilkTouch = nbt.getBoolean("s");
|
||||
this.operational = nbt.getBoolean("o");
|
||||
this.targetDepth = nbt.getInteger("t");
|
||||
this.chuteTimer = nbt.getInteger("g");
|
||||
this.power = nbt.getLong("p");
|
||||
this.tank.readFromNBT(nbt, "tank");
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeBoolean(enableDrill);
|
||||
buf.writeBoolean(enableCrusher);
|
||||
buf.writeBoolean(enableWalling);
|
||||
buf.writeBoolean(enableVeinMiner);
|
||||
buf.writeBoolean(enableSilkTouch);
|
||||
buf.writeBoolean(operational);
|
||||
buf.writeInt(targetDepth);
|
||||
buf.writeInt(chuteTimer);
|
||||
buf.writeLong(power);
|
||||
tank.serialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
enableDrill = buf.readBoolean();
|
||||
enableCrusher = buf.readBoolean();
|
||||
enableWalling = buf.readBoolean();
|
||||
enableVeinMiner = buf.readBoolean();
|
||||
enableSilkTouch = buf.readBoolean();
|
||||
operational = buf.readBoolean();
|
||||
targetDepth = buf.readInt();
|
||||
chuteTimer = buf.readInt();
|
||||
power = buf.readLong();
|
||||
tank.deserialize(buf);
|
||||
}
|
||||
|
||||
protected int getY() {
|
||||
@ -321,6 +327,10 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements
|
||||
ItemStack stack = ore.resource.copy();
|
||||
List<ItemStack> stacks = new ArrayList();
|
||||
stacks.add(stack);
|
||||
|
||||
if(stack.getItem() == ModItems.bedrock_ore_base) {
|
||||
ItemBedrockOreBase.setOreAmount(stack, pos.getX(), pos.getZ());
|
||||
}
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
|
||||
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.inventory.container.ContainerFunnel;
|
||||
import com.hbm.inventory.gui.GUIFunnel;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
@ -96,24 +99,37 @@ public class TileEntityMachineFunnel extends TileEntityMachineBase implements IG
|
||||
@Override
|
||||
public boolean isItemValidForSlot(int slot, ItemStack stack) {
|
||||
if(slot > 8) return false;
|
||||
if(slots[slot] != null) return true; //if the slot is already occupied, return true because then the same type merging skips the validity check
|
||||
return this.getFrom9(stack) != null || this.getFrom4(stack) != null;
|
||||
}
|
||||
|
||||
protected InventoryCraftingAuto craftingInventory = new InventoryCraftingAuto(3, 3);
|
||||
|
||||
//hashmap lookups are way faster than iterating over the entire ass crafting list all the fucking time
|
||||
public static final HashMap<ComparableStack, ItemStack> from4Cache = new HashMap();
|
||||
public static final HashMap<ComparableStack, ItemStack> from9Cache = new HashMap();
|
||||
|
||||
public ItemStack getFrom4(ItemStack ingredient) {
|
||||
ComparableStack singular = new ComparableStack(ingredient).makeSingular();
|
||||
if(from4Cache.containsKey(singular)) return from4Cache.get(singular);
|
||||
this.craftingInventory.clear();
|
||||
this.craftingInventory.setInventorySlotContents(0, ingredient.copy());
|
||||
this.craftingInventory.setInventorySlotContents(1, ingredient.copy());
|
||||
this.craftingInventory.setInventorySlotContents(3, ingredient.copy());
|
||||
this.craftingInventory.setInventorySlotContents(4, ingredient.copy());
|
||||
return getMatch(this.craftingInventory);
|
||||
ItemStack match = getMatch(this.craftingInventory);
|
||||
from4Cache.put(singular, match != null ? match.copy() : null);
|
||||
return match;
|
||||
}
|
||||
|
||||
public ItemStack getFrom9(ItemStack ingredient) {
|
||||
ComparableStack singular = new ComparableStack(ingredient).makeSingular();
|
||||
if(from9Cache.containsKey(singular)) return from9Cache.get(singular);
|
||||
this.craftingInventory.clear();
|
||||
for(int i = 0; i < 9; i++) this.craftingInventory.setInventorySlotContents(i, ingredient.copy());
|
||||
return getMatch(this.craftingInventory);
|
||||
ItemStack match = getMatch(this.craftingInventory);
|
||||
from9Cache.put(singular, match != null ? match.copy() : null);
|
||||
return match;
|
||||
}
|
||||
|
||||
public ItemStack getMatch(InventoryCrafting grid) {
|
||||
|
||||
@ -15,6 +15,7 @@ import com.hbm.packet.LoopedSoundPacket;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
import com.hbm.util.BufferUtil;
|
||||
import com.hbm.util.CompatEnergyControl;
|
||||
import com.hbm.util.InventoryUtil;
|
||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||
@ -25,6 +26,7 @@ import api.hbm.tile.IInfoProviderEC;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -168,19 +170,6 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
|
||||
return false;
|
||||
}
|
||||
|
||||
public void networkUnpack(NBTTagCompound data) {
|
||||
super.networkUnpack(data);
|
||||
|
||||
this.power = data.getLong("power");
|
||||
this.progress = data.getInteger("progress");
|
||||
this.isProgressing = data.getBoolean("isProgressing");
|
||||
this.inputTank.setTankType(PseudoFluidType.types.get(data.getString("inputType")));
|
||||
this.outputTank.setTankType(PseudoFluidType.types.get(data.getString("outputType")));
|
||||
this.inputTank.setFill(data.getInteger("inputFill"));
|
||||
this.outputTank.setFill(data.getInteger("outputFill"));
|
||||
this.tank.readFromNBT(data, "t");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
@ -234,21 +223,42 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
|
||||
}
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", power);
|
||||
data.setInteger("progress", progress);
|
||||
data.setBoolean("isProgressing", isProgressing);
|
||||
data.setInteger("inputFill", inputTank.getFill());
|
||||
data.setInteger("outputFill", outputTank.getFill());
|
||||
data.setString("inputType", inputTank.getTankType().name);
|
||||
data.setString("outputType", outputTank.getTankType().name);
|
||||
tank.writeToNBT(data, "t");
|
||||
this.networkPack(data, 50);
|
||||
this.networkPackNT(50);
|
||||
|
||||
PacketDispatcher.wrapper.sendToAllAround(new LoopedSoundPacket(xCoord, yCoord, zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeLong(power);
|
||||
buf.writeInt(progress);
|
||||
buf.writeBoolean(isProgressing);
|
||||
//pseudofluids can be refactored another day
|
||||
buf.writeInt(inputTank.getFill());
|
||||
buf.writeInt(outputTank.getFill());
|
||||
BufferUtil.writeString(buf, inputTank.getTankType().name); //cough cough
|
||||
BufferUtil.writeString(buf, outputTank.getTankType().name);
|
||||
|
||||
tank.serialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
power = buf.readLong();
|
||||
progress = buf.readInt();
|
||||
isProgressing = buf.readBoolean();
|
||||
|
||||
inputTank.setFill(buf.readInt());
|
||||
outputTank.setFill(buf.readInt());
|
||||
inputTank.setTankType(PseudoFluidType.types.get(BufferUtil.readString(buf)));
|
||||
outputTank.setTankType(PseudoFluidType.types.get(BufferUtil.readString(buf)));
|
||||
|
||||
tank.deserialize(buf);
|
||||
}
|
||||
|
||||
private void updateConnections() {
|
||||
for(DirPos pos : getConPos()) {
|
||||
this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
|
||||
@ -25,6 +25,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -121,7 +122,7 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB
|
||||
for(int i = 0; i < 3; i++) {
|
||||
tanks[i].writeToNBT(data, i + "");
|
||||
}
|
||||
this.networkPack(data, 50);
|
||||
this.networkPackNT(50);
|
||||
|
||||
} else {
|
||||
|
||||
@ -137,6 +138,30 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeLong(power);
|
||||
buf.writeInt(processTime);
|
||||
buf.writeInt(progress);
|
||||
buf.writeInt(recipeIndex);
|
||||
buf.writeBoolean(wasOn);
|
||||
|
||||
for(int i = 0; i < tanks.length; i++) tanks[i].serialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
power = buf.readLong();
|
||||
processTime = buf.readInt();
|
||||
progress = buf.readInt();
|
||||
recipeIndex = buf.readInt();
|
||||
wasOn = buf.readBoolean();
|
||||
|
||||
for(int i = 0; i < tanks.length; i++) tanks[i].deserialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
|
||||
@ -0,0 +1,41 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.inventory.container.ContainerOreSlopper;
|
||||
import com.hbm.inventory.gui.GUIOreSlopper;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class TileEntityMachineOreSlopper extends TileEntityMachineBase implements IGUIProvider {
|
||||
|
||||
public TileEntityMachineOreSlopper() {
|
||||
super(11);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "container.machineOreSlopper";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerOreSlopper(player.inventory, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new GUIOreSlopper(player.inventory, this);
|
||||
}
|
||||
}
|
||||
@ -24,6 +24,7 @@ import api.hbm.fluid.IFluidStandardReceiver;
|
||||
import api.hbm.tile.IInfoProviderEC;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -126,15 +127,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement
|
||||
this.power += this.powerGen;
|
||||
if(this.power > this.maxPower) this.power = this.maxPower;
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", power);
|
||||
data.setInteger("burnTime", burnTime);
|
||||
data.setInteger("powerGen", powerGen);
|
||||
data.setInteger("maxBurnTime", maxBurnTime);
|
||||
data.setBoolean("isOn", isOn);
|
||||
data.setBoolean("liquidBurn", liquidBurn);
|
||||
tank.writeToNBT(data, "t");
|
||||
this.networkPack(data, 25);
|
||||
this.networkPackNT(25);
|
||||
} else {
|
||||
|
||||
if(powerGen > 0) {
|
||||
@ -145,6 +138,32 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeLong(power);
|
||||
buf.writeInt(burnTime);
|
||||
buf.writeInt(powerGen);
|
||||
buf.writeInt(maxBurnTime);
|
||||
buf.writeBoolean(isOn);
|
||||
buf.writeBoolean(liquidBurn);
|
||||
|
||||
tank.serialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
power = buf.readLong();
|
||||
burnTime = buf.readInt();
|
||||
powerGen = buf.readInt();
|
||||
maxBurnTime = buf.readInt();
|
||||
isOn = buf.readBoolean();
|
||||
liquidBurn = buf.readBoolean();
|
||||
|
||||
tank.deserialize(buf);
|
||||
}
|
||||
|
||||
private DirPos[] getConPos() {
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
@ -153,20 +172,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement
|
||||
new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite())
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
super.networkUnpack(nbt);
|
||||
|
||||
this.power = nbt.getLong("power");
|
||||
this.powerGen = nbt.getInteger("powerGen");
|
||||
this.burnTime = nbt.getInteger("burnTime");
|
||||
this.maxBurnTime = nbt.getInteger("maxBurnTime");
|
||||
this.isOn = nbt.getBoolean("isOn");
|
||||
this.liquidBurn = nbt.getBoolean("liquidBurn");
|
||||
tank.readFromNBT(nbt, "t");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
|
||||
@ -15,6 +15,7 @@ import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
import com.hbm.util.BufferUtil;
|
||||
import com.hbm.util.CompatEnergyControl;
|
||||
import com.hbm.util.InventoryUtil;
|
||||
import com.hbm.util.WeightedRandomObject;
|
||||
@ -23,6 +24,7 @@ import api.hbm.fluid.IFluidStandardReceiver;
|
||||
import api.hbm.tile.IInfoProviderEC;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -84,38 +86,42 @@ public class TileEntitySILEX extends TileEntityMachineBase implements IFluidAcce
|
||||
if(currentFill <= 0) {
|
||||
current = null;
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setInteger("fill", currentFill);
|
||||
data.setInteger("progress", progress);
|
||||
data.setString("mode", mode.toString());
|
||||
|
||||
if(this.current != null) {
|
||||
data.setInteger("item", Item.getIdFromItem(this.current.item));
|
||||
data.setInteger("meta", this.current.meta);
|
||||
}
|
||||
|
||||
tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
||||
this.networkPack(data, 50);
|
||||
|
||||
this.networkPackNT(50);
|
||||
|
||||
this.mode = EnumWavelengths.NULL;
|
||||
}
|
||||
}
|
||||
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
super.networkUnpack(nbt);
|
||||
|
||||
this.currentFill = nbt.getInteger("fill");
|
||||
this.progress = nbt.getInteger("progress");
|
||||
this.mode = EnumWavelengths.valueOf(nbt.getString("mode"));
|
||||
|
||||
if(this.currentFill > 0) {
|
||||
this.current = new ComparableStack(Item.getItemById(nbt.getInteger("item")), 1, nbt.getInteger("meta"));
|
||||
|
||||
} else {
|
||||
this.current = null;
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeInt(currentFill);
|
||||
buf.writeInt(progress);
|
||||
BufferUtil.writeString(buf, mode.toString());
|
||||
|
||||
tank.serialize(buf);
|
||||
|
||||
if(this.current != null) {
|
||||
buf.writeInt(Item.getIdFromItem(this.current.item));
|
||||
buf.writeInt(this.current.meta);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
currentFill = buf.readInt();
|
||||
progress = buf.readInt();
|
||||
mode = EnumWavelengths.valueOf(BufferUtil.readString(buf));
|
||||
|
||||
tank.deserialize(buf);
|
||||
|
||||
if(currentFill > 0) {
|
||||
current = new ComparableStack(Item.getItemById(buf.readInt()), 1, buf.readInt());
|
||||
} else
|
||||
current = null;
|
||||
}
|
||||
|
||||
public void handleButtonPacket(int value, int meta) {
|
||||
|
||||
|
||||
@ -35,9 +35,9 @@ public class TileEntityConverterRfHe extends TileEntityLoadedBase implements IEn
|
||||
@Untested
|
||||
@Override
|
||||
public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) {
|
||||
|
||||
if(recursionBrake)
|
||||
return 0;
|
||||
|
||||
if(this.tileEntityInvalid) return 0;
|
||||
if(recursionBrake) return 0;
|
||||
|
||||
if(simulate)
|
||||
return maxReceive;
|
||||
|
||||
@ -53,6 +53,7 @@ public class ShadyUtil {
|
||||
public static String Adam29Adam29 = "bbae7bfa-0eba-40ac-a0dd-f3b715e73e61";
|
||||
public static String Alcater = "0b399a4a-8545-45a1-be3d-ece70d7d48e9";
|
||||
public static String ege444 = "42ee978c-442a-4cd8-95b6-29e469b6df10";
|
||||
public static String LePeeperSauvage = "433c2bb7-018c-4d51-acfe-27f907432b5e";
|
||||
|
||||
public static final Set<String> hashes = new HashSet();
|
||||
static {
|
||||
|
||||
@ -782,6 +782,7 @@ hbmfluid.tritium=Tritium
|
||||
hbmfluid.uf6=Uranhexafluorid
|
||||
hbmfluid.ultrahotsteam=Ultraverdichteter Dampf
|
||||
hbmfluid.unsaturateds=Ungesättigte Kohlenwasserstoffe
|
||||
hbmfluid.vitriol=Vitriol
|
||||
hbmfluid.wastefluid=Flüssiger Atommüll
|
||||
hbmfluid.wastegas=Gasförmiger Atommüll
|
||||
hbmfluid.water=Wasser
|
||||
@ -1259,6 +1260,38 @@ item.battery_su.name=Einwegbatterie
|
||||
item.battery_su_l.name=Große Einwegbatterie
|
||||
item.battery_trixite.name=Billige Spark-Batterie-Nachmache
|
||||
item.bdcl.name=BDCL
|
||||
item.bedrock_ore.grade.base.name=%s-Bedrockerz
|
||||
item.bedrock_ore.grade.base_roasted.name=Geröstetes %s-Bedrockerz
|
||||
item.bedrock_ore.grade.base_washed.name=Gewaschenes %s-Bedrockerz
|
||||
item.bedrock_ore.grade.primary.name=%s-Bedrockerz, Primärfraktion
|
||||
item.bedrock_ore.grade.primary_roasted.name=%s-Bedrockerz, geröstete Primärfraktion
|
||||
item.bedrock_ore.grade.primary_sulfuric.name=%s-Bedrockerz, schwefelige Primärfraktion
|
||||
item.bedrock_ore.grade.primary_nosulfuric.name=%s-Bedrockerz, geteilte schwefelige Primärfraktion
|
||||
item.bedrock_ore.grade.primary_solvent.name=%s-Bedrockerz, gelöste Primärfraktion
|
||||
item.bedrock_ore.grade.primary_nosolvent.name=%s-Bedrockerz, geteilte gelöste Primärfraktion
|
||||
item.bedrock_ore.grade.primary_rad.name=%s-Bedrockerz, gereinigte Primärfraktion
|
||||
item.bedrock_ore.grade.primary_norad.name=%s-Bedrockerz, geteilte gereinigte Primärfraktion
|
||||
item.bedrock_ore.grade.primary_first.name=%s-Bedrockerz, Primärfraktion, hohe Gewichtung
|
||||
item.bedrock_ore.grade.primary_second.name=%s-Bedrockerz, Primärfraktion, niedrige Gewichtung
|
||||
item.bedrock_ore.grade.crumbs.name=%s-Bedrockerzkrumen
|
||||
item.bedrock_ore.grade.sulfuric_byproduct.name=%s-Bedrockerz, schwefeliges Nebenprodukt
|
||||
item.bedrock_ore.grade.sulfuric_roasted.name=%s-Bedrockerz, geröstetes schwefeliges Nebenprodukt
|
||||
item.bedrock_ore.grade.sulfuric_arc.name=%s-Bedrockerz, gebranntes schwefeliges Nebenprodukt
|
||||
item.bedrock_ore.grade.sulfuric_washed.name=%s-Bedrockerz, gewaschenes schwefeliges Nebenprodukt
|
||||
item.bedrock_ore.grade.solvent_byproduct.name=%s-Bedrockerz, gelöstes Nebenprodukt
|
||||
item.bedrock_ore.grade.solvent_roasted.name=%s-Bedrockerz, geröstetes gelöstes Nebenprodukt
|
||||
item.bedrock_ore.grade.solvent_arc.name=%s-Bedrockerz, gebranntes gelöstes Nebenprodukt
|
||||
item.bedrock_ore.grade.solvent_washed.name=%s-Bedrockerz, gewaschenes gelöstes Nebenprodukt
|
||||
item.bedrock_ore.grade.rad_byproduct.name=%s-Bedrockerz, gereinigtes Nebenprodukt
|
||||
item.bedrock_ore.grade.rad_roasted.name=%s-Bedrockerz, geröstetes gereinigtes Nebenprodukt
|
||||
item.bedrock_ore.grade.rad_arc.name=%s-Bedrockerz, gebranntes gereinigtes Nebenprodukt
|
||||
item.bedrock_ore.grade.rad_washed.name=%s-Bedrockerz, gewaschenes gereinigtes Nebenprodukt
|
||||
item.bedrock_ore.type.actinide.name=Actinoide
|
||||
item.bedrock_ore.type.crystal.name=Kristall
|
||||
item.bedrock_ore.type.heavy.name=Schwermetall
|
||||
item.bedrock_ore.type.light.name=Leichtmetall
|
||||
item.bedrock_ore.type.nonmetal.name=Nichtmetall
|
||||
item.bedrock_ore.type.rare.name=Seltenerden
|
||||
item.beta.name=Beta-Features
|
||||
item.big_sword.name=Großes Schwert
|
||||
item.billet_am_mix.name=Reaktorfähiges Americiumbillet
|
||||
@ -2273,6 +2306,8 @@ item.insert_polonium.name=Poloniumeinlage
|
||||
item.insert_steel.name=Schwere Stahleinlage
|
||||
item.insert_xsapi.name=XSAPI-Einlage
|
||||
item.insert_yharonite.name=Yharoniteinlage
|
||||
item.item_secret.canister.name=Komposit SB-26
|
||||
item.item_secret.controller.name=Proprietäre Steuereinheit
|
||||
item.iv_blood.name=Blutbeutel
|
||||
item.iv_empty.name=Infusionsbeutel
|
||||
item.iv_xp.name=Erfahrungsbeutel
|
||||
@ -2713,6 +2748,7 @@ item.part_copper.name=Kupferstaubkiste
|
||||
item.part_generic.piston_electric.name=Electrischer Kolben
|
||||
item.part_generic.piston_hydraulic.name=Hydraulischer Kolben
|
||||
item.part_generic.piston_pneumatic.name=Pneumatischer Kolben
|
||||
item.part_generic.lde.name=Leichtbauteil
|
||||
item.part_lithium.name=Lithiumstaubkiste
|
||||
item.part_plutonium.name=Plutoniumstaubkiste
|
||||
item.particle_aelectron.name=Positronenkapsel
|
||||
|
||||
@ -1482,6 +1482,7 @@ hbmfluid.tritium=Tritium
|
||||
hbmfluid.uf6=Uranium Hexafluoride
|
||||
hbmfluid.ultrahotsteam=Ultra Dense Steam
|
||||
hbmfluid.unsaturateds=Unsaturated Hydrocarbons
|
||||
hbmfluid.vitriol=Vitriol
|
||||
hbmfluid.wastefluid=Liquid Nuclear Waste
|
||||
hbmfluid.wastegas=Gaseous Nuclear Waste
|
||||
hbmfluid.water=Water
|
||||
@ -1491,8 +1492,6 @@ hbmfluid.xenon=Xenon Gas
|
||||
hbmfluid.xpjuice=Experience Juice
|
||||
hbmfluid.xylene=BTX
|
||||
|
||||
|
||||
|
||||
hbmpseudofluid.none=Empty
|
||||
hbmpseudofluid.heuf6=Highly Enriched UF6
|
||||
hbmpseudofluid.meuf6=Medium Enriched UF6
|
||||
@ -1974,6 +1973,38 @@ item.battery_su.name=SU-Battery
|
||||
item.battery_su_l.name=Large SU-Battery
|
||||
item.battery_trixite.name=Off-Brand Spark Battery
|
||||
item.bdcl.name=BDCL
|
||||
item.bedrock_ore.grade.base.name=%s Bedrock Ore
|
||||
item.bedrock_ore.grade.base_roasted.name=Roasted %s Bedrock Ore
|
||||
item.bedrock_ore.grade.base_washed.name=Washed %s Bedrock Ore
|
||||
item.bedrock_ore.grade.primary.name=%s Bedrock Ore, Primary Fraction
|
||||
item.bedrock_ore.grade.primary_roasted.name=%s Bedrock Ore, Roasted Primary Fraction
|
||||
item.bedrock_ore.grade.primary_sulfuric.name=%s Bedrock Ore, Sulfuric Primary Fraction
|
||||
item.bedrock_ore.grade.primary_nosulfuric.name=%s Bedrock Ore, Separated Sulfuric Primary Fraction
|
||||
item.bedrock_ore.grade.primary_solvent.name=%s Bedrock Ore, Dissolved Primary Fraction
|
||||
item.bedrock_ore.grade.primary_nosolvent.name=%s Bedrock Ore, Separated Dissolved Primary Fraction
|
||||
item.bedrock_ore.grade.primary_rad.name=%s Bedrock Ore, Cleaned Primary Fraction
|
||||
item.bedrock_ore.grade.primary_norad.name=%s Bedrock Ore, Separated Cleaned Primary Fraction
|
||||
item.bedrock_ore.grade.primary_first.name=%s Bedrock Ore, Primary Fraction, Higher Weight
|
||||
item.bedrock_ore.grade.primary_second.name=%s Bedrock Ore, Primary Fraction, Lower Weight
|
||||
item.bedrock_ore.grade.crumbs.name=%s Bedrock Ore Crumbs
|
||||
item.bedrock_ore.grade.sulfuric_byproduct.name=%s Bedrock Ore, Sulfuric Byproduct
|
||||
item.bedrock_ore.grade.sulfuric_roasted.name=%s Bedrock Ore, Roasted Sulfuric Byproduct
|
||||
item.bedrock_ore.grade.sulfuric_arc.name=%s Bedrock Ore, Seared Sulfuric Byproduct
|
||||
item.bedrock_ore.grade.sulfuric_washed.name=%s Bedrock Ore, Washed Sulfuric Byproduct
|
||||
item.bedrock_ore.grade.solvent_byproduct.name=%s Bedrock Ore, Dissolved Byproduct
|
||||
item.bedrock_ore.grade.solvent_roasted.name=%s Bedrock Ore, Roasted Dissolved Byproduct
|
||||
item.bedrock_ore.grade.solvent_arc.name=%s Bedrock Ore, Seared Dissolved Byproduct
|
||||
item.bedrock_ore.grade.solvent_washed.name=%s Bedrock Ore, Washed Dissolved Byproduct
|
||||
item.bedrock_ore.grade.rad_byproduct.name=%s Bedrock Ore, Cleaned Byproduct
|
||||
item.bedrock_ore.grade.rad_roasted.name=%s Bedrock Ore, Roasted Cleaned Byproduct
|
||||
item.bedrock_ore.grade.rad_arc.name=%s Bedrock Ore, Seared Cleaned Byproduct
|
||||
item.bedrock_ore.grade.rad_washed.name=%s Bedrock Ore, Washed Cleaned Byproduct
|
||||
item.bedrock_ore.type.actinide.name=Actinide
|
||||
item.bedrock_ore.type.crystal.name=Crystalline
|
||||
item.bedrock_ore.type.heavy.name=Heavy Metal
|
||||
item.bedrock_ore.type.light.name=Light Metal
|
||||
item.bedrock_ore.type.nonmetal.name=Non-Metal
|
||||
item.bedrock_ore.type.rare.name=Rare Earth
|
||||
item.beta.name=Beta Features
|
||||
item.big_sword.name=Great Sword
|
||||
item.billet_actinium.name=Actinium-227 Billet
|
||||
@ -3081,6 +3112,8 @@ item.insert_polonium.name=Polonium Insert
|
||||
item.insert_steel.name=Heavy Steel Insert
|
||||
item.insert_xsapi.name=XSAPI Insert
|
||||
item.insert_yharonite.name=Yharonite Insert
|
||||
item.item_secret.canister.name=Composition SB-26
|
||||
item.item_secret.controller.name=Proprietary Control Unit
|
||||
item.iv_blood.name=Blood Bag
|
||||
item.iv_empty.name=IV Bag
|
||||
item.iv_xp.name=Experience Bag
|
||||
@ -3540,6 +3573,7 @@ item.part_copper.name=Box of Copper Dust
|
||||
item.part_generic.piston_electric.name=Electric Piston
|
||||
item.part_generic.piston_hydraulic.name=Hydraulic Piston
|
||||
item.part_generic.piston_pneumatic.name=Pneumatic Piston
|
||||
item.part_generic.lde.name=Low-Density Element
|
||||
item.part_lithium.name=Box of Lithium Dust
|
||||
item.part_plutonium.name=Box of Plutonium Dust
|
||||
item.particle_aelectron.name=Positron Capsule
|
||||
|
||||
@ -1,302 +0,0 @@
|
||||
# Blender v2.76 (sub 0) OBJ File: 'launchpad.blend'
|
||||
# www.blender.org
|
||||
o Cylinder
|
||||
v 1.060660 0.250000 -1.060660
|
||||
v 0.000000 0.500000 -1.000000
|
||||
v 1.500000 0.250000 0.000000
|
||||
v 0.707107 0.500000 -0.707107
|
||||
v 1.060660 0.250000 1.060660
|
||||
v 1.000000 0.500000 0.000000
|
||||
v -0.000000 0.250000 1.500000
|
||||
v 0.707107 0.500000 0.707107
|
||||
v -1.060660 0.250000 1.060660
|
||||
v -0.000000 0.500000 1.000000
|
||||
v 0.000000 0.250000 -1.500000
|
||||
v -0.707107 0.500000 0.707107
|
||||
v -1.060660 0.250000 -1.060660
|
||||
v -1.000000 0.500000 -0.000000
|
||||
v -1.500000 0.250000 -0.000000
|
||||
v -0.707107 0.500000 -0.707107
|
||||
v 0.000000 0.250000 -1.000000
|
||||
v 0.707107 0.250000 -0.707107
|
||||
v 1.000000 0.250000 0.000000
|
||||
v 0.707107 0.250000 0.707107
|
||||
v -0.000000 0.250000 1.000000
|
||||
v -0.707107 0.250000 0.707107
|
||||
v -1.000000 0.250000 -0.000000
|
||||
v -0.707107 0.250000 -0.707107
|
||||
v 0.000000 0.000000 -1.500000
|
||||
v 1.060660 0.000000 -1.060660
|
||||
v 1.500000 0.000000 0.000000
|
||||
v 1.060660 0.000000 1.060660
|
||||
v -0.000000 0.000000 1.500000
|
||||
v -1.060660 0.000000 1.060660
|
||||
v -1.500000 0.000000 -0.000000
|
||||
v -1.060660 0.000000 -1.060660
|
||||
v -0.500000 0.000000 2.000000
|
||||
v 0.500000 0.000000 2.000000
|
||||
v -0.500000 0.000000 -2.000000
|
||||
v 0.500000 0.000000 -2.000000
|
||||
v -0.500000 0.125000 -2.000000
|
||||
v 0.500000 0.125000 -2.000000
|
||||
v -0.500000 0.475000 -0.750000
|
||||
v 0.500000 0.475000 -0.750000
|
||||
v -0.500000 0.475000 0.750000
|
||||
v 0.500000 0.475000 0.750000
|
||||
v 0.500000 0.125000 2.000000
|
||||
v -0.500000 0.125000 2.000000
|
||||
v -0.500000 0.100000 0.750000
|
||||
v 0.500000 0.100000 0.750000
|
||||
v -0.500000 0.100000 -0.750000
|
||||
v 0.500000 0.100000 -0.750000
|
||||
v 2.000000 0.000000 0.500000
|
||||
v 2.000000 0.000000 -0.500000
|
||||
v -2.000000 0.000000 0.500000
|
||||
v -2.000000 0.000000 -0.500000
|
||||
v -2.000000 0.125000 0.500000
|
||||
v -2.000000 0.125000 -0.500000
|
||||
v -0.750000 0.475000 0.500000
|
||||
v -0.750000 0.475000 -0.500000
|
||||
v 0.750000 0.475000 0.500000
|
||||
v 0.750000 0.475000 -0.500000
|
||||
v 2.000000 0.125000 -0.500000
|
||||
v 2.000000 0.125000 0.500000
|
||||
v 0.750000 0.100000 0.500000
|
||||
v 0.750000 0.100000 -0.500000
|
||||
v -0.750000 0.100000 0.500000
|
||||
v -0.750000 0.100000 -0.500000
|
||||
vt 0.679427 0.603288
|
||||
vt 0.736986 0.545729
|
||||
vt 0.755787 0.564530
|
||||
vt 0.736986 0.464329
|
||||
vt 0.763575 0.464329
|
||||
vt 0.679428 0.406770
|
||||
vt 0.698229 0.387969
|
||||
vt 0.598027 0.406770
|
||||
vt 0.598027 0.380181
|
||||
vt 0.540468 0.464329
|
||||
vt 0.521667 0.445528
|
||||
vt 0.540468 0.545729
|
||||
vt 0.513879 0.545729
|
||||
vt 0.598027 0.603288
|
||||
vt 0.679427 0.629877
|
||||
vt 0.579226 0.622089
|
||||
vt 0.371403 0.064091
|
||||
vt 0.370621 0.122777
|
||||
vt 0.246818 0.069553
|
||||
vt 0.028468 0.292851
|
||||
vt 0.071192 0.251063
|
||||
vt 0.122297 0.378412
|
||||
vt 0.289175 0.473320
|
||||
vt 0.246967 0.432446
|
||||
vt 0.370760 0.378824
|
||||
vt 0.456943 0.213084
|
||||
vt 0.412191 0.251217
|
||||
vt 0.204262 0.028468
|
||||
vt 0.122271 0.123726
|
||||
vt 0.028468 0.209288
|
||||
vt 0.062521 0.124396
|
||||
vt 0.121333 0.437581
|
||||
vt 0.143605 0.355918
|
||||
vt 0.245661 0.401664
|
||||
vt 0.429011 0.374227
|
||||
vt 0.552285 0.820181
|
||||
vt 0.552285 0.686813
|
||||
vt 0.658640 0.686813
|
||||
vt 0.346906 0.359230
|
||||
vt 0.145516 0.144219
|
||||
vt 0.102263 0.249691
|
||||
vt 0.382068 0.252292
|
||||
vt 0.248398 0.100332
|
||||
vt 0.348830 0.144590
|
||||
vt 0.898743 0.686813
|
||||
vt 0.898743 0.820181
|
||||
vt 0.792388 0.820181
|
||||
vt 0.658640 0.971532
|
||||
vt 0.552285 0.971532
|
||||
vt 0.552285 0.833475
|
||||
vt 0.898743 0.833475
|
||||
vt 0.792388 0.833475
|
||||
vt 0.898743 0.971532
|
||||
vt 0.658640 0.833475
|
||||
vt 0.792388 0.971532
|
||||
vt 0.753982 0.960778
|
||||
vt 0.937149 0.960778
|
||||
vt 0.513879 0.960778
|
||||
vt 0.539483 0.829891
|
||||
vt 0.671442 0.829891
|
||||
vt 0.697046 0.960778
|
||||
vt 0.413332 0.663908
|
||||
vt 0.306977 0.663908
|
||||
vt 0.306977 0.530539
|
||||
vt 0.066874 0.530539
|
||||
vt 0.173229 0.530539
|
||||
vt 0.173229 0.663908
|
||||
vt 0.413332 0.815259
|
||||
vt 0.306977 0.815259
|
||||
vt 0.306977 0.677202
|
||||
vt 0.066874 0.663908
|
||||
vt 0.173229 0.677202
|
||||
vt 0.066874 0.815259
|
||||
vt 0.066874 0.677202
|
||||
vt 0.413332 0.677202
|
||||
vt 0.028468 0.804505
|
||||
vt 0.211635 0.804505
|
||||
vt 0.173229 0.815259
|
||||
vt 0.268571 0.804505
|
||||
vt 0.294175 0.673617
|
||||
vt 0.426134 0.673617
|
||||
vt 0.451738 0.804505
|
||||
vt 0.722318 0.323245
|
||||
vt 0.513879 0.236907
|
||||
vt 0.600218 0.028468
|
||||
vt 0.698228 0.622089
|
||||
vt 0.763575 0.545729
|
||||
vt 0.755787 0.445528
|
||||
vt 0.679428 0.380181
|
||||
vt 0.579226 0.387969
|
||||
vt 0.513880 0.464329
|
||||
vt 0.598027 0.629877
|
||||
vt 0.521667 0.564530
|
||||
vt 0.288867 0.028609
|
||||
vt 0.062538 0.377750
|
||||
vt 0.371704 0.437572
|
||||
vt 0.429230 0.127457
|
||||
vt 0.121231 0.064583
|
||||
vt 0.204447 0.473603
|
||||
vt 0.456631 0.289155
|
||||
vt 0.658640 0.820181
|
||||
vt 0.792388 0.686813
|
||||
vt 0.779586 0.829891
|
||||
vt 0.911545 0.829891
|
||||
vt 0.413332 0.530539
|
||||
vt 0.054072 0.673618
|
||||
vt 0.186031 0.673618
|
||||
vt 0.722318 0.028468
|
||||
vt 0.808657 0.114806
|
||||
vt 0.808657 0.236907
|
||||
vt 0.600218 0.323245
|
||||
vt 0.513879 0.114806
|
||||
vn 0.382700 0.000000 -0.923900
|
||||
vn 0.923900 0.000000 -0.382700
|
||||
vn 0.923900 0.000000 0.382700
|
||||
vn 0.382700 0.000000 0.923900
|
||||
vn -0.382700 0.000000 0.923900
|
||||
vn -0.923900 0.000000 0.382700
|
||||
vn 0.000000 1.000000 -0.000000
|
||||
vn -0.382700 0.000000 -0.923900
|
||||
vn -0.923900 0.000000 -0.382700
|
||||
vn 0.000000 -0.996800 0.079700
|
||||
vn 0.000000 -0.996800 -0.079700
|
||||
vn 0.000000 0.963000 -0.269600
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn 0.000000 0.963000 0.269600
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.079700 -0.996800 0.000000
|
||||
vn -0.079700 -0.996800 -0.000000
|
||||
vn -0.269600 0.963000 -0.000000
|
||||
vn 0.269600 0.963000 0.000000
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
s off
|
||||
f 2/1/1 4/2/1 18/3/1
|
||||
f 4/2/2 6/4/2 19/5/2
|
||||
f 6/4/3 8/6/3 20/7/3
|
||||
f 8/6/4 10/8/4 21/9/4
|
||||
f 10/8/5 12/10/5 22/11/5
|
||||
f 12/10/6 14/12/6 23/13/6
|
||||
f 14/12/7 8/6/7 6/4/7
|
||||
f 16/14/8 2/1/8 17/15/8
|
||||
f 14/12/9 16/14/9 24/16/9
|
||||
f 17/17/7 11/18/7 13/19/7
|
||||
f 22/20/7 9/21/7 7/22/7
|
||||
f 20/23/7 5/24/7 3/25/7
|
||||
f 18/26/7 1/27/7 11/18/7
|
||||
f 24/28/7 13/19/7 15/29/7
|
||||
f 22/30/7 23/31/7 15/29/7
|
||||
f 21/32/7 7/22/7 5/24/7
|
||||
f 7/22/4 29/33/4 28/34/4
|
||||
f 19/35/7 3/25/7 1/27/7
|
||||
f 36/36/10 48/37/10 47/38/10
|
||||
f 5/24/3 28/34/3 27/39/3
|
||||
f 15/29/6 31/40/6 30/41/6
|
||||
f 9/21/5 30/41/5 29/33/5
|
||||
f 3/25/2 27/39/2 26/42/2
|
||||
f 13/19/9 32/43/9 31/40/9
|
||||
f 1/27/1 26/42/1 25/44/1
|
||||
f 11/18/8 25/44/8 32/43/8
|
||||
f 46/45/11 34/46/11 33/47/11
|
||||
f 39/48/12 40/49/12 38/50/12
|
||||
f 33/47/13 34/46/13 43/51/13
|
||||
f 44/52/14 43/51/14 42/53/14
|
||||
f 37/54/15 38/50/15 36/36/15
|
||||
f 44/52/16 41/55/16 45/56/16
|
||||
f 46/57/17 42/53/17 43/51/17
|
||||
f 48/58/17 36/59/17 38/50/17
|
||||
f 37/54/16 35/60/16 47/61/16
|
||||
f 51/62/18 52/63/18 64/64/18
|
||||
f 61/65/19 62/66/19 50/67/19
|
||||
f 55/68/20 56/69/20 54/70/20
|
||||
f 49/71/17 50/67/17 59/72/17
|
||||
f 57/73/21 60/74/21 59/72/21
|
||||
f 53/75/16 54/70/16 52/63/16
|
||||
f 60/74/13 57/73/13 61/76/13
|
||||
f 62/77/15 58/78/15 59/72/15
|
||||
f 64/79/15 52/80/15 54/70/15
|
||||
f 53/75/13 51/81/13 63/82/13
|
||||
f 28/83/22 30/84/22 32/85/22
|
||||
f 17/86/1 2/1/1 18/3/1
|
||||
f 18/87/2 4/2/2 19/5/2
|
||||
f 19/88/3 6/4/3 20/7/3
|
||||
f 20/89/4 8/6/4 21/9/4
|
||||
f 21/90/5 10/8/5 22/11/5
|
||||
f 22/91/6 12/10/6 23/13/6
|
||||
f 6/4/7 4/2/7 2/1/7
|
||||
f 2/1/7 16/14/7 6/4/7
|
||||
f 14/12/7 12/10/7 10/8/7
|
||||
f 10/8/7 8/6/7 14/12/7
|
||||
f 6/4/7 16/14/7 14/12/7
|
||||
f 24/92/8 16/14/8 17/15/8
|
||||
f 23/93/9 14/12/9 24/16/9
|
||||
f 24/94/7 17/17/7 13/19/7
|
||||
f 21/95/7 22/20/7 7/22/7
|
||||
f 19/96/7 20/23/7 3/25/7
|
||||
f 17/97/7 18/26/7 11/18/7
|
||||
f 23/98/7 24/28/7 15/29/7
|
||||
f 9/21/7 22/30/7 15/29/7
|
||||
f 20/99/7 21/32/7 5/24/7
|
||||
f 5/24/4 7/22/4 28/34/4
|
||||
f 18/100/7 19/35/7 1/27/7
|
||||
f 35/101/10 36/36/10 47/38/10
|
||||
f 3/25/3 5/24/3 27/39/3
|
||||
f 9/21/6 15/29/6 30/41/6
|
||||
f 7/22/5 9/21/5 29/33/5
|
||||
f 1/27/2 3/25/2 26/42/2
|
||||
f 15/29/9 13/19/9 31/40/9
|
||||
f 11/18/1 1/27/1 25/44/1
|
||||
f 13/19/8 11/18/8 32/43/8
|
||||
f 45/102/11 46/45/11 33/47/11
|
||||
f 37/54/12 39/48/12 38/50/12
|
||||
f 44/52/13 33/47/13 43/51/13
|
||||
f 41/55/14 44/52/14 42/53/14
|
||||
f 35/101/15 37/54/15 36/36/15
|
||||
f 33/103/16 44/52/16 45/56/16
|
||||
f 34/104/17 46/57/17 43/51/17
|
||||
f 40/49/17 48/58/17 38/50/17
|
||||
f 39/48/16 37/54/16 47/61/16
|
||||
f 63/105/18 51/62/18 64/64/18
|
||||
f 49/71/19 61/65/19 50/67/19
|
||||
f 53/75/20 55/68/20 54/70/20
|
||||
f 60/74/17 49/71/17 59/72/17
|
||||
f 58/78/21 57/73/21 59/72/21
|
||||
f 51/62/16 53/75/16 52/63/16
|
||||
f 49/106/13 60/74/13 61/76/13
|
||||
f 50/107/15 62/77/15 59/72/15
|
||||
f 56/69/15 64/79/15 54/70/15
|
||||
f 55/68/13 53/75/13 63/82/13
|
||||
f 32/85/22 25/108/22 26/109/22
|
||||
f 26/109/22 27/110/22 28/83/22
|
||||
f 28/83/22 29/111/22 30/84/22
|
||||
f 30/84/22 31/112/22 32/85/22
|
||||
f 32/85/22 26/109/22 28/83/22
|
||||
447
src/main/resources/assets/hbm/models/armor/tail_peep.obj
Normal file
447
src/main/resources/assets/hbm/models/armor/tail_peep.obj
Normal file
@ -0,0 +1,447 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
o FaggyAssFuckingTailThing
|
||||
v -0.627682 10.005125 -0.450454
|
||||
v -0.000123 11.075396 0.277636
|
||||
v -0.000084 10.418571 -0.643246
|
||||
v 0.627711 10.005373 -0.450569
|
||||
v 0.798890 10.572883 0.567761
|
||||
v 0.388113 9.285591 -0.074662
|
||||
v -0.493534 9.759312 1.037476
|
||||
v -0.000153 10.383696 3.486781
|
||||
v -0.814369 10.383530 3.486841
|
||||
v -0.000151 9.759405 1.037423
|
||||
v -0.000151 9.285519 -0.074620
|
||||
v -0.387763 9.285445 -0.074578
|
||||
v -0.798885 10.572582 0.567935
|
||||
v 1.318130 11.840109 2.956691
|
||||
v 1.303919 10.780759 6.464269
|
||||
v 0.814971 10.383862 3.486721
|
||||
v -0.000243 12.739786 2.629235
|
||||
v -1.318200 11.839571 2.956887
|
||||
v 0.493946 9.759499 1.037369
|
||||
v -1.303027 10.780201 6.464366
|
||||
v -0.000150 9.794444 9.202967
|
||||
v -1.563645 9.794115 9.202877
|
||||
v -2.109154 13.221715 6.033862
|
||||
v -0.000424 14.731211 5.767698
|
||||
v -0.000150 10.780479 6.464317
|
||||
v 2.108972 13.222614 6.033704
|
||||
v -3.037204 8.839604 13.587263
|
||||
v -2.530998 12.667759 9.972871
|
||||
v -0.000522 14.444422 10.448926
|
||||
v 2.530752 12.668819 9.973157
|
||||
v 1.564689 9.794771 9.203056
|
||||
v -0.000772 3.865773 18.280907
|
||||
v -0.000633 10.105603 15.395302
|
||||
v 3.036897 8.840356 13.588348
|
||||
v 1.877619 6.792392 10.663549
|
||||
v -0.000148 6.792160 10.663214
|
||||
v -1.876381 6.791927 10.662880
|
||||
v 4.008683 -1.231076 17.008335
|
||||
v 3.644264 3.180661 15.724039
|
||||
v -0.000157 2.071596 11.584938
|
||||
v -2.251669 2.071471 11.584467
|
||||
v -3.644658 3.180254 15.722511
|
||||
v 2.253131 2.071720 11.585409
|
||||
v -0.000585 -5.243139 19.012844
|
||||
v 2.806094 -5.420787 16.982361
|
||||
v -2.476843 -1.641940 12.312111
|
||||
v -4.009130 -1.231225 17.006601
|
||||
v 2.478435 -1.641846 12.313181
|
||||
v -0.000858 -0.977296 19.909027
|
||||
v -0.000141 -1.641892 12.312647
|
||||
v 0.520518 -6.788428 15.666166
|
||||
v 1.734920 -5.708327 13.695753
|
||||
v -1.733776 -5.708388 13.695004
|
||||
v -2.806377 -5.420892 16.981148
|
||||
v -0.000133 -6.788437 15.666052
|
||||
v 0.841869 -6.702163 16.652149
|
||||
v -0.000133 -6.648875 17.261292
|
||||
v -0.841870 -6.702197 16.651783
|
||||
v -0.000135 -5.708357 13.695379
|
||||
v -0.520090 -6.788447 15.665939
|
||||
vt 0.710651 0.397343
|
||||
vt 0.673447 0.425869
|
||||
vt 0.686110 0.391250
|
||||
vt 0.640510 0.034849
|
||||
vt 0.603308 0.006319
|
||||
vt 0.627849 0.000228
|
||||
vt 0.752962 0.426119
|
||||
vt 0.711107 0.401105
|
||||
vt 0.736879 0.391250
|
||||
vt 0.932680 0.039627
|
||||
vt 0.948768 0.122001
|
||||
vt 0.922233 0.122004
|
||||
vt 0.961407 0.000228
|
||||
vt 0.948759 0.039625
|
||||
vt 0.948753 0.000230
|
||||
vt 0.952761 0.401105
|
||||
vt 0.910907 0.426121
|
||||
vt 0.926989 0.391250
|
||||
vt 0.655952 0.797121
|
||||
vt 0.676401 0.823580
|
||||
vt 0.663769 0.823582
|
||||
vt 0.790100 0.507814
|
||||
vt 0.746990 0.619172
|
||||
vt 0.738502 0.520352
|
||||
vt 0.609711 0.044182
|
||||
vt 0.672570 0.123097
|
||||
vt 0.620455 0.133276
|
||||
vt 0.940524 0.438709
|
||||
vt 0.873772 0.507814
|
||||
vt 0.704244 0.435206
|
||||
vt 0.641379 0.514115
|
||||
vt 0.723345 0.438709
|
||||
vt 0.906315 0.219899
|
||||
vt 0.948774 0.314756
|
||||
vt 0.897820 0.314756
|
||||
vt 0.687894 0.637069
|
||||
vt 0.603308 0.629110
|
||||
vt 0.948776 0.219895
|
||||
vt 0.626049 0.246054
|
||||
vt 0.916885 0.619168
|
||||
vt 0.832166 0.612780
|
||||
vt 0.819888 0.129973
|
||||
vt 0.737083 0.000228
|
||||
vt 0.897348 0.063686
|
||||
vt 0.703938 0.390793
|
||||
vt 0.603308 0.374429
|
||||
vt 0.856460 0.740857
|
||||
vt 0.807406 0.740873
|
||||
vt 0.711107 0.707398
|
||||
vt 0.610024 0.781808
|
||||
vt 0.547346 0.239308
|
||||
vt 0.393707 0.049939
|
||||
vt 0.602852 0.130282
|
||||
vt 0.819901 0.231924
|
||||
vt 0.737074 0.361669
|
||||
vt 0.711092 0.242118
|
||||
vt 0.884411 0.981518
|
||||
vt 0.711107 0.859180
|
||||
vt 0.923667 0.887428
|
||||
vt 0.711092 0.180923
|
||||
vt 0.711092 0.119777
|
||||
vt 0.910366 0.786348
|
||||
vt 0.743952 0.741330
|
||||
vt 0.393706 0.771551
|
||||
vt 0.208303 0.661960
|
||||
vt 0.355061 0.629918
|
||||
vt 0.494347 0.349574
|
||||
vt 0.337604 0.410716
|
||||
vt 0.337605 0.337340
|
||||
vt 0.547358 0.582179
|
||||
vt 0.355064 0.191572
|
||||
vt 0.494355 0.471915
|
||||
vt 0.337604 0.484150
|
||||
vt 0.092732 0.820324
|
||||
vt 0.074194 0.708811
|
||||
vt 0.214393 0.328358
|
||||
vt 0.206875 0.167042
|
||||
vt 0.214386 0.493131
|
||||
vt 0.208315 0.159535
|
||||
vt 0.234787 0.000228
|
||||
vt 0.214281 0.410714
|
||||
vt 0.214285 0.329999
|
||||
vt 0.068166 0.623727
|
||||
vt 0.001808 0.553219
|
||||
vt 0.073433 0.510806
|
||||
vt 0.073441 0.310677
|
||||
vt 0.068178 0.197756
|
||||
vt 0.206862 0.654446
|
||||
vt 0.092733 0.001179
|
||||
vt 0.074307 0.354217
|
||||
vt 0.613282 0.823429
|
||||
vt 0.623242 0.782265
|
||||
vt 0.655495 0.792745
|
||||
vt 0.018317 0.059452
|
||||
vt 0.023876 0.025998
|
||||
vt 0.074305 0.410716
|
||||
vt 0.001068 0.393780
|
||||
vt 0.018313 0.762053
|
||||
vt 0.001815 0.268262
|
||||
vt 0.000237 0.234386
|
||||
vt 0.655495 0.826658
|
||||
vt 0.623242 0.837137
|
||||
vt 0.214278 0.491490
|
||||
vt 0.696873 0.797121
|
||||
vt 0.689055 0.823582
|
||||
vt 0.964861 0.039622
|
||||
vt 0.975332 0.121997
|
||||
vt 0.001067 0.427694
|
||||
vt 0.001067 0.410726
|
||||
vt 0.074302 0.467260
|
||||
vt 0.991275 0.219891
|
||||
vt 0.936121 0.000232
|
||||
vt 0.999772 0.314756
|
||||
vt 0.676413 0.782265
|
||||
vt 0.831709 0.612784
|
||||
vt 0.925371 0.520351
|
||||
vt 0.693494 0.524297
|
||||
vt 0.710635 0.238095
|
||||
vt 0.952761 0.707388
|
||||
vt 0.710651 0.765428
|
||||
vt 0.897364 0.298208
|
||||
vt 0.712040 0.981518
|
||||
vt 0.819894 0.180926
|
||||
vt 0.234786 0.821264
|
||||
vt 0.494351 0.410719
|
||||
vt 0.602852 0.691211
|
||||
vt 0.000228 0.587095
|
||||
vt 0.074203 0.112694
|
||||
vt 0.603308 0.809701
|
||||
vt 0.023875 0.795507
|
||||
vn -0.5837 0.6621 -0.4701
|
||||
vn -0.5883 0.6607 -0.4663
|
||||
vn -0.5815 0.6623 -0.4724
|
||||
vn 0.5878 0.6613 -0.4661
|
||||
vn 0.5833 0.6623 -0.4702
|
||||
vn 0.5811 0.6626 -0.4726
|
||||
vn 0.9469 -0.3196 0.0349
|
||||
vn 0.9480 -0.3169 0.0288
|
||||
vn 0.9507 -0.3098 0.0128
|
||||
vn 0.0002 -0.9690 0.2470
|
||||
vn 0.0002 -0.9200 0.3920
|
||||
vn -0.9479 -0.3172 0.0290
|
||||
vn -0.9468 -0.3199 0.0351
|
||||
vn -0.9506 -0.3101 0.0130
|
||||
vn 0.0169 -0.4513 -0.8922
|
||||
vn 0.0088 -0.4569 -0.8895
|
||||
vn -0.0000 -0.4629 -0.8864
|
||||
vn 0.9333 -0.3447 -0.1003
|
||||
vn 0.9368 -0.3359 -0.0977
|
||||
vn 0.9276 -0.3586 -0.1045
|
||||
vn 0.5865 0.6617 -0.4671
|
||||
vn 0.5760 0.6649 -0.4756
|
||||
vn 0.5731 0.6659 -0.4778
|
||||
vn -0.9358 -0.3518 -0.0208
|
||||
vn -0.9386 -0.3435 -0.0310
|
||||
vn -0.9336 -0.3581 -0.0130
|
||||
vn -0.5869 0.6613 -0.4671
|
||||
vn -0.5764 0.6646 -0.4755
|
||||
vn 0.9360 -0.3514 -0.0210
|
||||
vn 0.9388 -0.3432 -0.0311
|
||||
vn 0.9403 -0.3384 -0.0370
|
||||
vn 0.0002 -0.9409 -0.3388
|
||||
vn -0.5692 0.6881 -0.4500
|
||||
vn -0.5630 0.6951 -0.4471
|
||||
vn -0.5578 0.7008 -0.4447
|
||||
vn 0.0002 -0.9912 0.1321
|
||||
vn 0.5689 0.6883 -0.4501
|
||||
vn 0.5626 0.6953 -0.4472
|
||||
vn 0.5765 0.6797 -0.4535
|
||||
vn -0.9332 -0.3451 -0.1002
|
||||
vn -0.9367 -0.3363 -0.0975
|
||||
vn -0.9402 -0.3271 -0.0947
|
||||
vn -0.9259 -0.1545 -0.3448
|
||||
vn -0.9311 -0.1294 -0.3411
|
||||
vn -0.9114 -0.2123 -0.3525
|
||||
vn 0.5780 0.8145 0.0508
|
||||
vn 0.5788 0.8138 0.0514
|
||||
vn 0.5800 0.8129 0.0522
|
||||
vn -0.9378 -0.3064 -0.1634
|
||||
vn -0.9396 -0.2981 -0.1685
|
||||
vn -0.9313 -0.3334 -0.1466
|
||||
vn 0.9379 -0.3060 -0.1633
|
||||
vn 0.9397 -0.2977 -0.1684
|
||||
vn 0.9453 -0.2678 -0.1864
|
||||
vn -0.5783 0.8142 0.0507
|
||||
vn -0.5792 0.8136 0.0513
|
||||
vn -0.5772 0.8151 0.0499
|
||||
vn -0.5820 0.3412 0.7381
|
||||
vn -0.5821 0.3411 0.7381
|
||||
vn -0.5819 0.3414 0.7382
|
||||
vn 0.9260 -0.1543 -0.3445
|
||||
vn 0.9312 -0.1292 -0.3407
|
||||
vn 0.9420 -0.0622 -0.3298
|
||||
vn -0.5565 0.6203 0.5528
|
||||
vn -0.5681 0.6094 0.5531
|
||||
vn -0.5461 0.6298 0.5524
|
||||
vn 0.0002 -0.4374 -0.8993
|
||||
vn 0.5562 0.6204 0.5529
|
||||
vn 0.5677 0.6096 0.5532
|
||||
vn 0.5787 0.5991 0.5534
|
||||
vn 0.5814 0.2653 0.7692
|
||||
vn 0.5812 0.2651 0.7694
|
||||
vn 0.5864 0.2707 0.7634
|
||||
vn 0.0002 -0.1916 -0.9815
|
||||
vn 0.0002 -0.1920 -0.9814
|
||||
vn 0.5817 0.3413 0.7384
|
||||
vn 0.5818 0.3412 0.7383
|
||||
vn 0.5820 0.3410 0.7383
|
||||
vn -0.9408 -0.0140 -0.3388
|
||||
vn -0.9427 -0.0059 -0.3337
|
||||
vn -0.9363 -0.0314 -0.3497
|
||||
vn 0.9409 -0.0139 -0.3384
|
||||
vn 0.9428 -0.0058 -0.3333
|
||||
vn 0.9468 0.0125 -0.3216
|
||||
vn 0.5707 -0.1688 0.8036
|
||||
vn -0.9497 -0.0087 -0.3130
|
||||
vn -0.9495 -0.0081 -0.3136
|
||||
vn -0.9509 -0.0115 -0.3094
|
||||
vn 0.9499 -0.0086 -0.3126
|
||||
vn 0.9496 -0.0080 -0.3132
|
||||
vn 0.9483 -0.0047 -0.3175
|
||||
vn -0.5817 0.2652 0.7689
|
||||
vn -0.5816 0.2651 0.7691
|
||||
vn -0.5770 0.2603 0.7741
|
||||
vn 0.0002 -0.1923 -0.9813
|
||||
vn 0.5559 -0.8240 -0.1091
|
||||
vn 0.5559 -0.8241 -0.1091
|
||||
vn -0.9236 -0.2635 -0.2784
|
||||
vn 0.9237 -0.2634 -0.2780
|
||||
vn -0.5710 -0.1688 0.8034
|
||||
vn 0.0002 -0.3219 -0.9468
|
||||
vn 0.0000 -0.9962 0.0872
|
||||
vn -0.3744 -0.7232 0.5803
|
||||
vn 0.0001 -0.8769 -0.4806
|
||||
vn 0.3742 -0.7232 0.5805
|
||||
vn -0.5558 -0.8241 -0.1093
|
||||
vn -0.0088 -0.4569 -0.8895
|
||||
vn -0.0168 -0.4513 -0.8922
|
||||
vn 0.0002 -0.9409 -0.3387
|
||||
vn 0.9442 -0.3257 0.0490
|
||||
vn -0.9441 -0.3261 0.0492
|
||||
vn 0.0209 -0.4484 -0.8936
|
||||
vn 0.9403 -0.3267 -0.0949
|
||||
vn -0.9402 -0.3387 -0.0368
|
||||
vn -0.5734 0.6656 -0.4777
|
||||
vn 0.9337 -0.3577 -0.0132
|
||||
vn -0.5768 0.6794 -0.4535
|
||||
vn 0.5574 0.7010 -0.4448
|
||||
vn -0.9275 -0.3589 -0.1044
|
||||
vn -0.9419 -0.0624 -0.3301
|
||||
vn 0.5768 0.8153 0.0500
|
||||
vn -0.9451 -0.2682 -0.1865
|
||||
vn 0.9315 -0.3329 -0.1465
|
||||
vn -0.5804 0.8127 0.0521
|
||||
vn -0.5823 0.3410 0.7380
|
||||
vn 0.9116 -0.2120 -0.3522
|
||||
vn -0.5791 0.5989 0.5532
|
||||
vn 0.0001 -0.4374 -0.8993
|
||||
vn 0.5457 0.6299 0.5526
|
||||
vn 0.5767 0.2603 0.7744
|
||||
vn 0.5815 0.3415 0.7384
|
||||
vn -0.9467 0.0124 -0.3220
|
||||
vn 0.9365 -0.0313 -0.3493
|
||||
vn -0.9481 -0.0048 -0.3179
|
||||
vn 0.9510 -0.0114 -0.3090
|
||||
vn -0.5868 0.2706 0.7632
|
||||
vn -0.0209 -0.4484 -0.8936
|
||||
s 1
|
||||
f 1/1/1 2/2/2 3/3/3
|
||||
f 2/4/4 4/5/5 3/6/6
|
||||
f 5/7/7 6/8/8 4/9/9
|
||||
f 7/10/10 8/11/10 9/12/10
|
||||
f 6/13/11 10/14/11 11/15/11
|
||||
f 12/16/12 13/17/13 1/18/14
|
||||
f 1/19/15 11/20/16 12/21/17
|
||||
f 14/22/18 15/23/19 16/24/20
|
||||
f 5/25/21 17/26/22 14/27/23
|
||||
f 7/28/24 18/29/25 13/17/26
|
||||
f 13/30/27 17/31/28 2/2/2
|
||||
f 19/32/29 14/22/30 16/24/31
|
||||
f 20/33/32 21/34/32 22/35/32
|
||||
f 17/31/33 23/36/34 24/37/35
|
||||
f 9/12/36 25/38/36 20/33/36
|
||||
f 17/26/37 26/39/38 14/27/39
|
||||
f 18/29/40 20/40/41 23/41/42
|
||||
f 22/42/43 27/43/44 28/44/45
|
||||
f 26/39/46 29/45/47 30/46/48
|
||||
f 20/40/49 28/47/50 23/41/51
|
||||
f 15/23/52 30/48/53 31/49/54
|
||||
f 23/36/55 29/50/56 24/37/57
|
||||
f 27/51/58 32/52/59 33/53/60
|
||||
f 31/54/61 34/55/62 35/56/63
|
||||
f 28/57/64 33/58/65 29/59/66
|
||||
f 22/42/67 36/60/67 37/61/67
|
||||
f 30/62/68 33/58/69 34/63/70
|
||||
f 32/64/71 38/65/72 39/66/73
|
||||
f 37/67/74 40/68/75 41/69/75
|
||||
f 34/70/76 32/64/77 39/66/78
|
||||
f 37/67/79 42/71/80 27/51/81
|
||||
f 35/72/82 39/66/83 43/73/84
|
||||
f 38/65/85 44/74/85 45/75/85
|
||||
f 42/71/86 46/76/87 47/77/88
|
||||
f 39/66/89 48/78/90 43/73/91
|
||||
f 32/52/92 47/79/93 49/80/94
|
||||
f 41/69/75 50/81/95 46/82/95
|
||||
f 45/83/96 51/84/97 52/85/96
|
||||
f 47/77/98 53/86/98 54/87/98
|
||||
f 38/88/99 52/85/99 48/78/99
|
||||
f 47/79/100 44/89/100 49/80/100
|
||||
f 50/81/101 53/90/101 46/82/101
|
||||
f 55/91/102 56/92/102 57/93/102
|
||||
f 44/89/103 58/94/103 57/95/103
|
||||
f 59/96/104 60/97/104 53/90/104
|
||||
f 44/74/105 56/98/105 45/75/105
|
||||
f 54/87/106 60/99/106 58/100/106
|
||||
f 55/91/102 58/101/102 60/102/102
|
||||
f 50/81/95 43/73/75 48/103/95
|
||||
f 11/20/107 4/104/108 6/105/17
|
||||
f 8/11/10 19/106/10 16/107/10
|
||||
f 59/96/104 51/108/104 55/109/104
|
||||
f 50/81/101 52/110/101 59/96/101
|
||||
f 25/38/36 16/107/36 15/111/36
|
||||
f 10/14/11 12/112/11 11/15/11
|
||||
f 40/68/75 35/72/74 43/73/75
|
||||
f 36/60/67 31/54/67 35/56/67
|
||||
f 21/34/32 15/111/32 31/113/109
|
||||
f 1/1/1 13/30/27 2/2/2
|
||||
f 2/4/4 5/25/21 4/5/5
|
||||
f 5/7/7 19/32/110 6/8/8
|
||||
f 7/10/10 10/14/10 8/11/10
|
||||
f 6/13/11 19/106/11 10/14/11
|
||||
f 12/16/12 7/28/111 13/17/13
|
||||
f 1/19/15 3/114/112 11/20/16
|
||||
f 14/22/18 26/115/113 15/23/19
|
||||
f 5/25/21 2/4/4 17/26/22
|
||||
f 7/28/24 9/116/114 18/29/25
|
||||
f 13/30/27 18/117/115 17/31/28
|
||||
f 19/32/29 5/7/116 14/22/30
|
||||
f 20/33/32 25/38/32 21/34/32
|
||||
f 17/31/33 18/117/117 23/36/34
|
||||
f 9/12/36 8/11/36 25/38/36
|
||||
f 17/26/37 24/118/118 26/39/38
|
||||
f 18/29/40 9/116/119 20/40/41
|
||||
f 22/42/43 37/61/120 27/43/44
|
||||
f 26/39/46 24/118/121 29/45/47
|
||||
f 20/40/49 22/119/122 28/47/50
|
||||
f 15/23/52 26/115/123 30/48/53
|
||||
f 23/36/55 28/120/124 29/50/56
|
||||
f 27/51/58 42/71/125 32/52/59
|
||||
f 31/54/61 30/121/126 34/55/62
|
||||
f 28/57/64 27/122/127 33/58/65
|
||||
f 22/42/67 21/123/128 36/60/67
|
||||
f 30/62/68 29/59/129 33/58/69
|
||||
f 32/64/71 49/124/130 38/65/72
|
||||
f 37/67/74 36/125/74 40/68/75
|
||||
f 34/70/76 33/126/131 32/64/77
|
||||
f 37/67/79 41/69/132 42/71/80
|
||||
f 35/72/82 34/70/133 39/66/83
|
||||
f 38/65/85 49/124/85 44/74/85
|
||||
f 42/71/86 41/69/134 46/76/87
|
||||
f 39/66/89 38/88/135 48/78/90
|
||||
f 32/52/92 42/71/136 47/79/93
|
||||
f 41/69/75 40/68/75 50/81/95
|
||||
f 45/83/96 56/127/97 51/84/97
|
||||
f 47/77/98 46/76/98 53/86/98
|
||||
f 38/88/99 45/83/99 52/85/99
|
||||
f 47/79/100 54/128/100 44/89/100
|
||||
f 50/81/101 59/96/101 53/90/101
|
||||
f 55/91/102 51/129/102 56/92/102
|
||||
f 44/89/103 54/128/103 58/94/103
|
||||
f 59/96/104 55/109/104 60/97/104
|
||||
f 44/74/105 57/130/105 56/98/105
|
||||
f 54/87/106 53/86/106 60/99/106
|
||||
f 55/91/102 57/93/102 58/101/102
|
||||
f 50/81/95 40/68/75 43/73/75
|
||||
f 11/20/107 3/114/137 4/104/108
|
||||
f 8/11/10 10/14/10 19/106/10
|
||||
f 59/96/104 52/110/104 51/108/104
|
||||
f 50/81/101 48/103/101 52/110/101
|
||||
f 25/38/36 8/11/36 16/107/36
|
||||
f 10/14/11 7/10/11 12/112/11
|
||||
f 40/68/75 36/125/74 35/72/74
|
||||
f 36/60/67 21/123/128 31/54/67
|
||||
f 21/34/32 25/38/32 15/111/32
|
||||
@ -1,44 +0,0 @@
|
||||
# Blender v2.76 (sub 0) OBJ File: 'cwis_base.blend'
|
||||
# www.blender.org
|
||||
o Cube_Cube.001
|
||||
v -1.000000 0.000000 1.000000
|
||||
v -1.000000 0.250000 1.000000
|
||||
v -1.000000 0.000000 -1.000000
|
||||
v -1.000000 0.250000 -1.000000
|
||||
v 1.000000 0.000000 1.000000
|
||||
v 1.000000 0.250000 1.000000
|
||||
v 1.000000 0.000000 -1.000000
|
||||
v 1.000000 0.250000 -1.000000
|
||||
vt 0.444444 0.444444
|
||||
vt 0.444444 0.500000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.888889 0.444444
|
||||
vt 0.888889 0.500000
|
||||
vt 0.444444 1.000000
|
||||
vt 0.444444 0.944444
|
||||
vt 0.888888 0.944444
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.944444
|
||||
vt 0.444444 0.000000
|
||||
vt 0.000000 0.444444
|
||||
vt 0.888888 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
s off
|
||||
f 4/1/1 3/2/1 1/3/1
|
||||
f 8/4/2 7/5/2 3/2/2
|
||||
f 6/6/3 5/7/3 7/8/3
|
||||
f 2/9/4 1/10/4 5/7/4
|
||||
f 3/2/5 7/7/5 5/10/5
|
||||
f 8/11/6 4/1/6 2/12/6
|
||||
f 2/12/1 4/1/1 1/3/1
|
||||
f 4/1/2 8/4/2 3/2/2
|
||||
f 8/13/3 6/6/3 7/8/3
|
||||
f 6/6/4 2/9/4 5/7/4
|
||||
f 1/3/5 3/2/5 5/10/5
|
||||
f 6/14/6 8/11/6 2/12/6
|
||||
@ -1,438 +0,0 @@
|
||||
# Blender v2.76 (sub 0) OBJ File: 'cwis_gun.blend'
|
||||
# www.blender.org
|
||||
o Cylinder
|
||||
v -0.000000 0.125000 0.950000
|
||||
v -0.000000 0.125000 1.050000
|
||||
v 0.088388 0.088388 0.950000
|
||||
v 0.088388 0.088388 1.050000
|
||||
v 0.125000 -0.000000 0.950000
|
||||
v 0.125000 -0.000000 1.050000
|
||||
v 0.088388 -0.088388 0.950000
|
||||
v 0.088388 -0.088388 1.050000
|
||||
v -0.000000 -0.125000 0.950000
|
||||
v -0.000000 -0.125000 1.050000
|
||||
v -0.088388 -0.088388 0.950000
|
||||
v -0.088388 -0.088388 1.050000
|
||||
v -0.125000 0.000000 0.950000
|
||||
v -0.125000 0.000000 1.050000
|
||||
v -0.088388 0.088388 0.950000
|
||||
v -0.088388 0.088388 1.050000
|
||||
v -0.000000 0.125000 0.450000
|
||||
v -0.000000 0.125000 0.550000
|
||||
v 0.088388 0.088388 0.450000
|
||||
v 0.088388 0.088388 0.550000
|
||||
v 0.125000 -0.000000 0.450000
|
||||
v 0.125000 -0.000000 0.550000
|
||||
v 0.088388 -0.088388 0.450000
|
||||
v 0.088388 -0.088388 0.550000
|
||||
v -0.000000 -0.125000 0.450000
|
||||
v -0.000000 -0.125000 0.550000
|
||||
v -0.088388 -0.088388 0.450000
|
||||
v -0.088388 -0.088388 0.550000
|
||||
v -0.125000 0.000000 0.450000
|
||||
v -0.125000 0.000000 0.550000
|
||||
v -0.088388 0.088388 0.450000
|
||||
v -0.088388 0.088388 0.550000
|
||||
v -0.000000 0.125000 1.450000
|
||||
v -0.000000 0.125000 1.950000
|
||||
v 0.088388 0.088388 1.450000
|
||||
v 0.088388 0.088388 1.950000
|
||||
v 0.125000 -0.000000 1.450000
|
||||
v 0.125000 -0.000000 1.950000
|
||||
v 0.088388 -0.088388 1.450000
|
||||
v 0.088388 -0.088388 1.950000
|
||||
v -0.000000 -0.125000 1.450000
|
||||
v -0.000000 -0.125000 1.950000
|
||||
v -0.088388 -0.088388 1.450000
|
||||
v -0.088388 -0.088388 1.950000
|
||||
v -0.125000 0.000000 1.450000
|
||||
v -0.125000 0.000000 1.950000
|
||||
v -0.088388 0.088388 1.450000
|
||||
v -0.088388 0.088388 1.950000
|
||||
v -0.025000 0.050000 2.000000
|
||||
v -0.025000 0.100000 2.000000
|
||||
v -0.025000 0.050000 0.550000
|
||||
v -0.025000 0.100000 0.550000
|
||||
v 0.025000 0.050000 2.000000
|
||||
v 0.025000 0.100000 2.000000
|
||||
v 0.025000 0.050000 0.550000
|
||||
v 0.025000 0.100000 0.550000
|
||||
v -0.025000 -0.100000 2.000000
|
||||
v -0.025000 -0.050000 2.000000
|
||||
v -0.025000 -0.100000 0.550000
|
||||
v -0.025000 -0.050000 0.550000
|
||||
v 0.025000 -0.100000 2.000000
|
||||
v 0.025000 -0.050000 2.000000
|
||||
v 0.025000 -0.100000 0.550000
|
||||
v 0.025000 -0.050000 0.550000
|
||||
v 0.030801 0.046651 2.000000
|
||||
v 0.074103 0.071651 2.000000
|
||||
v 0.030801 0.046651 0.550000
|
||||
v 0.074103 0.071651 0.550000
|
||||
v 0.055801 0.003349 2.000000
|
||||
v 0.099103 0.028349 2.000000
|
||||
v 0.055801 0.003349 0.550000
|
||||
v 0.099103 0.028349 0.550000
|
||||
v -0.099103 -0.028349 2.000000
|
||||
v -0.055801 -0.003349 2.000000
|
||||
v -0.099103 -0.028349 0.550000
|
||||
v -0.055801 -0.003349 0.550000
|
||||
v -0.074103 -0.071651 2.000000
|
||||
v -0.030801 -0.046651 2.000000
|
||||
v -0.074103 -0.071651 0.550000
|
||||
v -0.030801 -0.046651 0.550000
|
||||
v 0.055801 -0.003349 2.000000
|
||||
v 0.099103 -0.028349 2.000000
|
||||
v 0.055801 -0.003349 0.550000
|
||||
v 0.099103 -0.028349 0.550000
|
||||
v 0.030801 -0.046651 2.000000
|
||||
v 0.074103 -0.071651 2.000000
|
||||
v 0.030801 -0.046651 0.550000
|
||||
v 0.074103 -0.071651 0.550000
|
||||
v -0.074103 0.071651 2.000000
|
||||
v -0.030801 0.046651 2.000000
|
||||
v -0.074103 0.071651 0.550000
|
||||
v -0.030801 0.046651 0.550000
|
||||
v -0.099103 0.028349 2.000000
|
||||
v -0.055801 0.003349 2.000000
|
||||
v -0.099103 0.028349 0.550000
|
||||
v -0.055801 0.003349 0.550000
|
||||
vt 0.550118 0.760811
|
||||
vt 0.591204 0.760811
|
||||
vt 0.591204 0.803757
|
||||
vt 0.632291 0.760811
|
||||
vt 0.673377 0.760811
|
||||
vt 0.673377 0.803757
|
||||
vt 0.714463 0.760811
|
||||
vt 0.714463 0.803757
|
||||
vt 0.385773 0.760811
|
||||
vt 0.426859 0.760811
|
||||
vt 0.426859 0.803757
|
||||
vt 0.467946 0.760811
|
||||
vt 0.781571 0.779002
|
||||
vt 0.752518 0.708863
|
||||
vt 0.822657 0.679811
|
||||
vt 0.509032 0.760811
|
||||
vt 0.550118 0.803757
|
||||
vt 0.509032 0.803757
|
||||
vt 0.781571 0.916248
|
||||
vt 0.752519 0.846109
|
||||
vt 0.822657 0.817057
|
||||
vt 0.550118 0.679811
|
||||
vt 0.550118 0.722756
|
||||
vt 0.509032 0.722756
|
||||
vt 0.467946 0.722756
|
||||
vt 0.467946 0.679811
|
||||
vt 0.426859 0.722756
|
||||
vt 0.426859 0.679811
|
||||
vt 0.385773 0.722756
|
||||
vt 0.385773 0.679811
|
||||
vt 0.714463 0.722756
|
||||
vt 0.673377 0.722756
|
||||
vt 0.673377 0.679811
|
||||
vt 0.632291 0.722756
|
||||
vt 0.951920 0.118219
|
||||
vt 0.881781 0.089166
|
||||
vt 0.910834 0.019028
|
||||
vt 0.591204 0.722756
|
||||
vt 0.632291 0.679811
|
||||
vt 0.183373 0.233755
|
||||
vt 0.142286 0.233755
|
||||
vt 0.142286 0.019028
|
||||
vt 0.101200 0.233755
|
||||
vt 0.101200 0.019028
|
||||
vt 0.060114 0.233755
|
||||
vt 0.060114 0.019028
|
||||
vt 0.019028 0.233755
|
||||
vt 0.019028 0.019028
|
||||
vt 0.347718 0.233755
|
||||
vt 0.306632 0.233755
|
||||
vt 0.306632 0.019028
|
||||
vt 0.265545 0.233755
|
||||
vt 0.265545 0.019028
|
||||
vt 0.414825 0.941003
|
||||
vt 0.414825 0.841812
|
||||
vt 0.455912 0.841812
|
||||
vt 0.224459 0.019028
|
||||
vt 0.224459 0.233755
|
||||
vt 0.552072 0.941003
|
||||
vt 0.552072 0.841812
|
||||
vt 0.593158 0.841812
|
||||
vt 0.676830 0.019028
|
||||
vt 0.698302 0.019028
|
||||
vt 0.698303 0.641726
|
||||
vt 0.509936 0.019028
|
||||
vt 0.531409 0.019028
|
||||
vt 0.531408 0.641726
|
||||
vt 0.655356 0.641726
|
||||
vt 0.633883 0.641726
|
||||
vt 0.633884 0.019028
|
||||
vt 0.266926 0.293283
|
||||
vt 0.266926 0.271810
|
||||
vt 0.288398 0.271810
|
||||
vt 0.719775 0.019028
|
||||
vt 0.719777 0.641726
|
||||
vt 0.655357 0.019028
|
||||
vt 0.676830 0.641726
|
||||
vt 0.574354 0.641726
|
||||
vt 0.552882 0.641726
|
||||
vt 0.552881 0.019028
|
||||
vt 0.266926 0.352811
|
||||
vt 0.266926 0.331338
|
||||
vt 0.288398 0.331338
|
||||
vt 0.574355 0.019028
|
||||
vt 0.595827 0.019028
|
||||
vt 0.595828 0.641726
|
||||
vt 0.061974 0.271810
|
||||
vt 0.083446 0.271810
|
||||
vt 0.083448 0.894508
|
||||
vt 0.757834 0.019028
|
||||
vt 0.779306 0.019028
|
||||
vt 0.779306 0.641726
|
||||
vt 0.040500 0.894508
|
||||
vt 0.019028 0.894508
|
||||
vt 0.019028 0.271810
|
||||
vt 0.288398 0.590923
|
||||
vt 0.266926 0.590923
|
||||
vt 0.266926 0.569450
|
||||
vt 0.104919 0.271810
|
||||
vt 0.104921 0.894508
|
||||
vt 0.040501 0.271810
|
||||
vt 0.061974 0.894508
|
||||
vt 0.822252 0.641725
|
||||
vt 0.800780 0.641726
|
||||
vt 0.800779 0.019028
|
||||
vt 0.288398 0.531395
|
||||
vt 0.266926 0.531395
|
||||
vt 0.266926 0.509922
|
||||
vt 0.822253 0.019028
|
||||
vt 0.843725 0.019028
|
||||
vt 0.843726 0.641726
|
||||
vt 0.428934 0.019043
|
||||
vt 0.450407 0.019050
|
||||
vt 0.450193 0.641748
|
||||
vt 0.142978 0.271810
|
||||
vt 0.164451 0.271810
|
||||
vt 0.164450 0.894508
|
||||
vt 0.407245 0.641733
|
||||
vt 0.385773 0.641726
|
||||
vt 0.385988 0.019028
|
||||
vt 0.266926 0.450394
|
||||
vt 0.288398 0.450394
|
||||
vt 0.288398 0.471867
|
||||
vt 0.471879 0.019057
|
||||
vt 0.471667 0.641755
|
||||
vt 0.407462 0.019035
|
||||
vt 0.428719 0.641741
|
||||
vt 0.207397 0.894508
|
||||
vt 0.185924 0.894508
|
||||
vt 0.185923 0.271810
|
||||
vt 0.288398 0.390866
|
||||
vt 0.288398 0.412339
|
||||
vt 0.266926 0.412339
|
||||
vt 0.207397 0.271810
|
||||
vt 0.228869 0.271810
|
||||
vt 0.228870 0.894508
|
||||
vt 0.632291 0.803757
|
||||
vt 0.385773 0.803757
|
||||
vt 0.467946 0.803757
|
||||
vt 0.851710 0.708863
|
||||
vt 0.851710 0.749949
|
||||
vt 0.822657 0.779002
|
||||
vt 0.752519 0.749949
|
||||
vt 0.781571 0.679811
|
||||
vt 0.851710 0.846109
|
||||
vt 0.851710 0.887195
|
||||
vt 0.822657 0.916248
|
||||
vt 0.752518 0.887195
|
||||
vt 0.781571 0.817057
|
||||
vt 0.509032 0.679811
|
||||
vt 0.714463 0.679811
|
||||
vt 0.951920 0.019028
|
||||
vt 0.980972 0.048080
|
||||
vt 0.980972 0.089166
|
||||
vt 0.910834 0.118219
|
||||
vt 0.881781 0.048080
|
||||
vt 0.591204 0.679811
|
||||
vt 0.183373 0.019028
|
||||
vt 0.347718 0.019028
|
||||
vt 0.484964 0.870865
|
||||
vt 0.484964 0.911951
|
||||
vt 0.455912 0.941003
|
||||
vt 0.385773 0.911951
|
||||
vt 0.385773 0.870865
|
||||
vt 0.622210 0.870864
|
||||
vt 0.622210 0.911951
|
||||
vt 0.593158 0.941003
|
||||
vt 0.523019 0.911951
|
||||
vt 0.523019 0.870864
|
||||
vt 0.509934 0.641726
|
||||
vt 0.288398 0.293283
|
||||
vt 0.288398 0.352811
|
||||
vt 0.757832 0.641725
|
||||
vt 0.288398 0.569450
|
||||
vt 0.288398 0.509922
|
||||
vt 0.142977 0.894508
|
||||
vt 0.266926 0.471867
|
||||
vt 0.266926 0.390866
|
||||
vn 0.382700 0.923900 0.000000
|
||||
vn 0.923900 0.382700 -0.000000
|
||||
vn 0.923900 -0.382700 0.000000
|
||||
vn 0.382700 -0.923900 0.000000
|
||||
vn -0.382700 -0.923900 0.000000
|
||||
vn -0.923900 -0.382700 0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn -0.382700 0.923900 0.000000
|
||||
vn -0.923900 0.382700 -0.000000
|
||||
vn -0.000000 -0.000000 -1.000000
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.000000 -1.000000 -0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
vn -0.500000 0.866000 -0.000000
|
||||
vn 0.500000 -0.866000 0.000000
|
||||
vn -0.866000 -0.500000 -0.000000
|
||||
vn 0.866000 0.500000 0.000000
|
||||
vn 0.500000 0.866000 -0.000000
|
||||
vn -0.500000 -0.866000 0.000000
|
||||
vn -0.866000 0.500000 -0.000000
|
||||
vn 0.866000 -0.500000 0.000000
|
||||
s off
|
||||
f 2/1/1 4/2/1 3/3/1
|
||||
f 3/3/2 4/2/2 6/4/2
|
||||
f 6/4/3 8/5/3 7/6/3
|
||||
f 8/5/4 10/7/4 9/8/4
|
||||
f 10/9/5 12/10/5 11/11/5
|
||||
f 11/11/6 12/10/6 14/12/6
|
||||
f 14/13/7 10/14/7 6/15/7
|
||||
f 16/16/8 2/1/8 1/17/8
|
||||
f 14/12/9 16/16/9 15/18/9
|
||||
f 7/19/10 11/20/10 15/21/10
|
||||
f 17/22/1 18/23/1 20/24/1
|
||||
f 20/24/2 22/25/2 21/26/2
|
||||
f 22/25/3 24/27/3 23/28/3
|
||||
f 24/27/4 26/29/4 25/30/4
|
||||
f 26/31/5 28/32/5 27/33/5
|
||||
f 27/33/6 28/32/6 30/34/6
|
||||
f 30/35/7 26/36/7 22/37/7
|
||||
f 32/38/8 18/23/8 17/22/8
|
||||
f 29/39/9 30/34/9 32/38/9
|
||||
f 34/40/1 36/41/1 35/42/1
|
||||
f 36/41/2 38/43/2 37/44/2
|
||||
f 38/43/3 40/45/3 39/46/3
|
||||
f 40/45/4 42/47/4 41/48/4
|
||||
f 42/49/5 44/50/5 43/51/5
|
||||
f 44/50/6 46/52/6 45/53/6
|
||||
f 46/54/7 40/55/7 38/56/7
|
||||
f 47/57/8 48/58/8 34/40/8
|
||||
f 46/52/9 48/58/9 47/57/9
|
||||
f 39/59/10 45/60/10 47/61/10
|
||||
f 52/62/11 51/63/11 49/64/11
|
||||
f 60/65/11 59/66/11 57/67/11
|
||||
f 54/68/12 53/69/12 55/70/12
|
||||
f 50/71/7 49/72/7 53/73/7
|
||||
f 51/63/13 55/74/13 53/75/13
|
||||
f 56/76/14 52/62/14 50/77/14
|
||||
f 62/78/12 61/79/12 63/80/12
|
||||
f 58/81/7 57/82/7 61/83/7
|
||||
f 59/66/13 63/80/13 61/79/13
|
||||
f 64/84/14 60/85/14 58/86/14
|
||||
f 68/87/15 67/88/15 65/89/15
|
||||
f 76/90/15 75/91/15 73/92/15
|
||||
f 70/93/16 69/94/16 71/95/16
|
||||
f 66/96/7 65/97/7 69/98/7
|
||||
f 67/88/17 71/99/17 69/100/17
|
||||
f 72/101/18 68/87/18 66/102/18
|
||||
f 78/103/16 77/104/16 79/105/16
|
||||
f 74/106/7 73/107/7 77/108/7
|
||||
f 75/91/17 79/105/17 77/104/17
|
||||
f 80/109/18 76/110/18 74/111/18
|
||||
f 84/112/19 83/113/19 81/114/19
|
||||
f 92/115/19 91/116/19 89/117/19
|
||||
f 86/118/20 85/119/20 87/120/20
|
||||
f 82/121/7 81/122/7 85/123/7
|
||||
f 83/113/21 87/124/21 85/125/21
|
||||
f 88/126/22 84/112/22 82/127/22
|
||||
f 94/128/20 93/129/20 95/130/20
|
||||
f 94/131/7 90/132/7 89/133/7
|
||||
f 91/116/21 95/130/21 93/129/21
|
||||
f 96/134/22 92/135/22 90/136/22
|
||||
f 1/17/1 2/1/1 3/3/1
|
||||
f 5/137/2 3/3/2 6/4/2
|
||||
f 5/137/3 6/4/3 7/6/3
|
||||
f 7/6/4 8/5/4 9/8/4
|
||||
f 9/138/5 10/9/5 11/11/5
|
||||
f 13/139/6 11/11/6 14/12/6
|
||||
f 6/15/7 4/140/7 2/141/7
|
||||
f 2/141/7 16/142/7 14/13/7
|
||||
f 14/13/7 12/143/7 10/14/7
|
||||
f 10/14/7 8/144/7 6/15/7
|
||||
f 6/15/7 2/141/7 14/13/7
|
||||
f 15/18/8 16/16/8 1/17/8
|
||||
f 13/139/9 14/12/9 15/18/9
|
||||
f 15/21/10 1/145/10 3/146/10
|
||||
f 3/146/10 5/147/10 15/21/10
|
||||
f 7/19/10 9/148/10 11/20/10
|
||||
f 11/20/10 13/149/10 15/21/10
|
||||
f 15/21/10 5/147/10 7/19/10
|
||||
f 19/150/1 17/22/1 20/24/1
|
||||
f 19/150/2 20/24/2 21/26/2
|
||||
f 21/26/3 22/25/3 23/28/3
|
||||
f 23/28/4 24/27/4 25/30/4
|
||||
f 25/151/5 26/31/5 27/33/5
|
||||
f 29/39/6 27/33/6 30/34/6
|
||||
f 22/37/7 20/152/7 18/153/7
|
||||
f 18/153/7 32/154/7 30/35/7
|
||||
f 30/35/7 28/155/7 26/36/7
|
||||
f 26/36/7 24/156/7 22/37/7
|
||||
f 22/37/7 18/153/7 30/35/7
|
||||
f 31/157/8 32/38/8 17/22/8
|
||||
f 31/157/9 29/39/9 32/38/9
|
||||
f 33/158/1 34/40/1 35/42/1
|
||||
f 35/42/2 36/41/2 37/44/2
|
||||
f 37/44/3 38/43/3 39/46/3
|
||||
f 39/46/4 40/45/4 41/48/4
|
||||
f 41/159/5 42/49/5 43/51/5
|
||||
f 43/51/6 44/50/6 45/53/6
|
||||
f 38/56/7 36/160/7 34/161/7
|
||||
f 34/161/7 48/162/7 46/54/7
|
||||
f 46/54/7 44/163/7 42/164/7
|
||||
f 42/164/7 40/55/7 46/54/7
|
||||
f 38/56/7 34/161/7 46/54/7
|
||||
f 33/158/8 47/57/8 34/40/8
|
||||
f 45/53/9 46/52/9 47/57/9
|
||||
f 47/61/10 33/165/10 35/166/10
|
||||
f 35/166/10 37/167/10 47/61/10
|
||||
f 39/59/10 41/168/10 43/169/10
|
||||
f 43/169/10 45/60/10 39/59/10
|
||||
f 47/61/10 37/167/10 39/59/10
|
||||
f 50/77/11 52/62/11 49/64/11
|
||||
f 58/170/11 60/65/11 57/67/11
|
||||
f 56/76/12 54/68/12 55/70/12
|
||||
f 54/171/7 50/71/7 53/73/7
|
||||
f 49/64/13 51/63/13 53/75/13
|
||||
f 54/68/14 56/76/14 50/77/14
|
||||
f 64/84/12 62/78/12 63/80/12
|
||||
f 62/172/7 58/81/7 61/83/7
|
||||
f 57/67/13 59/66/13 61/79/13
|
||||
f 62/78/14 64/84/14 58/86/14
|
||||
f 66/102/15 68/87/15 65/89/15
|
||||
f 74/173/15 76/90/15 73/92/15
|
||||
f 72/101/16 70/93/16 71/95/16
|
||||
f 70/174/7 66/96/7 69/98/7
|
||||
f 65/89/17 67/88/17 69/100/17
|
||||
f 70/93/18 72/101/18 66/102/18
|
||||
f 80/109/16 78/103/16 79/105/16
|
||||
f 78/175/7 74/106/7 77/108/7
|
||||
f 73/92/17 75/91/17 77/104/17
|
||||
f 78/103/18 80/109/18 74/111/18
|
||||
f 82/127/19 84/112/19 81/114/19
|
||||
f 90/176/19 92/115/19 89/117/19
|
||||
f 88/126/20 86/118/20 87/120/20
|
||||
f 86/177/7 82/121/7 85/123/7
|
||||
f 81/114/21 83/113/21 85/125/21
|
||||
f 86/118/22 88/126/22 82/127/22
|
||||
f 96/134/20 94/128/20 95/130/20
|
||||
f 93/178/7 94/131/7 89/133/7
|
||||
f 89/117/21 91/116/21 93/129/21
|
||||
f 94/128/22 96/134/22 90/136/22
|
||||
@ -1,613 +0,0 @@
|
||||
# Blender v2.76 (sub 0) OBJ File: 'cwis_head.blend'
|
||||
# www.blender.org
|
||||
o Cube.001_Cube.002
|
||||
v -0.500000 -0.250000 0.500000
|
||||
v -0.500000 0.250000 0.500000
|
||||
v -0.500000 -0.250000 -0.500000
|
||||
v -0.500000 0.250000 -0.500000
|
||||
v 0.500000 -0.250000 0.500000
|
||||
v 0.500000 0.250000 0.500000
|
||||
v 0.500000 -0.250000 -0.500000
|
||||
v 0.500000 0.250000 -0.500000
|
||||
v -0.187500 -0.187500 1.000000
|
||||
v -0.187500 0.187500 1.000000
|
||||
v 0.187500 -0.187500 1.000000
|
||||
v 0.187500 0.187500 1.000000
|
||||
v 0.250000 2.183013 0.000000
|
||||
v 0.000000 2.250000 0.000000
|
||||
v 0.000000 0.250000 -0.500000
|
||||
v 0.250000 0.250000 -0.433013
|
||||
v 0.433013 0.250000 -0.250000
|
||||
v 0.500000 0.250000 0.000000
|
||||
v 0.433013 0.250000 0.250000
|
||||
v 0.250000 0.250000 0.433013
|
||||
v 0.000000 0.250000 0.500000
|
||||
v -0.250000 0.250000 0.433013
|
||||
v -0.433013 0.250000 0.250000
|
||||
v -0.500000 0.250000 0.000000
|
||||
v -0.433013 0.250000 -0.250000
|
||||
v -0.250000 0.250000 -0.433013
|
||||
v 0.433013 2.000000 0.000000
|
||||
v 0.500000 1.750000 0.000000
|
||||
v -0.433013 1.750000 0.250000
|
||||
v 0.433013 1.750000 -0.250000
|
||||
v 0.375000 2.000000 -0.216506
|
||||
v 0.216506 2.183013 -0.125000
|
||||
v -0.500000 1.750000 0.000000
|
||||
v -0.433013 2.000000 0.000000
|
||||
v -0.250000 2.183012 0.000000
|
||||
v -0.375000 2.000000 0.216506
|
||||
v -0.216507 2.183012 0.125000
|
||||
v -0.250000 1.750000 0.433013
|
||||
v 0.250000 1.750000 -0.433013
|
||||
v 0.216506 2.000000 -0.375000
|
||||
v 0.125000 2.183013 -0.216506
|
||||
v -0.216506 2.000000 0.375000
|
||||
v -0.125000 2.183012 0.216507
|
||||
v 0.000000 1.750000 0.500000
|
||||
v -0.000000 1.750000 -0.500000
|
||||
v -0.000000 2.000000 -0.433013
|
||||
v -0.000000 2.183013 -0.250000
|
||||
v 0.000000 2.000000 0.433013
|
||||
v 0.000000 2.183012 0.250000
|
||||
v 0.250000 1.750000 0.433013
|
||||
v -0.250000 1.750000 -0.433013
|
||||
v -0.216507 2.000000 -0.375000
|
||||
v -0.125000 2.183013 -0.216506
|
||||
v 0.216507 2.000000 0.375000
|
||||
v 0.125000 2.183012 0.216507
|
||||
v 0.433013 1.750000 0.250000
|
||||
v -0.433013 1.750000 -0.250000
|
||||
v -0.375000 2.000000 -0.216506
|
||||
v -0.216507 2.183013 -0.125000
|
||||
v 0.375000 2.000000 0.216506
|
||||
v 0.216507 2.183012 0.125000
|
||||
v 0.000000 -0.250000 -0.650000
|
||||
v 0.000000 -0.250000 0.500000
|
||||
v 0.125000 -0.283494 -0.650000
|
||||
v 0.125000 -0.283494 0.500000
|
||||
v 0.216506 -0.375000 -0.650000
|
||||
v 0.216506 -0.375000 0.500000
|
||||
v 0.250000 -0.500000 -0.650000
|
||||
v 0.250000 -0.500000 0.500000
|
||||
v 0.216506 -0.625000 -0.650000
|
||||
v 0.216506 -0.625000 0.500000
|
||||
v 0.125000 -0.716506 -0.650000
|
||||
v 0.125000 -0.716506 0.500000
|
||||
v 0.000000 -0.750000 -0.650000
|
||||
v 0.000000 -0.750000 0.500000
|
||||
v -0.125000 -0.716506 -0.650000
|
||||
v -0.125000 -0.716506 0.500000
|
||||
v -0.216506 -0.625000 -0.650000
|
||||
v -0.216506 -0.625000 0.500000
|
||||
v -0.250000 -0.500000 -0.650000
|
||||
v -0.250000 -0.500000 0.500000
|
||||
v -0.216506 -0.375000 -0.650000
|
||||
v -0.216506 -0.375000 0.500000
|
||||
v -0.125000 -0.283494 -0.650000
|
||||
v -0.125000 -0.283494 0.500000
|
||||
v 0.106250 -0.315970 0.650000
|
||||
v -0.000000 -0.287500 0.650000
|
||||
v 0.184030 -0.393750 0.650000
|
||||
v 0.212500 -0.500000 0.650000
|
||||
v 0.184030 -0.606250 0.650000
|
||||
v 0.106250 -0.684030 0.650000
|
||||
v 0.000000 -0.712500 0.650000
|
||||
v -0.106250 -0.684030 0.650000
|
||||
v -0.184030 -0.606250 0.650000
|
||||
v -0.212500 -0.500000 0.650000
|
||||
v -0.184030 -0.393750 0.650000
|
||||
v -0.106250 -0.315970 0.650000
|
||||
v -0.300000 -0.500000 0.300000
|
||||
v -0.400000 -0.250000 0.400000
|
||||
v -0.300000 -0.500000 0.250000
|
||||
v -0.400000 -0.250000 0.150000
|
||||
v 0.300000 -0.500000 0.300000
|
||||
v 0.400000 -0.250000 0.400000
|
||||
v 0.300000 -0.500000 0.250000
|
||||
v 0.400000 -0.250000 0.150000
|
||||
v -0.300000 -0.500000 -0.250000
|
||||
v -0.400000 -0.250000 -0.150000
|
||||
v -0.300000 -0.500000 -0.300000
|
||||
v -0.400000 -0.250000 -0.400000
|
||||
v 0.300000 -0.500000 -0.250000
|
||||
v 0.400000 -0.250000 -0.150000
|
||||
v 0.300000 -0.500000 -0.300000
|
||||
v 0.400000 -0.250000 -0.400000
|
||||
vt 0.192029 0.192029
|
||||
vt 0.192029 0.280351
|
||||
vt 0.015385 0.280351
|
||||
vt 0.368673 0.192029
|
||||
vt 0.368673 0.280351
|
||||
vt 0.545317 0.192029
|
||||
vt 0.545317 0.280351
|
||||
vt 0.807971 0.378738
|
||||
vt 0.807971 0.290416
|
||||
vt 0.984615 0.290416
|
||||
vt 0.368673 0.456995
|
||||
vt 0.192029 0.015385
|
||||
vt 0.680241 0.170636
|
||||
vt 0.680241 0.104395
|
||||
vt 0.746483 0.104395
|
||||
vt 0.801684 0.259645
|
||||
vt 0.625040 0.259645
|
||||
vt 0.625040 0.015385
|
||||
vt 0.801684 0.015385
|
||||
vt 0.576088 0.181676
|
||||
vt 0.564012 0.487768
|
||||
vt 0.564011 0.752734
|
||||
vt 0.518292 0.752734
|
||||
vt 0.472573 0.752733
|
||||
vt 0.472575 0.487768
|
||||
vt 0.426855 0.752733
|
||||
vt 0.426856 0.487767
|
||||
vt 0.381136 0.752733
|
||||
vt 0.381137 0.487767
|
||||
vt 0.335417 0.752733
|
||||
vt 0.278268 0.843295
|
||||
vt 0.266839 0.887562
|
||||
vt 0.255409 0.843295
|
||||
vt 0.247042 0.798349
|
||||
vt 0.286636 0.798349
|
||||
vt 0.243980 0.752733
|
||||
vt 0.323987 0.843296
|
||||
vt 0.312557 0.887563
|
||||
vt 0.301128 0.843296
|
||||
vt 0.292761 0.798349
|
||||
vt 0.332355 0.798349
|
||||
vt 0.289698 0.752733
|
||||
vt 0.369706 0.843296
|
||||
vt 0.358276 0.887563
|
||||
vt 0.346847 0.843296
|
||||
vt 0.403995 0.887563
|
||||
vt 0.392565 0.843296
|
||||
vt 0.415425 0.843296
|
||||
vt 0.449713 0.887563
|
||||
vt 0.438284 0.843296
|
||||
vt 0.461143 0.843296
|
||||
vt 0.484003 0.843296
|
||||
vt 0.506862 0.843296
|
||||
vt 0.495432 0.887563
|
||||
vt 0.529722 0.843296
|
||||
vt 0.552581 0.843296
|
||||
vt 0.541151 0.887563
|
||||
vt 0.049674 0.843295
|
||||
vt 0.038244 0.887562
|
||||
vt 0.026815 0.843295
|
||||
vt 0.095393 0.843295
|
||||
vt 0.083963 0.887562
|
||||
vt 0.072534 0.843295
|
||||
vt 0.141112 0.843295
|
||||
vt 0.129682 0.887562
|
||||
vt 0.118253 0.843295
|
||||
vt 0.163971 0.843295
|
||||
vt 0.186831 0.843295
|
||||
vt 0.175401 0.887562
|
||||
vt 0.232550 0.843295
|
||||
vt 0.221120 0.887563
|
||||
vt 0.209690 0.843295
|
||||
vt 0.201323 0.798349
|
||||
vt 0.198261 0.752732
|
||||
vt 0.240917 0.798349
|
||||
vt 0.195198 0.798348
|
||||
vt 0.155604 0.798348
|
||||
vt 0.109886 0.798348
|
||||
vt 0.106823 0.752732
|
||||
vt 0.152542 0.752732
|
||||
vt 0.149479 0.798348
|
||||
vt 0.064167 0.798348
|
||||
vt 0.103760 0.798348
|
||||
vt 0.061104 0.752732
|
||||
vt 0.018448 0.798348
|
||||
vt 0.058041 0.798348
|
||||
vt 0.015385 0.752732
|
||||
vt 0.521355 0.798350
|
||||
vt 0.560948 0.798350
|
||||
vt 0.475636 0.798350
|
||||
vt 0.515230 0.798350
|
||||
vt 0.429917 0.798349
|
||||
vt 0.469511 0.798349
|
||||
vt 0.423792 0.798349
|
||||
vt 0.338480 0.798349
|
||||
vt 0.378073 0.798349
|
||||
vt 0.384198 0.798349
|
||||
vt 0.015386 0.487766
|
||||
vt 0.061105 0.487766
|
||||
vt 0.289699 0.487767
|
||||
vt 0.198262 0.487767
|
||||
vt 0.152543 0.487766
|
||||
vt 0.746483 0.170636
|
||||
vt 0.850636 0.093354
|
||||
vt 0.622041 0.762079
|
||||
vt 0.622041 0.739219
|
||||
vt 0.825182 0.739220
|
||||
vt 0.622041 0.716360
|
||||
vt 0.825182 0.716360
|
||||
vt 0.622041 0.693501
|
||||
vt 0.825182 0.693501
|
||||
vt 0.622041 0.670641
|
||||
vt 0.825182 0.670642
|
||||
vt 0.622041 0.647782
|
||||
vt 0.825182 0.647782
|
||||
vt 0.622041 0.624922
|
||||
vt 0.825182 0.624923
|
||||
vt 0.622042 0.602063
|
||||
vt 0.825182 0.602064
|
||||
vt 0.622042 0.579204
|
||||
vt 0.825182 0.579204
|
||||
vt 0.622042 0.556344
|
||||
vt 0.825182 0.556345
|
||||
vt 0.622042 0.533485
|
||||
vt 0.825182 0.533486
|
||||
vt 0.594783 0.691786
|
||||
vt 0.594783 0.672356
|
||||
vt 0.622042 0.510625
|
||||
vt 0.622042 0.487766
|
||||
vt 0.825183 0.487767
|
||||
vt 0.825182 0.510626
|
||||
vt 0.911978 0.846936
|
||||
vt 0.838096 0.866733
|
||||
vt 0.857892 0.792850
|
||||
vt 0.855953 0.514308
|
||||
vt 0.882496 0.487766
|
||||
vt 0.928469 0.533739
|
||||
vt 0.594784 0.508911
|
||||
vt 0.594783 0.760364
|
||||
vt 0.594783 0.740934
|
||||
vt 0.594783 0.714646
|
||||
vt 0.594783 0.695215
|
||||
vt 0.594784 0.531770
|
||||
vt 0.594784 0.512340
|
||||
vt 0.594783 0.737505
|
||||
vt 0.594784 0.554630
|
||||
vt 0.594784 0.535199
|
||||
vt 0.594783 0.577489
|
||||
vt 0.594784 0.558059
|
||||
vt 0.594783 0.600348
|
||||
vt 0.594783 0.623208
|
||||
vt 0.594783 0.603777
|
||||
vt 0.594783 0.646067
|
||||
vt 0.594783 0.626637
|
||||
vt 0.594783 0.668927
|
||||
vt 0.594783 0.649496
|
||||
vt 0.576088 0.320315
|
||||
vt 0.623651 0.337979
|
||||
vt 0.623651 0.346811
|
||||
vt 0.747302 0.290416
|
||||
vt 0.729637 0.337979
|
||||
vt 0.777200 0.364476
|
||||
vt 0.729637 0.346811
|
||||
vt 0.605986 0.394374
|
||||
vt 0.594783 0.822748
|
||||
vt 0.642346 0.840413
|
||||
vt 0.642346 0.849245
|
||||
vt 0.765997 0.792850
|
||||
vt 0.748332 0.840413
|
||||
vt 0.795895 0.866909
|
||||
vt 0.748332 0.849245
|
||||
vt 0.624682 0.896808
|
||||
vt 0.015385 0.192029
|
||||
vt 0.984615 0.378738
|
||||
vt 0.192029 0.456995
|
||||
vt 0.368673 0.015385
|
||||
vt 0.576088 0.093354
|
||||
vt 0.518293 0.487768
|
||||
vt 0.335418 0.487767
|
||||
vt 0.106824 0.487766
|
||||
vt 0.243980 0.487767
|
||||
vt 0.850636 0.181676
|
||||
vt 0.825182 0.762079
|
||||
vt 0.880752 0.792850
|
||||
vt 0.900549 0.804280
|
||||
vt 0.911978 0.824077
|
||||
vt 0.900549 0.866733
|
||||
vt 0.880752 0.878162
|
||||
vt 0.857892 0.878162
|
||||
vt 0.826666 0.846936
|
||||
vt 0.826666 0.824076
|
||||
vt 0.838096 0.804280
|
||||
vt 0.918754 0.550566
|
||||
vt 0.865668 0.550566
|
||||
vt 0.901926 0.560282
|
||||
vt 0.882496 0.560281
|
||||
vt 0.855953 0.533739
|
||||
vt 0.865669 0.497481
|
||||
vt 0.901926 0.487766
|
||||
vt 0.918754 0.497481
|
||||
vt 0.928469 0.514309
|
||||
vt 0.594784 0.489480
|
||||
vt 0.594783 0.718075
|
||||
vt 0.594783 0.580918
|
||||
vt 0.576088 0.364476
|
||||
vt 0.605986 0.290416
|
||||
vt 0.777200 0.320315
|
||||
vt 0.747302 0.394374
|
||||
vt 0.594783 0.866909
|
||||
vt 0.624682 0.792850
|
||||
vt 0.795895 0.822748
|
||||
vt 0.765997 0.896808
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
vn 0.000000 0.992300 0.124000
|
||||
vn 0.000000 -0.992300 0.124000
|
||||
vn -0.848000 0.000000 0.530000
|
||||
vn 0.258800 0.000000 -0.965900
|
||||
vn 0.707100 0.000000 -0.707100
|
||||
vn 0.965900 0.000000 -0.258800
|
||||
vn 0.965900 0.000000 0.258800
|
||||
vn 0.707100 0.000000 0.707100
|
||||
vn -0.069200 0.963600 0.258200
|
||||
vn -0.186200 0.694700 0.694700
|
||||
vn -0.250600 0.250600 0.935100
|
||||
vn 0.069200 0.963600 0.258200
|
||||
vn 0.186200 0.694700 0.694700
|
||||
vn 0.250600 0.250600 0.935100
|
||||
vn 0.189000 0.963600 0.189000
|
||||
vn 0.258200 0.963600 0.069200
|
||||
vn 0.258200 0.963600 -0.069200
|
||||
vn 0.189000 0.963600 -0.189000
|
||||
vn 0.069200 0.963600 -0.258200
|
||||
vn -0.069200 0.963600 -0.258200
|
||||
vn -0.189000 0.963600 -0.189000
|
||||
vn -0.258200 0.963600 -0.069200
|
||||
vn -0.258200 0.963600 0.069200
|
||||
vn -0.189000 0.963600 0.189000
|
||||
vn -0.508600 0.694700 0.508600
|
||||
vn -0.684600 0.250600 0.684600
|
||||
vn -0.694700 0.694700 0.186200
|
||||
vn -0.935100 0.250600 0.250600
|
||||
vn -0.694700 0.694700 -0.186200
|
||||
vn -0.935100 0.250600 -0.250600
|
||||
vn -0.508600 0.694700 -0.508600
|
||||
vn -0.684600 0.250600 -0.684500
|
||||
vn -0.186200 0.694700 -0.694700
|
||||
vn -0.250600 0.250600 -0.935100
|
||||
vn 0.186200 0.694700 -0.694700
|
||||
vn 0.250600 0.250600 -0.935100
|
||||
vn 0.508600 0.694700 -0.508600
|
||||
vn 0.684600 0.250600 -0.684500
|
||||
vn 0.694700 0.694700 -0.186200
|
||||
vn 0.935100 0.250600 -0.250600
|
||||
vn 0.694700 0.694700 0.186200
|
||||
vn 0.508600 0.694700 0.508600
|
||||
vn 0.684600 0.250600 0.684500
|
||||
vn 0.935100 0.250600 0.250600
|
||||
vn -0.258800 0.000000 -0.965900
|
||||
vn -0.707100 0.000000 -0.707100
|
||||
vn 0.258800 -0.000000 0.965900
|
||||
vn -0.258800 0.000000 0.965900
|
||||
vn -0.707100 -0.000000 0.707100
|
||||
vn -0.965900 -0.000000 0.258800
|
||||
vn -0.965900 -0.000000 -0.258800
|
||||
vn 0.848000 0.000000 0.530000
|
||||
vn 0.258800 0.965900 -0.000000
|
||||
vn 0.707100 0.707100 -0.000000
|
||||
vn 0.965900 0.258800 -0.000000
|
||||
vn 0.965900 -0.258800 0.000000
|
||||
vn 0.707100 -0.707100 0.000000
|
||||
vn 0.258800 -0.965900 0.000000
|
||||
vn -0.258800 -0.965900 0.000000
|
||||
vn -0.707100 -0.707100 0.000000
|
||||
vn -0.965900 -0.258800 0.000000
|
||||
vn -0.965900 0.258800 -0.000000
|
||||
vn 0.938900 -0.251600 0.234700
|
||||
vn -0.258800 0.965900 -0.000000
|
||||
vn -0.707100 0.707100 -0.000000
|
||||
vn -0.251600 0.938900 0.234700
|
||||
vn 0.251600 0.938900 0.234700
|
||||
vn 0.938900 0.251600 0.234700
|
||||
vn -0.687400 0.687300 0.234700
|
||||
vn 0.687400 0.687300 0.234700
|
||||
vn -0.938900 0.251600 0.234700
|
||||
vn -0.938900 -0.251600 0.234700
|
||||
vn -0.687300 -0.687400 0.234700
|
||||
vn -0.251600 -0.938900 0.234700
|
||||
vn 0.251600 -0.938900 0.234700
|
||||
vn 0.687300 -0.687300 0.234700
|
||||
vn -0.928500 -0.371400 0.000000
|
||||
vn 0.000000 -0.371400 -0.928500
|
||||
vn 0.928500 -0.371400 0.000000
|
||||
vn 0.000000 -0.371400 0.928500
|
||||
vn 0.684600 0.250600 -0.684600
|
||||
vn 0.684600 0.250600 0.684600
|
||||
vn 0.687300 0.687400 0.234700
|
||||
vn 0.687300 -0.687400 0.234700
|
||||
s off
|
||||
f 4/1/1 3/2/1 1/3/1
|
||||
f 8/4/2 7/5/2 3/2/2
|
||||
f 6/6/3 5/7/3 7/5/3
|
||||
f 2/8/4 1/9/4 5/10/4
|
||||
f 3/2/5 7/5/5 5/11/5
|
||||
f 8/4/6 4/1/6 2/12/6
|
||||
f 10/13/4 9/14/4 11/15/4
|
||||
f 6/16/7 2/17/7 10/13/7
|
||||
f 1/18/8 5/19/8 11/15/8
|
||||
f 9/14/9 10/13/9 2/20/9
|
||||
f 15/21/10 45/22/10 39/23/10
|
||||
f 39/23/11 30/24/11 17/25/11
|
||||
f 17/25/12 30/24/12 28/26/12
|
||||
f 18/27/13 28/26/13 56/28/13
|
||||
f 19/29/14 56/28/14 50/30/14
|
||||
f 49/31/15 14/32/15 43/33/15
|
||||
f 49/31/16 43/33/16 42/34/16
|
||||
f 48/35/17 42/34/17 38/36/17
|
||||
f 55/37/18 14/38/18 49/39/18
|
||||
f 48/40/19 54/41/19 55/37/19
|
||||
f 44/42/20 50/30/20 54/41/20
|
||||
f 61/43/21 14/44/21 55/45/21
|
||||
f 14/46/22 61/47/22 13/48/22
|
||||
f 14/49/23 13/50/23 32/51/23
|
||||
f 32/52/24 41/53/24 14/54/24
|
||||
f 41/55/25 47/56/25 14/57/25
|
||||
f 53/58/26 14/59/26 47/60/26
|
||||
f 59/61/27 14/62/27 53/63/27
|
||||
f 35/64/28 14/65/28 59/66/28
|
||||
f 35/67/29 37/68/29 14/69/29
|
||||
f 43/70/30 14/71/30 37/72/30
|
||||
f 43/70/31 37/72/31 36/73/31
|
||||
f 29/74/32 38/36/32 42/75/32
|
||||
f 36/76/33 37/68/33 35/67/33
|
||||
f 29/74/34 36/76/34 34/77/34
|
||||
f 35/64/35 59/66/35 58/78/35
|
||||
f 57/79/36 33/80/36 34/81/36
|
||||
f 53/63/37 52/82/37 58/83/37
|
||||
f 52/82/38 51/84/38 57/79/38
|
||||
f 47/60/39 46/85/39 52/86/39
|
||||
f 46/85/40 45/87/40 51/84/40
|
||||
f 41/55/41 40/88/41 46/89/41
|
||||
f 40/88/42 39/23/42 45/22/42
|
||||
f 32/52/43 31/90/43 40/91/43
|
||||
f 31/90/44 30/24/44 39/23/44
|
||||
f 32/51/45 13/50/45 27/92/45
|
||||
f 28/26/46 30/24/46 31/93/46
|
||||
f 27/94/47 13/48/47 61/47/47
|
||||
f 54/95/48 60/96/48 61/43/48
|
||||
f 50/30/49 56/28/49 60/96/49
|
||||
f 28/26/50 27/94/50 60/97/50
|
||||
f 45/87/51 15/98/51 26/99/51
|
||||
f 57/79/52 51/84/52 26/99/52
|
||||
f 50/30/53 44/42/53 21/100/53
|
||||
f 21/100/54 44/42/54 38/36/54
|
||||
f 38/36/55 29/74/55 23/101/55
|
||||
f 29/74/56 33/80/56 24/102/56
|
||||
f 24/102/57 33/80/57 57/79/57
|
||||
f 12/103/58 11/15/58 5/104/58
|
||||
f 63/105/59 65/106/59 64/107/59
|
||||
f 65/106/60 67/108/60 66/109/60
|
||||
f 67/108/61 69/110/61 68/111/61
|
||||
f 69/110/62 71/112/62 70/113/62
|
||||
f 71/112/63 73/114/63 72/115/63
|
||||
f 73/114/64 75/116/64 74/117/64
|
||||
f 75/116/65 77/118/65 76/119/65
|
||||
f 77/118/66 79/120/66 78/121/66
|
||||
f 79/120/67 81/122/67 80/123/67
|
||||
f 81/122/68 83/124/68 82/125/68
|
||||
f 69/110/69 89/126/69 90/127/69
|
||||
f 85/128/70 63/129/70 62/130/70
|
||||
f 83/124/71 85/128/71 84/131/71
|
||||
f 68/132/2 76/133/2 84/134/2
|
||||
f 94/135/4 92/136/4 88/137/4
|
||||
f 63/129/72 85/128/72 97/138/72
|
||||
f 63/105/73 87/139/73 86/140/73
|
||||
f 67/108/74 88/141/74 89/142/74
|
||||
f 83/124/75 96/143/75 97/144/75
|
||||
f 67/108/76 65/106/76 86/145/76
|
||||
f 81/122/77 95/146/77 96/147/77
|
||||
f 79/120/78 94/148/78 95/149/78
|
||||
f 79/120/79 77/118/79 93/150/79
|
||||
f 75/116/80 92/151/80 93/152/80
|
||||
f 73/114/81 91/153/81 92/154/81
|
||||
f 71/112/82 90/155/82 91/156/82
|
||||
f 101/157/83 100/158/83 98/159/83
|
||||
f 105/160/84 104/161/84 100/158/84
|
||||
f 103/162/85 102/163/85 104/161/85
|
||||
f 99/164/86 98/159/86 102/163/86
|
||||
f 100/158/5 104/161/5 102/163/5
|
||||
f 109/165/83 108/166/83 106/167/83
|
||||
f 113/168/84 112/169/84 108/166/84
|
||||
f 111/170/85 110/171/85 112/169/85
|
||||
f 107/172/86 106/167/86 110/171/86
|
||||
f 108/166/5 112/169/5 110/171/5
|
||||
f 2/173/1 4/1/1 1/3/1
|
||||
f 4/1/2 8/4/2 3/2/2
|
||||
f 8/4/3 6/6/3 7/5/3
|
||||
f 6/174/4 2/8/4 5/10/4
|
||||
f 1/175/5 3/2/5 5/11/5
|
||||
f 6/176/6 8/4/6 2/12/6
|
||||
f 12/103/4 10/13/4 11/15/4
|
||||
f 12/103/7 6/16/7 10/13/7
|
||||
f 9/14/8 1/18/8 11/15/8
|
||||
f 1/177/9 9/14/9 2/20/9
|
||||
f 16/178/10 15/21/10 39/23/10
|
||||
f 16/178/11 39/23/11 17/25/11
|
||||
f 18/27/12 17/25/12 28/26/12
|
||||
f 19/29/13 18/27/13 56/28/13
|
||||
f 20/179/14 19/29/14 50/30/14
|
||||
f 48/35/16 49/31/16 42/34/16
|
||||
f 44/42/17 48/35/17 38/36/17
|
||||
f 49/39/19 48/40/19 55/37/19
|
||||
f 48/40/20 44/42/20 54/41/20
|
||||
f 42/75/31 43/70/31 36/73/31
|
||||
f 36/73/32 29/74/32 42/75/32
|
||||
f 34/77/33 36/76/33 35/67/33
|
||||
f 33/80/34 29/74/34 34/77/34
|
||||
f 34/81/35 35/64/35 58/78/35
|
||||
f 58/78/36 57/79/36 34/81/36
|
||||
f 59/61/37 53/63/37 58/83/37
|
||||
f 58/83/38 52/82/38 57/79/38
|
||||
f 53/58/39 47/60/39 52/86/39
|
||||
f 52/86/40 46/85/40 51/84/40
|
||||
f 47/56/41 41/55/41 46/89/41
|
||||
f 46/89/42 40/88/42 45/22/42
|
||||
f 41/53/43 32/52/43 40/91/43
|
||||
f 40/91/87 31/90/87 39/23/87
|
||||
f 31/93/45 32/51/45 27/92/45
|
||||
f 27/92/46 28/26/46 31/93/46
|
||||
f 60/97/47 27/94/47 61/47/47
|
||||
f 55/45/48 54/95/48 61/43/48
|
||||
f 54/95/88 50/30/88 60/96/88
|
||||
f 56/28/50 28/26/50 60/97/50
|
||||
f 51/84/51 45/87/51 26/99/51
|
||||
f 25/180/52 57/79/52 26/99/52
|
||||
f 20/179/53 50/30/53 21/100/53
|
||||
f 22/181/54 21/100/54 38/36/54
|
||||
f 22/181/55 38/36/55 23/101/55
|
||||
f 23/101/56 29/74/56 24/102/56
|
||||
f 25/180/57 24/102/57 57/79/57
|
||||
f 6/182/58 12/103/58 5/104/58
|
||||
f 62/183/59 63/105/59 64/107/59
|
||||
f 64/107/60 65/106/60 66/109/60
|
||||
f 66/109/61 67/108/61 68/111/61
|
||||
f 68/111/62 69/110/62 70/113/62
|
||||
f 70/113/63 71/112/63 72/115/63
|
||||
f 72/115/64 73/114/64 74/117/64
|
||||
f 74/117/65 75/116/65 76/119/65
|
||||
f 76/119/66 77/118/66 78/121/66
|
||||
f 78/121/67 79/120/67 80/123/67
|
||||
f 80/123/68 81/122/68 82/125/68
|
||||
f 71/112/69 69/110/69 90/127/69
|
||||
f 84/131/70 85/128/70 62/130/70
|
||||
f 82/125/71 83/124/71 84/131/71
|
||||
f 84/134/2 62/184/2 64/185/2
|
||||
f 64/185/2 66/186/2 84/134/2
|
||||
f 68/132/2 70/187/2 72/188/2
|
||||
f 72/188/2 74/189/2 68/132/2
|
||||
f 76/133/2 78/190/2 80/191/2
|
||||
f 80/191/2 82/192/2 84/134/2
|
||||
f 84/134/2 66/186/2 68/132/2
|
||||
f 68/132/2 74/189/2 76/133/2
|
||||
f 76/133/2 80/191/2 84/134/2
|
||||
f 88/137/4 86/193/4 96/194/4
|
||||
f 87/195/4 97/196/4 96/194/4
|
||||
f 96/194/4 95/197/4 94/135/4
|
||||
f 94/135/4 93/198/4 92/136/4
|
||||
f 92/136/4 91/199/4 88/137/4
|
||||
f 90/200/4 89/201/4 88/137/4
|
||||
f 86/193/4 87/195/4 96/194/4
|
||||
f 96/194/4 94/135/4 88/137/4
|
||||
f 91/199/4 90/200/4 88/137/4
|
||||
f 87/202/72 63/129/72 97/138/72
|
||||
f 65/106/73 63/105/73 86/140/73
|
||||
f 69/110/74 67/108/74 89/142/74
|
||||
f 85/128/75 83/124/75 97/144/75
|
||||
f 88/203/89 67/108/89 86/145/89
|
||||
f 83/124/77 81/122/77 96/147/77
|
||||
f 81/122/78 79/120/78 95/149/78
|
||||
f 94/204/79 79/120/79 93/150/79
|
||||
f 77/118/80 75/116/80 93/152/80
|
||||
f 75/116/81 73/114/81 92/154/81
|
||||
f 73/114/90 71/112/90 91/156/90
|
||||
f 99/205/83 101/157/83 98/159/83
|
||||
f 101/206/84 105/160/84 100/158/84
|
||||
f 105/207/85 103/162/85 104/161/85
|
||||
f 103/208/86 99/164/86 102/163/86
|
||||
f 98/159/5 100/158/5 102/163/5
|
||||
f 107/209/83 109/165/83 106/167/83
|
||||
f 109/210/84 113/168/84 108/166/84
|
||||
f 113/211/85 111/170/85 112/169/85
|
||||
f 111/212/86 107/172/86 110/171/86
|
||||
f 106/167/5 108/166/5 110/171/5
|
||||
@ -1,202 +0,0 @@
|
||||
# Blender v2.76 (sub 0) OBJ File: 'cwis_rotor.blend'
|
||||
# www.blender.org
|
||||
o Cylinder.001
|
||||
v 0.000000 0.250000 -1.000000
|
||||
v 0.000000 0.375000 -1.000000
|
||||
v 0.500000 0.250000 -0.866025
|
||||
v 0.500000 0.375000 -0.866025
|
||||
v 0.866025 0.250000 -0.500000
|
||||
v 0.866025 0.375000 -0.500000
|
||||
v 1.000000 0.250000 0.000000
|
||||
v 1.000000 0.375000 0.000000
|
||||
v 0.866025 0.250000 0.500000
|
||||
v 0.866025 0.375000 0.500000
|
||||
v 0.500000 0.250000 0.866025
|
||||
v 0.500000 0.375000 0.866025
|
||||
v 0.000000 0.250000 1.000000
|
||||
v 0.000000 0.375000 1.000000
|
||||
v -0.500000 0.250000 0.866026
|
||||
v -0.500000 0.375000 0.866026
|
||||
v -0.866025 0.250000 0.500000
|
||||
v -0.866025 0.375000 0.500000
|
||||
v -1.000000 0.250000 0.000000
|
||||
v -1.000000 0.375000 0.000000
|
||||
v -0.866026 0.250000 -0.499999
|
||||
v -0.866026 0.375000 -0.499999
|
||||
v -0.500001 0.250000 -0.866025
|
||||
v -0.500001 0.375000 -0.866025
|
||||
v 0.500000 0.375000 0.500000
|
||||
v 0.850000 0.375000 0.500000
|
||||
v 0.500000 0.375000 -0.500000
|
||||
v 0.850000 0.375000 -0.500000
|
||||
v 0.500000 1.875000 -0.325000
|
||||
v 0.500000 1.875000 0.325000
|
||||
v 0.850000 1.875000 0.325000
|
||||
v 0.850000 1.875000 -0.325000
|
||||
v -0.850000 0.375000 0.500000
|
||||
v -0.500000 0.375000 0.500000
|
||||
v -0.850000 0.375000 -0.500000
|
||||
v -0.500000 0.375000 -0.500000
|
||||
v -0.850000 1.875000 -0.325000
|
||||
v -0.850000 1.875000 0.325000
|
||||
v -0.500000 1.875000 0.325000
|
||||
v -0.500000 1.875000 -0.325000
|
||||
vt 0.447419 0.884668
|
||||
vt 0.375998 0.884668
|
||||
vt 0.375998 0.867421
|
||||
vt 0.304576 0.884668
|
||||
vt 0.304576 0.867421
|
||||
vt 0.233155 0.884668
|
||||
vt 0.233155 0.867421
|
||||
vt 0.161734 0.884668
|
||||
vt 0.161734 0.867421
|
||||
vt 0.090312 0.884668
|
||||
vt 0.090312 0.867421
|
||||
vt 0.018891 0.884668
|
||||
vt 0.018891 0.867421
|
||||
vt 0.485201 0.867421
|
||||
vt 0.556623 0.867421
|
||||
vt 0.556623 0.884668
|
||||
vt 0.628044 0.867421
|
||||
vt 0.628044 0.884668
|
||||
vt 0.699465 0.867421
|
||||
vt 0.699465 0.884668
|
||||
vt 0.770886 0.867421
|
||||
vt 0.770886 0.884668
|
||||
vt 0.054602 0.793928
|
||||
vt 0.116454 0.563091
|
||||
vt 0.285439 0.732075
|
||||
vt 0.842308 0.867421
|
||||
vt 0.913729 0.867421
|
||||
vt 0.913729 0.884668
|
||||
vt 0.842308 0.884668
|
||||
vt 0.589769 0.732075
|
||||
vt 0.323221 0.660654
|
||||
vt 0.420785 0.563091
|
||||
vt 0.274146 0.227258
|
||||
vt 0.274146 0.316942
|
||||
vt 0.225854 0.316942
|
||||
vt 0.774146 0.227258
|
||||
vt 0.774146 0.316942
|
||||
vt 0.725854 0.316942
|
||||
vt 0.518891 0.203112
|
||||
vt 0.725854 0.227258
|
||||
vt 0.725854 0.525308
|
||||
vt 0.774146 0.018891
|
||||
vt 0.981109 0.341087
|
||||
vt 0.018891 0.203112
|
||||
vt 0.225854 0.227258
|
||||
vt 0.225854 0.525308
|
||||
vt 0.274146 0.018891
|
||||
vt 0.481109 0.341087
|
||||
vt 0.447419 0.867421
|
||||
vt 0.485201 0.884668
|
||||
vt 0.249728 0.793928
|
||||
vt 0.187876 0.829639
|
||||
vt 0.116454 0.829638
|
||||
vt 0.018891 0.732075
|
||||
vt 0.018891 0.660654
|
||||
vt 0.054602 0.598801
|
||||
vt 0.187876 0.563091
|
||||
vt 0.249728 0.598801
|
||||
vt 0.285439 0.660654
|
||||
vt 0.492206 0.563091
|
||||
vt 0.554059 0.598801
|
||||
vt 0.589769 0.660654
|
||||
vt 0.554059 0.793928
|
||||
vt 0.492206 0.829638
|
||||
vt 0.420785 0.829638
|
||||
vt 0.358932 0.793928
|
||||
vt 0.323221 0.732075
|
||||
vt 0.358932 0.598801
|
||||
vt 0.518891 0.341087
|
||||
vt 0.774145 0.525308
|
||||
vt 0.725854 0.018891
|
||||
vt 0.981109 0.203112
|
||||
vt 0.018891 0.341087
|
||||
vt 0.274145 0.525308
|
||||
vt 0.225854 0.018891
|
||||
vt 0.481109 0.203112
|
||||
vn 0.258800 0.000000 -0.965900
|
||||
vn 0.707100 0.000000 -0.707100
|
||||
vn 0.965900 0.000000 -0.258800
|
||||
vn 0.965900 0.000000 0.258800
|
||||
vn 0.707100 0.000000 0.707100
|
||||
vn 0.258800 0.000000 0.965900
|
||||
vn -0.258800 0.000000 0.965900
|
||||
vn -0.707100 0.000000 0.707100
|
||||
vn -0.965900 0.000000 0.258800
|
||||
vn -0.965900 0.000000 -0.258800
|
||||
vn 0.000000 1.000000 0.000000
|
||||
vn -0.258800 0.000000 -0.965900
|
||||
vn -0.707100 0.000000 -0.707100
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.115900 -0.993300
|
||||
vn 0.000000 0.115900 0.993300
|
||||
vn 1.000000 0.000000 0.000000
|
||||
s off
|
||||
f 2/1/1 4/2/1 3/3/1
|
||||
f 4/2/2 6/4/2 5/5/2
|
||||
f 6/4/3 8/6/3 7/7/3
|
||||
f 8/6/4 10/8/4 9/9/4
|
||||
f 10/8/5 12/10/5 11/11/5
|
||||
f 12/10/6 14/12/6 13/13/6
|
||||
f 14/14/7 16/15/7 15/16/7
|
||||
f 16/15/8 18/17/8 17/18/8
|
||||
f 18/17/9 20/19/9 19/20/9
|
||||
f 20/19/10 22/21/10 21/22/10
|
||||
f 22/23/11 14/24/11 6/25/11
|
||||
f 24/26/12 2/27/12 1/28/12
|
||||
f 22/21/13 24/26/13 23/29/13
|
||||
f 7/30/14 19/31/14 23/32/14
|
||||
f 39/33/11 40/34/11 37/35/11
|
||||
f 31/36/11 32/37/11 29/38/11
|
||||
f 25/39/15 30/40/15 29/38/15
|
||||
f 27/41/16 29/38/16 32/37/16
|
||||
f 26/42/17 31/36/17 30/40/17
|
||||
f 28/43/18 32/37/18 31/36/18
|
||||
f 33/44/15 38/45/15 37/35/15
|
||||
f 35/46/16 37/35/16 40/34/16
|
||||
f 34/47/17 39/33/17 38/45/17
|
||||
f 36/48/18 40/34/18 39/33/18
|
||||
f 1/49/1 2/1/1 3/3/1
|
||||
f 3/3/2 4/2/2 5/5/2
|
||||
f 5/5/3 6/4/3 7/7/3
|
||||
f 7/7/4 8/6/4 9/9/4
|
||||
f 9/9/5 10/8/5 11/11/5
|
||||
f 11/11/6 12/10/6 13/13/6
|
||||
f 13/50/7 14/14/7 15/16/7
|
||||
f 15/16/8 16/15/8 17/18/8
|
||||
f 17/18/9 18/17/9 19/20/9
|
||||
f 19/20/10 20/19/10 21/22/10
|
||||
f 6/25/11 4/51/11 2/52/11
|
||||
f 2/52/11 24/53/11 22/23/11
|
||||
f 22/23/11 20/54/11 18/55/11
|
||||
f 18/55/11 16/56/11 14/24/11
|
||||
f 14/24/11 12/57/11 10/58/11
|
||||
f 10/58/11 8/59/11 6/25/11
|
||||
f 6/25/11 2/52/11 22/23/11
|
||||
f 22/23/11 18/55/11 14/24/11
|
||||
f 14/24/11 10/58/11 6/25/11
|
||||
f 23/29/12 24/26/12 1/28/12
|
||||
f 21/22/13 22/21/13 23/29/13
|
||||
f 23/32/14 1/60/14 3/61/14
|
||||
f 3/61/14 5/62/14 7/30/14
|
||||
f 7/30/14 9/63/14 11/64/14
|
||||
f 11/64/14 13/65/14 15/66/14
|
||||
f 15/66/14 17/67/14 19/31/14
|
||||
f 19/31/14 21/68/14 23/32/14
|
||||
f 23/32/14 3/61/14 7/30/14
|
||||
f 7/30/14 11/64/14 15/66/14
|
||||
f 15/66/14 19/31/14 7/30/14
|
||||
f 38/45/11 39/33/11 37/35/11
|
||||
f 30/40/11 31/36/11 29/38/11
|
||||
f 27/69/15 25/39/15 29/38/15
|
||||
f 28/70/16 27/41/16 32/37/16
|
||||
f 25/71/17 26/42/17 30/40/17
|
||||
f 26/72/18 28/43/18 31/36/18
|
||||
f 35/73/15 33/44/15 37/35/15
|
||||
f 36/74/16 35/46/16 40/34/16
|
||||
f 33/75/17 34/47/17 38/45/17
|
||||
f 34/76/18 36/48/18 39/33/18
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
4345
src/main/resources/assets/hbm/models/machines/ore_slopper.obj
Normal file
4345
src/main/resources/assets/hbm/models/machines/ore_slopper.obj
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user