Merge branch 'master' into NEI-schenanigans

This commit is contained in:
70000hp 2024-07-10 12:16:45 -04:00
commit 851d6fb0bf
142 changed files with 13890 additions and 924 deletions

View File

@ -1,26 +1,6 @@
## Changed ## Changed
* Updated boxducts * Changed bedrock ore processing time in the electrolyzer to 60 ticks
* 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
* Fixed crash caused by PRISM updating unloaded worlds * Fixed issue where the NEI universal handler can not correctly display more than 4 outputs (now supports up to 8, which should cover all possible electrolyzer cases too)
* Hopefully fixed another crash caused by PRISM (reproduction was unreliable and sporadic, not confirmed) * Fixed the metal electrolysis duration variable not being part of the config

View File

@ -1,6 +1,6 @@
mod_version=1.0.27 mod_version=1.0.27
# Empty build number makes a release type # Empty build number makes a release type
mod_build_number=5000 mod_build_number=5020
credits=HbMinecraft,\ credits=HbMinecraft,\
\ rodolphito (explosion algorithms),\ \ rodolphito (explosion algorithms),\

View File

@ -2,6 +2,7 @@ package api.hbm.energymk2;
import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.util.Compat;
import api.hbm.energymk2.Nodespace.PowerNode; import api.hbm.energymk2.Nodespace.PowerNode;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
@ -24,7 +25,7 @@ public interface IEnergyProviderMK2 extends IEnergyHandlerMK2 {
public default void tryProvide(World world, int x, int y, int z, ForgeDirection dir) { public default void tryProvide(World world, int x, int y, int z, ForgeDirection dir) {
TileEntity te = world.getTileEntity(x, y, z); TileEntity te = Compat.getTileStandard(world, x, y, z);
boolean red = false; boolean red = false;
if(te instanceof IEnergyConductorMK2) { if(te instanceof IEnergyConductorMK2) {

View File

@ -2,6 +2,7 @@ package api.hbm.energymk2;
import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.util.Compat;
import api.hbm.energymk2.Nodespace.PowerNode; import api.hbm.energymk2.Nodespace.PowerNode;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
@ -30,7 +31,7 @@ public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2 {
public default void trySubscribe(World world, int x, int y, int z, ForgeDirection dir) { public default void trySubscribe(World world, int x, int y, int z, ForgeDirection dir) {
TileEntity te = world.getTileEntity(x, y, z); TileEntity te = Compat.getTileStandard(world, x, y, z);
boolean red = false; boolean red = false;
if(te instanceof IEnergyConductorMK2) { if(te instanceof IEnergyConductorMK2) {

View File

@ -3,6 +3,7 @@ package api.hbm.fluid;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.util.Compat;
import api.hbm.tile.ILoadedTile; import api.hbm.tile.ILoadedTile;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
@ -45,7 +46,7 @@ public interface IFluidConnector extends ILoadedTile {
*/ */
public default void trySubscribe(FluidType type, World world, int x, int y, int z, ForgeDirection dir) { public default void trySubscribe(FluidType type, World world, int x, int y, int z, ForgeDirection dir) {
TileEntity te = world.getTileEntity(x, y, z); TileEntity te = Compat.getTileStandard(world, x, y, z);
boolean red = false; boolean red = false;
if(te instanceof IFluidConductor) { if(te instanceof IFluidConductor) {

View File

@ -4,6 +4,7 @@ import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.util.Compat;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
@ -71,7 +72,7 @@ public interface IFluidUser extends IFluidConnector {
public static IPipeNet getPipeNet(World world, int x, int y, int z, FluidType type) { public static IPipeNet getPipeNet(World world, int x, int y, int z, FluidType type) {
TileEntity te = world.getTileEntity(x, y, z); TileEntity te = Compat.getTileStandard(world, x, y, z);
if(te instanceof IFluidConductor) { if(te instanceof IFluidConductor) {
IFluidConductor con = (IFluidConductor) te; IFluidConductor con = (IFluidConductor) te;

View File

@ -526,7 +526,6 @@ public class ModBlocks {
public static Block lox_barrel; public static Block lox_barrel;
public static Block taint_barrel; public static Block taint_barrel;
public static Block crashed_balefire; public static Block crashed_balefire;
public static Block rejuvinator;
public static Block fireworks; public static Block fireworks;
public static Block dynamite; public static Block dynamite;
public static Block tnt; public static Block tnt;
@ -591,6 +590,7 @@ public class ModBlocks {
public static Block spikes; public static Block spikes;
public static Block charger; public static Block charger;
public static Block floodlight;
public static Block tesla; public static Block tesla;
@ -791,6 +791,7 @@ public class ModBlocks {
public static Block crane_boxer; public static Block crane_boxer;
public static Block crane_unboxer; public static Block crane_unboxer;
public static Block crane_splitter; public static Block crane_splitter;
public static Block crane_partitioner;
public static Block drone_waypoint; public static Block drone_waypoint;
public static Block drone_crate; public static Block drone_crate;
@ -1098,7 +1099,6 @@ public class ModBlocks {
public static Block rbmk_loader; public static Block rbmk_loader;
public static Block rbmk_steam_inlet; public static Block rbmk_steam_inlet;
public static Block rbmk_steam_outlet; public static Block rbmk_steam_outlet;
public static Block rbmk_heatex;
public static Block pribris; public static Block pribris;
public static Block pribris_burning; public static Block pribris_burning;
public static Block pribris_radiating; public static Block pribris_radiating;
@ -1491,6 +1491,7 @@ public class ModBlocks {
spotlight_halogen = new Spotlight(Material.iron, 32, LightType.HALOGEN, true).setBlockName("spotlight_halogen").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":flood_lamp"); spotlight_halogen = new Spotlight(Material.iron, 32, LightType.HALOGEN, true).setBlockName("spotlight_halogen").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":flood_lamp");
spotlight_halogen_off = new Spotlight(Material.iron, 32, LightType.HALOGEN, false).setBlockName("spotlight_halogen_off").setBlockTextureName(RefStrings.MODID + ":flood_lamp_off"); spotlight_halogen_off = new Spotlight(Material.iron, 32, LightType.HALOGEN, false).setBlockName("spotlight_halogen_off").setBlockTextureName(RefStrings.MODID + ":flood_lamp_off");
spotlight_beam = new SpotlightBeam().setBlockName("spotlight_beam"); spotlight_beam = new SpotlightBeam().setBlockName("spotlight_beam");
floodlight = new Floodlight(Material.iron).setBlockName("floodlight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
reinforced_stone = new BlockGeneric(Material.rock).setBlockName("reinforced_stone").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_stone"); reinforced_stone = new BlockGeneric(Material.rock).setBlockName("reinforced_stone").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_stone");
concrete_smooth = new BlockRadResistant(Material.rock).setBlockName("concrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); concrete_smooth = new BlockRadResistant(Material.rock).setBlockName("concrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete");
@ -1911,6 +1912,7 @@ public class ModBlocks {
crane_boxer = new CraneBoxer().setBlockName("crane_boxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crane_boxer = new CraneBoxer().setBlockName("crane_boxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
crane_unboxer = new CraneUnboxer().setBlockName("crane_unboxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crane_unboxer = new CraneUnboxer().setBlockName("crane_unboxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
crane_splitter = new CraneSplitter().setBlockName("crane_splitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_side"); crane_splitter = new CraneSplitter().setBlockName("crane_splitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_side");
crane_partitioner = new CranePartitioner().setBlockName("crane_partitioner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_partitioner_side");
fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
@ -2125,7 +2127,6 @@ public class ModBlocks {
rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader"); rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader");
rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet"); rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet");
rbmk_steam_outlet = new RBMKOutlet(Material.iron).setBlockName("rbmk_steam_outlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_outlet"); rbmk_steam_outlet = new RBMKOutlet(Material.iron).setBlockName("rbmk_steam_outlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_outlet");
rbmk_heatex = new RBMKHeatex(Material.iron).setBlockName("rbmk_heatex").setCreativeTab(null).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_heatex");
pribris = new RBMKDebris().setBlockName("pribris").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris"); pribris = new RBMKDebris().setBlockName("pribris").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris");
pribris_burning = new RBMKDebrisBurning().setBlockName("pribris_burning").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_burning"); pribris_burning = new RBMKDebrisBurning().setBlockName("pribris_burning").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_burning");
pribris_radiating = new RBMKDebrisRadiating().setBlockName("pribris_radiating").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_radiating"); pribris_radiating = new RBMKDebrisRadiating().setBlockName("pribris_radiating").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_radiating");
@ -2629,6 +2630,7 @@ public class ModBlocks {
GameRegistry.registerBlock(spotlight_halogen, spotlight_halogen.getUnlocalizedName()); GameRegistry.registerBlock(spotlight_halogen, spotlight_halogen.getUnlocalizedName());
GameRegistry.registerBlock(spotlight_halogen_off, spotlight_halogen_off.getUnlocalizedName()); GameRegistry.registerBlock(spotlight_halogen_off, spotlight_halogen_off.getUnlocalizedName());
GameRegistry.registerBlock(spotlight_beam, spotlight_beam.getUnlocalizedName()); GameRegistry.registerBlock(spotlight_beam, spotlight_beam.getUnlocalizedName());
register(floodlight);
//Reinforced Blocks //Reinforced Blocks
GameRegistry.registerBlock(asphalt, ItemBlockBlastInfo.class, asphalt.getUnlocalizedName()); GameRegistry.registerBlock(asphalt, ItemBlockBlastInfo.class, asphalt.getUnlocalizedName());
@ -2717,6 +2719,7 @@ public class ModBlocks {
//Charger //Charger
GameRegistry.registerBlock(charger, charger.getUnlocalizedName()); GameRegistry.registerBlock(charger, charger.getUnlocalizedName());
//GameRegistry.registerBlock(floodlight, floodlight.getUnlocalizedName());
//Decoration Blocks //Decoration Blocks
GameRegistry.registerBlock(block_meteor, block_meteor.getUnlocalizedName()); GameRegistry.registerBlock(block_meteor, block_meteor.getUnlocalizedName());
@ -2892,7 +2895,6 @@ public class ModBlocks {
GameRegistry.registerBlock(therm_endo, therm_endo.getUnlocalizedName()); GameRegistry.registerBlock(therm_endo, therm_endo.getUnlocalizedName());
GameRegistry.registerBlock(therm_exo, therm_exo.getUnlocalizedName()); GameRegistry.registerBlock(therm_exo, therm_exo.getUnlocalizedName());
GameRegistry.registerBlock(emp_bomb, emp_bomb.getUnlocalizedName()); GameRegistry.registerBlock(emp_bomb, emp_bomb.getUnlocalizedName());
//GameRegistry.registerBlock(rejuvinator, rejuvinator.getUnlocalizedName());
GameRegistry.registerBlock(det_cord, det_cord.getUnlocalizedName()); GameRegistry.registerBlock(det_cord, det_cord.getUnlocalizedName());
GameRegistry.registerBlock(det_charge, det_charge.getUnlocalizedName()); GameRegistry.registerBlock(det_charge, det_charge.getUnlocalizedName());
GameRegistry.registerBlock(det_nuke, det_nuke.getUnlocalizedName()); GameRegistry.registerBlock(det_nuke, det_nuke.getUnlocalizedName());
@ -3110,7 +3112,6 @@ public class ModBlocks {
register(rbmk_loader); register(rbmk_loader);
register(rbmk_steam_inlet); register(rbmk_steam_inlet);
register(rbmk_steam_outlet); register(rbmk_steam_outlet);
GameRegistry.registerBlock(rbmk_heatex, rbmk_heatex.getUnlocalizedName());
GameRegistry.registerBlock(pribris, pribris.getUnlocalizedName()); GameRegistry.registerBlock(pribris, pribris.getUnlocalizedName());
GameRegistry.registerBlock(pribris_burning, pribris_burning.getUnlocalizedName()); GameRegistry.registerBlock(pribris_burning, pribris_burning.getUnlocalizedName());
GameRegistry.registerBlock(pribris_radiating, pribris_radiating.getUnlocalizedName()); GameRegistry.registerBlock(pribris_radiating, pribris_radiating.getUnlocalizedName());
@ -3162,6 +3163,7 @@ public class ModBlocks {
register(conveyor_chute); register(conveyor_chute);
register(conveyor_lift); register(conveyor_lift);
register(crane_splitter); register(crane_splitter);
register(crane_partitioner);
register(drone_waypoint); register(drone_waypoint);
register(drone_crate); register(drone_crate);
register(drone_waypoint_request); register(drone_waypoint_request);

View File

@ -0,0 +1,86 @@
package com.hbm.blocks.machine;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
public class Floodlight extends BlockContainer {
public Floodlight(Material mat) {
super(mat);
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityFloodlight();
}
@Override public int getRenderType() { return -1; }
@Override public boolean isOpaqueCube() { return false; }
@Override public boolean renderAsNormalBlock() { return false; }
//only method that respects sides, called first for orientation
@Override
public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) {
return side;
}
//only method with player param, called second for variable rotation
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) {
int meta = world.getBlockMetadata(x, y, z);
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
float rotation = player.rotationPitch;
if(meta == 0 || meta == 1) {
if(i == 0 || i == 2) world.setBlockMetadataWithNotify(x, y, z, meta + 6, 3);
if(meta == 1) if(i == 0 || i == 1) rotation = 180F - rotation;
if(meta == 0) if(i == 0 || i == 3) rotation = 180F - rotation;
}
TileEntity tile = world.getTileEntity(x, y, z);
if(tile instanceof TileEntityFloodlight) {
TileEntityFloodlight floodlight = (TileEntityFloodlight) tile;
floodlight.rotation = -Math.round(rotation / 5F) * 5F;
}
}
public static class TileEntityFloodlight extends TileEntity {
public float rotation;
@Override
public Packet getDescriptionPacket() {
NBTTagCompound nbt = new NBTTagCompound();
this.writeToNBT(nbt);
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt);
}
@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
this.readFromNBT(pkt.func_148857_g());
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
this.rotation = nbt.getFloat("rotation");
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setFloat("rotation", rotation);
}
}
}

View File

@ -1,12 +1,15 @@
package com.hbm.blocks.machine; package com.hbm.blocks.machine;
import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.BlockDummyable;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntityMachineOreSlopper; import com.hbm.tileentity.machine.TileEntityMachineOreSlopper;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class MachineOreSlopper extends BlockDummyable { public class MachineOreSlopper extends BlockDummyable {
@ -17,6 +20,7 @@ public class MachineOreSlopper extends BlockDummyable {
@Override @Override
public TileEntity createNewTileEntity(World world, int meta) { public TileEntity createNewTileEntity(World world, int meta) {
if(meta >= 12) return new TileEntityMachineOreSlopper(); if(meta >= 12) return new TileEntityMachineOreSlopper();
if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid();
return null; return null;
} }
@ -32,6 +36,40 @@ public class MachineOreSlopper extends BlockDummyable {
@Override @Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
this.bounding.clear();
//Base
this.bounding.add(AxisAlignedBB.getBoundingBox(-3.5, 0, -1.5, 3.5, 1, 1.5));
//Slop bucket
this.bounding.add(AxisAlignedBB.getBoundingBox(0.5, 1, -1.5, 3.5, 3.25, 1.5));
//Shredder
this.bounding.add(AxisAlignedBB.getBoundingBox(-2.25, 1, -1.5, 0.25, 3.25, -0.75));
this.bounding.add(AxisAlignedBB.getBoundingBox(-2.25, 1, 0.75, 0.25, 3.25, 1.5));
this.bounding.add(AxisAlignedBB.getBoundingBox(-2.25, 1, -1.5, -2, 3.25, 1.5));
this.bounding.add(AxisAlignedBB.getBoundingBox(0, 1, -1.5, 0.25, 3.25, 1.5));
this.bounding.add(AxisAlignedBB.getBoundingBox(-2, 1, -0.75, 0, 2, 0.75));
//Outlet
this.bounding.add(AxisAlignedBB.getBoundingBox(-3.25, 1, -1, -2.25, 3, 1));
return standardOpenBehavior(world, x, y, z, player, side); return standardOpenBehavior(world, x, y, z, player, side);
} }
@Override
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
super.fillSpace(world, x, y, z, dir, o);
x += dir.offsetX * o;
z += dir.offsetZ * o;
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
this.makeExtra(world, x + dir.offsetX * 3, y, z + dir.offsetZ * 3);
this.makeExtra(world, x - dir.offsetX * 3, y, z - dir.offsetZ * 3);
this.makeExtra(world, x + rot.offsetX, y, z + rot.offsetZ);
this.makeExtra(world, x - rot.offsetX, y, z - rot.offsetZ);
this.makeExtra(world, x + dir.offsetX * 2 + rot.offsetX, y, z + dir.offsetZ * 2 + rot.offsetZ);
this.makeExtra(world, x + dir.offsetX * 2 - rot.offsetX, y, z + dir.offsetZ * 2 - rot.offsetZ);
this.makeExtra(world, x - dir.offsetX * 2 + rot.offsetX, y, z - dir.offsetZ * 2 + rot.offsetZ);
this.makeExtra(world, x - dir.offsetX * 2 - rot.offsetX, y, z - dir.offsetZ * 2 - rot.offsetZ);
}
} }

View File

@ -1,15 +1,23 @@
package com.hbm.blocks.machine; package com.hbm.blocks.machine;
import java.util.ArrayList;
import java.util.List;
import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ILookOverlay;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntitySolarBoiler; import com.hbm.tileentity.machine.TileEntitySolarBoiler;
import com.hbm.util.I18nUtil;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class MachineSolarBoiler extends BlockDummyable { public class MachineSolarBoiler extends BlockDummyable implements ILookOverlay {
public MachineSolarBoiler(Material mat) { public MachineSolarBoiler(Material mat) {
super(mat); super(mat);
@ -45,4 +53,28 @@ public class MachineSolarBoiler extends BlockDummyable {
this.makeExtra(world, x, y + 2, z); this.makeExtra(world, x, y + 2, z);
} }
@Override
public void printHook(Pre event, World world, int x, int y, int z) {
int[] pos = findCore(world, x, y, z);
if(pos == null)
return;
TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]);
if(!(te instanceof TileEntitySolarBoiler))
return;
TileEntitySolarBoiler boiler = (TileEntitySolarBoiler) te;
List<String> text = new ArrayList<>();
FluidTank[] tanks = boiler.getAllTanks();
for(int i = 0; i < tanks.length; i++)
text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tanks[i].getTankType().getLocalizedName() + ": " + tanks[i].getFill() + "/" + tanks[i].getMaxFill() + "mB");
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
} }

View File

@ -1,18 +0,0 @@
package com.hbm.blocks.machine.rbmk;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class RBMKHeatex extends BlockContainer {
public RBMKHeatex(Material mat) {
super(mat);
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return null;
}
}

View File

@ -143,6 +143,7 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass,
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_power_gauge"; return "ntm_power_gauge";
} }

View File

@ -0,0 +1,237 @@
package com.hbm.blocks.network;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.entity.item.EntityMovingItem;
import com.hbm.inventory.recipes.CrystallizerRecipes;
import com.hbm.lib.RefStrings;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.InventoryUtil;
import api.hbm.conveyor.IConveyorBelt;
import api.hbm.conveyor.IConveyorItem;
import api.hbm.conveyor.IConveyorPackage;
import api.hbm.conveyor.IEnterableBlock;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.util.Vec3;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class CranePartitioner extends BlockContainer implements IConveyorBelt, IEnterableBlock, ITooltipProvider {
@SideOnly(Side.CLIENT) public IIcon iconTop;
@SideOnly(Side.CLIENT) public IIcon iconBack;
@SideOnly(Side.CLIENT) public IIcon iconBelt;
@SideOnly(Side.CLIENT) public IIcon iconInner;
@SideOnly(Side.CLIENT) public IIcon iconInnerSide;
public CranePartitioner() {
super(Material.iron);
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconRegister) {
super.registerBlockIcons(iconRegister);
this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":crane_top");
this.iconBack = iconRegister.registerIcon(RefStrings.MODID + ":crane_partitioner_back");
this.iconBelt = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_belt");
this.iconInner = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_inner");
this.iconInnerSide = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_inner_side");
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityCranePartitioner();
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2);
if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2);
if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2);
if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2);
}
@Override
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.75F, 1.0F);
}
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
@Override public int getRenderType() { return renderID; }
@Override public boolean isOpaqueCube() { return false; }
@Override public boolean renderAsNormalBlock() { return false; }
@Override public boolean canItemEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorItem entity) { return getTravelDirection(world, x, y, z, null) == dir; }
@Override public boolean canPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) { return false; }
@Override public void onPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) { }
@Override
public boolean canItemStay(World world, int x, int y, int z, Vec3 itemPos) {
return true;
}
@Override
public Vec3 getTravelLocation(World world, int x, int y, int z, Vec3 itemPos, double speed) {
ForgeDirection dir = this.getTravelDirection(world, x, y, z, itemPos);
Vec3 snap = this.getClosestSnappingPosition(world, x, y, z, itemPos);
Vec3 dest = Vec3.createVectorHelper(snap.xCoord - dir.offsetX * speed, snap.yCoord - dir.offsetY * speed, snap.zCoord - dir.offsetZ * speed);
Vec3 motion = Vec3.createVectorHelper((dest.xCoord - itemPos.xCoord), (dest.yCoord - itemPos.yCoord), (dest.zCoord - itemPos.zCoord));
double len = motion.lengthVector();
Vec3 ret = Vec3.createVectorHelper(itemPos.xCoord + motion.xCoord / len * speed, itemPos.yCoord + motion.yCoord / len * speed, itemPos.zCoord + motion.zCoord / len * speed);
return ret;
}
@Override
public Vec3 getClosestSnappingPosition(World world, int x, int y, int z, Vec3 itemPos) {
ForgeDirection dir = this.getTravelDirection(world, x, y, z, itemPos);
itemPos.xCoord = MathHelper.clamp_double(itemPos.xCoord, x, x + 1);
itemPos.zCoord = MathHelper.clamp_double(itemPos.zCoord, z, z + 1);
double posX = x + 0.5;
double posZ = z + 0.5;
if(dir.offsetX != 0) posX = itemPos.xCoord;
if(dir.offsetZ != 0) posZ = itemPos.zCoord;
return Vec3.createVectorHelper(posX, y + 0.25, posZ);
}
public ForgeDirection getTravelDirection(World world, int x, int y, int z, Vec3 itemPos) {
int meta = world.getBlockMetadata(x, y, z);
return ForgeDirection.getOrientation(meta);
}
@Override
public void onItemEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorItem entity) {
TileEntityCranePartitioner partitioner = (TileEntityCranePartitioner) world.getTileEntity(x, y, z);
ItemStack stack = entity.getItemStack();
ItemStack remainder = null;
if(CrystallizerRecipes.getAmount(stack) > 0) {
remainder = InventoryUtil.tryAddItemToInventory(partitioner, 0, 8, stack);
} else {
remainder = InventoryUtil.tryAddItemToInventory(partitioner, 9, 17, stack);
}
if(remainder != null) {
EntityItem item = new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, remainder.copy());
world.spawnEntityInWorld(item);
}
}
public static class TileEntityCranePartitioner extends TileEntityMachineBase {
public TileEntityCranePartitioner() {
super(18);
}
@Override public String getName() { return "container.partitioner"; }
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
List<ItemStack> stacks = new ArrayList();
for(int i = 0; i < 9; i++) if(slots[i] != null) stacks.add(slots[i]);
stacks.sort(stackSizeComparator);
boolean markDirty = false;
for(ItemStack stack : stacks) {
int amount = CrystallizerRecipes.getAmount(stack);
while(stack.stackSize >= amount) {
ItemStack entityStack = stack.copy();
entityStack.stackSize = amount;
stack.stackSize -= amount;
EntityMovingItem item = new EntityMovingItem(worldObj);
item.setItemStack(entityStack);
item.setPosition(xCoord + 0.5, yCoord + 0.25, zCoord + 0.5);
worldObj.spawnEntityInWorld(item);
}
}
for(int i = 0; i < 9; i++) if(slots[i] != null && slots[i].stackSize <= 0) slots[i] = null;
if(markDirty) this.markDirty();
}
}
public static Comparator<ItemStack> stackSizeComparator = new Comparator<ItemStack>() {
@Override
public int compare(ItemStack o1, ItemStack o2) {
return (int) Math.signum(o1.stackSize - o2.stackSize);
}
};
@Override
public boolean canExtractItem(int slot, ItemStack stack, int side) {
return slot >= 9;
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack) {
return i <= 8 && CrystallizerRecipes.getAmount(stack) >= 1;
}
@Override
public int[] getAccessibleSlotsFromSide(int side) {
return new int[] { 0, 1, 2, 3, 4, 5, 6 ,7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 };
}
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
this.addStandardInfo(stack, player, list, ext);
}
private final Random dropRandom = new Random();
@Override
public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
TileEntity tile = world.getTileEntity(x, y, z);
if(tile instanceof IInventory) {
IInventory battery = (IInventory) tile;
for(int i = 0; i < battery.getSizeInventory(); ++i) {
ItemStack itemstack = battery.getStackInSlot(i);
if(itemstack != null) {
float f = this.dropRandom.nextFloat() * 0.8F + 0.1F;
float f1 = this.dropRandom.nextFloat() * 0.8F + 0.1F;
float f2 = this.dropRandom.nextFloat() * 0.8F + 0.1F;
while(itemstack.stackSize > 0) {
int j1 = this.dropRandom.nextInt(21) + 10;
if(j1 > itemstack.stackSize) j1 = itemstack.stackSize;
itemstack.stackSize -= j1;
EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
if(itemstack.hasTagCompound()) entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
float f3 = 0.05F;
entityitem.motionX = (float) this.dropRandom.nextGaussian() * f3;
entityitem.motionY = (float) this.dropRandom.nextGaussian() * f3 + 0.2F;
entityitem.motionZ = (float) this.dropRandom.nextGaussian() * f3;
world.spawnEntityInWorld(entityitem);
}
}
}
world.func_147453_f(x, y, z, block);
}
super.breakBlock(world, x, y, z, block, meta);
}
}

View File

@ -153,6 +153,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL
this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0);
} }
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_fluid_gauge"; return "ntm_fluid_gauge";
} }

