Merge branch 'HbmMods:master' into OC_bugfix

This commit is contained in:
BallOfEnergy 2024-06-27 21:09:59 -05:00 committed by GitHub
commit 72e4cb42e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
254 changed files with 6809 additions and 10345 deletions

View File

@ -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)

View File

@ -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),\

View File

@ -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) {

View File

@ -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);

View File

@ -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);
}

View File

@ -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)) + "%");
}
}

View File

@ -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) {

View File

@ -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) {

View File

@ -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) {

View File

@ -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) {

View 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);
}
}

View File

@ -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) {

View File

@ -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) {

View File

@ -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) {

View File

@ -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);

View File

@ -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);

View File

@ -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() });

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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) {

View File

@ -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;
}

View File

@ -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) {

View File

@ -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

View File

@ -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 {

View File

@ -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

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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;

View File

@ -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);
}
}

View 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);
}
}

View File

@ -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) {

View File

@ -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;

View File

@ -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() {

View File

@ -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);
}
}

View File

@ -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()) {

View File

@ -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) {

View File

@ -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) {

View File

@ -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) {

View File

@ -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));

View File

@ -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
}
}

View File

@ -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;

View File

@ -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());

View 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);
}
}

View 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);
}
}

View File

@ -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");
}
}
}

View 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";
}
}

View File

@ -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

View File

@ -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());

View File

@ -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());
}
}
}

View File

@ -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);

View File

@ -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

View File

@ -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);
}
}

View File

@ -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));

View File

@ -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();

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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));
}
}

View 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);
}
}

View File

@ -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);
}};
}
}

View File

@ -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

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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";
}

View File

@ -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

View File

@ -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

View File

@ -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) {

View File

@ -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() {

View File

@ -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

View File

@ -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) {

View File

@ -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) {

View File

@ -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

View File

@ -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);

View File

@ -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() {

View File

@ -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

View File

@ -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() {

View File

@ -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() {

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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);

View File

@ -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) {

View File

@ -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());

View File

@ -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) {

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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) {

View File

@ -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;

View File

@ -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 {

View File

@ -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

View File

@ -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

View File

@ -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

View 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

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