View File

@ -36,6 +36,7 @@ public class GeneralConfig {
public static boolean enableSteamParticles = true; public static boolean enableSteamParticles = true;
public static boolean enableSoundExtension = true; public static boolean enableSoundExtension = true;
public static boolean enableMekanismChanges = true; public static boolean enableMekanismChanges = true;
public static int normalSoundChannels = 200;
public static int hintPos = 0; public static int hintPos = 0;
public static boolean enableExpensiveMode = false; public static boolean enableExpensiveMode = false;
@ -105,6 +106,9 @@ public class GeneralConfig {
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); 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); 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); enableMekanismChanges = config.get(CATEGORY_GENERAL, "1.40_enableMekanismChanges", true, "If enabled, will change some of Mekanism's recipes.").getBoolean(true);
normalSoundChannels = CommonConfig.createConfigInt(config, CATEGORY_GENERAL, "1.41_normalSoundChannels",
"The amount of channels to create while 1.39_enableSoundExtension is enabled.\n" +
"Note that a value below 28 or above 200 can cause buggy sounds and issues with other mods running out of sound memory.", 100);
enableExpensiveMode = config.get(CATEGORY_GENERAL, "1.99_enableExpensiveMode", false, "It does what the name implies.").getBoolean(false); enableExpensiveMode = config.get(CATEGORY_GENERAL, "1.99_enableExpensiveMode", false, "It does what the name implies.").getBoolean(false);

View File

@ -33,6 +33,7 @@ public class WorldConfig {
public static int bedrockOilSpawn = 200; public static int bedrockOilSpawn = 200;
public static int meteoriteSpawn = 500; public static int meteoriteSpawn = 500;
public static boolean newBedrockOres = true;
public static int bedrockIronSpawn = 100; public static int bedrockIronSpawn = 100;
public static int bedrockCopperSpawn = 200; public static int bedrockCopperSpawn = 200;
public static int bedrockBoraxSpawn = 50; public static int bedrockBoraxSpawn = 50;
@ -154,6 +155,7 @@ public class WorldConfig {
bedrockOilSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.22_bedrockOilSpawnRate", "Spawns a bedrock oil node every nTH chunk", 200); bedrockOilSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.22_bedrockOilSpawnRate", "Spawns a bedrock oil node every nTH chunk", 200);
meteoriteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.23_meteoriteSpawnRate", "Spawns a fallen meteorite every nTH chunk", 200); meteoriteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.23_meteoriteSpawnRate", "Spawns a fallen meteorite every nTH chunk", 200);
newBedrockOres = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.NB_newBedrockOres", "Enables the newer genreric bedrock ores", true);
bedrockIronSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B00_bedrockIronWeight", "Spawn weight for iron bedrock ore", 100); bedrockIronSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B00_bedrockIronWeight", "Spawn weight for iron bedrock ore", 100);
bedrockCopperSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B01_bedrockCopperWeight", "Spawn weight for copper bedrock ore", 200); bedrockCopperSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B01_bedrockCopperWeight", "Spawn weight for copper bedrock ore", 200);
bedrockBoraxSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B02_bedrockBoraxWeight", "Spawn weight for borax bedrock ore", 50); bedrockBoraxSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B02_bedrockBoraxWeight", "Spawn weight for borax bedrock ore", 50);

View File

@ -33,6 +33,7 @@ public class PowderRecipes {
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_semtex_mix, 1), new Object[] { ModItems.solid_fuel, ModItems.ballistite, KNO.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_semtex_mix, 1), new Object[] { ModItems.solid_fuel, ModItems.ballistite, KNO.dust() });
CraftingManager.addShapelessAuto(new ItemStack(Items.clay_ball, 4), new Object[] { KEY_SAND, ModItems.dust, ModItems.dust, Fluids.WATER.getDict(1_000) }); CraftingManager.addShapelessAuto(new ItemStack(Items.clay_ball, 4), new Object[] { KEY_SAND, ModItems.dust, ModItems.dust, Fluids.WATER.getDict(1_000) });
CraftingManager.addShapelessAuto(new ItemStack(Items.clay_ball, 4), new Object[] { Blocks.clay }); //clay uncrafting because placing and breaking it isn't worth anyone's time CraftingManager.addShapelessAuto(new ItemStack(Items.clay_ball, 4), new Object[] { Blocks.clay }); //clay uncrafting because placing and breaking it isn't worth anyone's time
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_cement, 4), new Object[] { LIMESTONE.dust(), Items.clay_ball, Items.clay_ball, Items.clay_ball });
//Other //Other
CraftingManager.addShapelessAuto(new ItemStack(ModItems.ingot_steel_dusted, 1), new Object[] { STEEL.ingot(), COAL.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.ingot_steel_dusted, 1), new Object[] { STEEL.ingot(), COAL.dust() });
@ -67,6 +68,7 @@ public class PowderRecipes {
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 2), new Object[] { COAL.dust(), KEY_SAND }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 2), new Object[] { COAL.dust(), KEY_SAND });
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 4), new Object[] { F.dust(), KEY_SAND }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 4), new Object[] { F.dust(), KEY_SAND });
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 8), new Object[] { PB.dust(), S.dust(), KEY_SAND }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 8), new Object[] { PB.dust(), S.dust(), KEY_SAND });
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 12), new Object[] { LIMESTONE.dust(), KEY_SAND });
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 12), new Object[] { CA.dust(), KEY_SAND }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 12), new Object[] { CA.dust(), KEY_SAND });
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 16), new Object[] { BORAX.dust(), KEY_SAND }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 16), new Object[] { BORAX.dust(), KEY_SAND });

View File

@ -131,7 +131,7 @@ public class ToolRecipes {
CraftingManager.addShapelessAuto(new ItemStack(ModBlocks.geiger), new Object[] { ModItems.geiger_counter }); 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.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.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.ore_density_scanner, 1), new Object[] { "VVV", "CSC", "GGG", '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.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.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() }); 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

@ -4,8 +4,10 @@ import com.hbm.entity.logic.IChunkLoader;
import com.hbm.inventory.FluidStack; import com.hbm.inventory.FluidStack;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.items.ModItems;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -29,6 +31,30 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory,
super(world); super(world);
} }
@Override
public boolean hitByEntity(Entity attacker) {
if(attacker instanceof EntityPlayer && !worldObj.isRemote) {
this.setDead();
for (ItemStack stack : slots) {
if(stack != null)
this.entityDropItem(stack, 1F);
}
int meta = 0;
//whether it is an express drone
if(this.dataWatcher.getWatchableObjectByte(11) == 1)
meta = 2;
if(chunkLoading)
meta += 1;
this.entityDropItem(new ItemStack(ModItems.drone, 1, meta), 1F);
}
return false;
}
@Override @Override
protected void entityInit() { protected void entityInit() {
super.entityInit(); super.entityInit();
@ -53,7 +79,7 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory,
@Override @Override
public double getSpeed() { public double getSpeed() {
return this.dataWatcher.getWatchableObjectByte(11) == 1 ? 0.375 : 0.125; return this.dataWatcher.getWatchableObjectByte(11) == 1 ? 0.375 * 3 : 0.375;
} }
@Override @Override

View File

@ -112,7 +112,9 @@ public abstract class EntityDroneBase extends Entity {
this.motionZ = dist.zCoord * speed; this.motionZ = dist.zCoord * speed;
} }
} }
if(isCollidedHorizontally){
motionY += 1;
}
this.moveEntity(motionX, motionY, motionZ); this.moveEntity(motionX, motionY, motionZ);
} }
} }

View File

@ -13,10 +13,13 @@ import com.hbm.tileentity.network.TileEntityDroneProvider;
import com.hbm.tileentity.network.TileEntityDroneRequester; import com.hbm.tileentity.network.TileEntityDroneRequester;
import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.BlockPos;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3; import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
@ -30,6 +33,25 @@ public class EntityRequestDrone extends EntityDroneBase {
UNLOAD, DOCK UNLOAD, DOCK
} }
@Override
public void setTarget(double x, double y, double z) {
this.targetX = x;
this.targetY = y + 1;
this.targetZ = z;
}
@Override
public boolean hitByEntity(Entity attacker) {
if(attacker instanceof EntityPlayer && !worldObj.isRemote) {
this.setDead();
if(heldItem != null)
this.entityDropItem(heldItem, 1F);
this.entityDropItem(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), 1F);
}
return false;
}
public EntityRequestDrone(World world) { public EntityRequestDrone(World world) {
super(world); super(world);
} }
@ -61,78 +83,114 @@ public class EntityRequestDrone extends EntityDroneBase {
} else if(next instanceof AStack && heldItem == null) { } else if(next instanceof AStack && heldItem == null) {
AStack aStack = (AStack) next; AStack aStack = (AStack) next;
TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); //to make DAMN sure this fuckin idiot doesnt miss the dock
Vec3 pos = Vec3.createVectorHelper(this.posX, this.posY, this.posZ);
Vec3 nextPos = Vec3.createVectorHelper(this.posX, this.posY - 4, this.posZ);
MovingObjectPosition mop = this.worldObj.rayTraceBlocks(pos, nextPos);
if(tile instanceof TileEntityDroneProvider) { if (mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
TileEntityDroneProvider provider = (TileEntityDroneProvider) tile;
for(int i = 0; i < provider.slots.length; i++) { TileEntity tile = worldObj.getTileEntity(mop.blockX, mop.blockY, mop.blockZ);
ItemStack stack = provider.slots[i]; if (tile instanceof TileEntityDroneProvider) {
TileEntityDroneProvider provider = (TileEntityDroneProvider) tile;
if(stack != null && aStack.matchesRecipe(stack, true)) { for (int i = 0; i < provider.slots.length; i++) {
this.heldItem = stack.copy(); ItemStack stack = provider.slots[i];
this.setAppearance(1);
worldObj.playSoundEffect(posX, posY, posZ, "hbm:item.unpack", 0.5F, 0.75F); if (stack != null && aStack.matchesRecipe(stack, true)) {
provider.slots[i] = null; this.heldItem = stack.copy();
provider.markDirty(); this.setAppearance(1);
break; worldObj.playSoundEffect(posX, posY, posZ, "hbm:item.unpack", 0.5F, 0.75F);
provider.slots[i] = null;
provider.markDirty();
break;
}
} }
} }
} }
nextActionTimer = 5; nextActionTimer = 5;
} else if(next == DroneProgram.UNLOAD && this.heldItem != null) { } else if(next == DroneProgram.UNLOAD && this.heldItem != null) {
Vec3 pos = Vec3.createVectorHelper(this.posX, this.posY, this.posZ);
Vec3 nextPos = Vec3.createVectorHelper(this.posX, this.posY - 4, this.posZ);
MovingObjectPosition mop = this.worldObj.rayTraceBlocks(pos, nextPos);
TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); if (mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
if(tile instanceof TileEntityDroneRequester) {
TileEntityDroneRequester requester = (TileEntityDroneRequester) tile;
for(int i = 9; i < 18; i++) { TileEntity tile = worldObj.getTileEntity(mop.blockX, mop.blockY, mop.blockZ);
ItemStack stack = requester.slots[i]; if (tile instanceof TileEntityDroneRequester) {
if(stack != null && stack.getItem() == heldItem.getItem() && stack.getItemDamage() == heldItem.getItemDamage()) { TileEntityDroneRequester requester = (TileEntityDroneRequester) tile;
int toTransfer = Math.min(stack.getMaxStackSize() - stack.stackSize, heldItem.stackSize);
requester.slots[i].stackSize += toTransfer; for (int i = 9; i < 18; i++) {
this.heldItem.stackSize -= toTransfer; ItemStack stack = requester.slots[i];
if (stack != null && stack.getItem() == heldItem.getItem() && stack.getItemDamage() == heldItem.getItemDamage()) {
int toTransfer = Math.min(stack.getMaxStackSize() - stack.stackSize, heldItem.stackSize);
requester.slots[i].stackSize += toTransfer;
this.heldItem.stackSize -= toTransfer;
}
} }
}
if(this.heldItem.stackSize <= 0) this.heldItem = null; if (this.heldItem.stackSize <= 0) this.heldItem = null;
if(this.heldItem != null) for(int i = 9; i < 18; i++) { if (this.heldItem != null) for (int i = 9; i < 18; i++) {
if(requester.slots[i] == null) { if (requester.slots[i] == null) {
requester.slots[i] = this.heldItem.copy(); requester.slots[i] = this.heldItem.copy();
this.heldItem = null; this.heldItem = null;
break; break;
}
} }
}
if(this.heldItem == null) { if (this.heldItem == null) {
this.setAppearance(0); this.setAppearance(0);
worldObj.playSoundEffect(posX, posY, posZ, "hbm:item.unpack", 0.5F, 0.75F); worldObj.playSoundEffect(posX, posY, posZ, "hbm:item.unpack", 0.5F, 0.75F);
} }
requester.markDirty(); requester.markDirty();
}
} }
nextActionTimer = 5; nextActionTimer = 5;
} else if(next == DroneProgram.DOCK) { } else if(next == DroneProgram.DOCK) {
Vec3 pos = Vec3.createVectorHelper(this.posX, this.posY, this.posZ);
Vec3 nextPos = Vec3.createVectorHelper(this.posX, this.posY - 4, this.posZ);
MovingObjectPosition mop = this.worldObj.rayTraceBlocks(pos, nextPos);
TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); if (mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
if(tile instanceof TileEntityDroneDock) {
TileEntityDroneDock dock = (TileEntityDroneDock) tile;
for(int i = 0; i < dock.slots.length; i++) { TileEntity tile = worldObj.getTileEntity(mop.blockX, mop.blockY, mop.blockZ);
if(dock.slots[i] == null) { if (tile instanceof TileEntityDroneDock) {
this.setDead(); TileEntityDroneDock dock = (TileEntityDroneDock) tile;
dock.slots[i] = new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()); ItemStack drone = new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal());
this.worldObj.playSoundEffect(dock.xCoord + 0.5, dock.yCoord + 0.5, dock.zCoord + 0.5, "hbm:block.storageClose", 2.0F, 1.0F); for (int i = 0; i < dock.slots.length; i++) {
break; if (dock.slots[i] == null) {
this.setDead();
if(heldItem != null){
if(i != 9 && dock.slots[i + 1] == null){
dock.slots[i + 1] = heldItem.copy();
}
}
dock.slots[i] = drone.copy();
this.worldObj.playSoundEffect(dock.xCoord + 0.5, dock.yCoord + 0.5, dock.zCoord + 0.5, "hbm:block.storageClose", 2.0F, 1.0F);
break;
} else if (dock.slots[i].isItemEqual(drone) && dock.slots[i].stackSize < 64){
this.setDead();
if(heldItem != null){
if(i != 9 && dock.slots[i + 1] == null){
dock.slots[i + 1] = heldItem.copy();
}
}
dock.slots[i].stackSize++;
this.worldObj.playSoundEffect(dock.xCoord + 0.5, dock.yCoord + 0.5, dock.zCoord + 0.5, "hbm:block.storageClose", 2.0F, 1.0F);
break;
}
} }
} }
} }
if (!this.isDead) {
if(!this.isDead) {
this.setDead(); this.setDead();
if(heldItem != null)
this.entityDropItem(heldItem, 1F);
this.entityDropItem(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), 1F); this.entityDropItem(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), 1F);
} }
} }
} }
} }
@ -141,7 +199,7 @@ public class EntityRequestDrone extends EntityDroneBase {
@Override @Override
public double getSpeed() { public double getSpeed() {
return 0.5D; return 0.6D;
} }
@Override @Override

View File

@ -60,7 +60,7 @@ public class EntityNukeExplosionMK5 extends EntityExplosionChunkloading {
((EntityPlayer)player).triggerAchievement(MainRegistry.achManhattan); ((EntityPlayer)player).triggerAchievement(MainRegistry.achManhattan);
} }
if(!worldObj.isRemote && fallout && explosion != null && this.ticksExisted < 10) { if(!worldObj.isRemote && fallout && explosion != null && this.ticksExisted < 10 && strength >= 75) {
radiate(2_500_000F / (this.ticksExisted * 5 + 1), this.length * 2); radiate(2_500_000F / (this.ticksExisted * 5 + 1), this.length * 2);
} }

View File

@ -64,7 +64,6 @@ public class EntityCreeperNuclear extends EntityCreeper {
@Override @Override
protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) { protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) {
super.dropFewItems(p_70628_1_, p_70628_2_); super.dropFewItems(p_70628_1_, p_70628_2_);
if(rand.nextInt(3) == 0) if(rand.nextInt(3) == 0)

View File

@ -67,6 +67,7 @@ public class CompatHandler {
* @return String * @return String
*/ */
@Override @Override
@Optional.Method(modid = "OpenComputers")
default String getComponentName() { default String getComponentName() {
return "ntm_null"; return "ntm_null";
} }
@ -77,6 +78,7 @@ public class CompatHandler {
* @return If the side should be able to connect. * @return If the side should be able to connect.
*/ */
@Override @Override
@Optional.Method(modid = "OpenComputers")
default boolean canConnectNode(ForgeDirection side) { default boolean canConnectNode(ForgeDirection side) {
return true; return true;
} }
@ -85,9 +87,11 @@ public class CompatHandler {
* Function to give more information when analyzing the block. Multiple entries in the array will be sent to the user in the order of the array. * Function to give more information when analyzing the block. Multiple entries in the array will be sent to the user in the order of the array.
* @return Additional text to add in the form of lang entries (ex: "analyze.basic2"). * @return Additional text to add in the form of lang entries (ex: "analyze.basic2").
*/ */
@Optional.Method(modid = "OpenComputers")
default String[] getExtraInfo() {return new String[] {"analyze.noInfo"};} default String[] getExtraInfo() {return new String[] {"analyze.noInfo"};}
@Override @Override
@Optional.Method(modid = "OpenComputers")
default Node[] onAnalyze(EntityPlayer player, int side, float hitX, float hitY, float hitZ) { default Node[] onAnalyze(EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic1").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic1").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD)));
player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic2").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic2").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)));
@ -99,7 +103,7 @@ public class CompatHandler {
player.addChatComponentMessage(new ChatComponentTranslation(info).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); player.addChatComponentMessage(new ChatComponentTranslation(info).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)));
} }
TileEntity te = (TileEntity) this; TileEntity te = (TileEntity) this;
if(Array.getLength(this.methods()) == 0 && te instanceof TileEntityProxyCombo || this.getComponentName().equals("ntm_null")) if((Array.getLength(this.methods()) == 0 && te instanceof TileEntityProxyCombo) || this.getComponentName().equals("ntm_null"))
player.addChatComponentMessage(new ChatComponentTranslation("analyze.error").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); player.addChatComponentMessage(new ChatComponentTranslation("analyze.error").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED)));
return null; return null;
} }
@ -109,6 +113,7 @@ public class CompatHandler {
* @return Array of methods to expose to the computer. * @return Array of methods to expose to the computer.
*/ */
@Override @Override
@Optional.Method(modid = "OpenComputers")
default String[] methods() {return new String[0];} default String[] methods() {return new String[0];}
/** /**
@ -116,6 +121,7 @@ public class CompatHandler {
* @return Data to the computer as a return from the function. * @return Data to the computer as a return from the function.
*/ */
@Override @Override
@Optional.Method(modid = "OpenComputers")
default Object[] invoke(String method, Context context, Arguments args) throws Exception {return null;} default Object[] invoke(String method, Context context, Arguments args) throws Exception {return null;}
} }
} }

View File

@ -234,6 +234,28 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen
{102, 24 + 9}, {102, 24 + 9},
{120, 24 + 9} {120, 24 + 9}
}; };
case 5: return new int[][] {
{102, 24 - 9}, {120, 24 - 9},
{102, 24 + 9}, {120, 24 + 9},
{138, 24},
};
case 6: return new int[][] {
{102, 6}, {120, 6},
{102, 24}, {120, 24},
{102, 32}, {120, 32},
};
case 7: return new int[][] {
{102, 6}, {120, 6},
{102, 24}, {120, 24},
{102, 32}, {120, 32},
{138, 24},
};
case 8: return new int[][] {
{102, 6}, {120, 6},
{102, 24}, {120, 24},
{102, 32}, {120, 32},
{138, 24}, {138, 32},
};
} }
return new int[count][2]; return new int[count][2];

View File

@ -168,6 +168,8 @@ public class OreDictManager {
public static final DictFrame BBRONZE = new DictFrame("BismuthBronze"); public static final DictFrame BBRONZE = new DictFrame("BismuthBronze");
/** ARSENIC BRONZE */ /** ARSENIC BRONZE */
public static final DictFrame ABRONZE = new DictFrame("ArsenicBronze"); public static final DictFrame ABRONZE = new DictFrame("ArsenicBronze");
/** BISMUTH STRONTIUM CALCIUM COPPER OXIDE */
public static final DictFrame BSCCO = new DictFrame("BSCCO");
/** LEAD */ /** LEAD */
public static final DictFrame PB = new DictFrame("Lead"); public static final DictFrame PB = new DictFrame("Lead");
public static final DictFrame BI = new DictFrame("Bismuth"); public static final DictFrame BI = new DictFrame("Bismuth");
@ -229,6 +231,7 @@ public class OreDictManager {
public static final DictFrame VOLCANIC = new DictFrame("Volcanic"); public static final DictFrame VOLCANIC = new DictFrame("Volcanic");
public static final DictFrame HEMATITE = new DictFrame("Hematite"); public static final DictFrame HEMATITE = new DictFrame("Hematite");
public static final DictFrame MALACHITE = new DictFrame("Malachite"); public static final DictFrame MALACHITE = new DictFrame("Malachite");
public static final DictFrame LIMESTONE = new DictFrame("Limestone");
public static final DictFrame SLAG = new DictFrame("Slag"); public static final DictFrame SLAG = new DictFrame("Slag");
/* /*
* HAZARDS, MISC * HAZARDS, MISC
@ -280,6 +283,7 @@ public class OreDictManager {
/* /*
* FISSION FRAGMENTS * FISSION FRAGMENTS
*/ */
public static final DictFrame SR = new DictFrame("Strontium");
public static final DictFrame SR90 = new DictFrame("Strontium90", "Sr90"); public static final DictFrame SR90 = new DictFrame("Strontium90", "Sr90");
public static final DictFrame I131 = new DictFrame("Iodine131", "I131"); public static final DictFrame I131 = new DictFrame("Iodine131", "I131");
public static final DictFrame XE135 = new DictFrame("Xenon135", "Xe135"); public static final DictFrame XE135 = new DictFrame("Xenon135", "Xe135");
@ -375,6 +379,7 @@ public class OreDictManager {
CDALLOY .ingot(ingot_cdalloy) .block(block_cdalloy); CDALLOY .ingot(ingot_cdalloy) .block(block_cdalloy);
BBRONZE .ingot(ingot_bismuth_bronze); BBRONZE .ingot(ingot_bismuth_bronze);
ABRONZE .ingot(ingot_arsenic_bronze); ABRONZE .ingot(ingot_arsenic_bronze);
BSCCO .ingot(ingot_bscco);
PB .nugget(nugget_lead) .ingot(ingot_lead) .dust(powder_lead) .plate(plate_lead) .block(block_lead) .ore(ore_lead); PB .nugget(nugget_lead) .ingot(ingot_lead) .dust(powder_lead) .plate(plate_lead) .block(block_lead) .ore(ore_lead);
BI .nugget(nugget_bismuth) .billet(billet_bismuth) .ingot(ingot_bismuth) .dust(powder_bismuth) .block(block_bismuth); BI .nugget(nugget_bismuth) .billet(billet_bismuth) .ingot(ingot_bismuth) .dust(powder_bismuth) .block(block_bismuth);
AS .nugget(nugget_arsenic) .ingot(ingot_arsenic); AS .nugget(nugget_arsenic) .ingot(ingot_arsenic);
@ -427,6 +432,7 @@ public class OreDictManager {
VOLCANIC .gem(gem_volcanic) .ore(DictFrame.fromOne(ore_basalt, EnumBasaltOreType.GEM)); VOLCANIC .gem(gem_volcanic) .ore(DictFrame.fromOne(ore_basalt, EnumBasaltOreType.GEM));
HEMATITE .ore(fromOne(stone_resource, EnumStoneType.HEMATITE)); HEMATITE .ore(fromOne(stone_resource, EnumStoneType.HEMATITE));
MALACHITE .ore(fromOne(stone_resource, EnumStoneType.MALACHITE)); MALACHITE .ore(fromOne(stone_resource, EnumStoneType.MALACHITE));
LIMESTONE .dust(powder_limestone) .ore(fromOne(stone_resource, EnumStoneType.LIMESTONE));
SLAG .block(block_slag); SLAG .block(block_slag);
/* /*
@ -472,6 +478,7 @@ public class OreDictManager {
/* /*
* FISSION FRAGMENTS * FISSION FRAGMENTS
*/ */
SR .hot(1F) .hydro(1F) .dust(powder_strontium);
SR90 .rad(HazardRegistry.sr90) .hot(1F) .hydro(1F) .dustSmall(powder_sr90_tiny) .dust(powder_sr90) .ingot(ingot_sr90) .billet(billet_sr90) .nugget(nugget_sr90); SR90 .rad(HazardRegistry.sr90) .hot(1F) .hydro(1F) .dustSmall(powder_sr90_tiny) .dust(powder_sr90) .ingot(ingot_sr90) .billet(billet_sr90) .nugget(nugget_sr90);
I131 .rad(HazardRegistry.i131) .hot(1F) .dustSmall(powder_i131_tiny) .dust(powder_i131); I131 .rad(HazardRegistry.i131) .hot(1F) .dustSmall(powder_i131_tiny) .dust(powder_i131);
XE135 .rad(HazardRegistry.xe135) .hot(10F) .dustSmall(powder_xe135_tiny) .dust(powder_xe135); XE135 .rad(HazardRegistry.xe135) .hot(10F) .dustSmall(powder_xe135_tiny) .dust(powder_xe135);

View File

@ -1,12 +1,17 @@
package com.hbm.inventory.container; package com.hbm.inventory.container;
import com.hbm.inventory.SlotCraftingOutput; import com.hbm.inventory.SlotCraftingOutput;
import com.hbm.items.ModItems;
import com.hbm.items.machine.IItemFluidIdentifier;
import com.hbm.items.machine.ItemMachineUpgrade;
import com.hbm.tileentity.machine.TileEntityMachineOreSlopper; import com.hbm.tileentity.machine.TileEntityMachineOreSlopper;
import api.hbm.energymk2.IBatteryItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class ContainerOreSlopper extends Container { public class ContainerOreSlopper extends Container {
@ -29,8 +34,8 @@ public class ContainerOreSlopper extends Container {
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 7, 134, 54)); this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 7, 134, 54));
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 8, 152, 54)); this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 8, 152, 54));
//Upgrades //Upgrades
this.addSlotToContainer(new Slot(slopper, 0, 62, 72)); this.addSlotToContainer(new Slot(slopper, 9, 62, 72));
this.addSlotToContainer(new Slot(slopper, 0, 80, 72)); this.addSlotToContainer(new Slot(slopper, 10, 80, 72));
for(int i = 0; i < 3; i++) { for(int i = 0; i < 3; i++) {
for(int j = 0; j < 9; j++) { for(int j = 0; j < 9; j++) {
@ -43,6 +48,52 @@ public class ContainerOreSlopper extends Container {
} }
} }
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int par2) {
ItemStack var3 = null;
Slot var4 = (Slot) this.inventorySlots.get(par2);
if(var4 != null && var4.getHasStack()) {
ItemStack var5 = var4.getStack();
var3 = var5.copy();
if(par2 <= 10) {
if(!this.mergeItemStack(var5, 11, this.inventorySlots.size(), true)) {
return null;
}
} else {
if(var3.getItem() == ModItems.bedrock_ore_base) {
if(!this.mergeItemStack(var5, 2, 3, false)) {
return null;
}
} else if(var3.getItem() instanceof ItemMachineUpgrade) {
if(!this.mergeItemStack(var5, 9, 11, false)) {
return null;
}
} else if(var3.getItem() instanceof IItemFluidIdentifier) {
if(!this.mergeItemStack(var5, 1, 2, false)) {
return null;
}
} else if(var3.getItem() instanceof IBatteryItem || var3.getItem() == ModItems.battery_creative) {
if(!this.mergeItemStack(var5, 0, 1, false)) {
return null;
}
} else {
return null;
}
}
if(var5.stackSize == 0) {
var4.putStack((ItemStack) null);
} else {
var4.onSlotChanged();
}
}
return var3;
}
@Override @Override
public boolean canInteractWith(EntityPlayer player) { public boolean canInteractWith(EntityPlayer player) {
return slopper.isUseableByPlayer(player); return slopper.isUseableByPlayer(player);

View File

@ -494,6 +494,7 @@ public class Fluids {
metaOrder.add(SEEDSLURRY); metaOrder.add(SEEDSLURRY);
metaOrder.add(COLLOID); metaOrder.add(COLLOID);
metaOrder.add(VITRIOL); metaOrder.add(VITRIOL);
metaOrder.add(SLOP);
metaOrder.add(IONGEL); metaOrder.add(IONGEL);
metaOrder.add(PEROXIDE); metaOrder.add(PEROXIDE);
metaOrder.add(SULFURIC_ACID); metaOrder.add(SULFURIC_ACID);

View File

@ -354,7 +354,7 @@ public class GUIAnvil extends GuiContainer {
for(AStack stack : recipe.input) { for(AStack stack : recipe.input) {
if(stack instanceof ComparableStack) { if(stack instanceof ComparableStack) {
ItemStack input = ((ComparableStack) stack).toStack(); ItemStack input = ((ComparableStack) stack).toStack();
list.add(input.getDisplayName().toLowerCase(Locale.US)); try { list.add(input.getDisplayName().toLowerCase(Locale.US)); } catch(Exception ex) { list.add("I AM ERROR"); }
} else if(stack instanceof OreDictStack) { } else if(stack instanceof OreDictStack) {
OreDictStack input = (OreDictStack) stack; OreDictStack input = (OreDictStack) stack;
@ -362,9 +362,8 @@ public class GUIAnvil extends GuiContainer {
if(ores.size() > 0) { if(ores.size() > 0) {
for(ItemStack ore : ores) { for(ItemStack ore : ores) {
list.add(ore.getDisplayName().toLowerCase(Locale.US)); try { list.add(ore.getDisplayName().toLowerCase(Locale.US)); } catch(Exception ex) { list.add("I AM ERROR"); }
} }
} }
} }
} }

View File

@ -24,11 +24,20 @@ public class GUIOreSlopper extends GuiInfoContainer {
this.ySize = 204; this.ySize = 204;
} }
@Override
public void drawScreen(int mouseX, int mouseY, float f) {
super.drawScreen(mouseX, mouseY, f);
slopper.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 18, 34, 52);
slopper.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 18, 16, 52);
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 52, slopper.power, slopper.maxPower);
}
@Override @Override
protected void drawGuiContainerForegroundLayer( int i, int j) { protected void drawGuiContainerForegroundLayer( int i, int j) {
String name = this.slopper.hasCustomInventoryName() ? this.slopper.getInventoryName() : I18n.format(this.slopper.getInventoryName()); 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(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 6, 4210752);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
} }
@ -37,5 +46,17 @@ public class GUIOreSlopper extends GuiInfoContainer {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
Minecraft.getMinecraft().getTextureManager().bindTexture(texture); Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
int i = (int) (slopper.progress * 35);
drawTexturedModalRect(guiLeft + 62, guiTop + 52 - i, 176, 34 - i, 34, i);
int j = (int) (slopper.power * 52 / slopper.maxPower);
drawTexturedModalRect(guiLeft + 8, guiTop + 70 - j, 176, 86 - j, 16, j);
if(slopper.power >= slopper.consumption)
drawTexturedModalRect(guiLeft + 12, guiTop + 4, 202, 34, 9, 12);
slopper.tanks[0].renderTank(guiLeft + 26, guiTop + 70, this.zLevel, 16, 52);
slopper.tanks[1].renderTank(guiLeft + 116, guiTop + 70, this.zLevel, 16, 52);
} }
} }

View File

@ -90,7 +90,7 @@ public class Mats {
public static final NTMMaterial MAT_PB209 = makeSmeltable(8209, PB209, 0x7B535D).setShapes(NUGGET, BILLET, INGOT, DUST).m(); public static final NTMMaterial MAT_PB209 = makeSmeltable(8209, PB209, 0x7B535D).setShapes(NUGGET, BILLET, INGOT, DUST).m();
public static final NTMMaterial MAT_SCHRABIDIUM = makeSmeltable(12626, SA326, 0x32FFFF, 0x005C5C, 0x32FFFF).setShapes(NUGGET, WIRE, BILLET, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK).m(); public static final NTMMaterial MAT_SCHRABIDIUM = makeSmeltable(12626, SA326, 0x32FFFF, 0x005C5C, 0x32FFFF).setShapes(NUGGET, WIRE, BILLET, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK).m();
public static final NTMMaterial MAT_SOLINIUM = makeSmeltable(12627, SA327, 0xA2E6E0, 0x00433D, 0x72B6B0).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); public static final NTMMaterial MAT_SOLINIUM = makeSmeltable(12627, SA327, 0xA2E6E0, 0x00433D, 0x72B6B0).setShapes(NUGGET, BILLET, INGOT, BLOCK).m();
public static final NTMMaterial MAT_SCHRABIDATE = makeSmeltable(12600, SBD, 0x77C0D7, 0x39005E, 0x6589B4).setShapes(INGOT, DUST, DENSEWIRE, BLOCK).m(); public static final NTMMaterial MAT_SCHRABIDATE = makeSmeltable(12600, SBD, 0x77C0D7, 0x39005E, 0x6589B4).setShapes(INGOT, DUST, DENSEWIRE, CASTPLATE, BLOCK).m();
public static final NTMMaterial MAT_SCHRARANIUM = makeSmeltable(12601, SRN, 0x2B3227, 0x2B3227, 0x24AFAC).setShapes(INGOT, BLOCK).m(); public static final NTMMaterial MAT_SCHRARANIUM = makeSmeltable(12601, SRN, 0x2B3227, 0x2B3227, 0x24AFAC).setShapes(INGOT, BLOCK).m();
public static final NTMMaterial MAT_GHIORSIUM = makeSmeltable(12836, GH336, 0xF4EFE1, 0x2A3306, 0xC6C6A1).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); public static final NTMMaterial MAT_GHIORSIUM = makeSmeltable(12836, GH336, 0xF4EFE1, 0x2A3306, 0xC6C6A1).setShapes(NUGGET, BILLET, INGOT, BLOCK).m();
@ -111,6 +111,7 @@ public class Mats {
public static final NTMMaterial MAT_BORON = makeSmeltable(500, B, 0xBDC8D2, 0x29343E, 0xAD72AE).setShapes(DUSTTINY, INGOT, DUST, BLOCK).m(); public static final NTMMaterial MAT_BORON = makeSmeltable(500, B, 0xBDC8D2, 0x29343E, 0xAD72AE).setShapes(DUSTTINY, INGOT, DUST, BLOCK).m();
public static final NTMMaterial MAT_ZIRCONIUM = makeSmeltable(4000, ZR, 0xE3DCBE, 0x3E3719, 0xADA688).setShapes(NUGGET, WIRE, DUSTTINY, BILLET, INGOT, DUST, CASTPLATE, WELDEDPLATE, BLOCK).m(); public static final NTMMaterial MAT_ZIRCONIUM = makeSmeltable(4000, ZR, 0xE3DCBE, 0x3E3719, 0xADA688).setShapes(NUGGET, WIRE, DUSTTINY, BILLET, INGOT, DUST, CASTPLATE, WELDEDPLATE, BLOCK).m();
public static final NTMMaterial MAT_SODIUM = makeSmeltable(1100, NA, 0xD3BF9E, 0x3A5A6B, 0x7E9493).setShapes(DUST).m(); public static final NTMMaterial MAT_SODIUM = makeSmeltable(1100, NA, 0xD3BF9E, 0x3A5A6B, 0x7E9493).setShapes(DUST).m();
public static final NTMMaterial MAT_STRONTIUM = makeSmeltable(3800, SR, 0xF1E8BA, 0x271E00, 0xCAC193).setShapes(DUST).m();
public static final NTMMaterial MAT_CALCIUM = makeSmeltable(2000, CA, 0xCFCFA6, 0x747F6E, 0xB7B784).setShapes(INGOT, DUST).m(); public static final NTMMaterial MAT_CALCIUM = makeSmeltable(2000, CA, 0xCFCFA6, 0x747F6E, 0xB7B784).setShapes(INGOT, DUST).m();
public static final NTMMaterial MAT_LITHIUM = makeSmeltable(300, LI, 0xFFFFFF, 0x818181, 0xD6D6D6).setShapes(INGOT, DUST, BLOCK).m(); public static final NTMMaterial MAT_LITHIUM = makeSmeltable(300, LI, 0xFFFFFF, 0x818181, 0xD6D6D6).setShapes(INGOT, DUST, BLOCK).m();
public static final NTMMaterial MAT_CADMIUM = makeSmeltable(4800, CD, 0xFFFADE, 0x350000, 0xA85600).setShapes(INGOT, DUST).m(); public static final NTMMaterial MAT_CADMIUM = makeSmeltable(4800, CD, 0xFFFADE, 0x350000, 0xA85600).setShapes(INGOT, DUST).m();
@ -130,6 +131,7 @@ public class Mats {
public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m();
public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setShapes(INGOT, CASTPLATE).m(); public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setShapes(INGOT, CASTPLATE).m();
public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setShapes(INGOT, CASTPLATE).m(); public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setShapes(INGOT, CASTPLATE).m();
public static final NTMMaterial MAT_BSCCO = makeSmeltable(_AS + 18, BSCCO, 0x767BF1, 0x000000, 0x5E62C0).setShapes(INGOT, DENSEWIRE).m();
public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(WIRE, INGOT, DUST, DENSEWIRE, BLOCK).m(); public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(WIRE, INGOT, DUST, DENSEWIRE, BLOCK).m();
public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK).m(); public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK).m();
public static final NTMMaterial MAT_DNT = makeSmeltable(_AS + 15, DNT, 0x7582B9, 0x16000E, 0x455289).setShapes(INGOT, DUST, DENSEWIRE, BLOCK).m(); public static final NTMMaterial MAT_DNT = makeSmeltable(_AS + 15, DNT, 0x7582B9, 0x16000E, 0x455289).setShapes(INGOT, DUST, DENSEWIRE, BLOCK).m();

View File

@ -37,6 +37,8 @@ import net.minecraftforge.oredict.OreDictionary;
public class ArcFurnaceRecipes extends SerializableRecipe { public class ArcFurnaceRecipes extends SerializableRecipe {
public static HashMap<AStack, ArcFurnaceRecipe> recipes = new HashMap(); public static HashMap<AStack, ArcFurnaceRecipe> recipes = new HashMap();
public static HashMap<ComparableStack, ArcFurnaceRecipe> fastCacheSolid = new HashMap();
public static HashMap<ComparableStack, ArcFurnaceRecipe> fastCacheLiquid = new HashMap();
@Override @Override
public void registerDefaults() { public void registerDefaults() {
@ -56,11 +58,11 @@ public class ArcFurnaceRecipes extends SerializableRecipe {
for(BedrockOreType type : BedrockOreType.values()) { 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_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.SULFURIC_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 4)));
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_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.SOLVENT_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type, 4)));
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_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.RAD_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type, 4)));
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_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.PRIMARY_SECOND, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(2)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(5))));
@ -149,15 +151,24 @@ public class ArcFurnaceRecipes extends SerializableRecipe {
} }
} }
ComparableStack cacheKey = new ComparableStack(stack).makeSingular();
if(!liquid && fastCacheSolid.containsKey(cacheKey)) return fastCacheSolid.get(cacheKey);
if(liquid && fastCacheLiquid.containsKey(cacheKey)) return fastCacheLiquid.get(cacheKey);
for(Entry<AStack, ArcFurnaceRecipe> entry : recipes.entrySet()) { for(Entry<AStack, ArcFurnaceRecipe> entry : recipes.entrySet()) {
if(entry.getKey().matchesRecipe(stack, true)) { if(entry.getKey().matchesRecipe(stack, true)) {
ArcFurnaceRecipe rec = entry.getValue(); ArcFurnaceRecipe rec = entry.getValue();
if((liquid && rec.fluidOutput != null) || (!liquid && rec.solidOutput != null)) { if((liquid && rec.fluidOutput != null) || (!liquid && rec.solidOutput != null)) {
if(!liquid) fastCacheSolid.put(cacheKey, rec);
if(liquid) fastCacheLiquid.put(cacheKey, rec);
return rec; return rec;
} }
} }
} }
if(!liquid) fastCacheSolid.put(cacheKey, null);
if(liquid) fastCacheLiquid.put(cacheKey, null);
return null; return null;
} }
@ -199,6 +210,8 @@ public class ArcFurnaceRecipes extends SerializableRecipe {
@Override @Override
public void deleteRecipes() { public void deleteRecipes() {
recipes.clear(); recipes.clear();
fastCacheSolid.clear();
fastCacheLiquid.clear();
} }
@Override @Override

View File

@ -42,6 +42,8 @@ public class ArcWelderRecipes extends SerializableRecipe {
new OreDictStack(AL.plate(), 4), new OreDictStack(FIBER.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot()))); 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, 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()))); new OreDictStack(TI.plate(), 2), new OreDictStack(FIBER.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot())));
recipes.add(new ArcWelderRecipe(DictFrame.fromOne(ModItems.part_generic, EnumPartType.HDE), 600, 25_000_000L, new FluidStack(Fluids.STELLAR_FLUX, 4_000),
new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 2), new OreDictStack(CMB.plateWelded(), 1), new ComparableStack(ModItems.ingot_cft)));
//Dense Wires //Dense Wires
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), 100, 10_000L, recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), 100, 10_000L,

View File

@ -466,6 +466,13 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.motor, 2),
new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG) new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG)
}, 300); }, 300);
makeRecipe(new ComparableStack(ModBlocks.machine_ore_slopper, 1), new AStack[] {
new OreDictStack(STEEL.plateCast(), 6),
new OreDictStack(TI.plate(), 8),
new OreDictStack(CU.pipe(), 3),
new ComparableStack(ModItems.motor, 3),
new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG)
}, 200);
makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.STEEL.ordinal()), new AStack[] { makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.STEEL.ordinal()), new AStack[] {
new OreDictStack(STEEL.ingot(), 12), new OreDictStack(STEEL.ingot(), 12),
new OreDictStack(W.ingot(), 4) new OreDictStack(W.ingot(), 4)
@ -632,18 +639,12 @@ public class AssemblerRecipes extends SerializableRecipe {
}, 1200); }, 1200);
makeRecipe(new ComparableStack(ModItems.sat_gerald, 1), new AStack[] { makeRecipe(new ComparableStack(ModItems.sat_gerald, 1), new AStack[] {
new ComparableStack(ModItems.burnt_bark, 1), new OreDictStack(SBD.plateCast(), 128),
new ComparableStack(ModItems.combine_scrap, 1), new OreDictStack(BSCCO.wireDense(), 128),
new ComparableStack(ModItems.crystal_horn, 1), new ComparableStack(ModBlocks.det_nuke, 64),
new ComparableStack(ModItems.crystal_charred, 1), new ComparableStack(ModItems.part_generic, 256, EnumPartType.HDE),
new ComparableStack(ModBlocks.pink_log, 1), new ComparableStack(ModItems.circuit, 64, EnumCircuitType.CONTROLLER_QUANTUM),
new ComparableStack(ModItems.mp_warhead_15_balefire, 1), new ComparableStack(ModItems.coin_ufo, 1),
new ComparableStack(ModBlocks.det_nuke, 16),
new OreDictStack(STAR.ingot(), 32),
new ComparableStack(ModItems.coin_creeper, 1),
new ComparableStack(ModItems.coin_radiation, 1),
new ComparableStack(ModItems.coin_maskman, 1),
new ComparableStack(ModItems.coin_worm, 1),
}, 1200, ModItems.journal_bj); }, 1200, ModItems.journal_bj);
makeRecipe(new ComparableStack(ModBlocks.vault_door, 1), new AStack[] { makeRecipe(new ComparableStack(ModBlocks.vault_door, 1), new AStack[] {
@ -1077,8 +1078,8 @@ public class AssemblerRecipes extends SerializableRecipe {
new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 16),
new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 16), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 16),
new OreDictStack(SBD.wireDense(), 32), new OreDictStack(SBD.wireDense(), 32),
new ComparableStack(ModItems.circuit, 64, EnumCircuitType.ADVANCED),
new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID),
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.QUANTUM),
}, 600); }, 600);
makeRecipe(new ComparableStack(ModBlocks.machine_icf_press, 1), new AStack[] { makeRecipe(new ComparableStack(ModBlocks.machine_icf_press, 1), new AStack[] {
new OreDictStack(GOLD.plateCast(), 8), new OreDictStack(GOLD.plateCast(), 8),

View File

@ -518,9 +518,9 @@ public class CentrifugeRecipes extends SerializableRecipe {
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_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.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_SULFURIC, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type, 2), ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type, 2)});
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_SOLVENT, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type, 2), ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type, 2), ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type, 2)});
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_RAD, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type, 2), ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type, 2), ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type, 2), ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type, 2)});
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, 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_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
@ -530,20 +530,9 @@ public class CentrifugeRecipes extends SerializableRecipe {
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_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.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_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1, 1), ItemBedrockOreNew.extract(type.byproductAcid2, 1), ItemBedrockOreNew.extract(type.byproductAcid3, 1), 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.SOLVENT_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1, 1), ItemBedrockOreNew.extract(type.byproductSolvent2, 1), ItemBedrockOreNew.extract(type.byproductSolvent3, 1), 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.RAD_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1, 1), ItemBedrockOreNew.extract(type.byproductRad2, 1), ItemBedrockOreNew.extract(type.byproductRad3, 1), 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"); List<ItemStack> quartz = OreDictionary.getOres("crystalCertusQuartz");

View File

@ -184,12 +184,14 @@ public class ChemplantRecipes extends SerializableRecipe {
.outputItems(new ItemStack(ModItems.plate_kevlar, 4))); .outputItems(new ItemStack(ModItems.plate_kevlar, 4)));
recipes.add(new ChemRecipe(55, "CONCRETE", 100) recipes.add(new ChemRecipe(55, "CONCRETE", 100)
.inputItems( .inputItems(
new ComparableStack(ModItems.powder_cement, 1),
new ComparableStack(Blocks.gravel, 8), new ComparableStack(Blocks.gravel, 8),
new OreDictStack(KEY_SAND, 8)) new OreDictStack(KEY_SAND, 8))
.inputFluids(new FluidStack(Fluids.WATER, 2000)) .inputFluids(new FluidStack(Fluids.WATER, 2000))
.outputItems(new ItemStack(ModBlocks.concrete_smooth, 16))); .outputItems(new ItemStack(ModBlocks.concrete_smooth, 16)));
recipes.add(new ChemRecipe(56, "CONCRETE_ASBESTOS", 100) recipes.add(new ChemRecipe(56, "CONCRETE_ASBESTOS", 100)
.inputItems( .inputItems(
new ComparableStack(ModItems.powder_cement, 1),
new ComparableStack(Blocks.gravel, 2), new ComparableStack(Blocks.gravel, 2),
new OreDictStack(KEY_SAND, 2), new OreDictStack(KEY_SAND, 2),
(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ? (GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ?
@ -199,9 +201,10 @@ public class ChemplantRecipes extends SerializableRecipe {
.outputItems(new ItemStack(ModBlocks.concrete_asbestos, 16))); .outputItems(new ItemStack(ModBlocks.concrete_asbestos, 16)));
recipes.add(new ChemRecipe(79, "DUCRETE", 150) recipes.add(new ChemRecipe(79, "DUCRETE", 150)
.inputItems( .inputItems(
new ComparableStack(ModItems.powder_cement, 4),
new ComparableStack(Blocks.gravel, 2),
new OreDictStack(KEY_SAND, 8), new OreDictStack(KEY_SAND, 8),
new OreDictStack(U238.billet(), 2), new OreDictStack(U238.billet(), 2))
new ComparableStack(Items.clay_ball, 4))
.inputFluids(new FluidStack(Fluids.WATER, 2000)) .inputFluids(new FluidStack(Fluids.WATER, 2000))
.outputItems(new ItemStack(ModBlocks.ducrete_smooth, 8))); .outputItems(new ItemStack(ModBlocks.ducrete_smooth, 8)));
recipes.add(new ChemRecipe(57, "SOLID_FUEL", 200) recipes.add(new ChemRecipe(57, "SOLID_FUEL", 200)
@ -409,7 +412,7 @@ public class ChemplantRecipes extends SerializableRecipe {
.outputFluids(new FluidStack(1000, Fluids.LPG))); .outputFluids(new FluidStack(1000, Fluids.LPG)));
recipes.add(new ChemRecipe(34, "OIL_SAND", 200) recipes.add(new ChemRecipe(34, "OIL_SAND", 200)
.inputItems(new ComparableStack(ModBlocks.ore_oil_sand, 16), new OreDictStack(ANY_TAR.any(), 1)) .inputItems(new ComparableStack(ModBlocks.ore_oil_sand, 16), new OreDictStack(ANY_TAR.any(), 1))
.outputItems(new ItemStack(Blocks.sand, 4), new ItemStack(Blocks.sand, 4), new ItemStack(Blocks.sand, 4), new ItemStack(Blocks.sand, 4)) .outputItems(new ItemStack(Blocks.sand, 16))
.outputFluids(new FluidStack(1000, Fluids.BITUMEN))); .outputFluids(new FluidStack(1000, Fluids.BITUMEN)));
recipes.add(new ChemRecipe(35, "ASPHALT", 100) recipes.add(new ChemRecipe(35, "ASPHALT", 100)
.inputItems(new ComparableStack(Blocks.gravel, 2), new ComparableStack(Blocks.sand, 6)) .inputItems(new ComparableStack(Blocks.gravel, 2), new ComparableStack(Blocks.sand, 6))

View File

@ -64,6 +64,8 @@ public class CokerRecipes extends SerializableRecipe {
registerRecipe(CALCIUM_SOLUTION, 125, new ItemStack(ModItems.powder_calcium), new FluidStack(SPENTSTEAM, 100)); registerRecipe(CALCIUM_SOLUTION, 125, new ItemStack(ModItems.powder_calcium), new FluidStack(SPENTSTEAM, 100));
//only cokable gas to extract sulfur content //only cokable gas to extract sulfur content
registerRecipe(SOURGAS, 250, new ItemStack(ModItems.sulfur), new FluidStack(GAS_COKER, 150)); registerRecipe(SOURGAS, 250, new ItemStack(ModItems.sulfur), new FluidStack(GAS_COKER, 150));
registerRecipe(SLOP, 1000, new ItemStack(ModItems.powder_limestone), new FluidStack(COLLOID, 250));
registerRecipe(VITRIOL, 4000, new ItemStack(ModItems.powder_iron), new FluidStack(SULFURIC_ACID, 500));
} }
private static void registerAuto(FluidType fluid, FluidType type) { private static void registerAuto(FluidType fluid, FluidType type) {

View File

@ -54,6 +54,7 @@ public class CombinationRecipes extends SerializableRecipe {
recipes.put(SODALITE.gem(), new Pair(new ItemStack(ModItems.powder_sodium), new FluidStack(Fluids.CHLORINE, 100))); recipes.put(SODALITE.gem(), new Pair(new ItemStack(ModItems.powder_sodium), new FluidStack(Fluids.CHLORINE, 100)));
recipes.put(new ComparableStack(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.BAUXITE)), new Pair(new ItemStack(ModItems.ingot_aluminium, 2), new FluidStack(Fluids.REDMUD, 250))); recipes.put(new ComparableStack(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.BAUXITE)), new Pair(new ItemStack(ModItems.ingot_aluminium, 2), new FluidStack(Fluids.REDMUD, 250)));
recipes.put(NA.dust(), new Pair(null, new FluidStack(Fluids.SODIUM, 100))); recipes.put(NA.dust(), new Pair(null, new FluidStack(Fluids.SODIUM, 100)));
recipes.put(LIMESTONE.dust(), new Pair(new ItemStack(ModItems.powder_calcium), new FluidStack(Fluids.CARBONDIOXIDE, 50)));
recipes.put(KEY_LOG, new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 250))); recipes.put(KEY_LOG, new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 250)));
recipes.put(KEY_SAPLING, new Pair(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.WOOD), new FluidStack(Fluids.WOODOIL, 50))); recipes.put(KEY_SAPLING, new Pair(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.WOOD), new FluidStack(Fluids.WOODOIL, 50)));

View File

@ -112,6 +112,10 @@ public class CrucibleRecipes extends SerializableRecipe {
.inputs(new MaterialStack(Mats.MAT_TUNGSTEN, i), new MaterialStack(Mats.MAT_SCHRABIDIUM, n * 1)) .inputs(new MaterialStack(Mats.MAT_TUNGSTEN, i), new MaterialStack(Mats.MAT_SCHRABIDIUM, n * 1))
.outputs(new MaterialStack(Mats.MAT_MAGTUNG, i))); .outputs(new MaterialStack(Mats.MAT_MAGTUNG, i)));
recipes.add(new CrucibleRecipe(17, "crucible.bscco", 3, new ItemStack(ModItems.ingot_bscco))
.inputs(new MaterialStack(Mats.MAT_BISMUTH, n * 2), new MaterialStack(Mats.MAT_STRONTIUM, n * 2), new MaterialStack(Mats.MAT_CALCIUM, n * 2), new MaterialStack(Mats.MAT_COPPER, n * 3))
.outputs(new MaterialStack(Mats.MAT_BSCCO, i)));
registerMoldsForNEI(); registerMoldsForNEI();
} }

View File

@ -46,6 +46,7 @@ public class CrystallizerRecipes extends SerializableRecipe {
//'Object' is either a ComparableStack or the key for the ore dict //'Object' is either a ComparableStack or the key for the ore dict
private static HashMap<Pair<Object, FluidType>, CrystallizerRecipe> recipes = new HashMap(); private static HashMap<Pair<Object, FluidType>, CrystallizerRecipe> recipes = new HashMap();
private static HashMap<Object, Integer> amounts = new HashMap(); // for use in the partitioner
@Override @Override
public void registerDefaults() { public void registerDefaults() {
@ -155,17 +156,20 @@ public class CrystallizerRecipes extends SerializableRecipe {
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_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.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)); int sulf = 4;
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_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing).setReq(sulf), 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.SULFURIC_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing).setReq(sulf), new FluidStack(Fluids.WATER, 250));
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing).setReq(sulf), 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)); int solv = 4;
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_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing).setReq(solv), 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.SOLVENT_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing).setReq(solv), new FluidStack(Fluids.WATER, 250));
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing).setReq(solv), 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)); int rad = 4;
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_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing).setReq(rad), 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)); registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing).setReq(rad), new FluidStack(Fluids.WATER, 250));
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing).setReq(rad), new FluidStack(Fluids.WATER, 250));
FluidStack primary = new FluidStack(Fluids.HYDROGEN, 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, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
@ -239,22 +243,41 @@ public class CrystallizerRecipes extends SerializableRecipe {
ComparableStack comp = new ComparableStack(stack.getItem(), 1, stack.getItemDamage()); ComparableStack comp = new ComparableStack(stack.getItem(), 1, stack.getItemDamage());
Pair compKey = new Pair(comp, type); Pair compKey = new Pair(comp, type);
if(recipes.containsKey(compKey)) if(recipes.containsKey(compKey)) return recipes.get(compKey);
return recipes.get(compKey);
String[] dictKeys = comp.getDictKeys(); String[] dictKeys = comp.getDictKeys();
for(String key : dictKeys) { for(String key : dictKeys) {
Pair dictKey = new Pair(key, type); Pair dictKey = new Pair(key, type);
if(recipes.containsKey(dictKey)) return recipes.get(dictKey);
if(recipes.containsKey(dictKey))
return recipes.get(dictKey);
} }
comp.meta = OreDictionary.WILDCARD_VALUE;
if(recipes.containsKey(compKey)) return recipes.get(compKey);
return null; return null;
} }
public static int getAmount(ItemStack stack) {
if(stack == null || stack.getItem() == null)
return 0;
ComparableStack comp = new ComparableStack(stack.getItem(), 1, stack.getItemDamage());
if(amounts.containsKey(comp)) return amounts.get(comp);
String[] dictKeys = comp.getDictKeys();
for(String key : dictKeys) {
if(amounts.containsKey(key)) return amounts.get(key);
}
comp.meta = OreDictionary.WILDCARD_VALUE;
if(amounts.containsKey(comp)) return amounts.get(comp);
return 0;
}
public static HashMap getRecipes() { public static HashMap getRecipes() {
HashMap<Object, Object> recipes = new HashMap<Object, Object>(); HashMap<Object, Object> recipes = new HashMap<Object, Object>();
@ -289,6 +312,7 @@ public class CrystallizerRecipes extends SerializableRecipe {
public static void registerRecipe(Object input, CrystallizerRecipe recipe, FluidStack stack) { public static void registerRecipe(Object input, CrystallizerRecipe recipe, FluidStack stack) {
recipe.acidAmount = stack.fill; recipe.acidAmount = stack.fill;
recipes.put(new Pair(input, stack.type), recipe); recipes.put(new Pair(input, stack.type), recipe);
amounts.put(input, recipe.itemAmount);
} }
public static class CrystallizerRecipe { public static class CrystallizerRecipe {
@ -362,6 +386,7 @@ public class CrystallizerRecipes extends SerializableRecipe {
@Override @Override
public void deleteRecipes() { public void deleteRecipes() {
recipes.clear(); recipes.clear();
amounts.clear();
} }
@Override @Override

View File

@ -24,8 +24,10 @@ public class ElectrolyserFluidRecipes extends SerializableRecipe {
@Override @Override
public void registerDefaults() { public void registerDefaults() {
recipes.put(Fluids.WATER, new ElectrolysisRecipe(2_000, new FluidStack(Fluids.HYDROGEN, 200), new FluidStack(Fluids.OXYGEN, 200))); recipes.put(Fluids.WATER, new ElectrolysisRecipe(2_000, new FluidStack(Fluids.HYDROGEN, 200), new FluidStack(Fluids.OXYGEN, 200), 10));
recipes.put(Fluids.HEAVYWATER, new ElectrolysisRecipe(2_000, new FluidStack(Fluids.DEUTERIUM, 200), new FluidStack(Fluids.OXYGEN, 200))); recipes.put(Fluids.HEAVYWATER, new ElectrolysisRecipe(2_000, new FluidStack(Fluids.DEUTERIUM, 200), new FluidStack(Fluids.OXYGEN, 200), 10));
recipes.put(Fluids.VITRIOL, new ElectrolysisRecipe(1_000, new FluidStack(Fluids.SULFURIC_ACID, 500), new FluidStack(Fluids.CHLORINE, 500), new ItemStack(ModItems.powder_iron), new ItemStack(ModItems.ingot_mercury)));
recipes.put(Fluids.SLOP, new ElectrolysisRecipe(1_000, new FluidStack(Fluids.MERCURY, 250), new FluidStack(Fluids.NONE, 0), new ItemStack(ModItems.niter, 2), new ItemStack(ModItems.powder_limestone, 2), new ItemStack(ModItems.sulfur)));
recipes.put(Fluids.POTASSIUM_CHLORIDE, new ElectrolysisRecipe(250, new FluidStack(Fluids.CHLORINE, 125), new FluidStack(Fluids.NONE, 0), new ItemStack(ModItems.dust))); recipes.put(Fluids.POTASSIUM_CHLORIDE, new ElectrolysisRecipe(250, new FluidStack(Fluids.CHLORINE, 125), new FluidStack(Fluids.NONE, 0), new ItemStack(ModItems.dust)));
recipes.put(Fluids.CALCIUM_CHLORIDE, new ElectrolysisRecipe(250, new FluidStack(Fluids.CHLORINE, 125), new FluidStack(Fluids.CALCIUM_SOLUTION, 125))); recipes.put(Fluids.CALCIUM_CHLORIDE, new ElectrolysisRecipe(250, new FluidStack(Fluids.CHLORINE, 125), new FluidStack(Fluids.CALCIUM_SOLUTION, 125)));
@ -49,6 +51,11 @@ public class ElectrolyserFluidRecipes extends SerializableRecipe {
return recipes; return recipes;
} }
public static ElectrolysisRecipe getRecipe(FluidType type) {
if(type == null)
return null;
return recipes.get(type);
}
@Override @Override
public String getFileName() { public String getFileName() {
@ -73,10 +80,13 @@ public class ElectrolyserFluidRecipes extends SerializableRecipe {
FluidStack output1 = this.readFluidStack(obj.get("output1").getAsJsonArray()); FluidStack output1 = this.readFluidStack(obj.get("output1").getAsJsonArray());
FluidStack output2 = this.readFluidStack(obj.get("output2").getAsJsonArray()); FluidStack output2 = this.readFluidStack(obj.get("output2").getAsJsonArray());
int duration = 20;
if(obj.has("duraion")) duration = obj.get("duration").getAsInt();
ItemStack[] byproducts = new ItemStack[0]; ItemStack[] byproducts = new ItemStack[0];
if(obj.has("byproducts")) byproducts = this.readItemStackArray(obj.get("byproducts").getAsJsonArray()); if(obj.has("byproducts")) byproducts = this.readItemStackArray(obj.get("byproducts").getAsJsonArray());
recipes.put(input.type, new ElectrolysisRecipe(input.fill, output1, output2, byproducts)); recipes.put(input.type, new ElectrolysisRecipe(input.fill, output1, output2, duration, byproducts));
} }
@Override @Override
@ -92,6 +102,8 @@ public class ElectrolyserFluidRecipes extends SerializableRecipe {
for(ItemStack stack : rec.getValue().byproduct) this.writeItemStack(stack, writer); for(ItemStack stack : rec.getValue().byproduct) this.writeItemStack(stack, writer);
writer.endArray(); writer.endArray();
} }
writer.name("duration").value(rec.getValue().duration);
} }
public static class ElectrolysisRecipe { public static class ElectrolysisRecipe {
@ -99,12 +111,23 @@ public class ElectrolyserFluidRecipes extends SerializableRecipe {
public FluidStack output2; public FluidStack output2;
public int amount; public int amount;
public ItemStack[] byproduct; public ItemStack[] byproduct;
public int duration;
public ElectrolysisRecipe(int amount, FluidStack output1, FluidStack output2, ItemStack... byproduct) { public ElectrolysisRecipe(int amount, FluidStack output1, FluidStack output2, ItemStack... byproduct) {
this.output1 = output1; this.output1 = output1;
this.output2 = output2; this.output2 = output2;
this.amount = amount; this.amount = amount;
this.byproduct = byproduct; this.byproduct = byproduct;
this.duration = 20;
}
public ElectrolysisRecipe(int amount, FluidStack output1, FluidStack output2, int duration, ItemStack... byproduct) {
this.output1 = output1;
this.output2 = output2;
this.amount = amount;
this.byproduct = byproduct;
this.duration = duration;
} }
} }
} }

View File

@ -134,33 +134,39 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe {
for(BedrockOreType type : BedrockOreType.values()) { for(BedrockOreType type : BedrockOreType.values()) {
MaterialStack f0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(7)); MaterialStack f0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(12));
MaterialStack f1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(4)); MaterialStack f1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(6));
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ElectrolysisMetalRecipe( recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ElectrolysisMetalRecipe(
f0 != null ? f0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)), f0 != null ? f0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
f1 != null ? f1 : 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), 60,
f1 == null ? ItemBedrockOreNew.extract(type.primary2, 4) : new ItemStack(ModItems.dust))); f0 == null ? ItemBedrockOreNew.extract(type.primary1, 12) : new ItemStack(ModItems.dust),
f1 == null ? ItemBedrockOreNew.extract(type.primary2, 6) : new ItemStack(ModItems.dust),
MaterialStack s0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(4)); ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)));
MaterialStack s1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(7)); MaterialStack s0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(6));
MaterialStack s1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(12));
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ElectrolysisMetalRecipe( recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ElectrolysisMetalRecipe(
s0 != null ? s0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)), s0 != null ? s0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
s1 != null ? s1 : 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), 60,
s1 == null ? ItemBedrockOreNew.extract(type.primary2, 7) : new ItemStack(ModItems.dust))); s0 == null ? ItemBedrockOreNew.extract(type.primary1, 6) : new ItemStack(ModItems.dust),
s1 == null ? ItemBedrockOreNew.extract(type.primary2, 12) : new ItemStack(ModItems.dust),
ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)));
MaterialStack c0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(2)); MaterialStack c0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(2));
MaterialStack c1 = ItemBedrockOreNew.toFluid(type.primary2, 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( recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new ElectrolysisMetalRecipe(
c0 != null ? c0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1, 2)), 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)), c1 != null ? c1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1, 2)),
60,
c0 == null ? ItemBedrockOreNew.extract(type.primary1, 2) : new ItemStack(ModItems.dust), c0 == null ? ItemBedrockOreNew.extract(type.primary1, 2) : new ItemStack(ModItems.dust),
c1 == null ? ItemBedrockOreNew.extract(type.primary2, 2) : new ItemStack(ModItems.dust))); c1 == null ? ItemBedrockOreNew.extract(type.primary2, 2) : new ItemStack(ModItems.dust)));
} }
} }
public static ElectrolysisMetalRecipe getRecipe(ItemStack stack) { public static ElectrolysisMetalRecipe getRecipe(ItemStack stack) {
if(stack == null || stack.getItem() == null)
return null;
ComparableStack comp = new ComparableStack(stack).makeSingular(); ComparableStack comp = new ComparableStack(stack).makeSingular();
@ -229,7 +235,10 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe {
ItemStack[] byproducts = new ItemStack[0]; ItemStack[] byproducts = new ItemStack[0];
if(obj.has("byproducts")) byproducts = this.readItemStackArray(obj.get("byproducts").getAsJsonArray()); if(obj.has("byproducts")) byproducts = this.readItemStackArray(obj.get("byproducts").getAsJsonArray());
recipes.put(input, new ElectrolysisMetalRecipe(output1, output2, byproducts)); int duration = 600;
if(obj.has("duration")) duration = obj.get("duration").getAsInt();
recipes.put(input, new ElectrolysisMetalRecipe(output1, output2, duration, byproducts));
} }
@Override @Override
@ -257,6 +266,8 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe {
for(ItemStack stack : rec.getValue().byproduct) this.writeItemStack(stack, writer); for(ItemStack stack : rec.getValue().byproduct) this.writeItemStack(stack, writer);
writer.endArray(); writer.endArray();
} }
writer.name("duration").value(rec.getValue().duration);
} }
public static class ElectrolysisMetalRecipe { public static class ElectrolysisMetalRecipe {
@ -264,11 +275,19 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe {
public MaterialStack output1; public MaterialStack output1;
public MaterialStack output2; public MaterialStack output2;
public ItemStack[] byproduct; public ItemStack[] byproduct;
public int duration;
public ElectrolysisMetalRecipe(MaterialStack output1, MaterialStack output2, ItemStack... byproduct) { public ElectrolysisMetalRecipe(MaterialStack output1, MaterialStack output2, ItemStack... byproduct) {
this.output1 = output1; this.output1 = output1;
this.output2 = output2; this.output2 = output2;
this.byproduct = byproduct; this.byproduct = byproduct;
this.duration = 600;
}
public ElectrolysisMetalRecipe(MaterialStack output1, MaterialStack output2, int duration, ItemStack... byproduct) {
this.output1 = output1;
this.output2 = output2;
this.byproduct = byproduct;
this.duration = duration;
} }
} }
} }

View File

@ -54,6 +54,7 @@ public class LiquefactionRecipes extends SerializableRecipe {
recipes.put(new ComparableStack(Blocks.packed_ice), new FluidStack(1000, Fluids.WATER)); recipes.put(new ComparableStack(Blocks.packed_ice), new FluidStack(1000, Fluids.WATER));
recipes.put(new ComparableStack(Items.ender_pearl), new FluidStack(100, Fluids.ENDERJUICE)); recipes.put(new ComparableStack(Items.ender_pearl), new FluidStack(100, Fluids.ENDERJUICE));
recipes.put(new ComparableStack(ModItems.pellet_charged), new FluidStack(4000, Fluids.HELIUM4)); recipes.put(new ComparableStack(ModItems.pellet_charged), new FluidStack(4000, Fluids.HELIUM4));
recipes.put(new ComparableStack(ModBlocks.ore_oil_sand), new FluidStack(100, Fluids.BITUMEN));
recipes.put(new ComparableStack(Items.sugar), new FluidStack(100, Fluids.ETHANOL)); recipes.put(new ComparableStack(Items.sugar), new FluidStack(100, Fluids.ETHANOL));
recipes.put(new ComparableStack(ModBlocks.plant_flower, 1, 3), new FluidStack(150, Fluids.ETHANOL)); recipes.put(new ComparableStack(ModBlocks.plant_flower, 1, 3), new FluidStack(150, Fluids.ETHANOL));
@ -67,10 +68,6 @@ public class LiquefactionRecipes extends SerializableRecipe {
recipes.put(new ComparableStack(Blocks.tallgrass, 1, 1), new FluidStack(100, Fluids.SEEDSLURRY)); recipes.put(new ComparableStack(Blocks.tallgrass, 1, 1), new FluidStack(100, Fluids.SEEDSLURRY));
recipes.put(new ComparableStack(Blocks.tallgrass, 1, 2), new FluidStack(100, Fluids.SEEDSLURRY)); recipes.put(new ComparableStack(Blocks.tallgrass, 1, 2), new FluidStack(100, Fluids.SEEDSLURRY));
recipes.put(new ComparableStack(Blocks.vine), new FluidStack(100, Fluids.SEEDSLURRY)); recipes.put(new ComparableStack(Blocks.vine), new FluidStack(100, Fluids.SEEDSLURRY));
//recipes.put(new ComparableStack(ModItems.solid_fuel_bf), new FluidStack(250, Fluids.BALEFIRE));
//TODO: more recipes as the crack oil derivatives are added
} }
public static FluidStack getOutput(ItemStack stack) { public static FluidStack getOutput(ItemStack stack) {

View File

@ -99,6 +99,13 @@ public class SILEXRecipes {
.addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_impure_osmiridium), 1)) .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_impure_osmiridium), 1))
); );
recipes.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.VITRIOL.getID()), new SILEXRecipe(1000, 1000, EnumWavelengths.IR)
.addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_bromine), 5))
.addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_iodine), 5))
.addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_iron), 5))
.addOut(new WeightedRandomObject(new ItemStack(ModItems.sulfur), 15))
);
for(int i = 0; i < 5; i++) { for(int i = 0; i < 5; i++) {
// UEU // // UEU //

View File

@ -171,7 +171,7 @@ public class ShredderRecipes extends SerializableRecipe {
ShredderRecipes.setRecipe(Blocks.clay, new ItemStack(Items.clay_ball, 4)); ShredderRecipes.setRecipe(Blocks.clay, new ItemStack(Items.clay_ball, 4));
ShredderRecipes.setRecipe(Blocks.hardened_clay, new ItemStack(Items.clay_ball, 4)); ShredderRecipes.setRecipe(Blocks.hardened_clay, new ItemStack(Items.clay_ball, 4));
ShredderRecipes.setRecipe(Blocks.tnt, new ItemStack(Items.gunpowder, Compat.isModLoaded(Compat.MOD_GT6) ? 4 : 5)); ShredderRecipes.setRecipe(Blocks.tnt, new ItemStack(Items.gunpowder, Compat.isModLoaded(Compat.MOD_GT6) ? 4 : 5));
ShredderRecipes.setRecipe(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.LIMESTONE), new ItemStack(ModItems.powder_calcium)); ShredderRecipes.setRecipe(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.LIMESTONE), new ItemStack(ModItems.powder_limestone, 4));
ShredderRecipes.setRecipe(ModBlocks.stone_gneiss, new ItemStack(ModItems.powder_lithium_tiny, 1)); ShredderRecipes.setRecipe(ModBlocks.stone_gneiss, new ItemStack(ModItems.powder_lithium_tiny, 1));
ShredderRecipes.setRecipe(ModItems.powder_lapis, new ItemStack(ModItems.powder_cobalt_tiny, 1)); ShredderRecipes.setRecipe(ModItems.powder_lapis, new ItemStack(ModItems.powder_cobalt_tiny, 1));
ShredderRecipes.setRecipe(ModItems.fragment_neodymium, new ItemStack(ModItems.powder_neodymium_tiny, 1)); ShredderRecipes.setRecipe(ModItems.fragment_neodymium, new ItemStack(ModItems.powder_neodymium_tiny, 1));
@ -208,6 +208,7 @@ public class ShredderRecipes extends SerializableRecipe {
ShredderRecipes.setRecipe(ModBlocks.machine_well, new ItemStack(ModItems.powder_steel, 32)); ShredderRecipes.setRecipe(ModBlocks.machine_well, new ItemStack(ModItems.powder_steel, 32));
ShredderRecipes.setRecipe(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), new ItemStack(ModItems.powder_desh_mix)); ShredderRecipes.setRecipe(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), new ItemStack(ModItems.powder_desh_mix));
ShredderRecipes.setRecipe(Blocks.sand, new ItemStack(ModItems.dust, 2)); ShredderRecipes.setRecipe(Blocks.sand, new ItemStack(ModItems.dust, 2));
ShredderRecipes.setRecipe(ModBlocks.block_slag, new ItemStack(ModItems.powder_cement, 4));
List<ItemStack> logs = OreDictionary.getOres("logWood"); List<ItemStack> logs = OreDictionary.getOres("logWood");
List<ItemStack> planks = OreDictionary.getOres("plankWood"); List<ItemStack> planks = OreDictionary.getOres("plankWood");
@ -284,6 +285,7 @@ public class ShredderRecipes extends SerializableRecipe {
ShredderRecipes.setRecipe(ModBlocks.steel_grate, new ItemStack(ModItems.powder_steel_tiny, 3)); ShredderRecipes.setRecipe(ModBlocks.steel_grate, new ItemStack(ModItems.powder_steel_tiny, 3));
ShredderRecipes.setRecipe(ModItems.pipes_steel, new ItemStack(ModItems.powder_steel, 27)); ShredderRecipes.setRecipe(ModItems.pipes_steel, new ItemStack(ModItems.powder_steel, 27));
ShredderRecipes.setRecipe(ModBlocks.machine_fluidtank, new ItemStack(ModItems.powder_steel, 16)); ShredderRecipes.setRecipe(ModBlocks.machine_fluidtank, new ItemStack(ModItems.powder_steel, 16));
ShredderRecipes.setRecipe(new ItemStack(ModItems.bedrock_ore, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(Blocks.gravel));
/* Sellafite scrapping */ /* Sellafite scrapping */
ShredderRecipes.setRecipe(ModBlocks.sellafield_slaked, new ItemStack(Blocks.gravel)); ShredderRecipes.setRecipe(ModBlocks.sellafield_slaked, new ItemStack(Blocks.gravel));

View File

@ -91,6 +91,19 @@ public class SolderingRecipes extends SerializableRecipe {
new OreDictStack(PB.wireFine(), 12)} new OreDictStack(PB.wireFine(), 12)}
)); ));
recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.QUANTUM.ordinal()), 400, 100_000,
new FluidStack(Fluids.HELIUM4, 1_000),
new AStack[] {
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CHIP_QUANTUM),
new ComparableStack(ModItems.circuit, lbsm ? 4 : 16, EnumCircuitType.CHIP_BISMOID),
new ComparableStack(ModItems.circuit, lbsm ? 1 : 4, EnumCircuitType.ATOMIC_CLOCK)},
new AStack[] {
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.PCB),
new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)},
new AStack[] {
new OreDictStack(PB.wireFine(), 16)}
));
/* /*
* COMPUTERS * COMPUTERS
*/ */
@ -110,14 +123,25 @@ public class SolderingRecipes extends SerializableRecipe {
recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED.ordinal()), 600, 25_000, recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED.ordinal()), 600, 25_000,
new AStack[] { new AStack[] {
new ComparableStack(ModItems.circuit, lbsm ? 8 : 16, EnumCircuitType.CHIP_BISMOID), new ComparableStack(ModItems.circuit, lbsm ? 8 : 16, EnumCircuitType.CHIP_BISMOID),
new ComparableStack(ModItems.circuit, lbsm ? 16 : 48, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.circuit, lbsm ? 16 : 48, EnumCircuitType.CAPACITOR_TANTALIUM),
new ComparableStack(ModItems.circuit, lbsm ? 8 : 32, EnumCircuitType.CAPACITOR_TANTALIUM)}, new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ATOMIC_CLOCK)},
new AStack[] { new AStack[] {
new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_CHASSIS), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_CHASSIS),
new ComparableStack(ModItems.upgrade_speed_3)}, new ComparableStack(ModItems.upgrade_speed_3)},
new AStack[] { new AStack[] {
new OreDictStack(PB.wireFine(), 24)} new OreDictStack(PB.wireFine(), 24)}
)); ));
recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_QUANTUM.ordinal()), 600, 250_000,
new AStack[] {
new ComparableStack(ModItems.circuit, lbsm ? 8 : 16, EnumCircuitType.CHIP_QUANTUM),
new ComparableStack(ModItems.circuit, lbsm ? 16 : 48, EnumCircuitType.CHIP_BISMOID),
new ComparableStack(ModItems.circuit, lbsm ? 1 : 8, EnumCircuitType.ATOMIC_CLOCK)},
new AStack[] {
new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER_ADVANCED),
new ComparableStack(ModItems.upgrade_overdrive_1)},
new AStack[] {
new OreDictStack(PB.wireFine(), 32)}
));
/* /*
* UPGRADES * UPGRADES

View File

@ -9,6 +9,7 @@ import java.util.Map.Entry;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import com.hbm.blocks.ModBlocks;
import com.hbm.inventory.FluidStack; import com.hbm.inventory.FluidStack;
import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.OreDictManager.DictFrame;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
@ -69,6 +70,7 @@ public class SolidificationRecipes extends SerializableRecipe {
registerRecipe(WATZ, 1000, ModItems.ingot_mud); registerRecipe(WATZ, 1000, ModItems.ingot_mud);
registerRecipe(REDMUD, 1000, Items.iron_ingot); registerRecipe(REDMUD, 1000, Items.iron_ingot);
registerRecipe(SODIUM, 100, ModItems.powder_sodium); registerRecipe(SODIUM, 100, ModItems.powder_sodium);
registerRecipe(SLOP, 250, ModBlocks.ore_oil_sand);
registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE));
registerRecipe(CRACKOIL, SF_CRACK, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)); registerRecipe(CRACKOIL, SF_CRACK, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK));

View File

@ -13,7 +13,8 @@ public class ItemGenericPart extends ItemEnumMulti {
PISTON_PNEUMATIC("piston_pneumatic"), PISTON_PNEUMATIC("piston_pneumatic"),
PISTON_HYDRAULIC("piston_hydraulic"), PISTON_HYDRAULIC("piston_hydraulic"),
PISTON_ELECTRIC("piston_electric"), PISTON_ELECTRIC("piston_electric"),
LDE("low_density_element"); LDE("low_density_element"),
HDE("heavy_duty_element");
private String texName; private String texName;

View File

@ -116,6 +116,8 @@ public class ModItems {
public static Item coal_infernal; public static Item coal_infernal;
public static Item cinnebar; public static Item cinnebar;
public static Item powder_ash; public static Item powder_ash;
public static Item powder_limestone;
public static Item powder_cement;
public static Item niter; public static Item niter;
public static Item ingot_copper; public static Item ingot_copper;
@ -146,6 +148,7 @@ public class ModItems {
public static Item ingot_cdalloy; public static Item ingot_cdalloy;
public static Item ingot_bismuth_bronze; public static Item ingot_bismuth_bronze;
public static Item ingot_arsenic_bronze; public static Item ingot_arsenic_bronze;
public static Item ingot_bscco;
public static Item lithium; public static Item lithium;
public static Item ingot_zirconium; public static Item ingot_zirconium;
public static Item ingot_hes; public static Item ingot_hes;
@ -2566,6 +2569,7 @@ public class ModItems {
ingot_cdalloy = new Item().setUnlocalizedName("ingot_cdalloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_cdalloy"); ingot_cdalloy = new Item().setUnlocalizedName("ingot_cdalloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_cdalloy");
ingot_bismuth_bronze = new Item().setUnlocalizedName("ingot_bismuth_bronze").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_bismuth_bronze"); ingot_bismuth_bronze = new Item().setUnlocalizedName("ingot_bismuth_bronze").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_bismuth_bronze");
ingot_arsenic_bronze = new Item().setUnlocalizedName("ingot_arsenic_bronze").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_arsenic_bronze"); ingot_arsenic_bronze = new Item().setUnlocalizedName("ingot_arsenic_bronze").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_arsenic_bronze");
ingot_bscco = new Item().setUnlocalizedName("ingot_bscco").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_bscco");
niter = new Item().setUnlocalizedName("niter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":salpeter"); niter = new Item().setUnlocalizedName("niter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":salpeter");
ingot_copper = new Item().setUnlocalizedName("ingot_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_copper"); ingot_copper = new Item().setUnlocalizedName("ingot_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_copper");
@ -2757,6 +2761,8 @@ public class ModItems {
coal_infernal = new Item().setUnlocalizedName("coal_infernal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coal_infernal"); coal_infernal = new Item().setUnlocalizedName("coal_infernal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coal_infernal");
cinnebar = new Item().setUnlocalizedName("cinnebar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cinnebar"); cinnebar = new Item().setUnlocalizedName("cinnebar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cinnebar");
powder_ash = new ItemEnumMulti(EnumAshType.class, true, true).setUnlocalizedName("powder_ash").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_ash"); powder_ash = new ItemEnumMulti(EnumAshType.class, true, true).setUnlocalizedName("powder_ash").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_ash");
powder_limestone = new Item().setUnlocalizedName("powder_limestone").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_limestone");
powder_cement = new Item().setUnlocalizedName("powder_cement").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cement");
ingot_gh336 = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("ingot_gh336").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_gh336"); ingot_gh336 = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("ingot_gh336").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_gh336");
nugget_gh336 = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("nugget_gh336").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_gh336"); nugget_gh336 = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("nugget_gh336").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_gh336");
@ -5659,6 +5665,7 @@ public class ModItems {
GameRegistry.registerItem(ingot_cdalloy, ingot_cdalloy.getUnlocalizedName()); GameRegistry.registerItem(ingot_cdalloy, ingot_cdalloy.getUnlocalizedName());
GameRegistry.registerItem(ingot_bismuth_bronze, ingot_bismuth_bronze.getUnlocalizedName()); GameRegistry.registerItem(ingot_bismuth_bronze, ingot_bismuth_bronze.getUnlocalizedName());
GameRegistry.registerItem(ingot_arsenic_bronze, ingot_arsenic_bronze.getUnlocalizedName()); GameRegistry.registerItem(ingot_arsenic_bronze, ingot_arsenic_bronze.getUnlocalizedName());
GameRegistry.registerItem(ingot_bscco, ingot_bscco.getUnlocalizedName());
GameRegistry.registerItem(ingot_lead, ingot_lead.getUnlocalizedName()); GameRegistry.registerItem(ingot_lead, ingot_lead.getUnlocalizedName());
GameRegistry.registerItem(ingot_bismuth, ingot_bismuth.getUnlocalizedName()); GameRegistry.registerItem(ingot_bismuth, ingot_bismuth.getUnlocalizedName());
GameRegistry.registerItem(ingot_arsenic, ingot_arsenic.getUnlocalizedName()); GameRegistry.registerItem(ingot_arsenic, ingot_arsenic.getUnlocalizedName());
@ -5918,6 +5925,8 @@ public class ModItems {
GameRegistry.registerItem(dust_tiny, dust_tiny.getUnlocalizedName()); GameRegistry.registerItem(dust_tiny, dust_tiny.getUnlocalizedName());
GameRegistry.registerItem(fallout, fallout.getUnlocalizedName()); GameRegistry.registerItem(fallout, fallout.getUnlocalizedName());
GameRegistry.registerItem(powder_ash, powder_ash.getUnlocalizedName()); GameRegistry.registerItem(powder_ash, powder_ash.getUnlocalizedName());
GameRegistry.registerItem(powder_limestone, powder_limestone.getUnlocalizedName());
GameRegistry.registerItem(powder_cement, powder_cement.getUnlocalizedName());
//Powders //Powders
GameRegistry.registerItem(powder_fire, powder_fire.getUnlocalizedName()); GameRegistry.registerItem(powder_fire, powder_fire.getUnlocalizedName());

View File

@ -23,18 +23,22 @@ public class ItemCircuit extends ItemEnumMulti {
list.add(new ItemStack(item, 1, EnumCircuitType.VACUUM_TUBE.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.VACUUM_TUBE.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR_TANTALIUM.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR_TANTALIUM.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.ATOMIC_CLOCK.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.PCB.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.PCB.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.SILICON.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.SILICON.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.CHIP.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.CHIP.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.CHIP_BISMOID.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.CHIP_BISMOID.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.CHIP_QUANTUM.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.ANALOG.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.ANALOG.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.BASIC.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.BASIC.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.ADVANCED.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.ADVANCED.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR_BOARD.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR_BOARD.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.BISMOID.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.BISMOID.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.QUANTUM.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER_CHASSIS.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER_CHASSIS.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER_ADVANCED.ordinal())); list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER_ADVANCED.ordinal()));
list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER_QUANTUM.ordinal()));
} }
public static enum EnumCircuitType { public static enum EnumCircuitType {
@ -53,6 +57,10 @@ public class ItemCircuit extends ItemEnumMulti {
CONTROLLER_CHASSIS, CONTROLLER_CHASSIS,
CONTROLLER, CONTROLLER,
CONTROLLER_ADVANCED, CONTROLLER_ADVANCED,
QUANTUM,
CHIP_QUANTUM,
CONTROLLER_QUANTUM,
ATOMIC_CLOCK,
} }
@Override @Override

View File

@ -120,10 +120,10 @@ public class ItemBedrockOreNew extends Item {
// primary sulfuric solvent radsolvent // primary sulfuric solvent radsolvent
LIGHT_METAL( 0xFFFFFF, 0x353535, "light", IRON, CU, TI, AL, AL, CHLOROCALCITE, LI, NA, CHLOROCALCITE, LI, NA), 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), 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), RARE_EARTH( 0xE6E6B6, 0x1C1C00, "rare", CO, EnumChunkType.RARE, B, LA, NB, ND, SR, ZR, NB, ND, SR),
ACTINIDE( 0xC1C7BD, 0x2B3227, "actinide", U, TH232, RA226, RA226, PO210, RA226, RA226, PO210, TC99, TC99, U238), 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), 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); CRYSTALLINE( 0xE2FFFA, 0x1E8A77, "crystal", REDSTONE, CINNABAR, SODALITE, ASBESTOS, DIAMOND, CINNABAR, ASBESTOS, EMERALD, BORAX, MOLYSITE, SODALITE);
//sediment //sediment
public int light; public int light;

View File

@ -153,19 +153,31 @@ public class HbmWorldGen implements IWorldGenerator {
DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.malachiteSpawn, 16, 6, 40, ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.malachiteSpawn, 16, 6, 40, ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal());
DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.limestoneSpawn, 12, 25, 30, ModBlocks.stone_resource, EnumStoneType.LIMESTONE.ordinal()); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.limestoneSpawn, 12, 25, 30, ModBlocks.stone_resource, EnumStoneType.LIMESTONE.ordinal());
if(rand.nextInt(3) == 0) { if(WorldConfig.newBedrockOres) {
@SuppressWarnings("unchecked")
WeightedRandomGeneric<BedrockOreDefinition> item = (WeightedRandomGeneric<BedrockOreDefinition>) WeightedRandom.getRandomItem(rand, BedrockOre.weightedOres);
BedrockOreDefinition def = item.get();
if(GeneralConfig.enable528 && GeneralConfig.enable528BedrockReplacement) { if(rand.nextInt(10) == 0) {
BedrockOreDefinition replacement = BedrockOre.replacements.get(def.id); int randPosX = i + rand.nextInt(2) + 8;
if(replacement != null) def = replacement; int randPosZ = j + rand.nextInt(2) + 8;
BedrockOre.generate(world, randPosX, randPosZ, new ItemStack(ModItems.bedrock_ore_base), null, 0xD78A16, 1);
} }
int randPosX = i + rand.nextInt(2) + 8; } else {
int randPosZ = j + rand.nextInt(2) + 8;
BedrockOre.generate(world, randPosX, randPosZ, def.stack, def.acid, def.color, def.tier); if(rand.nextInt(3) == 0) {
@SuppressWarnings("unchecked")
WeightedRandomGeneric<BedrockOreDefinition> item = (WeightedRandomGeneric<BedrockOreDefinition>) WeightedRandom.getRandomItem(rand, BedrockOre.weightedOres);
BedrockOreDefinition def = item.get();
if(GeneralConfig.enable528 && GeneralConfig.enable528BedrockReplacement) {
BedrockOreDefinition replacement = BedrockOre.replacements.get(def.id);
if(replacement != null) def = replacement;
}
int randPosX = i + rand.nextInt(2) + 8;
int randPosZ = j + rand.nextInt(2) + 8;
BedrockOre.generate(world, randPosX, randPosZ, def.stack, def.acid, def.color, def.tier);
}
} }
for(int k = 0; k < WorldConfig.randomSpawn; k++) { for(int k = 0; k < WorldConfig.randomSpawn; k++) {
@ -388,8 +400,8 @@ public class HbmWorldGen implements IWorldGenerator {
} }
if(WorldConfig.minefreq > 0 && GeneralConfig.enableMines && rand.nextInt(WorldConfig.minefreq) == 0) { if(WorldConfig.minefreq > 0 && GeneralConfig.enableMines && rand.nextInt(WorldConfig.minefreq) == 0) {
int x = i + rand.nextInt(16); int x = i + rand.nextInt(16) + 8;
int z = j + rand.nextInt(16); int z = j + rand.nextInt(16) + 8;
int y = world.getHeightValue(x, z); int y = world.getHeightValue(x, z);
if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z)) { if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z)) {

View File

@ -3,7 +3,7 @@ package com.hbm.lib;
public class RefStrings { public class RefStrings {
public static final String MODID = "hbm"; public static final String MODID = "hbm";
public static final String NAME = "Hbm's Nuclear Tech Mod"; public static final String NAME = "Hbm's Nuclear Tech Mod";
public static final String VERSION = "1.0.27 BETA (5000)"; public static final String VERSION = "1.0.27 BETA (5020)";
//HBM's Beta Naming Convention: //HBM's Beta Naming Convention:
//V T (X) //V T (X)
//V -> next release version //V -> next release version

View File

@ -54,6 +54,7 @@ import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter;
import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot;
import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal;
import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe;
import com.hbm.blocks.machine.Floodlight.TileEntityFloodlight;
import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.blocks.machine.MachineFan.TileEntityFan;
import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter;
import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump;
@ -152,7 +153,7 @@ public class ClientProxy extends ServerProxy {
Jars.initJars(); Jars.initJars();
if(GeneralConfig.enableSoundExtension) { if(GeneralConfig.enableSoundExtension) {
SoundSystemConfig.setNumberNormalChannels(1000); SoundSystemConfig.setNumberNormalChannels(GeneralConfig.normalSoundChannels);
SoundSystemConfig.setNumberStreamingChannels(50); SoundSystemConfig.setNumberStreamingChannels(50);
} }
} }
@ -184,6 +185,7 @@ public class ClientProxy extends ServerProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltW.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltW.class, new RenderDecoBlockAlt());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltF.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltF.class, new RenderDecoBlockAlt());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDemonLamp.class, new RenderDemonLamp()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDemonLamp.class, new RenderDemonLamp());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFloodlight.class, new RenderFloodlight());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLoot.class, new RenderLoot()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLoot.class, new RenderLoot());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPedestal.class, new RenderPedestalTile()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPedestal.class, new RenderPedestalTile());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBobble.class, new RenderBobble()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBobble.class, new RenderBobble());
@ -873,6 +875,7 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerBlockHandler(new RenderLight()); RenderingRegistry.registerBlockHandler(new RenderLight());
RenderingRegistry.registerBlockHandler(new RenderCRT()); RenderingRegistry.registerBlockHandler(new RenderCRT());
RenderingRegistry.registerBlockHandler(new RenderToaster()); RenderingRegistry.registerBlockHandler(new RenderToaster());
RenderingRegistry.registerBlockHandler(new RenderPartitioner());
RenderingRegistry.registerBlockHandler(new RenderFoundryBasin()); RenderingRegistry.registerBlockHandler(new RenderFoundryBasin());
RenderingRegistry.registerBlockHandler(new RenderFoundryMold()); RenderingRegistry.registerBlockHandler(new RenderFoundryMold());
@ -1962,7 +1965,9 @@ public class ClientProxy extends ServerProxy {
held == Item.getItemFromBlock(ModBlocks.drone_crate_provider) || held == Item.getItemFromBlock(ModBlocks.drone_crate_provider) ||
held == Item.getItemFromBlock(ModBlocks.drone_crate_requester) || held == Item.getItemFromBlock(ModBlocks.drone_crate_requester) ||
held == Item.getItemFromBlock(ModBlocks.drone_dock) || held == Item.getItemFromBlock(ModBlocks.drone_dock) ||
held == Item.getItemFromBlock(ModBlocks.drone_waypoint_request)) { held == Item.getItemFromBlock(ModBlocks.drone_waypoint_request) ||
held == Item.getItemFromBlock(ModBlocks.drone_waypoint) ||
held == ModItems.drone_linker) {
double mX = data.getDouble("mX"); double mX = data.getDouble("mX");
double mY = data.getDouble("mY"); double mY = data.getDouble("mY");
double mZ = data.getDouble("mZ"); double mZ = data.getDouble("mZ");

View File

@ -124,7 +124,10 @@ public class CraftingManager {
addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), new Object[] { "I", "S", "W", 'I', ModItems.plate_polymer, 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON), 'W', GOLD.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), new Object[] { "I", "S", "W", 'I', ModItems.plate_polymer, 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON), 'W', GOLD.wireFine() });
addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_BISMOID), new Object[] { "III", "SNS", "WWW", 'I', ModItems.plate_polymer, 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON), 'N', ANY_BISMOID.nugget(), 'W', CU.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_BISMOID), new Object[] { "III", "SNS", "WWW", 'I', ModItems.plate_polymer, 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON), 'N', ANY_BISMOID.nugget(), 'W', CU.wireFine() });
addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_BISMOID), new Object[] { "III", "SNS", "WWW", 'I', ModItems.plate_polymer, 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON), 'N', ANY_BISMOID.nugget(), 'W', GOLD.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_BISMOID), new Object[] { "III", "SNS", "WWW", 'I', ModItems.plate_polymer, 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON), 'N', ANY_BISMOID.nugget(), 'W', GOLD.wireFine() });
addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_QUANTUM), new Object[] { "HHH", "SIS", "WWW", 'H', ANY_HARDPLASTIC.ingot(), 'S', BSCCO.wireDense(), 'I', ModItems.pellet_charged, 'W', CU.wireFine() });
addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_QUANTUM), new Object[] { "HHH", "SIS", "WWW", 'H', ANY_HARDPLASTIC.ingot(), 'S', BSCCO.wireDense(), 'I', ModItems.pellet_charged, 'W', GOLD.wireFine() });
addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_CHASSIS), new Object[] { "PPP", "CBB", "PPP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.crt_display, 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_CHASSIS), new Object[] { "PPP", "CBB", "PPP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.crt_display, 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) });
addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ATOMIC_CLOCK), new Object[] { "ICI", "CSC", "ICI", 'I', ModItems.plate_polymer, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'S', SR.dust() });
addRecipeAuto(new ItemStack(ModItems.crt_display, 4), new Object[] { " A ", "SGS", " T ", 'A', AL.dust(), 'S', STEEL.plate(), 'G', KEY_ANYPANE, 'T', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); addRecipeAuto(new ItemStack(ModItems.crt_display, 4), new Object[] { " A ", "SGS", " T ", 'A', AL.dust(), 'S', STEEL.plate(), 'G', KEY_ANYPANE, 'T', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
@ -980,19 +983,20 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModBlocks.crane_unboxer), new Object[] { "WWW", "WPW", "CCC", 'W', KEY_STICK, 'P', Items.shears, 'C', ModBlocks.conveyor }); addRecipeAuto(new ItemStack(ModBlocks.crane_unboxer), new Object[] { "WWW", "WPW", "CCC", 'W', KEY_STICK, 'P', Items.shears, 'C', ModBlocks.conveyor });
addRecipeAuto(new ItemStack(ModBlocks.crane_router), new Object[] { "PIP", "ICI", "PIP", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', ModItems.plate_polymer, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); addRecipeAuto(new ItemStack(ModBlocks.crane_router), new Object[] { "PIP", "ICI", "PIP", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', ModItems.plate_polymer, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) });
addRecipeAuto(new ItemStack(ModBlocks.crane_splitter), new Object[] { "III", "PCP", "III", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', STEEL.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); addRecipeAuto(new ItemStack(ModBlocks.crane_splitter), new Object[] { "III", "PCP", "III", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', STEEL.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
addRecipeAuto(new ItemStack(ModBlocks.crane_partitioner), new Object[] { " M ", "BCB", 'M', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'B', ModBlocks.conveyor, 'C', ModBlocks.crate_steel });
addRecipeAuto(new ItemStack(ModBlocks.machine_conveyor_press), new Object[] { "CPC", "CBC", "CCC", 'C', CU.plate(), 'P', ModBlocks.machine_epress, 'B', ModBlocks.conveyor }); addRecipeAuto(new ItemStack(ModBlocks.machine_conveyor_press), new Object[] { "CPC", "CBC", "CCC", 'C', CU.plate(), 'P', ModBlocks.machine_epress, 'B', ModBlocks.conveyor });
addRecipeAuto(new ItemStack(ModBlocks.radar_screen), new Object[] { "PCP", "SRS", "PCP", 'P', ANY_PLASTIC.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'S', STEEL.plate(), 'R', ModItems.crt_display }); addRecipeAuto(new ItemStack(ModBlocks.radar_screen), new Object[] { "PCP", "SRS", "PCP", 'P', ANY_PLASTIC.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'S', STEEL.plate(), 'R', ModItems.crt_display });
addRecipeAuto(new ItemStack(ModItems.radar_linker), new Object[] { "S", "C", "P", 'S', ModItems.crt_display, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', STEEL.plate() }); addRecipeAuto(new ItemStack(ModItems.radar_linker), new Object[] { "S", "C", "P", 'S', ModItems.crt_display, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', STEEL.plate() });
addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()), new Object[] { "PPP", "HCH", " B ", 'P', ANY_PLASTIC.ingot(), 'H', STEEL.shell(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'B', ModBlocks.crate_steel }); addRecipeAuto(new ItemStack(ModItems.drone, 2, EnumDroneType.PATROL.ordinal()), new Object[] { " P ", "HCH", " B ", 'P', ANY_PLASTIC.ingot(), 'H', STEEL.pipe(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'B', STEEL.shell() });
addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()), new Object[] { "E", "D", 'E', Items.ender_pearl, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) }); addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()), new Object[] { "E", "D", 'E', Items.ender_pearl, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) });
addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()), new Object[] { " P ", "KDK", " P ", 'P', TI.plateWelded(), 'K', Fluids.KEROSENE.getDict(1_000), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) }); addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()), new Object[] { " P ", "KDK", " P ", 'P', TI.plateWelded(), 'K', Fluids.KEROSENE.getDict(1_000), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) });
addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()), new Object[] { "E", "D", 'E', Items.ender_pearl, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()) }); addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()), new Object[] { "E", "D", 'E', Items.ender_pearl, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()) });
addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()), new Object[] { " P ", "KDK", " P ", 'P', TI.plateWelded(), 'K', Fluids.KEROSENE.getDict(1_000), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()) }); addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()), new Object[] { " P ", "KDK", " P ", 'P', TI.plateWelded(), 'K', Fluids.KEROSENE.getDict(1_000), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()) });
addShapelessAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()), new Object[] { new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()) }); addShapelessAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()), new Object[] { new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()) });
addShapelessAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()), new Object[] { new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()) }); addShapelessAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()), new Object[] { new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()) });
addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), new Object[] { "E", "D", 'E', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()) }); addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), new Object[] { "E", "D", 'E', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) });
addRecipeAuto(new ItemStack(ModItems.drone_linker), new Object[] { "T", "C", 'T', ModBlocks.drone_waypoint, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); addRecipeAuto(new ItemStack(ModItems.drone_linker), new Object[] { "T", "C", 'T', ModBlocks.drone_waypoint, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) });
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_waypoint, 4), new Object[] { "G", "T", "C", 'G', KEY_GREEN, 'T', Blocks.redstone_torch, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) });

View File

@ -87,6 +87,7 @@ import net.minecraftforge.common.ForgeChunkManager.Ticket;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.util.EnumHelper; import net.minecraftforge.common.util.EnumHelper;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -353,6 +354,7 @@ public class MainRegistry {
ChestGenHooks.addItem(ChestGenHooks.BONUS_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.no9), 1, 1, 7)); ChestGenHooks.addItem(ChestGenHooks.BONUS_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.no9), 1, 1, 7));
EntityMappings.writeMappings(); EntityMappings.writeMappings();
//CompatNER.init();
ForgeChunkManager.setForcedChunkLoadingCallback(this, new LoadingCallback() { ForgeChunkManager.setForcedChunkLoadingCallback(this, new LoadingCallback() {
@ -1339,6 +1341,7 @@ public class MainRegistry {
ignoreMappings.add("hbm:tile.ore_verticium"); ignoreMappings.add("hbm:tile.ore_verticium");
ignoreMappings.add("hbm:item.warhead_mirvlet"); ignoreMappings.add("hbm:item.warhead_mirvlet");
ignoreMappings.add("hbm:item.generator_front"); ignoreMappings.add("hbm:item.generator_front");
ignoreMappings.add("hbm:tile.rbmk_heatex");
/// REMAP /// /// REMAP ///
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses);

View File

@ -51,8 +51,6 @@ import com.hbm.items.armor.ItemArmorMod;
import com.hbm.items.armor.ItemModRevive; import com.hbm.items.armor.ItemModRevive;
import com.hbm.items.armor.ItemModShackles; import com.hbm.items.armor.ItemModShackles;
import com.hbm.items.food.ItemConserve.EnumFoodType; 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.tool.ItemGuideBook.BookType;
import com.hbm.items.weapon.ItemGunBase; import com.hbm.items.weapon.ItemGunBase;
import com.hbm.lib.HbmCollection; import com.hbm.lib.HbmCollection;
@ -123,7 +121,6 @@ import net.minecraft.util.EntityDamageSource;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.FoodStats; import net.minecraft.util.FoodStats;
import net.minecraft.util.MathHelper; import net.minecraft.util.MathHelper;
import net.minecraft.util.StatCollector;
import net.minecraft.util.Vec3; import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.common.util.FakePlayer;

View File

@ -1491,6 +1491,7 @@ public class ResourceManager {
public static final IModelCustom pipe_neo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/pipe_neo.obj")); public static final IModelCustom pipe_neo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/pipe_neo.obj"));
public static final IModelCustom difurnace_extension = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/difurnace_extension.obj")); public static final IModelCustom difurnace_extension = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/difurnace_extension.obj"));
public static final IModelCustom splitter = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/splitter.obj")); public static final IModelCustom splitter = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/splitter.obj"));
public static final IModelCustom crane_buffer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/crane_buffer.obj"));
public static final IModelCustom rail_narrow_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow.obj")); public static final IModelCustom rail_narrow_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow.obj"));
public static final IModelCustom rail_narrow_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow_bend.obj")); public static final IModelCustom rail_narrow_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow_bend.obj"));
public static final IModelCustom rail_standard_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard.obj")); public static final IModelCustom rail_standard_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard.obj"));

View File

@ -0,0 +1,75 @@
package com.hbm.render.block;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.network.CranePartitioner;
import com.hbm.main.ResourceManager;
import com.hbm.render.util.ObjUtil;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.model.obj.WavefrontObject;
public class RenderPartitioner implements ISimpleBlockRenderingHandler {
@Override
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
GL11.glPushMatrix();
Tessellator tessellator = Tessellator.instance;
tessellator.setColorOpaque_F(1, 1, 1);
GL11.glRotated(90, 0, 1, 0);
GL11.glTranslatef(0F, -0.5F, 0F);
tessellator.startDrawingQuads();
drawPartitioner(tessellator, block, 0, false);
tessellator.draw();
GL11.glPopMatrix();
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
Tessellator tessellator = Tessellator.instance;
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
tessellator.setColorOpaque_F(1, 1, 1);
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
int meta = world.getBlockMetadata(x, y, z);
float rotation = 0;
if(meta == 2) rotation = 90F / 180F * (float) Math.PI;
if(meta == 4) rotation = 180F / 180F * (float) Math.PI;
if(meta == 5) rotation = 0F / 180F * (float) Math.PI;
if(meta == 3) rotation = 270F / 180F * (float)Math.PI;
drawPartitioner(tessellator, block, rotation, true);
tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F);
return true;
}
@Override
public boolean shouldRender3DInInventory(int modelId) {
return true;
}
private static void drawPartitioner(Tessellator tessellator, Block block, float rotation, boolean shadeNormals) {
CranePartitioner partitioner = (CranePartitioner) block;
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.crane_buffer, "Side", partitioner.getIcon(0, 0), tessellator, rotation, shadeNormals);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.crane_buffer, "Back", partitioner.iconBack, tessellator, rotation, shadeNormals);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.crane_buffer, "Top_Top.001", partitioner.iconTop, tessellator, rotation, shadeNormals);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.crane_buffer, "Inner", partitioner.iconInner, tessellator, rotation, shadeNormals);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.crane_buffer, "InnerSide", partitioner.iconInnerSide, tessellator, rotation, shadeNormals);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.crane_buffer, "Belt", partitioner.iconBelt, tessellator, rotation, shadeNormals);
}
@Override
public int getRenderId() {
return CranePartitioner.renderID;
}
}

View File

@ -0,0 +1,58 @@
package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.machine.Floodlight.TileEntityFloodlight;
import com.hbm.lib.RefStrings;
import com.hbm.render.loader.HFRWavefrontObject;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.IModelCustom;
public class RenderFloodlight extends TileEntitySpecialRenderer {
public static final IModelCustom floodlight = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/floodlight.obj"));
public static final ResourceLocation tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/floodlight.png");
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5D, y + 0.5D, z + 0.5D);
int meta = tileEntity.getBlockMetadata();
switch(meta) {
case 0: case 6: GL11.glRotated(180, 1, 0, 0); break;
case 1: case 7: break;
case 2: GL11.glRotated(90, 1, 0, 0); GL11.glRotated(180, 0, 0, 1); break;
case 3: GL11.glRotated(90, 1, 0, 0); break;
case 4: GL11.glRotated(90, 1, 0, 0); GL11.glRotated(90, 0, 0, 1); break;
case 5: GL11.glRotated(90, 1, 0, 0); GL11.glRotated(270, 0, 0, 1); break;
}
GL11.glTranslated(0, -0.5, 0);
if(meta != 0 && meta != 1) GL11.glRotated(90, 0, 1, 0);
bindTexture(tex);
floodlight.renderPart("Base");
TileEntityFloodlight floodtile = (TileEntityFloodlight) tileEntity;
float rotation = floodtile.rotation;
if(meta == 0 || meta == 6) rotation -= 90;
if(meta == 1 || meta == 7) rotation += 90;
GL11.glTranslated(0, 0.5, 0);
GL11.glRotatef(rotation, 0, 0, 1);
GL11.glTranslated(0, -0.5, 0);
floodlight.renderPart("Lights");
RenderArcFurnace.fullbright(true);
floodlight.renderPart("Lamps");
RenderArcFurnace.fullbright(false);
GL11.glPopMatrix();
}
}

View File

@ -4,10 +4,15 @@ import org.lwjgl.opengl.GL11;
import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.items.ModItems;
import com.hbm.main.ResourceManager; import com.hbm.main.ResourceManager;
import com.hbm.render.item.ItemRenderBase; import com.hbm.render.item.ItemRenderBase;
import com.hbm.render.util.RenderDecoItem;
import com.hbm.tileentity.machine.TileEntityMachineOreSlopper;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -16,6 +21,8 @@ import net.minecraftforge.client.IItemRenderer;
public class RenderOreSlopper extends TileEntitySpecialRenderer implements IItemRendererProvider { public class RenderOreSlopper extends TileEntitySpecialRenderer implements IItemRendererProvider {
private RenderItem itemRenderer = new RenderDecoItem(this);
@Override @Override
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
GL11.glPushMatrix(); GL11.glPushMatrix();
@ -30,38 +37,65 @@ public class RenderOreSlopper extends TileEntitySpecialRenderer implements IItem
case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; case 4: GL11.glRotatef(90, 0F, 1F, 0F); break;
} }
TileEntityMachineOreSlopper slopper = (TileEntityMachineOreSlopper) tile;
GL11.glShadeModel(GL11.GL_SMOOTH); GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.ore_slopper_tex); bindTexture(ResourceManager.ore_slopper_tex);
ResourceManager.ore_slopper.renderPart("Base"); ResourceManager.ore_slopper.renderPart("Base");
GL11.glPushMatrix();
double slide = slopper.prevSlider + (slopper.slider - slopper.prevSlider) * interp;
GL11.glTranslated(0, 0, slide * -3);
ResourceManager.ore_slopper.renderPart("Slider"); ResourceManager.ore_slopper.renderPart("Slider");
GL11.glPushMatrix(); GL11.glPushMatrix();
double extend = Math.sin(((tile.getWorldObj().getTotalWorldTime() + interp) * 0.1 % (Math.PI * 2))) * 0.625+ 0.625; double extend = (slopper.prevBucket + (slopper.bucket - slopper.prevBucket) * interp) * 1.5;
GL11.glTranslated(0, -MathHelper.clamp_double(extend - 0.25, 0, 1.25), 0); GL11.glTranslated(0, -MathHelper.clamp_double(extend - 0.25, 0, 1.25), 0);
ResourceManager.ore_slopper.renderPart("Hydraulics"); ResourceManager.ore_slopper.renderPart("Hydraulics");
GL11.glTranslated(0, -MathHelper.clamp_double(extend, 0, 1.25), 0); GL11.glTranslated(0, -MathHelper.clamp_double(extend, 0, 1.25), 0);
ResourceManager.ore_slopper.renderPart("Bucket"); ResourceManager.ore_slopper.renderPart("Bucket");
if(slopper.animation == slopper.animation.LIFTING) {
GL11.glTranslated(0.0625D, 4.3125D, 2D);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glRotatef(90, 0F, 1F, 0F);
GL11.glRotatef(-90, 1F, 0F, 0F);
ItemStack stack = new ItemStack(ModItems.bedrock_ore, 1, 0);
EntityItem item = new EntityItem(null, 0.0D, 0.0D, 0.0D, stack);
item.getEntityItem().stackSize = 1;
item.hoverStart = 0.0F;
RenderItem.renderInFrame = true;
GL11.glScaled(1.75, 1.75, 1.75);
itemRenderer.doRender(item, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F);
RenderItem.renderInFrame = false;
bindTexture(ResourceManager.ore_slopper_tex);
}
GL11.glPopMatrix();
GL11.glPopMatrix(); GL11.glPopMatrix();
double speed = 10; double blades = slopper.prevBlades + (slopper.blades - slopper.prevBlades) * interp;
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslated(0.375, 2.75, 0); GL11.glTranslated(0.375, 2.75, 0);
GL11.glRotated((tile.getWorldObj().getTotalWorldTime() % 360 + interp) * speed, 0, 0, 1); GL11.glRotated(blades, 0, 0, 1);
GL11.glTranslated(-0.375, -2.75, 0); GL11.glTranslated(-0.375, -2.75, 0);
ResourceManager.ore_slopper.renderPart("BladesLeft"); ResourceManager.ore_slopper.renderPart("BladesLeft");
GL11.glPopMatrix(); GL11.glPopMatrix();
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslated(-0.375, 2.75, 0); GL11.glTranslated(-0.375, 2.75, 0);
GL11.glRotated((tile.getWorldObj().getTotalWorldTime() % 360 + interp) * -speed, 0, 0, 1); GL11.glRotated(-blades, 0, 0, 1);
GL11.glTranslated(0.375, -2.75, 0); GL11.glTranslated(0.375, -2.75, 0);
ResourceManager.ore_slopper.renderPart("BladesRight"); ResourceManager.ore_slopper.renderPart("BladesRight");
GL11.glPopMatrix(); GL11.glPopMatrix();
double fan = slopper.prevFan + (slopper.fan - slopper.prevFan) * interp;
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslated(0, 1.875, -1); GL11.glTranslated(0, 1.875, -1);
GL11.glRotated((tile.getWorldObj().getTotalWorldTime() % 360 + interp) * -25, 1, 0, 0); GL11.glRotated(-fan, 1, 0, 0);
GL11.glTranslated(0, -1.875, 1); GL11.glTranslated(0, -1.875, 1);
ResourceManager.ore_slopper.renderPart("Fan"); ResourceManager.ore_slopper.renderPart("Fan");
GL11.glPopMatrix(); GL11.glPopMatrix();

View File

@ -18,6 +18,8 @@ public class TileEntityProxyBase extends TileEntityLoadedBase {
public TileEntity getTE() { public TileEntity getTE() {
if(worldObj == null) return null;
if(cachedPosition != null) { if(cachedPosition != null) {
TileEntity te = Compat.getTileStandard(worldObj, cachedPosition.getX(), cachedPosition.getY(), cachedPosition.getZ()); TileEntity te = Compat.getTileStandard(worldObj, cachedPosition.getX(), cachedPosition.getY(), cachedPosition.getZ());
if(te != null && !(te instanceof TileEntityProxyBase)) return te; if(te != null && !(te instanceof TileEntityProxyBase)) return te;

View File

@ -548,6 +548,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy
} }
@Override // please work @Override // please work
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
if(this.getTile() instanceof OCComponent) if(this.getTile() instanceof OCComponent)
return ((OCComponent) this.getTile()).getComponentName(); return ((OCComponent) this.getTile()).getComponentName();
@ -555,6 +556,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public boolean canConnectNode(ForgeDirection side) { //thank you vaer public boolean canConnectNode(ForgeDirection side) { //thank you vaer
if(this.getTile() instanceof OCComponent) if(this.getTile() instanceof OCComponent)
return (this.getTile().getBlockMetadata() & 6) == 6 && ((OCComponent) this.getTile()).canConnectNode(side); return (this.getTile().getBlockMetadata() & 6) == 6 && ((OCComponent) this.getTile()).canConnectNode(side);
@ -562,6 +564,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String[] getExtraInfo() { public String[] getExtraInfo() {
if(this.getTile() instanceof OCComponent) if(this.getTile() instanceof OCComponent)
return new String[] {"analyze.dummy"}; return new String[] {"analyze.dummy"};
@ -569,6 +572,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String[] methods() { public String[] methods() {
if(this.getTile() instanceof OCComponent) if(this.getTile() instanceof OCComponent)
return ((OCComponent) this.getTile()).methods(); return ((OCComponent) this.getTile()).methods();
@ -576,6 +580,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public Object[] invoke(String method, Context context, Arguments args) throws Exception { public Object[] invoke(String method, Context context, Arguments args) throws Exception {
if(this.getTile() instanceof OCComponent) if(this.getTile() instanceof OCComponent)
return ((OCComponent) this.getTile()).invoke(method, context, args); return ((OCComponent) this.getTile()).invoke(method, context, args);

View File

@ -17,6 +17,7 @@ import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe;
import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter;
import com.hbm.blocks.machine.BlockICF.TileEntityBlockICF; import com.hbm.blocks.machine.BlockICF.TileEntityBlockICF;
import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR;
import com.hbm.blocks.machine.Floodlight.TileEntityFloodlight;
import com.hbm.blocks.machine.MachineCapacitor.TileEntityCapacitor; import com.hbm.blocks.machine.MachineCapacitor.TileEntityCapacitor;
import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.blocks.machine.MachineFan.TileEntityFan;
import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter;
@ -24,6 +25,7 @@ import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump;
import com.hbm.blocks.network.BlockCableGauge.TileEntityCableGauge; import com.hbm.blocks.network.BlockCableGauge.TileEntityCableGauge;
import com.hbm.blocks.network.BlockCablePaintable.TileEntityCablePaintable; import com.hbm.blocks.network.BlockCablePaintable.TileEntityCablePaintable;
import com.hbm.blocks.network.CableDiode.TileEntityDiode; import com.hbm.blocks.network.CableDiode.TileEntityDiode;
import com.hbm.blocks.network.CranePartitioner.TileEntityCranePartitioner;
import com.hbm.blocks.network.FluidDuctGauge.TileEntityPipeGauge; import com.hbm.blocks.network.FluidDuctGauge.TileEntityPipeGauge;
import com.hbm.blocks.network.FluidDuctPaintable.TileEntityPipePaintable; import com.hbm.blocks.network.FluidDuctPaintable.TileEntityPipePaintable;
import com.hbm.blocks.rail.RailStandardSwitch.TileEntityRailSwitch; import com.hbm.blocks.rail.RailStandardSwitch.TileEntityRailSwitch;
@ -91,6 +93,7 @@ public class TileMappings {
put(TileEntityMachineExposureChamber.class, "tileentity_exposure_chamber"); put(TileEntityMachineExposureChamber.class, "tileentity_exposure_chamber");
put(TileEntityMachineRTG.class, "tileentity_machine_rtg"); put(TileEntityMachineRTG.class, "tileentity_machine_rtg");
put(TileEntityMachineExcavator.class, "tileentity_ntm_excavator"); put(TileEntityMachineExcavator.class, "tileentity_ntm_excavator");
put(TileEntityMachineOreSlopper.class, "tileentity_ore_slopper");
put(TileEntityFluidDuctSimple.class, "tileentity_universal_duct_simple"); put(TileEntityFluidDuctSimple.class, "tileentity_universal_duct_simple");
put(TileEntityFluidDuct.class, "tileentity_universal_duct"); put(TileEntityFluidDuct.class, "tileentity_universal_duct");
put(TileEntityMachineDrain.class, "tileentity_fluid_drain"); put(TileEntityMachineDrain.class, "tileentity_fluid_drain");
@ -182,6 +185,7 @@ public class TileMappings {
put(TileEntitySILEX.class, "tileentity_silex"); put(TileEntitySILEX.class, "tileentity_silex");
put(TileEntityFEL.class, "tileentity_fel"); put(TileEntityFEL.class, "tileentity_fel");
put(TileEntityDemonLamp.class, "tileentity_demonlamp"); put(TileEntityDemonLamp.class, "tileentity_demonlamp");
put(TileEntityFloodlight.class, "tileentity_floodlight");
put(TileEntityLantern.class, "tileentity_lantern_ordinary"); put(TileEntityLantern.class, "tileentity_lantern_ordinary");
put(TileEntityLanternBehemoth.class, "tileentity_lantern_behemoth"); put(TileEntityLanternBehemoth.class, "tileentity_lantern_behemoth");
put(TileEntityStorageDrum.class, "tileentity_waste_storage_drum"); put(TileEntityStorageDrum.class, "tileentity_waste_storage_drum");
@ -395,6 +399,7 @@ public class TileMappings {
put(TileEntityCraneUnboxer.class, "tileentity_unboxer"); put(TileEntityCraneUnboxer.class, "tileentity_unboxer");
put(TileEntityCraneRouter.class, "tileentity_router"); put(TileEntityCraneRouter.class, "tileentity_router");
put(TileEntityCraneSplitter.class, "tileentity_splitter"); put(TileEntityCraneSplitter.class, "tileentity_splitter");
put(TileEntityCranePartitioner.class, "tileentity_partitioner");
put(TileEntityFan.class, "tileentity_fan"); put(TileEntityFan.class, "tileentity_fan");
put(TileEntityPistonInserter.class, "tileentity_piston_inserter"); put(TileEntityPistonInserter.class, "tileentity_piston_inserter");

View File

@ -472,6 +472,7 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_launch_pad"; return "ntm_launch_pad";
} }
@ -526,6 +527,7 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String[] methods() { public String[] methods() {
return new String[] { return new String[] {
"getEnergyInfo", "getEnergyInfo",
@ -536,6 +538,8 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl
}; };
} }
@Override
@Optional.Method(modid = "OpenComputers")
public Object[] invoke(String method, Context context, Arguments args) throws Exception { public Object[] invoke(String method, Context context, Arguments args) throws Exception {
switch(method) { switch(method) {
case ("getEnergyInfo"): case ("getEnergyInfo"):
@ -548,8 +552,7 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl
return getTier(context, args); return getTier(context, args);
case ("launch"): case ("launch"):
return launch(context, args); return launch(context, args);
} }
throw new NoSuchMethodException(); throw new NoSuchMethodException();
} }
} }

View File

@ -649,6 +649,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_custom_launch_pad"; return "ntm_custom_launch_pad";
} }
@ -714,6 +715,8 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide
return new Object[] {false}; return new Object[] {false};
} }
@Override
@Optional.Method(modid = "OpenComputers")
public String[] methods() { public String[] methods() {
return new String[] { return new String[] {
"getEnergyInfo", "getEnergyInfo",
@ -725,6 +728,8 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide
}; };
} }
@Override
@Optional.Method(modid = "OpenComputers")
public Object[] invoke(String method, Context context, Arguments args) throws Exception { public Object[] invoke(String method, Context context, Arguments args) throws Exception {
switch(method) { switch(method) {
case ("getEnergyInfo"): case ("getEnergyInfo"):

View File

@ -318,6 +318,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_turbine"; return "ntm_turbine";
} }
@ -367,6 +368,8 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())}; return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())};
} }
@Override
@Optional.Method(modid = "OpenComputers")
public String[] methods() { public String[] methods() {
return new String[] { return new String[] {
"getFluid", "getFluid",
@ -376,6 +379,8 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc
}; };
} }
@Override
@Optional.Method(modid = "OpenComputers")
public Object[] invoke(String method, Context context, Arguments args) throws Exception { public Object[] invoke(String method, Context context, Arguments args) throws Exception {
switch(method) { switch(method) {
case ("getFluid"): case ("getFluid"):

View File

@ -275,6 +275,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "dfc_emitter"; return "dfc_emitter";
} }

View File

@ -197,6 +197,7 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "dfc_injector"; return "dfc_injector";
} }

View File

@ -190,6 +190,7 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "dfc_receiver"; return "dfc_receiver";
} }

View File

@ -172,6 +172,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "dfc_stabilizer"; return "dfc_stabilizer";
} }

View File

@ -28,6 +28,7 @@ import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.BobMathUtil;
import com.hbm.util.CrucibleUtil; import com.hbm.util.CrucibleUtil;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -59,11 +60,9 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
public int usageFluid; public int usageFluid;
public int progressFluid; public int progressFluid;
public static final int processFluidTimeBase = 20; public int processFluidTime = 100;
public int processFluidTime;
public int progressOre; public int progressOre;
public static final int processOreTimeBase = 600; public int processOreTime = 600;
public int processOreTime;
public MaterialStack leftStack; public MaterialStack leftStack;
public MaterialStack rightStack; public MaterialStack rightStack;
@ -136,30 +135,30 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3);
int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3);
processFluidTime = processFluidTimeBase - processFluidTimeBase * speedLevel / 4;
processOreTime = processOreTimeBase - processOreTimeBase * speedLevel / 4;
usageOre = usageOreBase - usageOreBase * powerLevel / 4; usageOre = usageOreBase - usageOreBase * powerLevel / 4;
usageFluid = usageFluidBase - usageFluidBase * powerLevel / 4; usageFluid = usageFluidBase - usageFluidBase * powerLevel / 4;
if(this.canProcessFluid()) { for(int i = 0; i < getCycleCount(); i++) {
this.progressFluid++; if (this.canProcessFluid()) {
this.power -= this.usageFluid; this.progressFluid++;
this.power -= this.usageFluid;
if(this.progressFluid >= this.processFluidTime) { if (this.progressFluid >= this.getDurationFluid()) {
this.processFluids(); this.processFluids();
this.progressFluid = 0; this.progressFluid = 0;
this.markChanged(); this.markChanged();
}
} }
}
if(this.canProcesMetal()) { if (this.canProcessMetal()) {
this.progressOre++; this.progressOre++;
this.power -= this.usageOre; this.power -= this.usageOre;
if(this.progressOre >= this.processOreTime) { if (this.progressOre >= this.getDurationMetal()) {
this.processMetal(); this.processMetal();
this.progressOre = 0; this.progressOre = 0;
this.markChanged(); this.markChanged();
}
} }
} }
@ -170,7 +169,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
toCast.add(this.leftStack); toCast.add(this.leftStack);
Vec3 impact = Vec3.createVectorHelper(0, 0, 0); Vec3 impact = Vec3.createVectorHelper(0, 0, 0);
MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3), impact); MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3) * Math.max (getCycleCount() * speedLevel, 1), impact);
if(didPour != null) { if(didPour != null) {
NBTTagCompound data = new NBTTagCompound(); NBTTagCompound data = new NBTTagCompound();
@ -193,7 +192,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
toCast.add(this.rightStack); toCast.add(this.rightStack);
Vec3 impact = Vec3.createVectorHelper(0, 0, 0); Vec3 impact = Vec3.createVectorHelper(0, 0, 0);
MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3), impact); MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3) * Math.max (getCycleCount() * speedLevel, 1), impact);
if(didPour != null) { if(didPour != null) {
NBTTagCompound data = new NBTTagCompound(); NBTTagCompound data = new NBTTagCompound();
@ -215,8 +214,8 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
data.setInteger("progressOre", this.progressOre); data.setInteger("progressOre", this.progressOre);
data.setInteger("usageOre", this.usageOre); data.setInteger("usageOre", this.usageOre);
data.setInteger("usageFluid", this.usageFluid); data.setInteger("usageFluid", this.usageFluid);
data.setInteger("processFluidTime", this.processFluidTime); data.setInteger("processFluidTime", this.getDurationFluid());
data.setInteger("processOreTime", this.processOreTime); data.setInteger("processOreTime", this.getDurationMetal());
if(this.leftStack != null) { if(this.leftStack != null) {
data.setInteger("leftType", leftStack.material.id); data.setInteger("leftType", leftStack.material.id);
data.setInteger("leftAmount", leftStack.amount); data.setInteger("leftAmount", leftStack.amount);
@ -312,7 +311,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
} }
} }
public boolean canProcesMetal() { public boolean canProcessMetal() {
if(slots[14] == null) return false; if(slots[14] == null) return false;
if(this.power < usageOre) return false; if(this.power < usageOre) return false;
@ -380,6 +379,25 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
this.decrStackSize(14, 1); this.decrStackSize(14, 1);
} }
public int getDurationMetal() {
ElectrolysisMetalRecipe result = ElectrolyserMetalRecipes.getRecipe(slots[14]);
int base = result != null ? result.duration : 600;
int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) - Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 1);
return (int) Math.ceil((base * Math.max(1F - 0.25F * speed, 0.2)));
}
public int getDurationFluid() {
ElectrolysisRecipe result = ElectrolyserFluidRecipes.getRecipe(tanks[0].getTankType());
int base = result != null ? result.duration : 100;
int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) - Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 1);
return (int) Math.ceil((base * Math.max(1F - 0.25F * speed, 0.2)));
}
public int getCycleCount() {
int speed = UpgradeManager.getLevel(UpgradeType.OVERDRIVE);
return Math.min(1 + speed * 2, 7);
}
@Override @Override
public void readFromNBT(NBTTagCompound nbt) { public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt); super.readFromNBT(nbt);
@ -403,8 +421,8 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
nbt.setLong("power", this.power); nbt.setLong("power", this.power);
nbt.setInteger("progressFluid", this.progressFluid); nbt.setInteger("progressFluid", this.progressFluid);
nbt.setInteger("progressOre", this.progressOre); nbt.setInteger("progressOre", this.progressOre);
nbt.setInteger("processFluidTime", this.processFluidTime); nbt.setInteger("processFluidTime", getDurationFluid());
nbt.setInteger("processOreTime", this.processOreTime); nbt.setInteger("processOreTime", getDurationMetal());
if(this.leftStack != null) { if(this.leftStack != null) {
nbt.setInteger("leftType", leftStack.material.id); nbt.setInteger("leftType", leftStack.material.id);
nbt.setInteger("leftAmount", leftStack.amount); nbt.setInteger("leftAmount", leftStack.amount);
@ -414,6 +432,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
nbt.setInteger("rightAmount", rightStack.amount); nbt.setInteger("rightAmount", rightStack.amount);
} }
for(int i = 0; i < 4; i++) tanks[i].writeToNBT(nbt, "t" + i); for(int i = 0; i < 4; i++) tanks[i].writeToNBT(nbt, "t" + i);
} }
AxisAlignedBB bb = null; AxisAlignedBB bb = null;
@ -501,7 +520,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
@Override @Override
public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) {
return type == UpgradeType.SPEED || type == UpgradeType.POWER; return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE;
} }
@Override @Override
@ -509,9 +528,14 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electrolyser)); info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electrolyser));
if(type == UpgradeType.SPEED) { if(type == UpgradeType.SPEED) {
info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%"));
info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%"));
} }
if(type == UpgradeType.POWER) { if(type == UpgradeType.POWER) {
info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%")); info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%"));
info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (25) + "%"));
}
if(type == UpgradeType.OVERDRIVE) {
info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES");
} }
} }
@ -519,6 +543,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
public int getMaxLevel(UpgradeType type) { public int getMaxLevel(UpgradeType type) {
if(type == UpgradeType.SPEED) return 3; if(type == UpgradeType.SPEED) return 3;
if(type == UpgradeType.POWER) return 3; if(type == UpgradeType.POWER) return 3;
if(type == UpgradeType.OVERDRIVE) return 3;
return 0; return 0;
} }
} }

View File

@ -70,6 +70,7 @@ public class TileEntityGeiger extends TileEntity implements SimpleComponent, IIn
return rads; return rads;
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_geiger"; return "ntm_geiger";
} }

View File

@ -295,6 +295,7 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider
//OC stuff //OC stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_icf_reactor"; return "ntm_icf_reactor";
} }
@ -345,6 +346,8 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider
}; };
} }
@Override
@Optional.Method(modid = "OpenComputers")
public String[] methods() { public String[] methods() {
return new String[] { return new String[] {
"getHeat", "getHeat",
@ -356,6 +359,8 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider
}; };
} }
@Override
@Optional.Method(modid = "OpenComputers")
public Object[] invoke(String method, Context context, Arguments args) throws Exception { public Object[] invoke(String method, Context context, Arguments args) throws Exception {
switch (method) { switch (method) {
case ("getHeat"): case ("getHeat"):

View File

@ -669,6 +669,7 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_fusion"; return "ntm_fusion";
} }
@ -724,6 +725,8 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece
return new Object[] {"N/A", "N/A"}; return new Object[] {"N/A", "N/A"};
} }
@Override
@Optional.Method(modid = "OpenComputers")
public String[] methods() { public String[] methods() {
return new String[] { return new String[] {
"getEnergyInfo", "getEnergyInfo",
@ -736,6 +739,8 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece
}; };
} }
@Override
@Optional.Method(modid = "OpenComputers")
public Object[] invoke(String method, Context context, Arguments args) throws Exception { public Object[] invoke(String method, Context context, Arguments args) throws Exception {
switch (method) { switch (method) {
case ("getEnergyInfo"): case ("getEnergyInfo"):

View File

@ -132,6 +132,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl
if(this.progress >= 1F) { if(this.progress >= 1F) {
this.process(); this.process();
this.progress = 0; this.progress = 0;
this.markDirty();
this.delay = (int) (120 / (upgrade * 0.5 + 1)); this.delay = (int) (120 / (upgrade * 0.5 + 1));
PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, 10F); PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, 10F);
} }

View File

@ -391,7 +391,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme
public int getMaxLevel(UpgradeType type) { public int getMaxLevel(UpgradeType type) {
if(type == UpgradeType.SPEED) return 3; if(type == UpgradeType.SPEED) return 3;
if(type == UpgradeType.EFFECT) return 3; if(type == UpgradeType.EFFECT) return 3;
if(type == UpgradeType.OVERDRIVE) return 2; if(type == UpgradeType.OVERDRIVE) return 3;
return 0; return 0;
} }
} }

View File

@ -325,6 +325,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_turbine"; return "ntm_turbine";
} }
@ -374,6 +375,8 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())}; return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())};
} }
@Override
@Optional.Method(modid = "OpenComputers")
public String[] methods() { public String[] methods() {
return new String[] { return new String[] {
"getFluid", "getFluid",
@ -383,6 +386,8 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
}; };
} }
@Override
@Optional.Method(modid = "OpenComputers")
public Object[] invoke(String method, Context context, Arguments args) throws Exception { public Object[] invoke(String method, Context context, Arguments args) throws Exception {
switch(method) { switch(method) {
case ("getFluid"): case ("getFluid"):

View File

@ -1,32 +1,55 @@
package com.hbm.tileentity.machine; package com.hbm.tileentity.machine;
import java.util.List;
import com.hbm.blocks.ModBlocks;
import com.hbm.inventory.UpgradeManager;
import com.hbm.inventory.container.ContainerOreSlopper; import com.hbm.inventory.container.ContainerOreSlopper;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.gui.GUIOreSlopper; import com.hbm.inventory.gui.GUIOreSlopper;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.items.special.ItemBedrockOreBase; import com.hbm.items.special.ItemBedrockOreBase;
import com.hbm.items.special.ItemBedrockOreNew; import com.hbm.items.special.ItemBedrockOreNew;
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade;
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.lib.ModDamageSource;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.I18nUtil;
import com.hbm.util.fauxpointtwelve.DirPos;
import api.hbm.energymk2.IEnergyReceiverMK2;
import api.hbm.fluid.IFluidStandardTransceiver;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import net.minecraft.block.Block;
import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineOreSlopper extends TileEntityMachineBase implements IGUIProvider { public class TileEntityMachineOreSlopper extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider {
public long power; public long power;
public static final long maxPower = 1_000_000; public static final long maxPower = 100_000;
public static final int waterUsedBase = 1_000; public static final int waterUsedBase = 1_000;
public int waterUsed = waterUsedBase; public int waterUsed = waterUsedBase;
@ -41,9 +64,13 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement
public float prevSlider; public float prevSlider;
public float bucket; public float bucket;
public float prevBucket; public float prevBucket;
public float blades;
public float prevBlades;
public float fan;
public float prevFan;
public int delay; public int delay;
public static FluidTank[] tanks; public FluidTank[] tanks;
public double[] ores = new double[BedrockOreType.values().length]; public double[] ores = new double[BedrockOreType.values().length];
public TileEntityMachineOreSlopper() { public TileEntityMachineOreSlopper() {
@ -65,6 +92,8 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement
@Override @Override
public void updateEntity() { public void updateEntity() {
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
if(!worldObj.isRemote) { if(!worldObj.isRemote) {
this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); this.power = Library.chargeTEFromItems(slots, 0, power, maxPower);
@ -73,11 +102,23 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement
FluidType conversion = this.getFluidOutput(tanks[0].getTankType()); FluidType conversion = this.getFluidOutput(tanks[0].getTankType());
if(conversion != null) tanks[1].setTankType(conversion); if(conversion != null) tanks[1].setTankType(conversion);
for(DirPos pos : getConPos()) {
this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
}
this.processing = false; this.processing = false;
UpgradeManager.eval(slots, 9, 10);
int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3);
int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3);
this.consumption = this.consumptionBase + (this.consumptionBase * speed) / 2 + (this.consumptionBase * efficiency);
if(canSlop()) { if(canSlop()) {
this.power -= this.consumption; this.power -= this.consumption;
this.progress += 1F/200F; this.progress += 1F / (200 - speed * 50);
this.processing = true; this.processing = true;
boolean markDirty = false; boolean markDirty = false;
@ -85,7 +126,7 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement
progress -= 1F; progress -= 1F;
for(BedrockOreType type : BedrockOreType.values()) { for(BedrockOreType type : BedrockOreType.values()) {
ores[type.ordinal()] += ItemBedrockOreBase.getOreAmount(slots[2], type); ores[type.ordinal()] += (ItemBedrockOreBase.getOreAmount(slots[2], type) * (1D + efficiency * 0.1));
} }
this.decrStackSize(2, 1); this.decrStackSize(2, 1);
@ -96,6 +137,22 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement
if(markDirty) this.markDirty(); if(markDirty) this.markDirty();
List<Entity> entities = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(xCoord - 0.5, yCoord + 1, zCoord - 0.5, xCoord + 1.5, yCoord + 3, zCoord + 1.5).offset(dir.offsetX, 0, dir.offsetZ));
for(Entity e : entities) {
e.attackEntityFrom(ModDamageSource.turbofan, 1000F);
if(!e.isEntityAlive() && e instanceof EntityLivingBase) {
NBTTagCompound vdat = new NBTTagCompound();
vdat.setString("type", "giblets");
vdat.setInteger("ent", e.getEntityId());
vdat.setInteger("cDiv", 5);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, e.posX, e.posY + e.height * 0.5, e.posZ), new TargetPoint(e.dimension, e.posX, e.posY + e.height * 0.5, e.posZ, 150));
worldObj.playSoundEffect(e.posX, e.posY, e.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F);
}
}
} else { } else {
this.progress = 0; this.progress = 0;
} }
@ -109,16 +166,46 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement
for(int i = 3; i <= 8; i++) if(slots[i] == null) { for(int i = 3; i <= 8; i++) if(slots[i] == null) {
slots[i] = output; ores[type.ordinal()] -= 1F; continue outer; slots[i] = output; ores[type.ordinal()] -= 1F; continue outer;
} }
break outer;
} }
} }
this.networkPackNT(150);
} else { } else {
this.prevSlider = this.slider; this.prevSlider = this.slider;
this.prevBucket = this.bucket; this.prevBucket = this.bucket;
this.prevBlades = this.blades;
this.prevFan = this.fan;
if(this.processing) { if(this.processing) {
this.blades += 15F;
this.fan += 35F;
if(blades >= 360) {
blades -= 360;
prevBlades -= 360;
}
if(fan >= 360) {
fan -= 360;
prevFan -= 360;
}
if(animation == animation.DUMPING && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 4, zCoord + 0.5) <= 50) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "vanillaExt");
data.setString("mode", "blockdust");
data.setInteger("block", Block.getIdFromBlock(Blocks.iron_block));
data.setDouble("posX", xCoord + 0.5 + dir.offsetX + worldObj.rand.nextGaussian() * 0.25);
data.setDouble("posY", yCoord + 4.25);
data.setDouble("posZ", zCoord + 0.5 + dir.offsetZ + worldObj.rand.nextGaussian() * 0.25);
data.setDouble("mY", -0.2D);
MainRegistry.proxy.effectNT(data);
}
if(delay > 0) { if(delay > 0) {
delay--; delay--;
return; return;
@ -142,7 +229,7 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement
} }
break; break;
case MOVE_SHREDDER: case MOVE_SHREDDER:
this.slider += 1/60F; this.slider += 1/50F;
if(slider >= 1F) { if(slider >= 1F) {
slider = 1F; slider = 1F;
animation = SlopperAnimation.DUMPING; animation = SlopperAnimation.DUMPING;
@ -153,7 +240,7 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement
animation = SlopperAnimation.MOVE_BUCKET; animation = SlopperAnimation.MOVE_BUCKET;
break; break;
case MOVE_BUCKET: case MOVE_BUCKET:
this.slider -= 1/60F; this.slider -= 1/50F;
if(slider <= 0F) { if(slider <= 0F) {
animation = SlopperAnimation.LOWERING; animation = SlopperAnimation.LOWERING;
delay = 10; delay = 10;
@ -164,18 +251,75 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement
} }
} }
public DirPos[] getConPos() {
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
return new DirPos[] {
new DirPos(xCoord + dir.offsetX * 4, yCoord, zCoord + dir.offsetZ * 4, dir),
new DirPos(xCoord - dir.offsetX * 4, yCoord, zCoord - dir.offsetZ * 4, dir.getOpposite()),
new DirPos(xCoord + rot.offsetX * 2, yCoord, zCoord + rot.offsetZ * 2, rot),
new DirPos(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()),
new DirPos(xCoord + dir.offsetX * 2 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 2, rot),
new DirPos(xCoord + dir.offsetX * 2 - rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2 - rot.offsetZ * 2, rot.getOpposite()),
new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 2, rot),
new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 2, rot.getOpposite())
};
}
@Override
public boolean isItemValidForSlot(int slot, ItemStack stack) {
return slot == 2 && stack.getItem() == ModItems.bedrock_ore_base;
}
@Override
public boolean canExtractItem(int i, ItemStack stack, int j) {
return i >= 3 && i <= 8;
}
private static final int[] slot_access = new int[] {2, 3, 4, 5, 6, 7, 8};
@Override
public int[] getAccessibleSlotsFromSide(int side) {
return slot_access;
}
@Override public void serialize(ByteBuf buf) { @Override public void serialize(ByteBuf buf) {
super.serialize(buf); super.serialize(buf);
buf.writeLong(power); buf.writeLong(power);
buf.writeLong(consumption);
buf.writeFloat(progress); buf.writeFloat(progress);
buf.writeBoolean(processing); buf.writeBoolean(processing);
tanks[0].serialize(buf);
tanks[1].serialize(buf);
} }
@Override public void deserialize(ByteBuf buf) { @Override public void deserialize(ByteBuf buf) {
super.deserialize(buf); super.deserialize(buf);
this.power = buf.readLong(); this.power = buf.readLong();
this.consumption = buf.readLong();
this.progress = buf.readFloat(); this.progress = buf.readFloat();
this.processing = buf.readBoolean(); this.processing = buf.readBoolean();
tanks[0].deserialize(buf);
tanks[1].deserialize(buf);
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
this.power = nbt.getLong("power");
this.progress = nbt.getFloat("progress");
tanks[0].readFromNBT(nbt, "water");
tanks[1].readFromNBT(nbt, "slop");
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setLong("power", power);
nbt.setFloat("progress", progress);
tanks[0].writeToNBT(nbt, "water");
tanks[1].writeToNBT(nbt, "slop");
} }
public boolean canSlop() { public boolean canSlop() {
@ -192,6 +336,39 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement
return null; return null;
} }
@Override public long getPower() { return power; }
@Override public void setPower(long power) { this.power = power; }
@Override public long getMaxPower() { return maxPower; }
@Override public FluidTank[] getAllTanks() { return tanks; }
@Override public FluidTank[] getSendingTanks() { return new FluidTank[] {tanks[1]}; }
@Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {tanks[0]}; }
AxisAlignedBB bb = null;
@Override
public AxisAlignedBB getRenderBoundingBox() {
if(bb == null) {
bb = AxisAlignedBB.getBoundingBox(
xCoord - 3,
yCoord,
zCoord - 3,
xCoord + 4,
yCoord + 7,
zCoord + 4
);
}
return bb;
}
@Override
@SideOnly(Side.CLIENT)
public double getMaxRenderDistanceSquared() {
return 65536.0D;
}
@Override @Override
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new ContainerOreSlopper(player.inventory, this); return new ContainerOreSlopper(player.inventory, this);
@ -202,4 +379,29 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GUIOreSlopper(player.inventory, this); return new GUIOreSlopper(player.inventory, this);
} }
@Override
public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) {
return type == UpgradeType.SPEED || type == UpgradeType.EFFECT;
}
@Override
public void provideInfo(UpgradeType type, int level, List<String> info, boolean extendedInfo) {
info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_ore_slopper));
if(type == UpgradeType.SPEED) {
info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%"));
info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 50) + "%"));
}
if(type == UpgradeType.EFFECT) {
info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "+" + (level * 10) + "%"));
info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%"));
}
}
@Override
public int getMaxLevel(UpgradeType type) {
if(type == UpgradeType.SPEED) return 3;
if(type == UpgradeType.EFFECT) return 3;
return 0;
}
} }

View File

@ -603,6 +603,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
//OC compat! //OC compat!
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_radar"; return "ntm_radar";
} }
@ -684,6 +685,8 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
return new Object[]{false, e.posX, e.posY, e.posZ, type}; return new Object[]{false, e.posX, e.posY, e.posZ, type};
} }
@Override
@Optional.Method(modid = "OpenComputers")
public String[] methods() { public String[] methods() {
return new String[] { return new String[] {
"getSettings", "getSettings",
@ -698,6 +701,8 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
}; };
} }
@Override
@Optional.Method(modid = "OpenComputers")
public Object[] invoke(String method, Context context, Arguments args) throws Exception { public Object[] invoke(String method, Context context, Arguments args) throws Exception {
switch(method) { switch(method) {
case ("getSettings"): case ("getSettings"):

View File

@ -217,6 +217,7 @@ public class TileEntityMachineReactorBreeding extends TileEntityMachineBase impl
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "breeding_reactor"; return "breeding_reactor";
} }

View File

@ -340,6 +340,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_turbine"; return "ntm_turbine";
} }

View File

@ -557,6 +557,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_gas_turbine"; return "ntm_gas_turbine";
} }
@ -641,6 +642,8 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement
tanks[3].getFill(), tanks[3].getMaxFill()}; tanks[3].getFill(), tanks[3].getMaxFill()};
} }
@Override
@Optional.Method(modid = "OpenComputers")
public String[] methods() { public String[] methods() {
return new String[] { return new String[] {
"getFluid", "getFluid",
@ -657,6 +660,8 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement
}; };
} }
@Override
@Optional.Method(modid = "OpenComputers")
public Object[] invoke(String method, Context context, Arguments args) throws Exception { public Object[] invoke(String method, Context context, Arguments args) throws Exception {
switch(method) { switch(method) {
case ("getFluid"): case ("getFluid"):

View File

@ -220,6 +220,7 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "microwave"; return "microwave";
} }

View File

@ -547,6 +547,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_pwr_control"; return "ntm_pwr_control";
} }

View File

@ -255,6 +255,7 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "reactor_control"; return "reactor_control";
} }

View File

@ -397,6 +397,7 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "research_reactor"; return "research_reactor";
} }
@ -431,6 +432,8 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements
return new Object[] {heat, level, targetLevel, totalFlux}; return new Object[] {heat, level, targetLevel, totalFlux};
} }
@Override
@Optional.Method(modid = "OpenComputers")
public String[] methods() { public String[] methods() {
return new String[] { return new String[] {
"getTemp", "getTemp",
@ -441,6 +444,8 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements
}; };
} }
@Override
@Optional.Method(modid = "OpenComputers")
public Object[] invoke(String method, Context context, Arguments args) throws Exception { public Object[] invoke(String method, Context context, Arguments args) throws Exception {
switch(method) { switch(method) {
case ("getTemp"): case ("getTemp"):

View File

@ -548,6 +548,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "zirnox_reactor"; return "zirnox_reactor";
} }
@ -601,6 +602,8 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF
return new Object[] {}; return new Object[] {};
} }
@Override
@Optional.Method(modid = "OpenComputers")
public String[] methods() { public String[] methods() {
return new String[] { return new String[] {
"getTemp", "getTemp",
@ -614,6 +617,8 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF
}; };
} }
@Override
@Optional.Method(modid = "OpenComputers")
public Object[] invoke(String method, Context context, Arguments args) throws Exception { public Object[] invoke(String method, Context context, Arguments args) throws Exception {
switch(method) { switch(method) {
case ("getTemp"): case ("getTemp"):

View File

@ -10,16 +10,21 @@ import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.packet.BufPacket;
import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.IBufPacketReceiver;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.fluid.IFluidStandardTransceiver;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.ChunkCoordinates;
public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver { public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IBufPacketReceiver {
private FluidTank water; private FluidTank water;
private FluidTank steam; private FluidTank steam;
@ -56,6 +61,8 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui
this.sendFluid(steam, worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); this.sendFluid(steam, worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y);
heat = 0; heat = 0;
networkPackNT(15);
} else { } else {
//a delayed queue of mirror positions because we can't expect the boiler to always tick first //a delayed queue of mirror positions because we can't expect the boiler to always tick first
@ -190,4 +197,20 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui
public FluidTank[] getAllTanks() { public FluidTank[] getAllTanks() {
return new FluidTank[] { water, steam }; return new FluidTank[] { water, steam };
} }
public void networkPackNT(int range) {
if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range));
}
@Override
public void serialize(ByteBuf buf) {
water.serialize(buf);
steam.serialize(buf);
}
@Override
public void deserialize(ByteBuf buf) {
water.deserialize(buf);
steam.deserialize(buf);
}
} }

View File

@ -338,6 +338,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "rbmk_crane"; return "rbmk_crane";
} }

View File

@ -33,7 +33,6 @@ import net.minecraft.inventory.Container;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.Vec3; import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -345,6 +344,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "rbmk_boiler"; return "rbmk_boiler";
} }

View File

@ -14,6 +14,7 @@ import com.hbm.inventory.gui.GUIRBMKConsole;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual.RBMKColor; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual.RBMKColor;
import com.hbm.util.Compat;
import com.hbm.util.EnumUtil; import com.hbm.util.EnumUtil;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;
@ -88,7 +89,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
for(int i = -7; i <= 7; i++) { for(int i = -7; i <= 7; i++) {
for(int j = -7; j <= 7; j++) { for(int j = -7; j <= 7; j++) {
TileEntity te = worldObj.getTileEntity(targetX + i, targetY, targetZ + j); TileEntity te = Compat.getTileStandard(worldObj, targetX + i, targetY, targetZ + j);
int index = (i + 7) + (j + 7) * 15; int index = (i + 7) + (j + 7) * 15;
if(te instanceof TileEntityRBMKBase) { if(te instanceof TileEntityRBMKBase) {
@ -266,7 +267,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
int x = data.getInteger(key) % 15 - 7; int x = data.getInteger(key) % 15 - 7;
int z = data.getInteger(key) / 15 - 7; int z = data.getInteger(key) / 15 - 7;
TileEntity te = worldObj.getTileEntity(targetX + x, targetY, targetZ + z); TileEntity te = Compat.getTileStandard(worldObj, targetX + x, targetY, targetZ + z);
if(te instanceof TileEntityRBMKControlManual) { if(te instanceof TileEntityRBMKControlManual) {
TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te;
@ -307,7 +308,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
int x = i % 15 - 7; int x = i % 15 - 7;
int z = i / 15 - 7; int z = i / 15 - 7;
TileEntity te = worldObj.getTileEntity(targetX + x, targetY, targetZ + z); TileEntity te = Compat.getTileStandard(worldObj, targetX + x, targetY, targetZ + z);
if(te instanceof TileEntityRBMKControlManual) { if(te instanceof TileEntityRBMKControlManual) {
TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te;
@ -324,7 +325,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
int x = i % 15 - 7; int x = i % 15 - 7;
int z = i / 15 - 7; int z = i / 15 - 7;
TileEntity te = worldObj.getTileEntity(targetX + x, targetY, targetZ + z); TileEntity te = Compat.getTileStandard(worldObj, targetX + x, targetY, targetZ + z);
if(te instanceof TileEntityRBMKBoiler) { if(te instanceof TileEntityRBMKBoiler) {
TileEntityRBMKBoiler rod = (TileEntityRBMKBoiler) te; TileEntityRBMKBoiler rod = (TileEntityRBMKBoiler) te;
@ -521,6 +522,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "rbmk_console"; return "rbmk_console";
} }
@ -533,7 +535,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
int i = (y + 7) * 15 + (x + 7); int i = (y + 7) * 15 + (x + 7);
TileEntity te = worldObj.getTileEntity(targetX + x, targetY, targetZ + y); TileEntity te = Compat.getTileStandard(worldObj, targetX + x, targetY, targetZ + y);
if (te instanceof TileEntityRBMKBase) { if (te instanceof TileEntityRBMKBase) {
TileEntityRBMKBase column = (TileEntityRBMKBase) te; TileEntityRBMKBase column = (TileEntityRBMKBase) te;
@ -602,7 +604,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
boolean foundRods = false; boolean foundRods = false;
for(int i = -7; i <= 7; i++) { for(int i = -7; i <= 7; i++) {
for(int j = -7; j <= 7; j++) { for(int j = -7; j <= 7; j++) {
TileEntity te = worldObj.getTileEntity(targetX + i, targetY, targetZ + j); TileEntity te = Compat.getTileStandard(worldObj, targetX + i, targetY, targetZ + j);
if (te instanceof TileEntityRBMKControlManual) { if (te instanceof TileEntityRBMKControlManual) {
TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te;
@ -628,7 +630,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
int y = -args.checkInteger(1) + 7; int y = -args.checkInteger(1) + 7;
double new_level = args.checkDouble(2); double new_level = args.checkDouble(2);
TileEntity te = worldObj.getTileEntity(targetX + x, targetY, targetZ + y); TileEntity te = Compat.getTileStandard(worldObj, targetX + x, targetY, targetZ + y);
if (te instanceof TileEntityRBMKControlManual) { if (te instanceof TileEntityRBMKControlManual) {
TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te;
@ -651,7 +653,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
if(color >= 0 && color <=4){ if(color >= 0 && color <=4){
for(int i = -7; i <= 7; i++) { for(int i = -7; i <= 7; i++) {
for(int j = -7; j <= 7; j++) { for(int j = -7; j <= 7; j++) {
TileEntity te = worldObj.getTileEntity(targetX + i, targetY, targetZ + j); TileEntity te = Compat.getTileStandard(worldObj, targetX + i, targetY, targetZ + j);
if (te instanceof TileEntityRBMKControlManual) { if (te instanceof TileEntityRBMKControlManual) {
TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te;
@ -681,7 +683,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
int y = -args.checkInteger(1) + 7; int y = -args.checkInteger(1) + 7;
int new_color = args.checkInteger(2); int new_color = args.checkInteger(2);
if(new_color >= 0 && new_color <=4){ if(new_color >= 0 && new_color <=4){
TileEntity te = worldObj.getTileEntity(targetX + x, targetY, targetZ + y); TileEntity te = Compat.getTileStandard(worldObj, targetX + x, targetY, targetZ + y);
if (te instanceof TileEntityRBMKControlManual) { if (te instanceof TileEntityRBMKControlManual) {
TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te;
@ -700,7 +702,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
boolean hasRods = false; boolean hasRods = false;
for(int i = -7; i <= 7; i++) { for(int i = -7; i <= 7; i++) {
for(int j = -7; j <= 7; j++) { for(int j = -7; j <= 7; j++) {
TileEntity te = worldObj.getTileEntity(targetX + i, targetY, targetZ + j); TileEntity te = Compat.getTileStandard(worldObj, targetX + i, targetY, targetZ + j);
if (te instanceof TileEntityRBMKControlManual) { if (te instanceof TileEntityRBMKControlManual) {
TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te;

View File

@ -11,7 +11,6 @@ import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.SimpleComponent; import li.cil.oc.api.network.SimpleComponent;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.MathHelper; import net.minecraft.util.MathHelper;
import net.minecraftforge.common.util.ForgeDirection;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent, CompatHandler.OCComponent { public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent, CompatHandler.OCComponent {
@ -125,6 +124,7 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "rbmk_control_rod"; return "rbmk_control_rod";
} }

View File

@ -17,7 +17,6 @@ import net.minecraft.entity.Entity;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource; import net.minecraft.util.DamageSource;
import net.minecraftforge.common.util.ForgeDirection;
import java.util.List; import java.util.List;
@ -147,6 +146,7 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc
//do some opencomputers stuff //do some opencomputers stuff
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "rbmk_cooler"; return "rbmk_cooler";
} }

View File

@ -29,7 +29,6 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -279,6 +278,7 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I
//opencomputers stuff //opencomputers stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "rbmk_heater"; return "rbmk_heater";
} }

View File

@ -27,7 +27,6 @@ import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IFluidStandardSender, SimpleComponent, CompatHandler.OCComponent { public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IFluidStandardSender, SimpleComponent, CompatHandler.OCComponent {
@ -224,6 +223,7 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement
//do some opencomputers stuff //do some opencomputers stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "rbmk_outgasser"; return "rbmk_outgasser";
} }

View File

@ -393,6 +393,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "rbmk_fuel_rod"; return "rbmk_fuel_rod";
} }

View File

@ -401,6 +401,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_fluid_tank"; return "ntm_fluid_tank";
} }
@ -430,11 +431,18 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String[] methods() { public String[] methods() {
return new String[] {"getFluidStored", "getMaxStored", "getTypeStored", "getInfo"}; return new String[] {
"getFluidStored",
"getMaxStored",
"getTypeStored",
"getInfo"
};
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public Object[] invoke(String method, Context context, Arguments args) throws Exception { public Object[] invoke(String method, Context context, Arguments args) throws Exception {
switch (method) { switch (method) {
case "getFluidStored": case "getFluidStored":

View File

@ -290,6 +290,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I
// do some opencomputer stuff // do some opencomputer stuff
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_energy_storage"; //ok if someone else can figure out how to do this that'd be nice (change the component name based on the type of storage block) return "ntm_energy_storage"; //ok if someone else can figure out how to do this that'd be nice (change the component name based on the type of storage block)
} }

View File

@ -488,6 +488,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String getComponentName() { public String getComponentName() {
return "ntm_fluid_tank"; return "ntm_fluid_tank";
} }
@ -517,11 +518,17 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public String[] methods() { public String[] methods() {
return new String[] {"getFluidStored", "getMaxStored", "getTypeStored", "getInfo"}; return new String[] {
"getFluidStored",
"getMaxStored",
"getTypeStored",
"getInfo"};
} }
@Override @Override
@Optional.Method(modid = "OpenComputers")
public Object[] invoke(String method, Context context, Arguments args) throws Exception { public Object[] invoke(String method, Context context, Arguments args) throws Exception {
switch (method) { switch (method) {
case "getFluidStored": case "getFluidStored":

Some files were not shown because too many files have changed in this diff Show More