Merge branch 'master' into moige

This commit is contained in:
George Paton 2025-02-03 10:44:17 +11:00
commit c49161ab39
68 changed files with 10195 additions and 10714 deletions

View File

@ -1,8 +1,25 @@
## Added
* Bauxite processing
* Bauxite is now processed by mixing it with lye, and then fractioning it into sodium aluminate and red mud
* Red mud can now be turned into cement
* Sodium aluminate can either be processed directly into aluminium in a rotary furnace, or turned into alumina with fluorite to be used in an electrolyzer
* Standard aluminium ore is now "aluminium-bearing ore" which drops cryolite, which can either be smelted into aluminium like normal or combination smelted into aluminium and lye
* Particle accelerator
* Should be about finished now
* Recipes should now be doable
* Added recipes to all the components
* Changed the dipole mechanic from a momentum penalty to a power draw penalty for smaller accelerator rings
* Added explicit compressor recipes for perfluoromethyl in order to change the standard compression speed of 100 ticks to 50
* All the parts have tooltips, you'll figure it out
## Changed
* Blast doors will now pulverize any block that gets in their way during closing
* The nuclear and RTG furnaces will be retired, their recipes have been removed but they remain operational for now
* Changed the magnetron recipe to be 3 copper plates and 4 tungsten wires
* Added recipes to some secret ammo types
## Fixed
* Fixed the CCGT's steam output breaking as soon as the steam buffer runs full
* Fixed crash caused by mobs holding belt-fed guns
* Fixed boiler heat input being way too low due to operation order (diffusion was applied AFTER the input heat was capped)
* Fixed boiler heat input being way too low due to operation order (diffusion was applied AFTER the input heat was capped)
* Fixed stinger playing its lockon sound on the wrong side

View File

@ -1,6 +1,6 @@
mod_version=1.0.27
# Empty build number makes a release type
mod_build_number=5224
mod_build_number=5229
credits=HbMinecraft,\
\ rodolphito (explosion algorithms),\
@ -38,7 +38,7 @@ credits=HbMinecraft,\
\ VT-6/24 (models, textures),\
\ Nos (models),\
\ Minecreep (models),\
\ 70k (textures, glyphid AI, strand caster, electrolyzer changes),\
\ 70k (textures, glyphid AI, strand caster, electrolyzer changes, cryolite),\
\ haru315 (spiral point algorithm),\
\ Sten89 (models),\
\ Pixelguru26 (textures),\

View File

@ -1,15 +1,20 @@
package com.hbm.blocks.machine.albion;
import java.util.List;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.machine.albion.TileEntityPABeamline;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class BlockPABeamline extends BlockDummyable {
public class BlockPABeamline extends BlockDummyable implements ITooltipProvider {
public BlockPABeamline() {
super(Material.iron);
@ -25,4 +30,9 @@ public class BlockPABeamline extends BlockDummyable {
@Override public int[] getDimensions() { return new int[] {0, 0, 0, 0, 1, 1}; }
@Override public int getOffset() { return 0; }
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
addStandardInfo(stack, player, list, ext);
}
}

View File

@ -1,6 +1,9 @@
package com.hbm.blocks.machine.albion;
import java.util.List;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.TileEntityProxyCombo;
@ -8,11 +11,12 @@ import com.hbm.tileentity.machine.albion.TileEntityPADetector;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockPADetector extends BlockDummyable {
public class BlockPADetector extends BlockDummyable implements ITooltipProvider {
public BlockPADetector() {
super(Material.iron);
@ -48,4 +52,9 @@ public class BlockPADetector extends BlockDummyable {
this.makeExtra(world, x - rot.offsetX * 4 + dir.offsetX, y, z - rot.offsetZ * 4 + dir.offsetZ);
this.makeExtra(world, x - rot.offsetX * 4 - dir.offsetX, y, z - rot.offsetZ * 4 - dir.offsetZ);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
addStandardInfo(stack, player, list, ext);
}
}

View File

@ -1,6 +1,9 @@
package com.hbm.blocks.machine.albion;
import java.util.List;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.TileEntityProxyCombo;
@ -8,11 +11,12 @@ import com.hbm.tileentity.machine.albion.TileEntityPADipole;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockPADipole extends BlockDummyable {
public class BlockPADipole extends BlockDummyable implements ITooltipProvider {
public BlockPADipole() {
super(Material.iron);
@ -49,4 +53,9 @@ public class BlockPADipole extends BlockDummyable {
this.makeExtra(world, x, y + 1, z + 1);
this.makeExtra(world, x, y + 1, z - 1);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
addStandardInfo(stack, player, list, ext);
}
}

View File

@ -1,6 +1,9 @@
package com.hbm.blocks.machine.albion;
import java.util.List;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.TileEntityProxyCombo;
@ -8,11 +11,12 @@ import com.hbm.tileentity.machine.albion.TileEntityPAQuadrupole;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockPAQuadrupole extends BlockDummyable {
public class BlockPAQuadrupole extends BlockDummyable implements ITooltipProvider {
public BlockPAQuadrupole() {
super(Material.iron);
@ -45,4 +49,9 @@ public class BlockPAQuadrupole extends BlockDummyable {
this.makeExtra(world, x, y + 1, z);
this.makeExtra(world, x, y - 1, z);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
addStandardInfo(stack, player, list, ext);
}
}

View File

@ -1,6 +1,9 @@
package com.hbm.blocks.machine.albion;
import java.util.List;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.TileEntityProxyCombo;
@ -8,11 +11,12 @@ import com.hbm.tileentity.machine.albion.TileEntityPARFC;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockPARFC extends BlockDummyable {
public class BlockPARFC extends BlockDummyable implements ITooltipProvider {
public BlockPARFC() {
super(Material.iron);
@ -48,4 +52,9 @@ public class BlockPARFC extends BlockDummyable {
this.makeExtra(world, x - dir.offsetX * 3, y - 1, z - dir.offsetZ * 3);
this.makeExtra(world, x, y - 1, z);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
addStandardInfo(stack, player, list, ext);
}
}

View File

@ -1,6 +1,9 @@
package com.hbm.blocks.machine.albion;
import java.util.List;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.TileEntityProxyCombo;
@ -8,11 +11,12 @@ import com.hbm.tileentity.machine.albion.TileEntityPASource;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockPASource extends BlockDummyable {
public class BlockPASource extends BlockDummyable implements ITooltipProvider {
public BlockPASource() {
super(Material.iron);
@ -50,4 +54,9 @@ public class BlockPASource extends BlockDummyable {
this.makeExtra(world, x - dir.offsetX + rot.offsetX * 2, y, z - dir.offsetZ + rot.offsetZ * 2);
this.makeExtra(world, x - dir.offsetX - rot.offsetX * 2, y, z - dir.offsetZ - rot.offsetZ * 2);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
addStandardInfo(stack, player, list, ext);
}
}

View File

@ -21,11 +21,11 @@ import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
public class SmeltingRecipes {
public static void AddSmeltingRec()
{
GameRegistry.addSmelting(ModItems.glyphid_meat, new ItemStack(ModItems.glyphid_meat_grilled), 1.0F);
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_thorium), new ItemStack(ModItems.ingot_th232), 3.0F);
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_uranium), new ItemStack(ModItems.ingot_uranium), 6.0F);
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_uranium_scorched), new ItemStack(ModItems.ingot_uranium), 6.0F);
@ -36,7 +36,7 @@ public class SmeltingRecipes {
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_copper), new ItemStack(ModItems.ingot_copper), 2.5F);
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_tungsten), new ItemStack(ModItems.ingot_tungsten), 6.0F);
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_nether_tungsten), new ItemStack(ModItems.ingot_tungsten), 12.0F);
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_aluminium), new ItemStack(ModItems.ingot_aluminium), 2.5F);
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_aluminium), DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.CRYOLITE, 1), 2.5F);
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_lead), new ItemStack(ModItems.ingot_lead), 3.0F);
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_beryllium), new ItemStack(ModItems.ingot_beryllium), 2.0F);
GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_schrabidium), new ItemStack(ModItems.ingot_schrabidium), 128.0F);
@ -46,7 +46,7 @@ public class SmeltingRecipes {
GameRegistry.addSmelting(DictFrame.fromOne(ModBlocks.ore_meteor, EnumMeteorType.IRON), new ItemStack(Items.iron_ingot, 16), 10.0F);
GameRegistry.addSmelting(DictFrame.fromOne(ModBlocks.ore_meteor, EnumMeteorType.COPPER), new ItemStack(ModItems.ingot_copper, 16), 10.0F);
GameRegistry.addSmelting(DictFrame.fromOne(ModBlocks.ore_meteor, EnumMeteorType.ALUMINIUM), new ItemStack(ModItems.ingot_aluminium, 16), 10.0F);
GameRegistry.addSmelting(DictFrame.fromOne(ModBlocks.ore_meteor, EnumMeteorType.ALUMINIUM), DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.CRYOLITE, 16), 10.0F);
GameRegistry.addSmelting(DictFrame.fromOne(ModBlocks.ore_meteor, EnumMeteorType.RAREEARTH), DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE, 16), 10.0F);
GameRegistry.addSmelting(DictFrame.fromOne(ModBlocks.ore_meteor, EnumMeteorType.COBALT), new ItemStack(ModItems.ingot_cobalt, 4), 10.0F);
@ -119,7 +119,7 @@ public class SmeltingRecipes {
GameRegistry.addSmelting(ModItems.rag_piss, new ItemStack(ModItems.rag), 0.1F);
GameRegistry.addSmelting(DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.TOBACCO), DictFrame.fromOne(ModItems.plant_item, EnumPlantType.TOBACCO), 0.1F);
GameRegistry.addSmelting(ModItems.ball_fireclay, new ItemStack(ModItems.ingot_firebrick), 0.1F);
//GameRegistry.addSmelting(Items.bone, new ItemStack(Items.slime_ball, 3), 0.0F);
//GameRegistry.addSmelting(new ItemStack(Items.dye, 1, 15), new ItemStack(Items.slime_ball, 1), 0.0F);
GameRegistry.addSmelting(new ItemStack(Blocks.gravel, 1), new ItemStack(Blocks.cobblestone, 1), 0.0F);
@ -133,7 +133,7 @@ public class SmeltingRecipes {
GameRegistry.addSmelting(new ItemStack(ModBlocks.sand_lead), new ItemStack(ModBlocks.glass_lead), 0.25F);
GameRegistry.addSmelting(new ItemStack(ModBlocks.ash_digamma), new ItemStack(ModBlocks.glass_ash), 10F);
GameRegistry.addSmelting(new ItemStack(ModBlocks.basalt), new ItemStack(ModBlocks.basalt_smooth), 0.1F);
GameRegistry.addSmelting(ModItems.ingot_schraranium, new ItemStack(ModItems.nugget_schrabidium, 1), 2.0F);
GameRegistry.addSmelting(ModItems.lodestone, new ItemStack(ModItems.crystal_iron, 1), 5.0F);
@ -169,14 +169,14 @@ public class SmeltingRecipes {
GameRegistry.addSmelting(ModItems.ingot_meteorite_forged, ItemHot.heatUp(new ItemStack(ModItems.ingot_meteorite_forged)), 0.0F);
GameRegistry.addSmelting(ModItems.blade_meteorite, ItemHot.heatUp(new ItemStack(ModItems.blade_meteorite)), 0.0F);
GameRegistry.addSmelting(ModItems.meteorite_sword, ItemHot.heatUp(new ItemStack(ModItems.meteorite_sword_seared)), 0.0F);
GameRegistry.addSmelting(new ItemStack(ModItems.scrap_plastic, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.ingot_polymer), 0.1F);
for(EnumBedrockOre ore : EnumBedrockOre.values()) {
int i = ore.ordinal();
GameRegistry.addSmelting(new ItemStack(ModItems.ore_bedrock, 1, i), new ItemStack(Blocks.cobblestone, 16), 0.1F);
}
for(int i = 0; i < 10; i++)
GameRegistry.addSmelting(new ItemStack(ModItems.ingot_steel_dusted, 1, i), ItemHot.heatUp(new ItemStack(ModItems.ingot_steel_dusted, 1, i)), 1.0F);
}

View File

@ -158,8 +158,6 @@ public class WeaponRecipes {
//Ammo assemblies
CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_flechette, 1), new Object[] { " L ", " L ", "LLL", 'L', PB.nugget() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_claws, 1), new Object[] { " X ", "X X", " XX", 'X', STEEL.plate() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nuke, 1), new Object[] { " WP", "SEP", " WP", 'W', GOLD.wireFine(), 'P', STEEL.plate(), 'S', STEEL.shell(), 'E', ModItems.ball_tatb });
//240mm Shells

View File

@ -0,0 +1,37 @@
package com.hbm.handler.nei;
import java.util.Locale;
import com.hbm.blocks.ModBlocks;
import com.hbm.inventory.recipes.ParticleAcceleratorRecipes;
import com.hbm.inventory.recipes.ParticleAcceleratorRecipes.ParticleAcceleratorRecipe;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
public class ParticleAcceleratorHandler extends NEIUniversalHandler {
public ParticleAcceleratorHandler() {
super(ModBlocks.pa_detector.getLocalizedName(), ModBlocks.pa_detector, ParticleAcceleratorRecipes.getRecipes());
}
@Override
public String getKey() {
return "ntmParticleAccelerator";
}
@Override
public void drawExtras(int recipe) {
RecipeSet rec = (RecipeSet) this.arecipes.get(recipe);
ParticleAcceleratorRecipe paRecipe = ParticleAcceleratorRecipes.getOutput(rec.input[0].item, rec.input[1].item);
if(paRecipe != null) {
FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer;
String momentum = "Momentum: " + String.format(Locale.US, "%,d", paRecipe.momentum);
int side = 8;
fontRenderer.drawString(momentum, side, 52, 0x404040);
}
}
}

View File

@ -48,7 +48,7 @@ import net.minecraftforge.oredict.OreDictionary.OreRegisterEvent;
//the more i optimize this, the more it starts looking like gregtech
@NotableComments
public class OreDictManager {
/** Alternate, additional names for ore dict registration. Used mostly for DictGroups */
private static final HashMap<String, HashSet<String>> reRegistration = new HashMap();
@ -70,7 +70,7 @@ public class OreDictManager {
public static final String KEY_SAPLING = "treeSapling";
public static final String KEY_SAND = "sand";
public static final String KEY_COBBLESTONE = "cobblestone";
public static final String KEY_BLACK = "dyeBlack";
public static final String KEY_RED = "dyeRed";
public static final String KEY_GREEN = "dyeGreen";
@ -155,45 +155,45 @@ public class OreDictManager {
/*
* STABLE
*/
/** TITANIUM */
/** TITANIUM */
public static final DictFrame TI = new DictFrame("Titanium");
/** COPPER */
/** COPPER */
public static final DictFrame CU = new DictFrame("Copper");
public static final DictFrame MINGRADE = new DictFrame("Mingrade");
public static final DictFrame ALLOY = new DictFrame("AdvancedAlloy");
/** TUNGSTEN */
/** TUNGSTEN */
public static final DictFrame W = new DictFrame("Tungsten");
/** ALUMINUM */
/** ALUMINUM */
public static final DictFrame AL = new DictFrame("Aluminum");
public static final DictFrame STEEL = new DictFrame("Steel");
/** TECHNETIUM STEEL */
/** TECHNETIUM STEEL */
public static final DictFrame TCALLOY = new DictFrame("TcAlloy");
/** CADMIUM STEEL */
public static final DictFrame CDALLOY = new DictFrame("CdAlloy");
/** BISMUTH BRONZE */
/** BISMUTH BRONZE */
public static final DictFrame BBRONZE = new DictFrame("BismuthBronze");
/** ARSENIC BRONZE */
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 BI = new DictFrame("Bismuth");
public static final DictFrame AS = new DictFrame("Arsenic");
public static final DictFrame CA = new DictFrame("Calcium");
public static final DictFrame CD = new DictFrame("Cadmium");
/** TANTALUM */
/** TANTALUM */
public static final DictFrame TA = new DictFrame("Tantalum");
public static final DictFrame COLTAN = new DictFrame("Coltan");
/** NIOBIUM */
/** NIOBIUM */
public static final DictFrame NB = new DictFrame("Niobium");
/** BERYLLIUM */
/** BERYLLIUM */
public static final DictFrame BE = new DictFrame("Beryllium");
/** COBALT */
/** COBALT */
public static final DictFrame CO = new DictFrame("Cobalt");
/** BORON */
/** BORON */
public static final DictFrame B = new DictFrame("Boron");
/** SILICON */
/** SILICON */
public static final DictFrame SI = new DictFrame("Silicon");
public static final DictFrame GRAPHITE = new DictFrame("Graphite");
public static final DictFrame CARBON = new DictFrame("Carbon");
@ -221,11 +221,11 @@ public class OreDictManager {
/*
* DUST AND GEM ORES
*/
/** SULFUR */
/** SULFUR */
public static final DictFrame S = new DictFrame("Sulfur");
/** SALTPETER/NITER */
/** SALTPETER/NITER */
public static final DictFrame KNO = new DictFrame("Saltpeter");
/** FLUORITE */
/** FLUORITE */
public static final DictFrame F = new DictFrame("Fluorite");
public static final DictFrame LIGNITE = new DictFrame("Lignite");
public static final DictFrame COALCOKE = new DictFrame("CoalCoke");
@ -241,10 +241,12 @@ public class OreDictManager {
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 BAUXITE = new DictFrame("Bauxite");
public static final DictFrame CRYOLITE = new DictFrame("Cryolite");
/*
* HAZARDS, MISC
*/
/** LITHIUM */
/** LITHIUM */
public static final DictFrame LI = new DictFrame("Lithium");
/** SODIUM */
public static final DictFrame NA = new DictFrame("Sodium");
@ -266,28 +268,28 @@ public class OreDictManager {
* RARE EARTHS
*/
public static final DictFrame RAREEARTH = new DictFrame("RareEarth");
/** LANTHANUM */
/** LANTHANUM */
public static final DictFrame LA = new DictFrame("Lanthanum");
/** ZIRCONIUM */
/** ZIRCONIUM */
public static final DictFrame ZR = new DictFrame("Zirconium");
/** NEODYMIUM */
/** NEODYMIUM */
public static final DictFrame ND = new DictFrame("Neodymium");
/** CERIUM */
/** CERIUM */
public static final DictFrame CE = new DictFrame("Cerium");
/*
* NITAN
*/
/** IODINE */
/** IODINE */
public static final DictFrame I = new DictFrame("Iodine");
/** ASTATINE */
/** ASTATINE */
public static final DictFrame AT = new DictFrame("Astatine");
/** CAESIUM */
/** CAESIUM */
public static final DictFrame CS = new DictFrame("Caesium");
/** STRONTIUM */
/** STRONTIUM */
public static final DictFrame ST = new DictFrame("Strontium");
/** BROMINE */
/** BROMINE */
public static final DictFrame BR = new DictFrame("Bromine");
/** TENNESSINE */
/** TENNESSINE */
public static final DictFrame TS = new DictFrame("Tennessine") ;
/*
* FISSION FRAGMENTS
@ -298,12 +300,12 @@ public class OreDictManager {
public static final DictFrame XE135 = new DictFrame("Xenon135", "Xe135");
public static final DictFrame CS137 = new DictFrame("Caesium137", "Cs137");
public static final DictFrame AT209 = new DictFrame("Astatine209", "At209");
/*
* COLLECTIONS
*/
/** Any form of elastic polymer */
public static final DictGroup ANY_RUBBER = new DictGroup("AnyRubber", LATEX, RUBBER);
public static final DictGroup ANY_RUBBER = new DictGroup("AnyRubber", LATEX, RUBBER);
/** Any post oil polymer like teflon ("polymer") or bakelite */
public static final DictGroup ANY_PLASTIC = new DictGroup("AnyPlastic", POLYMER, BAKELITE); //using the Any prefix means that it's just the secondary prefix, and that shape prefixes are applicable
/** Any post vacuum polymer like PET or PVC */
@ -327,7 +329,7 @@ public class OreDictManager {
public static final DictFrame ANY_BISMOID = new DictFrame("AnyBismoid");
public static final DictFrame ANY_ASH = new DictFrame("Ash");
public static void registerOres() {
/*
@ -341,7 +343,7 @@ public class OreDictManager {
QUARTZ.dust(powder_quartz);
DIAMOND.dust(powder_diamond).ore(gravel_diamond, ore_sellafield_diamond);
EMERALD.dust(powder_emerald).ore(ore_sellafield_emerald);
/*
* RADIOACTIVE
*/
@ -373,7 +375,7 @@ public class OreDictManager {
SRN .rad(HazardRegistry.sr) .blinding(50F) .ingot(ingot_schraranium) .block(block_schraranium);
GH336 .rad(HazardRegistry.gh336) .nugget(nugget_gh336) .billet(billet_gh336) .ingot(ingot_gh336);
MUD .rad(HazardRegistry.mud) .ingot(ingot_mud);
/*
* STABLE
*/
@ -444,8 +446,10 @@ public class OreDictManager {
HEMATITE .ore(fromOne(stone_resource, EnumStoneType.HEMATITE));
MALACHITE .ingot(DictFrame.fromOne(chunk_ore, EnumChunkType.MALACHITE)) .ore(fromOne(stone_resource, EnumStoneType.MALACHITE));
LIMESTONE .dust(powder_limestone) .ore(fromOne(stone_resource, EnumStoneType.LIMESTONE));
BAUXITE .gem(fromOne(stone_resource, EnumStoneType.BAUXITE));
CRYOLITE .crystal(fromOne(chunk_ore, EnumChunkType.CRYOLITE));
SLAG .block(block_slag);
/*
* HAZARDS, MISC
*/
@ -457,7 +461,7 @@ public class OreDictManager {
*/
P_WHITE .hot(5) .ingot(ingot_phosphorus) .block(block_white_phosphorus);
P_RED .dust(powder_fire) .block(block_red_phosphorus);
/*
* RARE METALS
*/
@ -476,7 +480,7 @@ public class OreDictManager {
ZR .nugget(nugget_zirconium) .ingot(ingot_zirconium) .billet(billet_zirconium) .dust(powder_zirconium) .block(block_zirconium) .ore(ore_depth_zirconium);
ND .nugget(fragment_neodymium) .dustSmall(powder_neodymium_tiny) .dust(powder_neodymium) .ore(ore_depth_nether_neodymium) .oreNether(ore_depth_nether_neodymium);
CE .nugget(fragment_cerium) .dustSmall(powder_cerium_tiny) .dust(powder_cerium);
/*
* NITAN
*/
@ -496,7 +500,7 @@ public class OreDictManager {
XE135 .rad(HazardRegistry.xe135) .hot(10F) .dustSmall(powder_xe135_tiny) .dust(powder_xe135);
CS137 .rad(HazardRegistry.cs137) .hot(3F) .hydro(3F) .dustSmall(powder_cs137_tiny) .dust(powder_cs137);
AT209 .rad(HazardRegistry.at209) .hot(20F) .dust(powder_at209);
/*
* COLLECTIONS
*/
@ -566,7 +570,7 @@ public class OreDictManager {
if(mat.autogen.contains(MaterialShapes.STOCK)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.STOCK.name() + name, new ItemStack(ModItems.part_stock, 1, mat.id));
if(mat.autogen.contains(MaterialShapes.GRIP)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.GRIP.name() + name, new ItemStack(ModItems.part_grip, 1, mat.id));
}
for(EnumBedrockOre ore : EnumBedrockOre.values()) {
OreDictionary.registerOre("ore" + ore.oreName, new ItemStack(ModItems.ore_enriched, 1, ore.ordinal()));
}
@ -574,17 +578,17 @@ public class OreDictManager {
OreDictionary.registerOre("itemRubber", ingot_rubber);
OreDictionary.registerOre("coalCoke", fromOne(coke, EnumCokeType.COAL));
for(String name : new String[] {"fuelCoke", "coke"}) {
OreDictionary.registerOre(name, fromOne(coke, EnumCokeType.COAL));
OreDictionary.registerOre(name, fromOne(coke, EnumCokeType.LIGNITE));
OreDictionary.registerOre(name, fromOne(coke, EnumCokeType.PETROLEUM));
}
OreDictionary.registerOre("briquetteCoal", fromOne(briquette, EnumBriquetteType.COAL));
OreDictionary.registerOre("briquetteLignite", fromOne(briquette, EnumBriquetteType.LIGNITE));
OreDictionary.registerOre("briquetteWood", fromOne(briquette, EnumBriquetteType.WOOD));
OreDictionary.registerOre(getReflector(), neutron_reflector);
OreDictionary.registerOre("logWood", pink_log);
@ -595,13 +599,13 @@ public class OreDictManager {
OreDictionary.registerOre("slabWoodPink", pink_slab);
OreDictionary.registerOre("stairWood", pink_stairs);
OreDictionary.registerOre("stairWoodPink", pink_stairs);
String[] dyes = { "Black", "Red", "Green", "Brown", "Blue", "Purple", "Cyan", "LightGray", "Gray", "Pink", "Lime", "Yellow", "LightBlue", "Magenta", "Orange", "White" };
for(int i = 0; i < 16; i++) {
String dyeName = "dye" + dyes[i];
OreDictionary.registerOre(dyeName, new ItemStack(ModItems.chemical_dye, 1, i));
OreDictionary.registerOre(dyeName, new ItemStack(ModItems.crayon, 1, i));
}
OreDictionary.registerOre("dye", new ItemStack(chemical_dye, 1, OreDictionary.WILDCARD_VALUE));
@ -651,7 +655,7 @@ public class OreDictManager {
OreDictionary.registerOre("container1000lubricant", bdcl);
OreDictionary.registerOre("itemSilicon", billet_silicon);
for(NTMMaterial mat : Mats.orderedList) {
if(mat.autogen.contains(MaterialShapes.FRAGMENT)) {
String name = mat.names[0];
@ -663,15 +667,15 @@ public class OreDictManager {
else MineralRecipes.add9To1(mat.make(ModItems.bedrock_ore_fragment), new ItemStack(ModItems.nothing));
}
}
MaterialShapes.registerCompatShapes();
compensateMojangSpaghettiBullshit();
}
public static String getReflector() {
return GeneralConfig.enableReflectorCompat ? "plateDenseLead" : "plateTungCar"; //let's just mangle the name into "tungCar" so that it can't conflict with anything ever
}
public static void registerGroups() {
ANY_RUBBER.addPrefix(INGOT, true);
ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true).addPrefix(GRIP, true).addPrefix(STOCK, true);
@ -681,24 +685,24 @@ public class OreDictManager {
ANY_BISMOIDBRONZE.addPrefix(INGOT, true).addPrefix(CASTPLATE, true).addPrefix(LIGHTBARREL, true).addPrefix(HEAVYBARREL, true).addPrefix(LIGHTRECEIVER, true).addPrefix(HEAVYRECEIVER, true);
ANY_TAR.addPrefix(ANY, false);
}
private static boolean recursionBrake = false;
@SubscribeEvent
public void onRegisterOre(OreRegisterEvent event) {
if(recursionBrake) return;
recursionBrake = true;
HashSet<String> strings = reRegistration.get(event.Name);
if(strings != null) {
for(String name : strings) {
OreDictionary.registerOre(name, event.Ore);
MainRegistry.logger.info("Re-registration for " + event.Name + " to " + name);
}
}
recursionBrake = false;
if(event.Name.startsWith("ingot") || event.Name.startsWith("ore") || event.Name.startsWith("plate") || event.Name.startsWith("block")) {
@ -707,7 +711,7 @@ public class OreDictManager {
}
public static final HashSet<ComparableStack> arcSmeltable = new HashSet();
/** Vanilla item ore dict registration events never actually register in the ODM because vanilla items are registered so early that the ODM event handler doesn't exist yet. */
public static void compensateMojangSpaghettiBullshit() {
@ -730,12 +734,12 @@ public class OreDictManager {
arcSmeltable.add(new ComparableStack(Items.brick));
arcSmeltable.add(new ComparableStack(Items.netherbrick));
}
public static class DictFrame {
public String[] mats;
float hazMult = 1.0F;
List<HazardEntry> hazards = new ArrayList();
public DictFrame(String... mats) {
this.mats = mats;
}
@ -772,14 +776,14 @@ public class OreDictManager {
public String stock() { return STOCK.name() + mats[0]; }
public String grip() { return GRIP.name() + mats[0]; }
public String[] all(MaterialShapes shape) { return appendToAll(shape.prefixes); }
/** Returns cast (triple) plates if 528 mode is enabled or normal plates if not */
public String plate528() { return GeneralConfig.enable528 ? plateCast() : plate(); }
private String[] appendToAll(String... prefix) {
String[] names = new String[mats.length * prefix.length];
for(int i = 0; i < mats.length; i++) {
for(int j = 0; j < prefix.length; j++) {
names[i * prefix.length + j] = prefix[j] + mats[i];
@ -793,12 +797,12 @@ public class OreDictManager {
public DictFrame blinding(float time) { return this.haz(new HazardEntry(HazardRegistry.BLINDING, time)); }
public DictFrame asbestos(float asb) { return this.haz(new HazardEntry(HazardRegistry.ASBESTOS, asb)); }
public DictFrame hydro(float h) { return this.haz(new HazardEntry(HazardRegistry.HYDROACTIVE, h)); }
public DictFrame haz(HazardEntry hazard) {
hazards.add(hazard);
return this;
}
/** Returns an ItemStack composed of the supplied item with the meta being the enum's ordinal. Purely syntactic candy */
public static ItemStack fromOne(Item item, Enum en) {
return new ItemStack(item, 1, en.ordinal());
@ -816,7 +820,7 @@ public class OreDictManager {
public static Object[] fromAll(Item item, Class<? extends Enum> en) {
Enum[] vals = en.getEnumConstants();
Object[] stacks = new Object[vals.length];
for(int i = 0; i < vals.length; i++) {
stacks[i] = new ItemStack(item, 1, vals[i].ordinal());
}
@ -825,13 +829,13 @@ public class OreDictManager {
public static Object[] fromAll(Block block, Class<? extends Enum> en) {
Enum[] vals = en.getEnumConstants();
Object[] stacks = new Object[vals.length];
for(int i = 0; i < vals.length; i++) {
stacks[i] = new ItemStack(block, 1, vals[i].ordinal());
}
return stacks;
}
public DictFrame any(Object... thing) {
return makeObject(ANY, thing);
}
@ -871,7 +875,7 @@ public class OreDictManager {
hazMult = HazardRegistry.billet;
return makeObject(BILLET, billet);
}
public DictFrame block(Object... block) {
hazMult = HazardRegistry.block;
return makeObject(BLOCK, block);
@ -886,17 +890,17 @@ public class OreDictManager {
}
public DictFrame makeObject(MaterialShapes shape, Object... objects) {
String tag = shape.name();
for(Object o : objects) {
if(o instanceof Item) registerStack(tag, new ItemStack((Item) o));
if(o instanceof Block) registerStack(tag, new ItemStack((Block) o));
if(o instanceof ItemStack) registerStack(tag, (ItemStack) o);
}
return this;
}
public DictFrame makeItem(String tag, Item... items) {
for(Item i : items) registerStack(tag, new ItemStack(i));
return this;
@ -909,26 +913,26 @@ public class OreDictManager {
for(Block b : blocks) registerStack(tag, new ItemStack(b));
return this;
}
public static void registerHazards(List<HazardEntry> hazards, float hazMult, String dictKey) {
if(!hazards.isEmpty() && hazMult > 0F) {
HazardData data = new HazardData().setMutex(0b1);
for(HazardEntry hazard : hazards) {
data.addEntry(hazard.clone(hazMult));
}
HazardSystem.register(dictKey, data);
}
}
public void registerStack(String tag, ItemStack stack) {
for(String mat : mats) {
OreDictionary.registerOre(tag + mat, stack);
registerHazards(hazards, hazMult, tag + mat);
}
/*
* Fix for a small oddity in nuclearcraft: many radioactive elements do not have an ore prefix and the sizes
* seem generally inconsistent (TH and U are 20 "tiny"s per ingot while boron is 12), so we assume those to be ingots.
@ -940,12 +944,12 @@ public class OreDictManager {
}
}
}
public static class DictGroup {
private String groupName;
private HashSet<String> names = new HashSet();
public DictGroup(String groupName) {
this.groupName = groupName;
}
@ -957,7 +961,7 @@ public class OreDictManager {
this(groupName);
this.addFrames(frames);
}
public DictGroup addNames(String... names) {
for(String mat : names) this.names.add(mat);
return this;
@ -966,22 +970,22 @@ public class OreDictManager {
for(DictFrame frame : frames) this.addNames(frame.mats);
return this;
}
/**
* Will add a reregistration entry for every mat name of every added DictFrame for the given prefix
* @param prefix The prefix of both the input and result of the reregistration
* @return
*/
public DictGroup addPrefix(MaterialShapes shape, boolean inputPrefix) {
String prefix = shape.name();
String group = prefix + groupName;
for(String name : names) {
String original = (inputPrefix ? prefix : "") + name;
addReRegistration(original, group);
}
return this;
}
/**
@ -991,12 +995,12 @@ public class OreDictManager {
* @return
*/
public DictGroup addFixed(String prefix, String original) {
String group = prefix + groupName;
addReRegistration(original, group);
return this;
}
public String any() { return ANY.name() + groupName; }
public String nugget() { return NUGGET.name() + groupName; }
public String tiny() { return TINY.name() + groupName; }
@ -1023,16 +1027,16 @@ public class OreDictManager {
public String stock() { return STOCK.name() + groupName; }
public String grip() { return GRIP.name() + groupName; }
}
private static void addReRegistration(String original, String additional) {
HashSet<String> strings = reRegistration.get(original);
if(strings == null)
strings = new HashSet();
strings.add(additional);
reRegistration.put(original, strings);
}
}

View File

@ -183,6 +183,10 @@ public class Fluids {
public static FluidType STELLAR_FLUX;
public static FluidType VITRIOL;
public static FluidType SLOP;
public static FluidType LYE;
public static FluidType SODIUM_ALUMINATE;
public static FluidType BAUXITE_SOLUTION;
public static FluidType ALUMINA;
/* Lagacy names for compatibility purposes */
@Deprecated public static FluidType ACID; //JAOPCA uses this, apparently
@ -390,7 +394,11 @@ public class Fluids {
LEAD_HOT = new FluidType("LEAD_HOT", 0x776563, 4, 0, 0, EnumSymbol.NONE).setTemp(1500).addTraits(LIQUID, VISCOUS);
PERFLUOROMETHYL = new FluidType("PERFLUOROMETHYL", 0xBDC8DC, 1, 0, 1, EnumSymbol.NONE).setTemp(15).addTraits(LIQUID);
PERFLUOROMETHYL_COLD = new FluidType("PERFLUOROMETHYL_COLD",0x99DADE, 1, 0, 1, EnumSymbol.NONE).setTemp(-150).addTraits(LIQUID);
PERFLUOROMETHYL_HOT = new FluidType(146, "PERFLUOROMETHYL_HOT",0xB899DE, 1, 0, 1, EnumSymbol.NONE).setTemp(250).addTraits(LIQUID);
PERFLUOROMETHYL_HOT = new FluidType("PERFLUOROMETHYL_HOT",0xB899DE, 1, 0, 1, EnumSymbol.NONE).setTemp(250).addTraits(LIQUID);
LYE = new FluidType("LYE", 0xFFECCC, 3, 0, 1, EnumSymbol.ACID).addTraits(new FT_Corrosive(40), LIQUID);
SODIUM_ALUMINATE = new FluidType("SODIUM_ALUMINATE", 0xFFD191, 3, 0, 1, EnumSymbol.ACID).addTraits(new FT_Corrosive(30), LIQUID);
BAUXITE_SOLUTION = new FluidType("BAUXITE_SOLUTION", 0xE2560F, 3, 0, 3, EnumSymbol.ACID).addTraits(new FT_Corrosive(40), LIQUID, VISCOUS);
ALUMINA = new FluidType(150,"ALUMINA", 0xDDFFFF, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID);
// ^ ^ ^ ^ ^ ^ ^ ^
//ADD NEW FLUIDS HERE
@ -534,8 +542,12 @@ public class Fluids {
metaOrder.add(POTASSIUM_CHLORIDE);
metaOrder.add(CALCIUM_CHLORIDE);
metaOrder.add(CALCIUM_SOLUTION);
metaOrder.add(SODIUM_ALUMINATE);
metaOrder.add(BAUXITE_SOLUTION);
metaOrder.add(ALUMINA);
//solutions and working fluids
metaOrder.add(FRACKSOL);
metaOrder.add(LYE);
//the fun guys
metaOrder.add(PHOSGENE);
metaOrder.add(MUSTARDGAS);

View File

@ -38,7 +38,7 @@ public class GUIPADetector extends GuiInfoContainer {
protected void drawGuiContainerForegroundLayer( int i, int j) {
String name = this.source.hasCustomInventoryName() ? this.source.getInventoryName() : I18n.format(this.source.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 6, 4210752);
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 4, 4210752);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 136, 22, 4210752);

View File

@ -1,5 +1,7 @@
package com.hbm.inventory.gui;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import org.lwjgl.opengl.GL11;
@ -9,6 +11,7 @@ import com.hbm.lib.RefStrings;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toserver.NBTControlPacket;
import com.hbm.tileentity.machine.albion.TileEntityPASource;
import com.hbm.util.I18nUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.PositionedSoundRecord;
@ -39,7 +42,11 @@ public class GUIPASource extends GuiInfoContainer {
source.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 36, 16, 52);
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 52, source.power, source.getMaxPower());
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 18, 10, 10, mouseX, mouseY, "Last momentum: " + source.lastSpeed);
List<String> info = new ArrayList();
info.add(EnumChatFormatting.BLUE + "Last momentum: " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", source.lastSpeed));
String[] message = I18nUtil.resolveKeyArray("pa." + this.source.state.name().toLowerCase(Locale.US) + ".desc");
for(String s : message) info.add(EnumChatFormatting.YELLOW + s);
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 18, 10, 10, mouseX, mouseY, info);
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 30, 10, 10, mouseX, mouseY, EnumChatFormatting.RED + "Cancel operation");
}
@ -59,7 +66,7 @@ public class GUIPASource extends GuiInfoContainer {
protected void drawGuiContainerForegroundLayer( int i, int j) {
String name = this.source.hasCustomInventoryName() ? this.source.getInventoryName() : I18n.format(this.source.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 6, 4210752);
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 4, 4210752);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 136, 22, 4210752);

View File

@ -21,6 +21,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.RecipesCommon.OreDictStack;
import com.hbm.inventory.material.Mats.MaterialStack;
import com.hbm.inventory.recipes.loader.SerializableRecipe;
import com.hbm.items.ItemEnums;
import com.hbm.items.ModItems;
import com.hbm.items.ItemEnums.EnumAshType;
import com.hbm.items.ItemEnums.EnumCasingType;
@ -44,7 +45,7 @@ public class MatDistribution extends SerializableRecipe {
registerEntry(Blocks.golden_rail, MAT_GOLD, INGOT.q(6, 6), MAT_REDSTONE, DUST.q(1, 6));
registerEntry(Blocks.detector_rail, MAT_IRON, INGOT.q(6, 6), MAT_REDSTONE, DUST.q(1, 6));
registerEntry(Items.minecart, MAT_IRON, INGOT.q(5));
//castables
registerEntry(ModItems.blade_titanium, MAT_TITANIUM, INGOT.q(2));
registerEntry(ModItems.blade_tungsten, MAT_TUNGSTEN, INGOT.q(2));
@ -62,15 +63,15 @@ public class MatDistribution extends SerializableRecipe {
registerEntry(DictFrame.fromOne(ModItems.casing, EnumCasingType.SMALL_STEEL), MAT_WEAPONSTEEL, PLATE.q(1, 4));
registerEntry(DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE), MAT_GUNMETAL, PLATE.q(1, 2));
registerEntry(DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE_STEEL), MAT_WEAPONSTEEL, PLATE.q(1, 2));
registerEntry(Items.minecart, MAT_IRON, INGOT.q(5));
registerEntry(DictFrame.fromOne(ModItems.chunk_ore, ItemEnums.EnumChunkType.CRYOLITE), MAT_ALUMINIUM, INGOT.q(1), MAT_SODIUM, INGOT.q(1));
//actual ores
if(!Compat.isModLoaded(Compat.MOD_GT6)) {
registerOre(OreDictManager.IRON.ore(), MAT_IRON, INGOT.q(2), MAT_TITANIUM, NUGGET.q(3), MAT_STONE, QUART.q(1));
registerOre(OreDictManager.TI.ore(), MAT_TITANIUM, INGOT.q(2), MAT_IRON, NUGGET.q(3), MAT_STONE, QUART.q(1));
registerOre(OreDictManager.W.ore(), MAT_TUNGSTEN, INGOT.q(2), MAT_STONE, QUART.q(1));
registerOre(OreDictManager.AL.ore(), MAT_ALUMINIUM, INGOT.q(2), MAT_STONE, QUART.q(1));
}
registerOre(OreDictManager.COAL.ore(), MAT_CARBON, GEM.q(3), MAT_STONE, QUART.q(1));
registerOre(OreDictManager.GOLD.ore(), MAT_GOLD, INGOT.q(2), MAT_LEAD, NUGGET.q(3), MAT_STONE, QUART.q(1));
registerOre(OreDictManager.U.ore(), MAT_URANIUM, INGOT.q(2), MAT_LEAD, NUGGET.q(3), MAT_STONE, QUART.q(1));
@ -83,7 +84,7 @@ public class MatDistribution extends SerializableRecipe {
registerOre(OreDictManager.HEMATITE.ore(), MAT_HEMATITE, INGOT.q(1));
registerOre(OreDictManager.MALACHITE.ore(), MAT_MALACHITE, INGOT.q(6));
registerEntry(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.LIMESTONE), MAT_FLUX, DUST.q(10));
registerEntry(ModItems.powder_flux, MAT_FLUX, DUST.q(1));
registerEntry(new ItemStack(Items.coal, 1, 1), MAT_CARBON, NUGGET.q(3));
@ -92,7 +93,7 @@ public class MatDistribution extends SerializableRecipe {
registerEntry(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.COAL), MAT_CARBON, NUGGET.q(2));
registerEntry(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.MISC), MAT_CARBON, NUGGET.q(1));
}
public static void registerEntry(Object key, Object... matDef) {
ComparableStack comp = null;
@ -100,32 +101,32 @@ public class MatDistribution extends SerializableRecipe {
if(key instanceof Block) comp = new ComparableStack((Block) key);
if(key instanceof ItemStack) comp = new ComparableStack((ItemStack) key);
if(key instanceof ComparableStack) comp = (ComparableStack) key;
if(comp == null) return;
if(matDef.length % 2 == 1) return;
List<MaterialStack> stacks = new ArrayList();
for(int i = 0; i < matDef.length; i += 2) {
stacks.add(new MaterialStack((NTMMaterial) matDef[i], (int) matDef[i + 1]));
}
if(stacks.isEmpty()) return;
materialEntries.put(comp, stacks);
}
public static void registerOre(String key, Object... matDef) {
if(matDef.length % 2 == 1) return;
List<MaterialStack> stacks = new ArrayList();
for(int i = 0; i < matDef.length; i += 2) {
stacks.add(new MaterialStack((NTMMaterial) matDef[i], (int) matDef[i + 1]));
}
if(stacks.isEmpty()) return;
materialOreEntries.put(key, stacks);
}
@ -190,7 +191,7 @@ public class MatDistribution extends SerializableRecipe {
Mats.materialEntries.clear();
Mats.materialOreEntries.clear();
}
@Override
public String getComment() {
return "Defines a set of items that can be smelted. Smelting generated from the ore dictionary (prefix + material) is auto-generated and cannot be "

View File

@ -33,19 +33,19 @@ public class Mats {
public static HashMap<String, NTMMaterial> matByName = new HashMap();
public static HashMap<ComparableStack, List<MaterialStack>> materialEntries = new HashMap();
public static HashMap<String, List<MaterialStack>> materialOreEntries = new HashMap();
/*
* ItemStacks are saved with their metadata being truncated to a short, so the max meta is 32767
* Format for elements: Atomic number *100, plus the last two digits of the mass number. Mass number is 0 for generic/undefined/mixed materials.
* Vanilla numbers are in vanilla space (0-29), basic alloys use alloy space (30-99)
*/
/* Vanilla Space, up to 30 materials, */
public static final int _VS = 0;
/* Alloy Space, up to 70 materials. Use >20_000 as an extension.*/
public static final int _AS = 30;
public static final int _ES = 20_000;
//Vanilla and vanilla-like
public static final NTMMaterial MAT_WOOD = makeNonSmeltable(_VS + 03, WOOD, 0x896727, 0x281E0B, 0x896727).setAutogen(STOCK, GRIP).n();
public static final NTMMaterial MAT_IVORY = makeNonSmeltable(_VS + 04, BONE, 0xFFFEEE, 0x797870, 0xEDEBCA).setAutogen(GRIP).n();
@ -67,6 +67,8 @@ public class Mats {
public static final NTMMaterial MAT_PIGIRON = makeSmeltable(2603, df("PigIron"), 0xFF8B59).m();
public static final NTMMaterial MAT_METEORICIRON = makeSmeltable(2604, df("MeteoricIron"), 0x715347).m();
public static final NTMMaterial MAT_MALACHITE = makeAdditive( 2901, MALACHITE, 0xA2F0C8, 0x227048, 0x61AF87).m();
public static final NTMMaterial MAT_BAUXITE = makeNonSmeltable(2902, BAUXITE, 0xF4BA30, 0xAA320A, 0xE2560F).setAutogen(FRAGMENT).n();
public static final NTMMaterial MAT_CRYOLITE = makeNonSmeltable(2903, CRYOLITE, 0xCBC2A4, 0x8B711F, 0x8B701A).setAutogen(FRAGMENT).n();
//Radioactive
public static final NTMMaterial MAT_URANIUM = makeSmeltable(9200, U, 0xC1C7BD, 0x2B3227, 0x9AA196).setAutogen(FRAGMENT, NUGGET, BILLET, DUST, BLOCK).m();
@ -99,7 +101,7 @@ public class Mats {
//Base metals
public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setAutogen(FRAGMENT, DUST, PLATE, DENSEWIRE, CASTPLATE, WELDEDPLATE, SHELL, BLOCK, HEAVY_COMPONENT).m();
public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setAutogen(FRAGMENT, WIRE, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m();
public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setAutogen(FRAGMENT, WIRE, DUST, PLATE, DENSEWIRE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m();
public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setAutogen(FRAGMENT, WIRE, BOLT, DUST, DENSEWIRE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT).m();
public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setAutogen(FRAGMENT, WIRE, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m();
public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setAutogen(FRAGMENT, NUGGET, WIRE, BOLT, DUST, PLATE, CASTPLATE, PIPE, BLOCK, HEAVY_COMPONENT).m();
@ -131,7 +133,7 @@ public class Mats {
public static final NTMMaterial MAT_SILICON = makeSmeltable(1400, SI, 0xD1D7DF, 0x1A1A3D, 0x878B9E).setAutogen(FRAGMENT, NUGGET, BILLET).m();
public static final NTMMaterial MAT_ASBESTOS = makeSmeltable(1401, ASBESTOS, 0xD8D9CF, 0x616258, 0xB0B3A8).setAutogen(FRAGMENT, BLOCK).n();
public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setAutogen(NUGGET, CASTPLATE, WELDEDPLATE).m();
//Alloys
public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setAutogen(DUSTTINY, BOLT, WIRE, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, GRIP).m();
public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setAutogen(WIRE, DUST, BLOCK).m();
@ -154,7 +156,7 @@ public class Mats {
public static final NTMMaterial MAT_GUNMETAL = makeSmeltable(_AS + 19, GUNMETAL, 0xFFEF3F, 0xAD3600, 0xF9C62C).setAutogen(LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n();
public static final NTMMaterial MAT_WEAPONSTEEL = makeSmeltable(_AS + 20, WEAPONSTEEL, 0xA0A0A0, 0x000000, 0x808080).setAutogen(SHELL, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n();
public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x3AC4DA, 0x09282C, 0x30A4B7).setAutogen(PLATE, CASTPLATE, SHELL, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).m();
//Extension
public static final NTMMaterial MAT_RAREEARTH = makeNonSmeltable(_ES + 00, RAREEARTH, 0xC1BDBD, 0x384646, 0x7B7F7F).setAutogen(FRAGMENT).n();
public static final NTMMaterial MAT_POLYMER = makeNonSmeltable(_ES + 01, POLYMER, 0x363636, 0x040404, 0x272727).setAutogen(STOCK, GRIP).n();
@ -162,52 +164,52 @@ public class Mats {
public static final NTMMaterial MAT_RUBBER = makeNonSmeltable(_ES + 03, RUBBER, 0x817F75, 0x0F0D03, 0x4B4A3F).setAutogen(PIPE, GRIP).n();
public static final NTMMaterial MAT_HARDPLASTIC = makeNonSmeltable(_ES + 04, PC, 0xEDE7C4, 0x908A67, 0xE1DBB8).setAutogen(STOCK, GRIP).n();
public static final NTMMaterial MAT_PVC = makeNonSmeltable(_ES + 05, PVC, 0xFCFCFC, 0x9F9F9F, 0xF0F0F0).setAutogen(STOCK, GRIP).n();
public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { return makeSmeltable(id, dict, color, color, color); }
public static NTMMaterial make(int id, DictFrame dict) {
return new NTMMaterial(id, dict);
}
public static NTMMaterial makeSmeltable(int id, DictFrame dict, int solidColorLight, int solidColorDark, int moltenColor) {
return new NTMMaterial(id, dict).smeltable(SmeltingBehavior.SMELTABLE).setSolidColor(solidColorLight, solidColorDark).setMoltenColor(moltenColor);
}
public static NTMMaterial makeAdditive(int id, DictFrame dict, int solidColorLight, int solidColorDark, int moltenColor) {
return new NTMMaterial(id, dict).smeltable(SmeltingBehavior.ADDITIVE).setSolidColor(solidColorLight, solidColorDark).setMoltenColor(moltenColor);
}
public static NTMMaterial makeNonSmeltable(int id, DictFrame dict, int solidColorLight, int solidColorDark, int moltenColor) {
return new NTMMaterial(id, dict).smeltable(SmeltingBehavior.NOT_SMELTABLE).setSolidColor(solidColorLight, solidColorDark).setMoltenColor(moltenColor);
}
public static DictFrame df(String string) {
return new DictFrame(string);
}
/** will not respect stacksizes - all stacks will be treated as a singular */
public static List<MaterialStack> getMaterialsFromItem(ItemStack stack) {
List<MaterialStack> list = new ArrayList();
List<String> names = ItemStackUtil.getOreDictNames(stack);
if(!names.isEmpty()) {
outer:
for(String name : names) {
List<MaterialStack> oreEntries = materialOreEntries.get(name);
if(oreEntries != null) {
list.addAll(oreEntries);
break outer;
}
for(Entry<String, MaterialShapes> prefixEntry : prefixByName.entrySet()) {
String prefix = prefixEntry.getKey();
if(name.startsWith(prefix)) {
String materialName = name.substring(prefix.length());
NTMMaterial material = matByName.get(materialName);
if(material != null && (material.smeltsInto.smeltable == SmeltingBehavior.SMELTABLE || material.smeltsInto.smeltable == SmeltingBehavior.ADDITIVE)) {
list.add(new MaterialStack(material, prefixEntry.getValue().q(1)));
break outer;
@ -216,17 +218,17 @@ public class Mats {
}
}
}
List<MaterialStack> entries = materialEntries.get(new ComparableStack(stack).makeSingular());
if(entries != null) {
entries.forEach(x -> { if(x != null) list.add(x); });
}
if(stack.getItem() == ModItems.scraps) {
list.add(ItemScraps.getMats(stack));
}
return list;
}
@ -236,28 +238,28 @@ public class Mats {
baseMats.forEach(x -> smelting.add(new MaterialStack(x.material.smeltsInto, (int) (x.amount * x.material.convOut / x.material.convIn))));
return smelting;
}
public static class MaterialStack {
//final fields to prevent accidental changing
public final NTMMaterial material;
public int amount;
public MaterialStack(NTMMaterial material, int amount) {
this.material = material;
this.amount = amount;
}
public MaterialStack copy() {
return new MaterialStack(material, amount);
}
}
public static String formatAmount(int amount, boolean showInMb) {
if(showInMb) return (amount * 2) + "mB";
String format = "";
int blocks = amount / BLOCK.q(1);
amount -= BLOCK.q(blocks);
int ingots = amount / INGOT.q(1);
@ -265,12 +267,12 @@ public class Mats {
int nuggets = amount / NUGGET.q(1);
amount -= NUGGET.q(nuggets);
int quanta = amount;
if(blocks > 0) format += (blocks == 1 ? I18nUtil.resolveKey("matshape.block", blocks) : I18nUtil.resolveKey("matshape.blocks", blocks)) + " ";
if(ingots > 0) format += (ingots == 1 ? I18nUtil.resolveKey("matshape.ingot", ingots) : I18nUtil.resolveKey("matshape.ingots", ingots)) + " ";
if(nuggets > 0) format += (nuggets == 1 ? I18nUtil.resolveKey("matshape.nugget", nuggets) : I18nUtil.resolveKey("matshape.nuggets", nuggets)) + " ";
if(quanta > 0) format += (quanta == 1 ? I18nUtil.resolveKey("matshape.quantum", quanta) : I18nUtil.resolveKey("matshape.quanta", quanta)) + " ";
return format.trim();
}
}

View File

@ -32,6 +32,7 @@ import com.hbm.items.ItemGenericPart.EnumPartType;
import com.hbm.items.machine.ItemAssemblyTemplate;
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
import com.hbm.items.machine.ItemDrillbit.EnumDrillType;
import com.hbm.items.machine.ItemPACoil.EnumCoilType;
import com.hbm.items.machine.ItemPistons.EnumPistonType;
import com.hbm.items.weapon.ItemAmmoHIMARS;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
@ -107,7 +108,7 @@ public class AssemblerRecipes extends SerializableRecipe {
makeRecipe(new ComparableStack(ModItems.tritium_deuterium_cake, 1), new AStack[] {new ComparableStack(ModItems.cell_deuterium, 6), new ComparableStack(ModItems.cell_tritium, 2), new OreDictStack(LI.ingot(), 4), },150);
makeRecipe(new ComparableStack(ModItems.pellet_cluster, 1), new AStack[] {new OreDictStack(STEEL.plate(), 4), new ComparableStack(Blocks.tnt, 1), }, 50);
makeRecipe(new ComparableStack(ModItems.pellet_buckshot, 1), new AStack[] {new OreDictStack(PB.nugget(), 6), }, 50);
makeRecipe(new ComparableStack(ModItems.magnetron, 1), new AStack[] {new OreDictStack(ALLOY.plate(), 3), new OreDictStack(W.wireFine(), 1), new ComparableStack(ModItems.coil_tungsten, 1), },100);
makeRecipe(new ComparableStack(ModItems.magnetron, 1), new AStack[] {new OreDictStack(CU.plate(), 3), new OreDictStack(W.wireFine(), 4), }, 40);
makeRecipe(new ComparableStack(ModItems.redcoil_capacitor, 1), new AStack[] {new OreDictStack(GOLD.plate(), 3), new ComparableStack(ModItems.fuse, 1), new OreDictStack(ALLOY.wireFine(), 4), new ComparableStack(ModItems.coil_advanced_alloy, 6), new ComparableStack(Blocks.redstone_block, 2), },200);
makeRecipe(new ComparableStack(ModItems.part_lithium, 8), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(LI.dust(), 1), },50);
makeRecipe(new ComparableStack(ModItems.part_beryllium, 8), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(BE.dust(), 1), },50);
@ -548,14 +549,6 @@ public class AssemblerRecipes extends SerializableRecipe {
new OreDictStack(STEEL.pipe(), 24),
new OreDictStack(Fluids.LUBRICANT.getDict(1_000), 4)
}, 600);
makeRecipe(new ComparableStack(ModItems.pellet_chlorophyte, 2), new AStack[] {
new ComparableStack(ModItems.powder_chlorophyte, 1),
new OreDictStack(PB.nugget(), 12),
}, 50);
makeRecipe(new ComparableStack(ModItems.pellet_canister, 2), new AStack[] {
new OreDictStack(IRON.ingot(), 3),
}, 50);
makeRecipe(new ComparableStack(ModBlocks.machine_cyclotron, 1), new AStack[] {
new ComparableStack(ModBlocks.machine_lithium_battery, 3),
@ -946,6 +939,50 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.circuit, 8, EnumCircuitType.BASIC)
}, 200);
makeRecipe(new ComparableStack(ModItems.pa_coil, 1, EnumCoilType.GOLD), new AStack[] { new OreDictStack(GOLD.wireDense(), 128) }, 400);
makeRecipe(new ComparableStack(ModItems.pa_coil, 1, EnumCoilType.NIOBIUM), new AStack[] { new OreDictStack(NB.wireDense(), 64), new OreDictStack(TI.wireDense(), 64) }, 400);
makeRecipe(new ComparableStack(ModItems.pa_coil, 1, EnumCoilType.BSCCO), new AStack[] { new OreDictStack(BSCCO.wireDense(), 64), new OreDictStack(ANY_PLASTIC.ingot(), 64) }, 400);
makeRecipe(new ComparableStack(ModItems.pa_coil, 1, EnumCoilType.CHLOROPHYTE), new AStack[] { new OreDictStack(CU.wireDense(), 128), new ComparableStack(ModItems.powder_chlorophyte, 16) }, 400);
makeRecipe(new ComparableStack(ModBlocks.pa_beamline), new AStack[] {
new OreDictStack(STEEL.plateCast(), 8),
new OreDictStack(CU.plate(), 16),
new OreDictStack(GOLD.wireDense(), 4)
}, 200);
makeRecipe(new ComparableStack(ModBlocks.pa_rfc), new AStack[] {
new ComparableStack(ModBlocks.pa_beamline, 3),
new OreDictStack(STEEL.plateCast(), 16),
new OreDictStack(CU.plate(), 64),
new OreDictStack(ANY_HARDPLASTIC.ingot(), 16),
new ComparableStack(ModItems.magnetron, 16),
}, 400);
makeRecipe(new ComparableStack(ModBlocks.pa_quadrupole), new AStack[] {
new ComparableStack(ModBlocks.pa_beamline, 1),
new OreDictStack(STEEL.plateCast(), 16),
new OreDictStack(ANY_HARDPLASTIC.ingot(), 16),
new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID),
}, 400);
makeRecipe(new ComparableStack(ModBlocks.pa_dipole), new AStack[] {
new ComparableStack(ModBlocks.pa_beamline, 2),
new OreDictStack(STEEL.plateCast(), 16),
new OreDictStack(ANY_HARDPLASTIC.ingot(), 32),
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID),
}, 400);
makeRecipe(new ComparableStack(ModBlocks.pa_source), new AStack[] {
new ComparableStack(ModBlocks.pa_beamline, 3),
new OreDictStack(STEEL.plateCast(), 16),
new OreDictStack(ANY_HARDPLASTIC.ingot(), 16),
new ComparableStack(ModItems.magnetron, 16),
new ComparableStack(ModItems.circuit, 1, EnumCircuitType.QUANTUM),
}, 400);
makeRecipe(new ComparableStack(ModBlocks.pa_detector), new AStack[] {
new ComparableStack(ModBlocks.pa_beamline, 3),
new OreDictStack(STEEL.plateCast(), 24),
new OreDictStack(GOLD.wireDense(), 16),
new OreDictStack(ANY_HARDPLASTIC.ingot(), 16),
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.QUANTUM),
}, 400);
makeRecipe(new ComparableStack(ModBlocks.machine_exposure_chamber, 1), new AStack[] {
!exp ? new OreDictStack(AL.plateCast(), 12) : new OreDictStack(AL.heavyComp(), 1),
new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4),

View File

@ -22,6 +22,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.RecipesCommon.OreDictStack;
import com.hbm.inventory.material.MaterialShapes;
import com.hbm.inventory.recipes.loader.SerializableRecipe;
import com.hbm.items.ItemEnums;
import com.hbm.items.ItemEnums.EnumAshType;
import com.hbm.items.ItemEnums.EnumChunkType;
import com.hbm.items.ModItems;
@ -46,21 +47,21 @@ public class CentrifugeRecipes extends SerializableRecipe {
@Override
public void registerDefaults() {
boolean lbs = GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCentrifuge;
recipes.put(new ComparableStack(ModItems.waste_natural_uranium), new ItemStack[] {
new ItemStack(ModItems.nugget_u238, 1),
new ItemStack(ModItems.nugget_pu_mix, 2),
new ItemStack(ModItems.nugget_pu239, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 2) });
recipes.put(new ComparableStack(ModItems.waste_uranium), new ItemStack[] {
new ItemStack(ModItems.nugget_pu_mix, 2),
new ItemStack(ModItems.nugget_plutonium, 1),
new ItemStack(ModItems.nugget_technetium, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 2) });
recipes.put(new ComparableStack(ModItems.waste_thorium), new ItemStack[] {
new ItemStack(ModItems.nugget_u238, 1),
new ItemStack(ModItems.nugget_th232, 1),
@ -72,73 +73,73 @@ public class CentrifugeRecipes extends SerializableRecipe {
new ItemStack(ModItems.nugget_technetium, 1),
new ItemStack(ModItems.nugget_u238, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 3) });
recipes.put(new ComparableStack(ModItems.waste_plutonium), new ItemStack[] {
new ItemStack(ModItems.nugget_pu_mix, 1),
new ItemStack(ModItems.nugget_pu_mix, 1),
new ItemStack(ModItems.nugget_technetium, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 3) });
recipes.put(new ComparableStack(ModItems.waste_u233), new ItemStack[] {
new ItemStack(ModItems.nugget_u235, 1),
new ItemStack(ModItems.nugget_neptunium, 1),
new ItemStack(ModItems.nugget_technetium, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 3) });
recipes.put(new ComparableStack(ModItems.waste_u235), new ItemStack[] {
new ItemStack(ModItems.nugget_pu238, 1),
new ItemStack(ModItems.nugget_neptunium, 1),
new ItemStack(ModItems.nugget_technetium, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 3) });
recipes.put(new ComparableStack(ModItems.waste_schrabidium), new ItemStack[] {
new ItemStack(ModItems.nugget_beryllium, 2),
new ItemStack(ModItems.nugget_pu239, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 2) });
recipes.put(new ComparableStack(ModItems.waste_zfb_mox), new ItemStack[] {
new ItemStack(ModItems.nugget_zirconium, 3),
new ItemStack(ModItems.nugget_technetium, 1),
new ItemStack(ModItems.nugget_pu_mix, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 1) });
recipes.put(new ComparableStack(ModItems.waste_plate_mox), new ItemStack[] {
new ItemStack(ModItems.powder_sr90_tiny, 1),
new ItemStack(ModItems.nugget_pu_mix, 3),
new ItemStack(ModItems.powder_cs137_tiny, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 4) });
recipes.put(new ComparableStack(ModItems.waste_plate_pu238be), new ItemStack[] {
new ItemStack(ModItems.nugget_beryllium, 1),
new ItemStack(ModItems.nugget_pu238, 1),
new ItemStack(ModItems.powder_coal_tiny, 2),
new ItemStack(ModItems.nugget_lead, 2) });
recipes.put(new ComparableStack(ModItems.waste_plate_pu239), new ItemStack[] {
new ItemStack(ModItems.nugget_pu240, 2),
new ItemStack(ModItems.nugget_technetium, 1),
new ItemStack(ModItems.powder_cs137_tiny, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 5) });
recipes.put(new ComparableStack(ModItems.waste_plate_ra226be), new ItemStack[] {
new ItemStack(ModItems.nugget_beryllium, 2),
new ItemStack(ModItems.nugget_polonium, 2),
new ItemStack(ModItems.powder_coal_tiny, 1),
new ItemStack(ModItems.nugget_lead, 1) });
recipes.put(new ComparableStack(ModItems.waste_plate_sa326), new ItemStack[] {
new ItemStack(ModItems.nugget_solinium, 1),
new ItemStack(ModItems.powder_neodymium_tiny, 1),
new ItemStack(ModItems.nugget_tantalium, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 6) });
recipes.put(new ComparableStack(ModItems.waste_plate_u233), new ItemStack[] {
new ItemStack(ModItems.nugget_u235, 1),
new ItemStack(ModItems.powder_i131_tiny, 1),
new ItemStack(ModItems.powder_sr90_tiny, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 6) });
recipes.put(new ComparableStack(ModItems.waste_plate_u235), new ItemStack[] {
new ItemStack(ModItems.nugget_neptunium, 1),
new ItemStack(ModItems.nugget_pu238, 1),
@ -283,7 +284,7 @@ public class CentrifugeRecipes extends SerializableRecipe {
new ItemStack(ModItems.powder_boron_tiny, 2),
new ItemStack(ModItems.powder_niobium_tiny, 2),
new ItemStack(ModItems.nugget_zirconium, 3) });
ArrayList<ItemStack> naquadriaNuggets = OreDictionary.getOres("nuggetNaquadria");
if(naquadriaNuggets.size() != 0) {
ItemStack nuggetNQR = naquadriaNuggets.get(0);
@ -300,195 +301,195 @@ public class CentrifugeRecipes extends SerializableRecipe {
new ItemStack(ModItems.nugget_euphemium, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
}
recipes.put(new OreDictStack(COAL.ore()), new ItemStack[] {
new ItemStack(ModItems.powder_coal, 2),
new ItemStack(ModItems.powder_coal, 2),
new ItemStack(ModItems.powder_coal, 2),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(LIGNITE.ore()), new ItemStack[] {
new ItemStack(ModItems.powder_lignite, 2),
new ItemStack(ModItems.powder_lignite, 2),
new ItemStack(ModItems.powder_lignite, 2),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(IRON.ore()), new ItemStack[] {
new ItemStack(ModItems.powder_iron, 1),
new ItemStack(ModItems.powder_iron, 1),
new ItemStack(ModItems.powder_iron, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(GOLD.ore()), new ItemStack[] {
lbs ? new ItemStack(ModItems.powder_gold, 2) : new ItemStack(ModItems.powder_gold, 1),
new ItemStack(ModItems.powder_gold, 1),
lbs ? new ItemStack(ModItems.nugget_bismuth, 1) : new ItemStack(ModItems.powder_gold, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(DIAMOND.ore()), new ItemStack[] {
new ItemStack(ModItems.powder_diamond, 1),
new ItemStack(ModItems.powder_diamond, 1),
new ItemStack(ModItems.powder_diamond, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(EMERALD.ore()), new ItemStack[] {
new ItemStack(ModItems.powder_emerald, 1),
new ItemStack(ModItems.powder_emerald, 1),
new ItemStack(ModItems.powder_emerald, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(TI.ore()), new ItemStack[] {
lbs ? new ItemStack(ModItems.powder_titanium, 2) : new ItemStack(ModItems.powder_titanium, 1),
lbs ? new ItemStack(ModItems.powder_titanium, 2) : new ItemStack(ModItems.powder_titanium, 1),
new ItemStack(ModItems.powder_iron, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(NETHERQUARTZ.ore()), new ItemStack[] {
new ItemStack(ModItems.powder_quartz, 1),
new ItemStack(ModItems.powder_quartz, 1),
new ItemStack(ModItems.powder_lithium_tiny, 1),
new ItemStack(Blocks.netherrack, 1) });
recipes.put(new OreDictStack(W.ore()), new ItemStack[] {
lbs ? new ItemStack(ModItems.powder_tungsten, 2) : new ItemStack(ModItems.powder_tungsten, 1),
new ItemStack(ModItems.powder_tungsten, 1),
new ItemStack(ModItems.powder_iron, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(CU.ore()), new ItemStack[] {
lbs ? new ItemStack(ModItems.powder_copper, 2) : new ItemStack(ModItems.powder_copper, 1),
new ItemStack(ModItems.powder_copper, 1),
new ItemStack(ModItems.powder_gold, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(AL.ore()), new ItemStack[] {
new ItemStack(ModItems.powder_aluminium, 1),
new ItemStack(ModItems.powder_aluminium, 1),
new ItemStack(ModItems.chunk_ore, 2, ItemEnums.EnumChunkType.CRYOLITE.ordinal()),
new ItemStack(ModItems.powder_titanium, 1),
new ItemStack(ModItems.powder_iron, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(PB.ore()), new ItemStack[] {
lbs ? new ItemStack(ModItems.powder_lead, 2) : new ItemStack(ModItems.powder_lead, 1),
lbs ? new ItemStack(ModItems.nugget_bismuth, 1) : new ItemStack(ModItems.powder_lead, 1),
new ItemStack(ModItems.powder_gold, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(SA326.ore()), new ItemStack[] {
new ItemStack(ModItems.powder_schrabidium, 1),
new ItemStack(ModItems.powder_schrabidium, 1),
new ItemStack(ModItems.nugget_solinium, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack("oreRareEarth"), new ItemStack[] {
new ItemStack(ModItems.powder_desh_mix, 1),
new ItemStack(ModItems.nugget_zirconium, 1),
new ItemStack(ModItems.nugget_zirconium, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(PU.ore()), new ItemStack[] {
new ItemStack(ModItems.powder_plutonium, 1),
new ItemStack(ModItems.powder_plutonium, 1),
new ItemStack(ModItems.nugget_polonium, 3),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(U.ore()), new ItemStack[] {
lbs ? new ItemStack(ModItems.powder_uranium, 2) : new ItemStack(ModItems.powder_uranium, 1),
lbs ? new ItemStack(ModItems.nugget_technetium, 2) : new ItemStack(ModItems.powder_uranium, 1),
lbs ? new ItemStack(ModItems.nugget_ra226, 2) : new ItemStack(ModItems.nugget_ra226, 1),
new ItemStack(Blocks.gravel, 1) });
for(String ore : OreDictManager.TH232.all(MaterialShapes.ORE)) recipes.put(new OreDictStack(ore), new ItemStack[] {
new ItemStack(ModItems.powder_thorium, 1),
new ItemStack(ModItems.powder_thorium, 1),
new ItemStack(ModItems.powder_uranium, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(BE.ore()), new ItemStack[] {
new ItemStack(ModItems.powder_beryllium, 1),
new ItemStack(ModItems.powder_beryllium, 1),
new ItemStack(ModItems.powder_emerald, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(F.ore()), new ItemStack[] {
new ItemStack(ModItems.fluorite, 3),
new ItemStack(ModItems.fluorite, 3),
new ItemStack(ModItems.gem_sodalite, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new OreDictStack(REDSTONE.ore()), new ItemStack[] {
new ItemStack(Items.redstone, 3),
new ItemStack(Items.redstone, 3),
lbs ? new ItemStack(ModItems.ingot_mercury, 3) : new ItemStack(ModItems.ingot_mercury, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new ComparableStack(ModBlocks.ore_tikite), new ItemStack[] {
new ItemStack(ModItems.powder_plutonium, 1),
new ItemStack(ModItems.powder_cobalt, 2),
new ItemStack(ModItems.powder_niobium, 2),
new ItemStack(Blocks.end_stone, 1) });
recipes.put(new OreDictStack(LAPIS.ore()), new ItemStack[] {
new ItemStack(ModItems.powder_lapis, 6),
new ItemStack(ModItems.powder_cobalt_tiny, 1),
new ItemStack(ModItems.gem_sodalite, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new ComparableStack(ModBlocks.block_euphemium_cluster), new ItemStack[] {
new ItemStack(ModItems.nugget_euphemium, 7),
new ItemStack(ModItems.powder_schrabidium, 4),
new ItemStack(ModItems.ingot_starmetal, 2),
new ItemStack(ModItems.nugget_solinium, 2) });
recipes.put(new ComparableStack(ModBlocks.ore_nether_fire), new ItemStack[] {
new ItemStack(Items.blaze_powder, 2),
new ItemStack(ModItems.powder_fire, 2),
new ItemStack(ModItems.ingot_phosphorus),
new ItemStack(Blocks.netherrack) });
recipes.put(new OreDictStack(CO.ore()), new ItemStack[] {
new ItemStack(ModItems.powder_cobalt, 2),
new ItemStack(ModItems.powder_iron, 1),
new ItemStack(ModItems.powder_copper, 1),
new ItemStack(Blocks.gravel, 1) });
recipes.put(new ComparableStack(ModItems.powder_tektite), new ItemStack[] {
new ItemStack(ModItems.powder_meteorite_tiny, 1),
new ItemStack(ModItems.powder_paleogenite_tiny, 1),
new ItemStack(ModItems.powder_meteorite_tiny, 1),
new ItemStack(ModItems.dust, 6) });
recipes.put(new ComparableStack(ModBlocks.block_slag), new ItemStack[] {
new ItemStack(Blocks.gravel, 1),
new ItemStack(ModItems.powder_fire, 1),
new ItemStack(ModItems.powder_calcium),
new ItemStack(ModItems.dust) });
recipes.put(new ComparableStack(ModItems.powder_ash, 1, EnumAshType.COAL.ordinal()), new ItemStack[] {
new ItemStack(ModItems.powder_coal_tiny, 2),
new ItemStack(ModItems.powder_boron_tiny, 1),
new ItemStack(ModItems.dust_tiny, 6)});
for(EnumBedrockOre ore : EnumBedrockOre.values()) {
int i = ore.ordinal();
recipes.put(new ComparableStack(ModItems.ore_bedrock, 1, i), new ItemStack[] {
new ItemStack(ModItems.ore_centrifuged, 1, i),
new ItemStack(ModItems.ore_centrifuged, 1, i),
new ItemStack(ModItems.ore_centrifuged, 1, i),
new ItemStack(ModItems.ore_centrifuged, 1, i) });
recipes.put(new ComparableStack(ModItems.ore_cleaned, 1, i), new ItemStack[] {
new ItemStack(ModItems.ore_separated, 1, i),
new ItemStack(ModItems.ore_separated, 1, i),
new ItemStack(ModItems.ore_separated, 1, i),
new ItemStack(ModItems.ore_separated, 1, i) });
recipes.put(new ComparableStack(ModItems.ore_purified, 1, i), new ItemStack[] {
new ItemStack(ModItems.ore_enriched, 1, i),
new ItemStack(ModItems.ore_enriched, 1, i),
new ItemStack(ModItems.ore_enriched, 1, i),
new ItemStack(ModItems.ore_enriched, 1, i) });
EnumByproduct tier1 = ore.byproducts[0];
ItemStack by1 = tier1 == null ? new ItemStack(ModItems.dust) : DictFrame.fromOne(ModItems.ore_byproduct, tier1, 1);
recipes.put(new ComparableStack(ModItems.ore_nitrated, 1, i), new ItemStack[] {
@ -496,7 +497,7 @@ public class CentrifugeRecipes extends SerializableRecipe {
new ItemStack(ModItems.ore_nitrocrystalline, 1, i),
ItemStackUtil.carefulCopy(by1),
ItemStackUtil.carefulCopy(by1) });
EnumByproduct tier2 = ore.byproducts[1];
ItemStack by2 = tier2 == null ? new ItemStack(ModItems.dust) : DictFrame.fromOne(ModItems.ore_byproduct, tier2, 1);
recipes.put(new ComparableStack(ModItems.ore_deepcleaned, 1, i), new ItemStack[] {
@ -504,7 +505,7 @@ public class CentrifugeRecipes extends SerializableRecipe {
new ItemStack(ModItems.ore_enriched, 1, i),
ItemStackUtil.carefulCopy(by2),
ItemStackUtil.carefulCopy(by2) });
EnumByproduct tier3 = ore.byproducts[2];
ItemStack by3 = tier3 == null ? new ItemStack(ModItems.dust) : DictFrame.fromOne(ModItems.ore_byproduct, tier3, 1);
recipes.put(new ComparableStack(ModItems.ore_seared, 1, i), new ItemStack[] {
@ -513,7 +514,7 @@ public class CentrifugeRecipes extends SerializableRecipe {
ItemStackUtil.carefulCopy(by3),
ItemStackUtil.carefulCopy(by3) });
}
for(BedrockOreType type : BedrockOreType.values()) {
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), new ItemStack(Blocks.gravel)});
@ -536,20 +537,20 @@ public class CentrifugeRecipes extends SerializableRecipe {
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.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)});
}
List<ItemStack> quartz = OreDictionary.getOres("crystalCertusQuartz");
if(quartz != null && !quartz.isEmpty()) {
ItemStack qItem = quartz.get(0).copy();
qItem.stackSize = 2;
recipes.put(new OreDictStack("oreCertusQuartz"), new ItemStack[] {
qItem.copy(),
qItem.copy(),
qItem.copy(),
qItem.copy() });
}
recipes.put(new ComparableStack(Items.blaze_rod), new ItemStack[] {new ItemStack(Items.blaze_powder, 1), new ItemStack(Items.blaze_powder, 1), new ItemStack(ModItems.powder_fire, 1), new ItemStack(ModItems.powder_fire, 1) });
recipes.put(new ComparableStack(ModItems.ingot_schraranium), new ItemStack[] { new ItemStack(ModItems.nugget_schrabidium, 2), new ItemStack(ModItems.nugget_schrabidium, 1), new ItemStack(ModItems.nugget_uranium, 3), new ItemStack(ModItems.nugget_neptunium, 2) });
@ -568,7 +569,7 @@ public class CentrifugeRecipes extends SerializableRecipe {
recipes.put(new ComparableStack(ModItems.crystal_niter), new ItemStack[] { new ItemStack(ModItems.niter, 3), new ItemStack(ModItems.niter, 3), new ItemStack(ModItems.niter, 3), new ItemStack(ModItems.powder_lithium_tiny, 1) });
recipes.put(new ComparableStack(ModItems.crystal_copper), new ItemStack[] { new ItemStack(ModItems.powder_copper, 2), new ItemStack(ModItems.powder_copper, 2), new ItemStack(ModItems.sulfur, 1), new ItemStack(ModItems.powder_cobalt_tiny, 1) });
recipes.put(new ComparableStack(ModItems.crystal_tungsten), new ItemStack[] { new ItemStack(ModItems.powder_tungsten, 2), new ItemStack(ModItems.powder_tungsten, 2), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) });
recipes.put(new ComparableStack(ModItems.crystal_aluminium), new ItemStack[] { new ItemStack(ModItems.powder_aluminium, 2), new ItemStack(ModItems.powder_aluminium, 2), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) });
recipes.put(new ComparableStack(ModItems.crystal_aluminium), new ItemStack[] { new ItemStack(ModItems.chunk_ore, 3, ItemEnums.EnumChunkType.CRYOLITE.ordinal()), new ItemStack(ModItems.powder_titanium, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) });
recipes.put(new ComparableStack(ModItems.crystal_fluorite), new ItemStack[] { new ItemStack(ModItems.fluorite, 4), new ItemStack(ModItems.fluorite, 4), new ItemStack(ModItems.gem_sodalite, 2), new ItemStack(ModItems.powder_lithium_tiny, 1) });
recipes.put(new ComparableStack(ModItems.crystal_beryllium), new ItemStack[] { new ItemStack(ModItems.powder_beryllium, 2), new ItemStack(ModItems.powder_beryllium, 2), new ItemStack(ModItems.powder_quartz, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) });
recipes.put(new ComparableStack(ModItems.crystal_lead), new ItemStack[] { new ItemStack(ModItems.powder_lead, 2), new ItemStack(ModItems.powder_lead, 2), new ItemStack(ModItems.powder_gold, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) });
@ -581,44 +582,44 @@ public class CentrifugeRecipes extends SerializableRecipe {
recipes.put(new ComparableStack(ModItems.crystal_starmetal), new ItemStack[] { new ItemStack(ModItems.powder_dura_steel, 3), new ItemStack(ModItems.powder_cobalt, 3), new ItemStack(ModItems.powder_astatine, 2), new ItemStack(ModItems.ingot_mercury, 5) });
recipes.put(new ComparableStack(ModItems.crystal_cobalt), new ItemStack[] { new ItemStack(ModItems.powder_cobalt, 2), new ItemStack(ModItems.powder_iron, 3), new ItemStack(ModItems.powder_copper, 3), new ItemStack(ModItems.powder_lithium_tiny, 1) });
}
@Override
public void registerPost() {
if(!IMCCentrifuge.buffer.isEmpty()) {
recipes.putAll(IMCCentrifuge.buffer);
MainRegistry.logger.info("Fetched " + IMCCentrifuge.buffer.size() + " IMC centrifuge recipes!");
IMCCentrifuge.buffer.clear();
}
}
public static ItemStack[] getOutput(ItemStack stack) {
if(stack == null || stack.getItem() == null)
return null;
ComparableStack comp = new ComparableStack(stack).makeSingular();
if(recipes.containsKey(comp))
return RecipesCommon.copyStackArray(recipes.get(comp));
for(Entry<AStack, ItemStack[]> entry : recipes.entrySet()) {
if(entry.getKey().isApplicable(stack)) {
return RecipesCommon.copyStackArray(entry.getValue());
}
}
return null;
}
public static HashMap getRecipes() {
HashMap<Object, Object[]> recipes = new HashMap<Object, Object[]>();
for(Entry<AStack, ItemStack[]> entry : CentrifugeRecipes.recipes.entrySet()) {
recipes.put(entry.getKey(), entry.getValue());
}
return recipes;
}

View File

@ -26,7 +26,7 @@ import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
public class ChemplantRecipes extends SerializableRecipe {
/**
* Nice order: The order in which the ChemRecipe are added to the recipes list
* Meta order: Fixed using the id param, saved in indexMapping
@ -34,13 +34,13 @@ public class ChemplantRecipes extends SerializableRecipe {
public static HashMap<Integer, ChemRecipe> indexMapping = new HashMap();
public static List<ChemRecipe> recipes = new ArrayList();
@Override
public void registerDefaults() {
//6-30, formerly oil cracking, coal liquefaction and solidifciation
registerOtherOil();
recipes.add(new ChemRecipe(36, "COOLANT", 50)
.inputItems(new OreDictStack(KNO.dust()))
.inputFluids(new FluidStack(Fluids.WATER, 1800))
@ -99,7 +99,7 @@ public class ChemplantRecipes extends SerializableRecipe {
new FluidStack(Fluids.XYLENE, 500),
new FluidStack(Fluids.OXYGEN, 100))
.outputItems(new ItemStack(ModItems.ingot_pet)));*/
//Laminate Glass going here
recipes.add(new ChemRecipe(97, "LAMINATE", 100)
.inputFluids(
@ -374,7 +374,7 @@ public class ChemplantRecipes extends SerializableRecipe {
recipes.add(new ChemRecipe(101, "CC_CENTRIFUGE", 200)
.inputFluids(new FluidStack(Fluids.CHLOROCALCITE_CLEANED, 500), new FluidStack(Fluids.SULFURIC_ACID, 8_000))
.outputFluids(new FluidStack(Fluids.POTASSIUM_CHLORIDE, 250), new FluidStack(Fluids.CALCIUM_CHLORIDE, 250)));
recipes.add(new ChemRecipe(102, "THORIUM_SALT", 60)
.inputFluids(new FluidStack(Fluids.THORIUM_SALT_DEPLETED, 16_000))
.inputItems(new OreDictStack(TH232.nugget(), 2))
@ -411,7 +411,7 @@ public class ChemplantRecipes extends SerializableRecipe {
.inputFluids(new FluidStack(1000, Fluids.BITUMEN))
.outputItems(new ItemStack(ModBlocks.asphalt, 16)));
}
public static class ChemRecipe {
public int listing;
@ -422,49 +422,49 @@ public class ChemplantRecipes extends SerializableRecipe {
public ItemStack[] outputs;
public FluidStack[] outputFluids;
private int duration;
public ChemRecipe(int index, String name, int duration) {
this.id = index;
this.name = name;
this.duration = duration;
this.listing = recipes.size();
this.inputs = new AStack[4];
this.outputs = new ItemStack[4];
this.inputFluids = new FluidStack[2];
this.outputFluids = new FluidStack[2];
if(!indexMapping.containsKey(id)) {
indexMapping.put(id, this);
} else {
throw new IllegalStateException("Chemical plant recipe " + name + " has been registered with duplicate id " + id + " used by " + indexMapping.get(id).name + "!");
}
}
public ChemRecipe inputItems(AStack... in) {
for(int i = 0; i < in.length; i++) this.inputs[i] = in[i];
return this;
}
public ChemRecipe inputFluids(FluidStack... in) {
for(int i = 0; i < in.length; i++) this.inputFluids[i] = in[i];
return this;
}
public ChemRecipe outputItems(ItemStack... out) {
for(int i = 0; i < out.length; i++) this.outputs[i] = out[i];
return this;
}
public ChemRecipe outputFluids(FluidStack... out) {
for(int i = 0; i < out.length; i++) this.outputFluids[i] = out[i];
return this;
}
public int getId() {
return this.id;
}
public int getDuration() {
return this.duration;
}
@ -486,7 +486,7 @@ public class ChemplantRecipes extends SerializableRecipe {
int id = obj.get("id").getAsInt();
String name = obj.get("name").getAsString();
int duration = obj.get("duration").getAsInt();
recipes.add(new ChemRecipe(id, name, duration)
.inputFluids( this.readFluidArray( (JsonArray) obj.get("fluidInput")))
.inputItems( this.readAStackArray( (JsonArray) obj.get("itemInput")))
@ -522,7 +522,7 @@ public class ChemplantRecipes extends SerializableRecipe {
ex.printStackTrace();
}
}
public String getComment() {
return "Rules: All in- and output arrays need to be present, even if empty. IDs need to be unique, but not sequential. It's safe if you add your own"
+ " recipes starting with ID 1000. Template order depends on the order of the recipes in this JSON file. The 'name' field is responsible for"

View File

@ -24,7 +24,7 @@ import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
public class CokerRecipes extends SerializableRecipe {
private static HashMap<FluidType, Triplet<Integer, ItemStack, FluidStack>> recipes = new HashMap();
@Override
@ -58,7 +58,7 @@ public class CokerRecipes extends SerializableRecipe {
registerSFAuto(WOODOIL, 340_000L, new ItemStack(Items.coal, 1, 1), GAS_COKER);
registerRecipe(WATZ, 4_000, new ItemStack(ModItems.ingot_mud, 4), null);
registerRecipe(REDMUD, 1_000, new ItemStack(Items.iron_ingot, 1), new FluidStack(MERCURY, 50));
registerRecipe(REDMUD, 450, new ItemStack(Items.iron_ingot, 1), new FluidStack(MERCURY, 50));
registerRecipe(BITUMEN, 16_000, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), new FluidStack(OIL_COKER, 1_600));
registerRecipe(LUBRICANT, 12_000, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), new FluidStack(OIL_COKER, 1_200));
registerRecipe(CALCIUM_SOLUTION, 125, new ItemStack(ModItems.powder_calcium), new FluidStack(SPENTSTEAM, 100));
@ -74,17 +74,17 @@ public class CokerRecipes extends SerializableRecipe {
private static void registerSFAuto(FluidType fluid, long tuPerSF, ItemStack fuel, FluidType type) {
long tuFlammable = fluid.hasTrait(FT_Flammable.class) ? fluid.getTrait(FT_Flammable.class).getHeatEnergy() : 0;
long tuCombustible = fluid.hasTrait(FT_Combustible.class) ? fluid.getTrait(FT_Combustible.class).getCombustionEnergy() : 0;
long tuPerBucket = Math.max(tuFlammable, tuCombustible);
double penalty = 1;//1.1D; //no penalty
int mB = (int) (tuPerSF * 1000L * penalty / tuPerBucket);
if(mB > 10_000) mB -= (mB % 1000);
else if(mB > 1_000) mB -= (mB % 100);
else if(mB > 100) mB -= (mB % 10);
FluidStack byproduct = type == null ? null : new FluidStack(type, Math.max(10, mB / 10));
registerRecipe(fluid, mB, fuel, byproduct);
@ -92,28 +92,28 @@ public class CokerRecipes extends SerializableRecipe {
private static void registerRecipe(FluidType type, int quantity, ItemStack output, FluidStack byproduct) {
recipes.put(type, new Triplet(quantity, output, byproduct));
}
public static Triplet<Integer, ItemStack, FluidStack> getOutput(FluidType type) {
return recipes.get(type);
}
public static HashMap<ItemStack, ItemStack[]> getRecipes() {
HashMap<ItemStack, ItemStack[]> recipes = new HashMap<ItemStack, ItemStack[]>();
for(Entry<FluidType, Triplet<Integer, ItemStack, FluidStack>> entry : CokerRecipes.recipes.entrySet()) {
FluidType type = entry.getKey();
int amount = entry.getValue().getX();
ItemStack out = entry.getValue().getY().copy();
FluidStack byproduct = entry.getValue().getZ();
if(out != null && byproduct != null) recipes.put(ItemFluidIcon.make(type, amount), new ItemStack[] {out, ItemFluidIcon.make(byproduct)});
if(out != null && byproduct == null) recipes.put(ItemFluidIcon.make(type, amount), new ItemStack[] {out});
if(out == null && byproduct != null) recipes.put(ItemFluidIcon.make(type, amount), new ItemStack[] {ItemFluidIcon.make(byproduct)});
}
return recipes;
}

View File

@ -9,8 +9,6 @@ import static com.hbm.inventory.OreDictManager.*;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter;
import com.hbm.blocks.BlockEnums.EnumStoneType;
import com.hbm.blocks.ModBlocks;
import com.hbm.inventory.FluidStack;
import com.hbm.inventory.OreDictManager.DictFrame;
import com.hbm.inventory.RecipesCommon.AStack;
@ -18,6 +16,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.RecipesCommon.OreDictStack;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.recipes.loader.SerializableRecipe;
import com.hbm.items.ItemEnums;
import com.hbm.items.ItemEnums.EnumAshType;
import com.hbm.items.ItemEnums.EnumBriquetteType;
import com.hbm.items.ItemEnums.EnumCokeType;
@ -42,7 +41,7 @@ public class CombinationRecipes extends SerializableRecipe {
recipes.put(COAL.gem(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), new FluidStack(Fluids.COALCREOSOTE, 100)));
recipes.put(COAL.dust(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), new FluidStack(Fluids.COALCREOSOTE, 100)));
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.COAL)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), new FluidStack(Fluids.COALCREOSOTE, 150)));
recipes.put(LIGNITE.gem(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 50)));
recipes.put(LIGNITE.dust(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 50)));
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.LIGNITE)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 100)));
@ -52,7 +51,7 @@ public class CombinationRecipes extends SerializableRecipe {
recipes.put(CINNABAR.crystal(), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.MERCURY, 100)));
recipes.put(new ComparableStack(Items.glowstone_dust), new Pair(new ItemStack(ModItems.sulfur), 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(ModItems.chunk_ore, ItemEnums.EnumChunkType.CRYOLITE)), new Pair(new ItemStack(ModItems.powder_aluminium, 1), new FluidStack(Fluids.LYE, 150)));
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)));
@ -67,7 +66,7 @@ public class CombinationRecipes extends SerializableRecipe {
recipes.put(new ComparableStack(Items.reeds), new Pair(new ItemStack(Items.sugar, 2), new FluidStack(Fluids.ETHANOL, 50)));
recipes.put(new ComparableStack(Blocks.clay), new Pair(new ItemStack(Blocks.brick_block, 1), null));
for(BedrockOreType type : BedrockOreType.values()) {
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50)));
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50)));
@ -76,21 +75,21 @@ public class CombinationRecipes extends SerializableRecipe {
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50)));
}
}
public static Pair<ItemStack, FluidStack> getOutput(ItemStack stack) {
if(stack == null || stack.getItem() == null)
return null;
ComparableStack comp = new ComparableStack(stack.getItem(), 1, stack.getItemDamage());
if(recipes.containsKey(comp)) {
Pair<ItemStack, FluidStack> out = recipes.get(comp);
return new Pair(out.getKey() == null ? null : out.getKey().copy(), out.getValue());
}
String[] dictKeys = comp.getDictKeys();
for(String key : dictKeys) {
if(recipes.containsKey(key)) {
@ -98,19 +97,19 @@ public class CombinationRecipes extends SerializableRecipe {
return new Pair(out.getKey() == null ? null : out.getKey().copy(), out.getValue());
}
}
return null;
}
public static HashMap getRecipes() {
HashMap<Object, Object[]> recipes = new HashMap<Object, Object[]>();
for(Entry<Object, Pair<ItemStack, FluidStack>> entry : CombinationRecipes.recipes.entrySet()) {
Object key = entry.getKey();
Pair<ItemStack, FluidStack> val = entry.getValue();
Object o = key instanceof String ? new OreDictStack((String) key) : key;
if(val.getKey() != null && val.getValue() != null) {
recipes.put(o, new ItemStack[] {val.getKey(), ItemFluidIcon.make(val.getValue())});
} else if(val.getKey() != null) {
@ -119,7 +118,7 @@ public class CombinationRecipes extends SerializableRecipe {
recipes.put(o, new ItemStack[] {ItemFluidIcon.make(val.getValue())});
}
}
return recipes;
}
@ -139,10 +138,10 @@ public class CombinationRecipes extends SerializableRecipe {
AStack in = this.readAStack(obj.get("input").getAsJsonArray());
FluidStack fluid = null;
ItemStack out = null;
if(obj.has("fluid")) fluid = this.readFluidStack(obj.get("fluid").getAsJsonArray());
if(obj.has("output")) out = this.readItemStack(obj.get("output").getAsJsonArray());
if(in instanceof ComparableStack) {
recipes.put(((ComparableStack) in).makeSingular(), new Pair(out, fluid));
} else if(in instanceof OreDictStack) {
@ -157,7 +156,7 @@ public class CombinationRecipes extends SerializableRecipe {
Pair<ItemStack, FluidStack> Pair = rec.getValue();
ItemStack output = Pair.key;
FluidStack fluid = Pair.value;
writer.name("input");
if(in instanceof String) {
this.writeAStack(new OreDictStack((String) in), writer);

View File

@ -27,7 +27,8 @@ public class CompressorRecipes extends SerializableRecipe {
recipes.put(new Pair(Fluids.BLOOD, 3), new CompressorRecipe(1_000, new FluidStack(Fluids.HEAVYOIL, 250, 0), 200));
recipes.put(new Pair(Fluids.PERFLUOROMETHYL, 1), new CompressorRecipe(1_000, new FluidStack(Fluids.PERFLUOROMETHYL_COLD, 1_000, 0), 100));
recipes.put(new Pair(Fluids.PERFLUOROMETHYL, 0), new CompressorRecipe(1_000, new FluidStack(Fluids.PERFLUOROMETHYL, 1_000, 1), 50));
recipes.put(new Pair(Fluids.PERFLUOROMETHYL, 1), new CompressorRecipe(1_000, new FluidStack(Fluids.PERFLUOROMETHYL_COLD, 1_000, 0), 50));
}
public static HashMap getRecipes() {

View File

@ -48,7 +48,7 @@ import net.minecraftforge.oredict.OreDictionary;
//This time we're doing this right
//...right?
public class CrystallizerRecipes extends SerializableRecipe {
//'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<Object, Integer> amounts = new HashMap(); // for use in the partitioner
@ -83,12 +83,13 @@ public class CrystallizerRecipes extends SerializableRecipe {
registerRecipe(LI.ore(), new CrystallizerRecipe(ModItems.crystal_lithium, baseTime), sulfur);
//registerRecipe(STAR.ore(), new CrystallizerRecipe(ModItems.crystal_starmetal, baseTime), sulfur);
registerRecipe(CO.ore(), new CrystallizerRecipe(ModItems.crystal_cobalt, baseTime), sulfur);
registerRecipe(new ComparableStack(ModItems.powder_calcium), new CrystallizerRecipe(new ItemStack(ModItems.powder_cement, 8), utilityTime), new FluidStack(Fluids.REDMUD, 75));
registerRecipe(MALACHITE.ingot(), new CrystallizerRecipe(ItemScraps.create(new MaterialStack(Mats.MAT_COPPER, MaterialShapes.INGOT.q(1))), 300), new FluidStack(Fluids.SULFURIC_ACID, 250));
registerRecipe("oreRareEarth", new CrystallizerRecipe(ModItems.crystal_rare, baseTime), sulfur);
registerRecipe("oreCinnabar", new CrystallizerRecipe(ModItems.crystal_cinnebar, baseTime));
registerRecipe(new ComparableStack(ModBlocks.ore_nether_fire), new CrystallizerRecipe(ModItems.crystal_phosphorus, baseTime));
registerRecipe(new ComparableStack(ModBlocks.ore_tikite), new CrystallizerRecipe(ModItems.crystal_trixite, baseTime), sulfur);
registerRecipe(new ComparableStack(ModBlocks.gravel_diamond), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime));
@ -111,7 +112,7 @@ public class CrystallizerRecipes extends SerializableRecipe {
registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.plant_item, EnumPlantType.MUSTARDWILLOW)), new CrystallizerRecipe(new ItemStack(ModItems.powder_cadmium), 100).setReq(10), new FluidStack(Fluids.RADIOSOLVENT, 250));
registerRecipe(new ComparableStack(ModItems.scrap_oil), new CrystallizerRecipe(new ItemStack(ModItems.nugget_arsenic), 100).setReq(16), new FluidStack(Fluids.RADIOSOLVENT, 100));
registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE)), new CrystallizerRecipe(new ItemStack(ModItems.ingot_cft), baseTime).setReq(4), new FluidStack(Fluids.XYLENE, 1_000));
registerRecipe(DIAMOND.dust(), new CrystallizerRecipe(Items.diamond, utilityTime));
registerRecipe(EMERALD.dust(), new CrystallizerRecipe(Items.emerald, utilityTime));
registerRecipe(LAPIS.dust(), new CrystallizerRecipe(new ItemStack(Items.dye, 1, 4), utilityTime));
@ -121,10 +122,10 @@ public class CrystallizerRecipes extends SerializableRecipe {
registerRecipe(CD.dust(), new CrystallizerRecipe(ModItems.ingot_rubber, utilityTime), new FluidStack(Fluids.FISHOIL, 250));
registerRecipe(LATEX.ingot(), new CrystallizerRecipe(ModItems.ingot_rubber, mixingTime), new FluidStack(Fluids.SOURGAS, 25));
registerRecipe(new ComparableStack(ModItems.powder_sawdust), new CrystallizerRecipe(ModItems.cordite, mixingTime), new FluidStack(Fluids.NITROGLYCERIN, 250));
registerRecipe(new ComparableStack(ModItems.meteorite_sword_treated), new CrystallizerRecipe(ModItems.meteorite_sword_etched, baseTime));
registerRecipe(new ComparableStack(ModItems.powder_impure_osmiridium), new CrystallizerRecipe(ModItems.crystal_osmiridium, baseTime), new FluidStack(Fluids.SCHRABIDIC, 1_000));
for(int i = 0; i < ScrapType.values().length; i++) {
registerRecipe(new ComparableStack(ModItems.scrap_plastic, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.circuit_star_piece, 1, i), baseTime));
}
@ -132,9 +133,9 @@ public class CrystallizerRecipes extends SerializableRecipe {
FluidStack nitric = new FluidStack(Fluids.NITRIC_ACID, 500);
FluidStack organic = new FluidStack(Fluids.SOLVENT, 500);
FluidStack hiperf = new FluidStack(Fluids.RADIOSOLVENT, 500);
int oreTime = 200;
for(EnumBedrockOre ore : EnumBedrockOre.values()) {
int i = ore.ordinal();
@ -150,7 +151,7 @@ public class CrystallizerRecipes extends SerializableRecipe {
for(BedrockOreType type : BedrockOreType.values()) {
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type), bedrock), new FluidStack(Fluids.SULFURIC_ACID, 250));
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type), bedrock), new FluidStack(Fluids.SULFURIC_ACID, 250));
@ -197,10 +198,10 @@ public class CrystallizerRecipes extends SerializableRecipe {
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type), bedrock).setReq(64), new FluidStack(Fluids.NITRIC_ACID, 1000));
}
FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100)};
for(FluidStack dye : dyes) {
registerRecipe(COAL.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLACK, 4), mixingTime), dye);
@ -220,7 +221,7 @@ public class CrystallizerRecipes extends SerializableRecipe {
registerRecipe(KEY_SAND, new CrystallizerRecipe(Blocks.clay, 20), new FluidStack(Fluids.COLLOID, 1_000));
registerRecipe(new ComparableStack(ModBlocks.sand_quartz), new CrystallizerRecipe(new ItemStack(ModItems.ball_dynamite, 16), 20), new FluidStack(Fluids.NITROGLYCERIN, 1_000));
registerRecipe(NETHERQUARTZ.dust(), new CrystallizerRecipe(new ItemStack(ModItems.ball_dynamite, 4), 20), new FluidStack(Fluids.NITROGLYCERIN, 250));
/// COMPAT CERTUS QUARTZ ///
List<ItemStack> quartz = OreDictionary.getOres("crystalCertusQuartz");
if(quartz != null && !quartz.isEmpty()) {
@ -234,69 +235,69 @@ public class CrystallizerRecipes extends SerializableRecipe {
if(dustWhitePhosphorus != null && !dustWhitePhosphorus.isEmpty()) {
registerRecipe(P_WHITE.dust(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_phosphorus), utilityTime), new FluidStack(Fluids.AROMATICS, 50));
}
if(!IMCCrystallizer.buffer.isEmpty()) {
recipes.putAll(IMCCrystallizer.buffer);
MainRegistry.logger.info("Fetched " + IMCCrystallizer.buffer.size() + " IMC crystallizer recipes!");
IMCCrystallizer.buffer.clear();
}
}
public static CrystallizerRecipe getOutput(ItemStack stack, FluidType type) {
if(stack == null || stack.getItem() == null)
return null;
ComparableStack comp = new ComparableStack(stack.getItem(), 1, stack.getItemDamage());
Pair compKey = new Pair(comp, type);
if(recipes.containsKey(compKey)) return recipes.get(compKey);
String[] dictKeys = comp.getDictKeys();
for(String key : dictKeys) {
Pair dictKey = new Pair(key, type);
if(recipes.containsKey(dictKey)) return recipes.get(dictKey);
}
comp.meta = OreDictionary.WILDCARD_VALUE;
if(recipes.containsKey(compKey)) return recipes.get(compKey);
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() {
HashMap<Object, Object> recipes = new HashMap<Object, Object>();
for(Entry<Pair<Object, FluidType>, CrystallizerRecipe> entry : CrystallizerRecipes.recipes.entrySet()) {
CrystallizerRecipe recipe = entry.getValue();
Pair<Object, FluidType> key = entry.getKey();
Object input = key.getKey();
FluidType acid = key.getValue();
if(input instanceof String) {
OreDictStack stack = new OreDictStack((String) input, recipe.itemAmount);
recipes.put(new Object[] {ItemFluidIcon.make(acid, recipe.acidAmount), stack}, recipe.output);
@ -308,34 +309,34 @@ public class CrystallizerRecipes extends SerializableRecipe {
recipes.put(new Object[] {ItemFluidIcon.make(acid, recipe.acidAmount), stack}, recipe.output);
}
}
return recipes;
}
public static void registerRecipe(Object input, CrystallizerRecipe recipe) {
registerRecipe(input, recipe, new FluidStack(Fluids.PEROXIDE, 500));
}
public static void registerRecipe(Object input, CrystallizerRecipe recipe, FluidStack stack) {
recipe.acidAmount = stack.fill;
recipes.put(new Pair(input, stack.type), recipe);
amounts.put(input, recipe.itemAmount);
}
public static class CrystallizerRecipe {
public int acidAmount;
public int itemAmount = 1;
public int duration;
public ItemStack output;
public CrystallizerRecipe(Block output, int duration) { this(new ItemStack(output), duration); }
public CrystallizerRecipe(Item output, int duration) { this(new ItemStack(output), duration); }
public CrystallizerRecipe setReq(int amount) {
this.itemAmount = amount;
return this;
}
public CrystallizerRecipe(ItemStack output, int duration) {
this.output = output;
this.duration = duration;
@ -361,7 +362,7 @@ public class CrystallizerRecipes extends SerializableRecipe {
AStack input = this.readAStack(obj.get("input").getAsJsonArray());
FluidStack fluid = this.readFluidStack(obj.get("fluid").getAsJsonArray());
int duration = obj.get("duration").getAsInt();
CrystallizerRecipe cRecipe = new CrystallizerRecipe(output, duration).setReq(input.stacksize);
input.stacksize = 1;
cRecipe.acidAmount = fluid.fill;

View File

@ -19,7 +19,7 @@ import com.hbm.items.machine.ItemFluidIcon;
import net.minecraft.item.ItemStack;
public class ElectrolyserFluidRecipes extends SerializableRecipe {
public static HashMap<FluidType, ElectrolysisRecipe> recipes = new HashMap();
@Override
@ -28,27 +28,29 @@ public class ElectrolyserFluidRecipes extends SerializableRecipe {
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.REDMUD, new ElectrolysisRecipe(450, new FluidStack(Fluids.MERCURY, 150), new FluidStack(Fluids.LYE, 50), new ItemStack(ModItems.powder_titanium, 3), new ItemStack(ModItems.powder_iron, 3), new ItemStack(ModItems.powder_aluminium, 2)));
recipes.put(Fluids.ALUMINA, new ElectrolysisRecipe(200, new FluidStack(Fluids.CARBONDIOXIDE, 100), new FluidStack(Fluids.NONE, 0),40, new ItemStack(ModItems.powder_aluminium, 7), new ItemStack(ModItems.fluorite, 2)));
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)));
}
public static HashMap getRecipes() {
HashMap<Object, Object[]> recipes = new HashMap<Object, Object[]>();
for(Entry<FluidType, ElectrolysisRecipe> entry : ElectrolyserFluidRecipes.recipes.entrySet()) {
ElectrolysisRecipe recipe = entry.getValue();
FluidStack input = new FluidStack(entry.getKey(), recipe.amount);
List outputs = new ArrayList();
if(recipe.output1.type != Fluids.NONE) outputs.add(ItemFluidIcon.make(recipe.output1));
if(recipe.output2.type != Fluids.NONE) outputs.add(ItemFluidIcon.make(recipe.output2));
for(ItemStack byproduct : recipe.byproduct) outputs.add(byproduct);
recipes.put(ItemFluidIcon.make(input), outputs.toArray());
}
return recipes;
}
public static ElectrolysisRecipe getRecipe(FluidType type) {
@ -79,30 +81,30 @@ public class ElectrolyserFluidRecipes extends SerializableRecipe {
FluidStack input = this.readFluidStack(obj.get("input").getAsJsonArray());
FluidStack output1 = this.readFluidStack(obj.get("output1").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];
if(obj.has("byproducts")) byproducts = this.readItemStackArray(obj.get("byproducts").getAsJsonArray());
recipes.put(input.type, new ElectrolysisRecipe(input.fill, output1, output2, duration, byproducts));
}
@Override
public void writeRecipe(Object recipe, JsonWriter writer) throws IOException {
Entry<FluidType, ElectrolysisRecipe> rec = (Entry) recipe;
writer.name("input"); this.writeFluidStack(new FluidStack(rec.getKey(), rec.getValue().amount), writer);
writer.name("output1"); this.writeFluidStack(rec.getValue().output1, writer);
writer.name("output2"); this.writeFluidStack(rec.getValue().output2, writer);
if(rec.getValue().byproduct != null && rec.getValue().byproduct.length > 0) {
writer.name("byproducts").beginArray();
for(ItemStack stack : rec.getValue().byproduct) this.writeItemStack(stack, writer);
writer.endArray();
}
writer.name("duration").value(rec.getValue().duration);
}
@ -112,7 +114,7 @@ public class ElectrolyserFluidRecipes extends SerializableRecipe {
public int amount;
public ItemStack[] byproduct;
public int duration;
public ElectrolysisRecipe(int amount, FluidStack output1, FluidStack output2, ItemStack... byproduct) {
this.output1 = output1;
this.output2 = output2;

View File

@ -16,6 +16,7 @@ import com.hbm.inventory.material.MaterialShapes;
import com.hbm.inventory.material.Mats;
import com.hbm.inventory.material.Mats.MaterialStack;
import com.hbm.inventory.recipes.loader.SerializableRecipe;
import com.hbm.items.ItemEnums;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemFluidIcon;
import com.hbm.items.machine.ItemScraps;
@ -29,7 +30,7 @@ import com.hbm.util.Tuple.*;
import net.minecraft.item.ItemStack;
public class ElectrolyserMetalRecipes extends SerializableRecipe {
public static HashMap<AStack, ElectrolysisMetalRecipe> recipes = new HashMap();
@Override
@ -39,99 +40,101 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe {
new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(6)),
new MaterialStack(Mats.MAT_TITANIUM, MaterialShapes.INGOT.q(2)),
new ItemStack(ModItems.powder_lithium_tiny, 3)));
recipes.put(new ComparableStack(ModItems.crystal_gold), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_GOLD, MaterialShapes.INGOT.q(6)),
new MaterialStack(Mats.MAT_LEAD, MaterialShapes.INGOT.q(2)),
new ItemStack(ModItems.powder_lithium_tiny, 3),
new ItemStack(ModItems.ingot_mercury, 2)));
recipes.put(new ComparableStack(ModItems.crystal_uranium), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_URANIUM, MaterialShapes.INGOT.q(6)),
new MaterialStack(Mats.MAT_RADIUM, MaterialShapes.NUGGET.q(4)),
new ItemStack(ModItems.powder_lithium_tiny, 3)));
recipes.put(new ComparableStack(ModItems.crystal_thorium), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_THORIUM, MaterialShapes.INGOT.q(6)),
new MaterialStack(Mats.MAT_URANIUM, MaterialShapes.INGOT.q(2)),
new ItemStack(ModItems.powder_lithium_tiny, 3)));
recipes.put(new ComparableStack(ModItems.crystal_plutonium), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_PLUTONIUM, MaterialShapes.INGOT.q(6)),
new MaterialStack(Mats.MAT_POLONIUM, MaterialShapes.INGOT.q(2)),
new ItemStack(ModItems.powder_lithium_tiny, 3)));
recipes.put(new ComparableStack(ModItems.crystal_titanium), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_TITANIUM, MaterialShapes.INGOT.q(6)),
new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(2)),
new ItemStack(ModItems.powder_lithium_tiny, 3)));
recipes.put(new ComparableStack(ModItems.crystal_copper), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_COPPER, MaterialShapes.INGOT.q(6)),
new MaterialStack(Mats.MAT_LEAD, MaterialShapes.NUGGET.q(4)),
new ItemStack(ModItems.powder_lithium_tiny, 3),
new ItemStack(ModItems.sulfur, 2)));
recipes.put(new ComparableStack(ModItems.crystal_tungsten), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_TUNGSTEN, MaterialShapes.INGOT.q(6)),
new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(2)),
new ItemStack(ModItems.powder_lithium_tiny, 3)));
recipes.put(new ComparableStack(ModItems.crystal_aluminium), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_ALUMINIUM, MaterialShapes.INGOT.q(6)),
new MaterialStack(Mats.MAT_ALUMINIUM, MaterialShapes.INGOT.q(2)),
new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(2)),
new ItemStack(ModItems.chunk_ore, 4, ItemEnums.EnumChunkType.CRYOLITE.ordinal()),
new ItemStack(ModItems.powder_lithium_tiny, 3)));
recipes.put(new ComparableStack(ModItems.crystal_beryllium), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_BERYLLIUM, MaterialShapes.INGOT.q(6)),
new MaterialStack(Mats.MAT_LEAD, MaterialShapes.NUGGET.q(4)),
new ItemStack(ModItems.powder_lithium_tiny, 3),
new ItemStack(ModItems.powder_quartz, 2)));
recipes.put(new ComparableStack(ModItems.crystal_lead), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_LEAD, MaterialShapes.INGOT.q(6)),
new MaterialStack(Mats.MAT_GOLD, MaterialShapes.INGOT.q(2)),
new ItemStack(ModItems.powder_lithium_tiny, 3)));
recipes.put(new ComparableStack(ModItems.crystal_schraranium), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_SCHRABIDIUM, MaterialShapes.NUGGET.q(5)),
new MaterialStack(Mats.MAT_URANIUM, MaterialShapes.NUGGET.q(2)),
new ItemStack(ModItems.nugget_neptunium, 2)));
recipes.put(new ComparableStack(ModItems.crystal_schrabidium), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_SCHRABIDIUM, MaterialShapes.INGOT.q(6)),
new MaterialStack(Mats.MAT_PLUTONIUM, MaterialShapes.INGOT.q(2)),
new ItemStack(ModItems.powder_lithium_tiny, 3)));
recipes.put(new ComparableStack(ModItems.crystal_rare), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_ZIRCONIUM, MaterialShapes.NUGGET.q(6)),
new MaterialStack(Mats.MAT_BORON, MaterialShapes.NUGGET.q(2)),
new ItemStack(ModItems.powder_desh_mix, 3)));
recipes.put(new ComparableStack(ModItems.crystal_trixite), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_PLUTONIUM, MaterialShapes.INGOT.q(3)),
new MaterialStack(Mats.MAT_COBALT, MaterialShapes.INGOT.q(4)),
new ItemStack(ModItems.powder_niobium, 4),
new ItemStack(ModItems.powder_nitan_mix, 2)));
recipes.put(new ComparableStack(ModItems.crystal_lithium), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_LITHIUM, MaterialShapes.INGOT.q(6)),
new MaterialStack(Mats.MAT_BORON, MaterialShapes.INGOT.q(2)),
new ItemStack(ModItems.powder_quartz, 2),
new ItemStack(ModItems.fluorite, 2)));
recipes.put(new ComparableStack(ModItems.crystal_starmetal), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_DURA, MaterialShapes.INGOT.q(4)),
new MaterialStack(Mats.MAT_COBALT, MaterialShapes.INGOT.q(4)),
new ItemStack(ModItems.powder_astatine, 3),
new ItemStack(ModItems.ingot_mercury, 8)));
recipes.put(new ComparableStack(ModItems.crystal_cobalt), new ElectrolysisMetalRecipe(
new MaterialStack(Mats.MAT_COBALT, MaterialShapes.INGOT.q(3)),
new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(4)),
new ItemStack(ModItems.powder_copper, 4),
new ItemStack(ModItems.powder_lithium_tiny, 3)));
for(BedrockOreType type : BedrockOreType.values()) {
ArrayList<Pair<Object, Integer>> productsF = new ArrayList<>();
productsF.add(new Pair(type.primary1, 8));
@ -166,7 +169,7 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe {
continue;
}
}
if(product.getKey() instanceof BedrockOreOutput) solidProducts.add(ItemBedrockOreNew.extract((BedrockOreOutput) product.getKey(), product.getValue()));
if(product.getKey() instanceof ItemStack) solidProducts.add(((ItemStack) product.getKey()).copy());
}
@ -178,39 +181,39 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe {
20,
solidProducts.toArray(new ItemStack[0]));
}
public static ElectrolysisMetalRecipe getRecipe(ItemStack stack) {
if(stack == null || stack.getItem() == null) return null;
ComparableStack comp = new ComparableStack(stack).makeSingular();
if(recipes.containsKey(comp)) return recipes.get(comp);
List<String> names = ItemStackUtil.getOreDictNames(stack);
for(String name : names) {
OreDictStack ore = new OreDictStack(name);
if(recipes.containsKey(ore)) return recipes.get(ore);
}
return null;
}
public static HashMap getRecipes() {
HashMap<Object[], Object[]> recipes = new HashMap<Object[], Object[]>();
for(Entry<AStack, ElectrolysisMetalRecipe> entry : ElectrolyserMetalRecipes.recipes.entrySet()) {
ElectrolysisMetalRecipe recipe = entry.getValue();
Object[] input = new Object[] { entry.getKey().copy(), ItemFluidIcon.make(Fluids.NITRIC_ACID, 100) };
List outputs = new ArrayList();
if(recipe.output1 != null) outputs.add(ItemScraps.create(recipe.output1, true));
if(recipe.output2 != null) outputs.add(ItemScraps.create(recipe.output2, true));
for(ItemStack byproduct : recipe.byproduct) outputs.add(byproduct);
recipes.put(input, outputs.toArray());
}
return recipes;
}
@ -232,7 +235,7 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe {
@Override
public void readRecipe(JsonElement recipe) {
JsonObject obj = (JsonObject) recipe;
AStack input = this.readAStack(obj.get("input").getAsJsonArray());
MaterialStack output1 = null;
@ -251,22 +254,22 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe {
int amount2 = out2.get(1).getAsInt();
output2 = new MaterialStack(Mats.matByName.get(name2), amount2);
}
ItemStack[] byproducts = new ItemStack[0];
if(obj.has("byproducts")) byproducts = this.readItemStackArray(obj.get("byproducts").getAsJsonArray());
int duration = 600;
if(obj.has("duration")) duration = obj.get("duration").getAsInt();
recipes.put(input, new ElectrolysisMetalRecipe(output1, output2, duration, byproducts));
}
@Override
public void writeRecipe(Object recipe, JsonWriter writer) throws IOException {
Entry<AStack, ElectrolysisMetalRecipe> rec = (Entry) recipe;
writer.name("input"); this.writeAStack(rec.getKey(), writer);
if(rec.getValue().output1 != null) {
writer.name("output1");
writer.beginArray();
@ -284,23 +287,23 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe {
writer.endArray();
writer.setIndent(" ");
}
if(rec.getValue().byproduct != null && rec.getValue().byproduct.length > 0) {
writer.name("byproducts").beginArray();
for(ItemStack stack : rec.getValue().byproduct) this.writeItemStack(stack, writer);
writer.endArray();
}
writer.name("duration").value(rec.getValue().duration);
}
public static class ElectrolysisMetalRecipe {
public MaterialStack output1;
public MaterialStack output2;
public ItemStack[] byproduct;
public int duration;
public ElectrolysisMetalRecipe(MaterialStack output1, MaterialStack output2, ItemStack... byproduct) {
this.output1 = output1;
this.output2 = output2;

View File

@ -20,7 +20,7 @@ import net.minecraft.item.ItemStack;
public class FractionRecipes extends SerializableRecipe {
private static Map<FluidType, Pair<FluidStack, FluidStack>> fractions = new HashMap();
@Override
public void registerDefaults() {
fractions.put(Fluids.HEAVYOIL, new Pair(new FluidStack(Fluids.BITUMEN, 30), new FluidStack(Fluids.SMEAR, 70)));
@ -41,38 +41,39 @@ public class FractionRecipes extends SerializableRecipe {
fractions.put(Fluids.NAPHTHA_COKER, new Pair(new FluidStack(Fluids.NAPHTHA_CRACK, 75), new FluidStack(Fluids.LIGHTOIL_CRACK, 25)));
fractions.put(Fluids.GAS_COKER, new Pair(new FluidStack(Fluids.AROMATICS, 25), new FluidStack(Fluids.CARBONDIOXIDE, 75)));
fractions.put(Fluids.CHLOROCALCITE_MIX, new Pair(new FluidStack(Fluids.CHLOROCALCITE_CLEANED, 50), new FluidStack(Fluids.COLLOID, 50)));
fractions.put(Fluids.BAUXITE_SOLUTION, new Pair(new FluidStack(Fluids.REDMUD, 50), new FluidStack(Fluids.SODIUM_ALUMINATE, 50)));
}
public static Pair<FluidStack, FluidStack> getFractions(FluidType oil) {
return fractions.get(oil);
}
public static HashMap<Object, Object> getFractionRecipesForNEI() {
HashMap<Object, Object> recipes = new HashMap();
for(Entry<FluidType, Pair<FluidStack, FluidStack>> recipe : fractions.entrySet()) {
ItemStack[] out = new ItemStack[] {
ItemFluidIcon.make(recipe.getValue().getKey()),
ItemFluidIcon.make(recipe.getValue().getValue())
};
recipes.put(ItemFluidIcon.make(recipe.getKey(), 100), out);
}
return recipes;
}
@Override
public String getFileName() {
return "hbmFractions.json";
}
@Override
public String getComment() {
return "Inputs are always 100mB, set output quantities accordingly.";
}
@Override
public Object getRecipeObject() {
return fractions;
@ -82,7 +83,7 @@ public class FractionRecipes extends SerializableRecipe {
public void deleteRecipes() {
fractions.clear();
}
@Override
public void readRecipe(JsonElement recipe) {
JsonObject obj = (JsonObject) recipe;
@ -90,14 +91,14 @@ public class FractionRecipes extends SerializableRecipe {
FluidType input = Fluids.fromName(obj.get("input").getAsString());
FluidStack output1 = this.readFluidStack(obj.get("output1").getAsJsonArray());
FluidStack output2 = this.readFluidStack(obj.get("output2").getAsJsonArray());
fractions.put(input, new Pair(output1, output2));
}
@Override
public void writeRecipe(Object recipe, JsonWriter writer) throws IOException {
Entry<FluidType, Pair<FluidStack, FluidStack>> rec = (Entry<FluidType, Pair<FluidStack, FluidStack>>) recipe;
writer.name("input").value(rec.getKey().getName());
writer.name("output1"); this.writeFluidStack(rec.getValue().getKey(), writer);
writer.name("output2"); this.writeFluidStack(rec.getValue().getValue(), writer);

View File

@ -12,6 +12,8 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter;
import com.hbm.blocks.BlockEnums;
import com.hbm.blocks.ModBlocks;
import com.hbm.inventory.FluidStack;
import com.hbm.inventory.RecipesCommon.AStack;
import com.hbm.inventory.RecipesCommon.ComparableStack;
@ -19,6 +21,7 @@ import com.hbm.inventory.RecipesCommon.OreDictStack;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.recipes.loader.SerializableRecipe;
import com.hbm.items.ItemEnums;
import com.hbm.items.ModItems;
import com.hbm.items.ItemEnums.EnumAshType;
import com.hbm.items.machine.ItemFluidIcon;
@ -30,7 +33,7 @@ import net.minecraftforge.oredict.OreDictionary;
public class MixerRecipes extends SerializableRecipe {
public static HashMap<FluidType, MixerRecipe[]> recipes = new HashMap();
@Override
public void registerDefaults() {
register(Fluids.COOLANT, new MixerRecipe(2_000, 50).setStack1(new FluidStack(Fluids.WATER, 1_800)).setSolid(new OreDictStack(KNO.dust())));
@ -59,7 +62,7 @@ public class MixerRecipes extends SerializableRecipe {
register(Fluids.NITRIC_ACID, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.SULFURIC_ACID, 500)).setSolid(new OreDictStack(KNO.dust())));
register(Fluids.RADIOSOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250)));
register(Fluids.SCHRABIDIC, new MixerRecipe(16_000, 100).setStack1(new FluidStack(Fluids.SAS3, 8_000)).setStack2(new FluidStack(Fluids.PEROXIDE, 6_000)).setSolid(new ComparableStack(ModItems.pellet_charged)));
register(Fluids.PETROIL, new MixerRecipe(1_000, 30).setStack1(new FluidStack(Fluids.RECLAIMED, 800)).setStack2(new FluidStack(Fluids.LUBRICANT, 200)));
register(Fluids.LUBRICANT,
new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.HEATINGOIL, 500)).setStack2(new FluidStack(Fluids.UNSATURATEDS, 500)),
@ -71,7 +74,7 @@ public class MixerRecipes extends SerializableRecipe {
register(Fluids.NITROGLYCERIN,
new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.PETROLEUM, 1_000)).setStack2(new FluidStack(Fluids.NITRIC_ACID, 1_000)),
new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.FISHOIL, 500)).setStack2(new FluidStack(Fluids.NITRIC_ACID, 500)));
register(Fluids.THORIUM_SALT, new MixerRecipe(1_000, 30).setStack1(new FluidStack(Fluids.CHLORINE, 1000)).setSolid(new OreDictStack(TH232.dust())));
register(Fluids.SYNGAS, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.COALOIL, 500)).setStack2(new FluidStack(Fluids.STEAM, 500)));
@ -86,36 +89,41 @@ public class MixerRecipes extends SerializableRecipe {
register(Fluids.DIESEL_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.DIESEL, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100)));
register(Fluids.DIESEL_CRACK_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.DIESEL_CRACK, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100)));
register(Fluids.KEROSENE_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.KEROSENE, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100)));
register(Fluids.CHLOROCALCITE_SOLUTION, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.WATER, 250)).setStack2(new FluidStack(Fluids.NITRIC_ACID, 250)).setSolid(new OreDictStack(CHLOROCALCITE.dust())));
register(Fluids.CHLOROCALCITE_MIX, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.CHLOROCALCITE_SOLUTION, 500)).setStack2(new FluidStack(Fluids.SULFURIC_ACID, 500)).setSolid(new ComparableStack(ModItems.powder_flux)));
register(Fluids.PHEROMONE_M, new MixerRecipe(2000, 10).setStack1(new FluidStack(Fluids.PHEROMONE, 1500)).setStack2(new FluidStack(Fluids.BLOOD, 500)).setSolid(new ComparableStack(ModItems.pill_herbal)));
register(Fluids.BAUXITE_SOLUTION, new MixerRecipe(300, 80).setStack1(new FluidStack(Fluids.LYE, 50)).setSolid(new ComparableStack(ModBlocks.stone_resource, 1, BlockEnums.EnumStoneType.BAUXITE.ordinal())));
register(Fluids.LYE, new MixerRecipe(50, 100).setStack1(new FluidStack(Fluids.WATER, 500)).setSolid(new ComparableStack(ModItems.powder_ash, 2, EnumAshType.WOOD)));
register(Fluids.ALUMINA, new MixerRecipe(200, 40).setStack1(new FluidStack(Fluids.SODIUM_ALUMINATE, 150)).setSolid(new OreDictStack(F.dust(), 3)),
new MixerRecipe(300, 40).setStack1(new FluidStack(Fluids.SODIUM_ALUMINATE, 150)).setSolid(new ComparableStack(DictFrame.fromOne(ModItems.chunk_ore, ItemEnums.EnumChunkType.CRYOLITE))));
register(Fluids.PERFLUOROMETHYL, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.PETROLEUM, 1000)).setStack2(new FluidStack(Fluids.UNSATURATEDS, 500)).setSolid(new OreDictStack(F.dust())));
}
public static void register(FluidType type, MixerRecipe... rec) {
recipes.put(type, rec);
}
public static MixerRecipe[] getOutput(FluidType type) {
return recipes.get(type);
}
public static MixerRecipe getOutput(FluidType type, int index) {
MixerRecipe[] recs = recipes.get(type);
if(recs == null) return null;
return recs[index % recs.length];
}
@Override
public String getFileName() {
return "hbmMixer.json";
}
@Override
public Object getRecipeObject() {
return recipes;
@ -125,43 +133,43 @@ public class MixerRecipes extends SerializableRecipe {
public void deleteRecipes() {
recipes.clear();
}
@Override
public void readRecipe(JsonElement recipe) {
JsonObject obj = (JsonObject) recipe;
FluidType outputType = Fluids.fromName(obj.get("outputType").getAsString());
JsonArray recipeArray = obj.get("recipes").getAsJsonArray();
MixerRecipe[] array = new MixerRecipe[recipeArray.size()];
for(int i = 0; i < recipeArray.size(); i++) {
JsonObject sub = recipeArray.get(i).getAsJsonObject();
MixerRecipe mix = new MixerRecipe(sub.get("outputAmount").getAsInt(), sub.get("duration").getAsInt());
if(sub.has("input1")) mix.setStack1(this.readFluidStack(sub.get("input1").getAsJsonArray()));
if(sub.has("input2")) mix.setStack2(this.readFluidStack(sub.get("input2").getAsJsonArray()));
if(sub.has("solidInput")) mix.setSolid(this.readAStack(sub.get("solidInput").getAsJsonArray()));
array[i] = mix;
}
recipes.put(outputType, array);
}
@Override
public void writeRecipe(Object recipe, JsonWriter writer) throws IOException {
Entry<FluidType, MixerRecipe[]> rec = (Entry<FluidType, MixerRecipe[]>) recipe;
MixerRecipe[] recipes = rec.getValue();
writer.name("outputType").value(rec.getKey().getName());
writer.name("recipes").beginArray();
for(MixerRecipe mix : recipes) {
writer.beginObject();
writer.name("duration").value(mix.processTime);
writer.name("outputAmount").value(mix.output);
if(mix.input1 != null) { writer.name("input1"); this.writeFluidStack(mix.input1, writer); }
if(mix.input2 != null) { writer.name("input2"); this.writeFluidStack(mix.input2, writer); }
if(mix.solidInput != null) { writer.name("solidInput"); this.writeAStack(mix.solidInput, writer); }
@ -171,36 +179,36 @@ public class MixerRecipes extends SerializableRecipe {
}
public static HashMap getRecipes() {
HashMap<Object[], Object> recipes = new HashMap<Object[], Object>();
for(Entry<FluidType, MixerRecipe[]> entry : MixerRecipes.recipes.entrySet()) {
FluidType type = entry.getKey();
MixerRecipe[] recs = entry.getValue();
for(MixerRecipe recipe : recs) {
FluidStack output = new FluidStack(type, recipe.output);
List<Object> objects = new ArrayList();
if(recipe.input1 != null) objects.add(ItemFluidIcon.make(recipe.input1));
if(recipe.input2 != null) objects.add(ItemFluidIcon.make(recipe.input2));
if(recipe.solidInput != null) objects.add(recipe.solidInput);
recipes.put(objects.toArray(), ItemFluidIcon.make(output));
}
}
return recipes;
}
public static class MixerRecipe {
public FluidStack input1;
public FluidStack input2;
public AStack solidInput;
public int processTime;
public int output;
protected MixerRecipe(int output, int processTime) {
this.output = output;
this.processTime = processTime;

View File

@ -2,6 +2,7 @@ package com.hbm.inventory.recipes;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.google.gson.JsonElement;
@ -12,7 +13,6 @@ import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.recipes.loader.SerializableRecipe;
import com.hbm.items.ModItems;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
@ -26,65 +26,65 @@ public class ParticleAcceleratorRecipes extends SerializableRecipe {
recipes.add(new ParticleAcceleratorRecipe(
new ComparableStack(ModItems.particle_hydrogen),
new ComparableStack(ModItems.particle_copper),
900,
new ItemStack(ModItems.particle_aproton),
new ItemStack(ModItems.particle_aelectron)
300,
new ItemStack(ModItems.particle_amat),
null
));
recipes.add(new ParticleAcceleratorRecipe(
new ComparableStack(ModItems.particle_amat),
new ComparableStack(ModItems.particle_amat),
900,
400,
new ItemStack(ModItems.particle_aschrab),
new ItemStack(ModItems.particle_empty)
null
));
recipes.add(new ParticleAcceleratorRecipe(
new ComparableStack(ModItems.particle_aschrab),
new ComparableStack(ModItems.particle_aschrab),
100000,
10_000,
new ItemStack(ModItems.particle_dark),
new ItemStack(ModItems.particle_empty)
null
));
recipes.add(new ParticleAcceleratorRecipe(
new ComparableStack(ModItems.particle_hydrogen),
new ComparableStack(ModItems.particle_amat),
2000,
2_500,
new ItemStack(ModItems.particle_muon),
new ItemStack(ModItems.particle_empty)
null
));
recipes.add(new ParticleAcceleratorRecipe(
new ComparableStack(ModItems.particle_hydrogen),
new ComparableStack(ModItems.particle_lead),
5000,
6_500,
new ItemStack(ModItems.particle_higgs),
new ItemStack(ModItems.particle_empty)
null
));
recipes.add(new ParticleAcceleratorRecipe(
new ComparableStack(ModItems.particle_muon),
new ComparableStack(ModItems.particle_higgs),
2000,
5_000,
new ItemStack(ModItems.particle_tachyon),
new ItemStack(ModItems.particle_empty)
null
));
recipes.add(new ParticleAcceleratorRecipe(
new ComparableStack(ModItems.particle_muon),
new ComparableStack(ModItems.particle_dark),
100000,
12_500,
new ItemStack(ModItems.particle_strange),
new ItemStack(ModItems.particle_empty)
null
));
recipes.add(new ParticleAcceleratorRecipe(
new ComparableStack(ModItems.particle_strange),
new ComparableStack(ModItems.powder_magic),
500000,
12_500,
new ItemStack(ModItems.particle_sparkticle),
new ItemStack(ModItems.dust)
));
recipes.add(new ParticleAcceleratorRecipe(
new ComparableStack(ModItems.particle_sparkticle),
new ComparableStack(ModItems.particle_higgs),
1000000,
70_000,
new ItemStack(ModItems.particle_digamma),
new ItemStack(ModItems.particle_empty)
null
));
recipes.add(new ParticleAcceleratorRecipe(
new ComparableStack(Items.chicken),
@ -93,21 +93,13 @@ public class ParticleAcceleratorRecipes extends SerializableRecipe {
new ItemStack(ModItems.nugget),
new ItemStack(ModItems.nugget)
));
recipes.add(new ParticleAcceleratorRecipe(
new ComparableStack(Blocks.sand),
new ComparableStack(Blocks.sand),
10,
new ItemStack(ModItems.static_sandwich),
new ItemStack(ModItems.static_sandwich)
));
}
public ParticleAcceleratorRecipe getOutput(ItemStack input1, ItemStack input2, int momentum) {
public static ParticleAcceleratorRecipe getOutput(ItemStack input1, ItemStack input2) {
for(ParticleAcceleratorRecipe recipe : recipes) {
if(momentum >= recipe.momentum &&
((recipe.input1.matchesRecipe(input1, true) && recipe.input2.matchesRecipe(input2, true)) ||
if(((recipe.input1.matchesRecipe(input1, true) && recipe.input2.matchesRecipe(input2, true)) ||
(recipe.input1.matchesRecipe(input2, true) && recipe.input2.matchesRecipe(input1, true)))) {
return recipe;
}
@ -116,6 +108,20 @@ public class ParticleAcceleratorRecipes extends SerializableRecipe {
return null;
}
public static HashMap getRecipes() {
HashMap<Object[], Object> recipes = new HashMap<Object[], Object>();
for(ParticleAcceleratorRecipe entry : ParticleAcceleratorRecipes.recipes) {
List<ItemStack> outputs = new ArrayList();
if(entry.output1 != null) outputs.add(entry.output1);
if(entry.output2 != null) outputs.add(entry.output2);
recipes.put(new Object[] {entry.input1, entry.input2}, outputs.toArray(new ItemStack[0]));
}
return recipes;
}
public static class ParticleAcceleratorRecipe {
public AStack input1;
public AStack input2;
@ -176,7 +182,7 @@ public class ParticleAcceleratorRecipes extends SerializableRecipe {
writer.name("outputs").beginArray();
this.writeItemStack(rec.output1, writer);
this.writeItemStack(rec.output2, writer);
if(rec.output2 != null) this.writeItemStack(rec.output2, writer);
writer.endArray();
}
}

View File

@ -18,6 +18,8 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe;
import com.hbm.items.ItemEnums.EnumSecretType;
import com.hbm.items.food.ItemConserve.EnumFoodType;
import com.hbm.items.ModItems;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
@ -71,6 +73,17 @@ public class PedestalRecipes extends SerializableRecipe {
new OreDictStack(BSCCO.ingot(), 16), new OreDictStack(STAR.block(), 64), new OreDictStack(BSCCO.ingot(), 16),
new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL), new ComparableStack(ModItems.item_secret, 2, EnumSecretType.CONTROLLER), new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL))
.extra(PedestalExtraCondition.FULL_MOON));
recipes.add(new PedestalRecipe(new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.FOLLY_SM.ordinal()),
new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1),
new ComparableStack(ModItems.powder_magic), new ComparableStack(ModBlocks.moon_turf), new ComparableStack(ModItems.powder_magic),
new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1))
.extra(PedestalExtraCondition.FULL_MOON));
recipes.add(new PedestalRecipe(new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.FOLLY_NUKE.ordinal()),
new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1),
new ComparableStack(ModItems.powder_magic), new ComparableStack(ModItems.ammo_standard, 4, EnumAmmo.NUKE_HIGH), new ComparableStack(ModItems.powder_magic),
new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1))
.extra(PedestalExtraCondition.FULL_MOON));
}
@Override

View File

@ -29,7 +29,7 @@ import com.hbm.items.machine.ItemScraps;
import net.minecraft.item.ItemStack;
public class RotaryFurnaceRecipes extends SerializableRecipe {
public static List<RotaryFurnaceRecipe> recipes = new ArrayList();
@Override
@ -37,7 +37,7 @@ public class RotaryFurnaceRecipes extends SerializableRecipe {
recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(1)), 100, 100, new OreDictStack(IRON.ingot()), new OreDictStack(COAL.gem())));
recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(1)), 100, 100, new OreDictStack(IRON.ingot()), new OreDictStack(ANY_COKE.gem())));
recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(2)), 200, 25, new OreDictStack(IRON.fragment(), 9), new OreDictStack(COAL.gem())));
recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(3)), 200, 25, new OreDictStack(IRON.fragment(), 9), new OreDictStack(ANY_COKE.gem())));
recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(4)), 400, 25, new OreDictStack(IRON.fragment(), 9), new OreDictStack(ANY_COKE.gem()), new ComparableStack(ModItems.powder_flux)));
@ -47,43 +47,45 @@ public class RotaryFurnaceRecipes extends SerializableRecipe {
recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_GUNMETAL, INGOT.q(4)), 200, 100, new OreDictStack(CU.ingot(), 3), new OreDictStack(AL.ingot(), 1)));
recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_WEAPONSTEEL, INGOT.q(1)), 200, 400, new FluidStack(Fluids.GAS_COKER, 100), new OreDictStack(STEEL.ingot(), 1), new ComparableStack(ModItems.powder_flux, 2)));
recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_SATURN, INGOT.q(2)), 200, 400, new FluidStack(Fluids.REFORMGAS, 250), new OreDictStack(DURA.dust(), 4), new OreDictStack(CU.dust())));
recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_ALUMINIUM, INGOT.q(2)), 100, 400, new FluidStack(Fluids.SODIUM_ALUMINATE, 150)));
recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_ALUMINIUM, INGOT.q(3)), 40, 200, new FluidStack(Fluids.SODIUM_ALUMINATE, 150), new ComparableStack(ModItems.powder_flux, 2)));
}
public static HashMap getRecipes() {
HashMap<Object, Object> recipes = new HashMap<Object, Object>();
for(RotaryFurnaceRecipe recipe : RotaryFurnaceRecipes.recipes) {
int size = recipe.ingredients.length + (recipe.fluid != null ? 1 : 0);
Object[] array = new Object[size];
for(int i = 0; i < recipe.ingredients.length; i++) {
array[i] = recipe.ingredients[i];
}
if(recipe.fluid != null) array[size - 1] = ItemFluidIcon.make(recipe.fluid);
recipes.put(array, ItemScraps.create(recipe.output, true));
}
return recipes;
}
public static RotaryFurnaceRecipe getRecipe(ItemStack... inputs) {
outer:
for(RotaryFurnaceRecipe recipe : recipes) {
List<AStack> recipeList = new ArrayList();
for(AStack ingredient : recipe.ingredients) recipeList.add(ingredient);
for(int i = 0; i < inputs.length; i++) {
ItemStack inputStack = inputs[i];
if(inputStack != null) {
boolean hasMatch = false;
Iterator<AStack> iterator = recipeList.iterator();
@ -102,10 +104,10 @@ public class RotaryFurnaceRecipes extends SerializableRecipe {
}
}
}
if(recipeList.isEmpty()) return recipe;
}
return null;
}
@ -127,34 +129,34 @@ public class RotaryFurnaceRecipes extends SerializableRecipe {
@Override
public void readRecipe(JsonElement recipe) {
JsonObject obj = (JsonObject) recipe;
AStack[] inputs = this.readAStackArray(obj.get("inputs").getAsJsonArray());
FluidStack fluid = obj.has("fluid") ? this.readFluidStack(obj.get("fluid").getAsJsonArray()) : null;
JsonArray array = obj.get("output").getAsJsonArray();
MaterialStack stack = new MaterialStack(Mats.matByName.get(array.get(0).getAsString()), array.get(1).getAsInt());
int duration = obj.get("duration").getAsInt();
int steam = obj.get("steam").getAsInt();
recipes.add(new RotaryFurnaceRecipe(stack, duration, steam, fluid, inputs));
}
@Override
public void writeRecipe(Object obj, JsonWriter writer) throws IOException {
RotaryFurnaceRecipe recipe = (RotaryFurnaceRecipe) obj;
writer.name("inputs").beginArray();
for(AStack aStack : recipe.ingredients) {
this.writeAStack(aStack, writer);
}
writer.endArray();
if(recipe.fluid != null) {
writer.name("fluid");
this.writeFluidStack(recipe.fluid, writer);
}
writer.name("output").beginArray();
writer.setIndent("");
writer.value(recipe.output.material.names[0]).value(recipe.output.amount);
@ -164,15 +166,15 @@ public class RotaryFurnaceRecipes extends SerializableRecipe {
writer.name("duration").value(recipe.duration);
writer.name("steam").value(recipe.steam);
}
public static class RotaryFurnaceRecipe {
public AStack[] ingredients;
public FluidStack fluid;
public MaterialStack output;
public int duration;
public int steam;
public RotaryFurnaceRecipe(MaterialStack output, int duration, int steam, FluidStack fluid, AStack... ingredients) {
this.ingredients = ingredients;
this.fluid = fluid;
@ -180,7 +182,7 @@ public class RotaryFurnaceRecipes extends SerializableRecipe {
this.duration = duration;
this.steam = steam;
}
public RotaryFurnaceRecipe(MaterialStack output, int duration, int steam, AStack... ingredients) {
this(output, duration, steam, null, ingredients);
}

View File

@ -28,7 +28,7 @@ public class SILEXRecipes {
private static HashMap<Object, SILEXRecipe> recipes = new HashMap();
private static HashMap<ComparableStack, ComparableStack> itemTranslation = new HashMap();
private static HashMap<String, String> dictTranslation = new HashMap();
public static void register() {
itemTranslation.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.UF6.getID()), new ComparableStack(ModItems.ingot_uranium));
@ -37,12 +37,12 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nugget_u235), 1)
.addOut(new ItemStack(ModItems.nugget_u238), 11)
);
recipes.put(new ComparableStack(ModItems.ingot_pu_mix), new SILEXRecipe(900, 100, 2)
.addOut(new ItemStack(ModItems.nugget_pu239), 6)
.addOut(new ItemStack(ModItems.nugget_pu240), 3)
);
recipes.put(new ComparableStack(ModItems.ingot_am_mix), new SILEXRecipe(900, 100, 2)
.addOut(new ItemStack(ModItems.nugget_am241), 3)
.addOut(new ItemStack(ModItems.nugget_am242), 6)
@ -67,20 +67,20 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nugget_australium_lesser), 5)
.addOut(new ItemStack(ModItems.nugget_australium_greater), 1)
);
recipes.put(new ComparableStack(ModItems.crystal_schraranium), new SILEXRecipe(900, 100, 3)
.addOut(new ItemStack(ModItems.nugget_schrabidium), 5)
.addOut(new ItemStack(ModItems.nugget_uranium), 2)
.addOut(new ItemStack(ModItems.nugget_neptunium), 2)
);
recipes.put(new ComparableStack(ModBlocks.ore_tikite), new SILEXRecipe(900, 100, EnumWavelengths.UV)
.addOut(new ItemStack(ModItems.powder_plutonium), 2)
.addOut(new ItemStack(ModItems.powder_cobalt), 3)
.addOut(new ItemStack(ModItems.powder_niobium), 3)
.addOut(new ItemStack(ModItems.powder_nitan_mix), 2)
);
recipes.put(new ComparableStack(ModItems.crystal_trixite), new SILEXRecipe(1200, 100, EnumWavelengths.UV)
.addOut(new ItemStack(ModItems.powder_plutonium), 2)
.addOut(new ItemStack(ModItems.powder_cobalt), 3)
@ -100,151 +100,161 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.powder_impure_osmiridium), 1)
);
recipes.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.VITRIOL.getID()), new SILEXRecipe(1000, 1000, EnumWavelengths.IR)
recipes.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.VITRIOL.getID()), new SILEXRecipe(1000, 300, EnumWavelengths.IR)
.addOut(new ItemStack(ModItems.powder_bromine), 5)
.addOut(new ItemStack(ModItems.powder_iodine), 5)
.addOut(new ItemStack(ModItems.powder_iron), 5)
.addOut(new ItemStack(ModItems.sulfur), 15)
);
recipes.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.REDMUD.getID()), new SILEXRecipe(300, 50, EnumWavelengths.VISIBLE)
.addOut(new ItemStack(ModItems.powder_aluminium), 10)
.addOut(new ItemStack(ModItems.powder_neodymium_tiny, 3), 5)
.addOut(new ItemStack(ModItems.powder_boron_tiny, 3), 5)
.addOut(new ItemStack(ModItems.nugget_zirconium), 5)
.addOut(new ItemStack(ModItems.powder_iron), 20)
.addOut(new ItemStack(ModItems.powder_titanium), 15)
.addOut(new ItemStack(ModItems.powder_sodium), 10)
);
for(int i = 0; i < 5; i++) {
// UEU //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_ueu, 1, i), new SILEXRecipe(600, 100, 1) //NU and MEU will breed more plutonium due to their higher concentrations of U-238
.addOut(new ItemStack(ModItems.nugget_uranium), 86 - i * 11) //NU is unenriched to the point where it'll always be lower burnup; so more Pu239 for longer
.addOut(i < 2 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 10 + i * 3)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 2 + 3 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 2 + 5 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_ueu, 1, i + 5), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_uranium), 86 - i * 11)
.addOut(i < 2 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 10 + i * 3)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 2 + 3 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 1 + 5 * i) );
// MEU //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_meu, 1, i), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.nugget_uranium_fuel), 84 - i * 16)
.addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 5 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 7 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_meu, 1, i + 5), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_uranium_fuel), 83 - i * 16)
.addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 5 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 7 * i) );
// HEU233 //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_heu233, 1, i), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.nugget_u233), 90 - i * 20)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM233.ordinal()), 4 + 8 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM233.ordinal()), 6 + 12 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_heu233, 1, i + 5), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_u233), 89 - i * 20)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM233.ordinal()), 4 + 8 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM233.ordinal()), 6 + 12 * i) );
// HEU235 //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_heu235, 1, i), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.nugget_u235), 90 - i * 20)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 8 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 12 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_heu235, 1, i + 5), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_u235), 89 - i * 20)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 8 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 12 * i) );
// TH232 //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_thmeu, 1, i), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.nugget_thorium_fuel), 84 - i * 20)
.addOut(new ItemStack(ModItems.nugget_u233), 6 + i * 4)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.THORIUM.ordinal()), 10 + 16 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_thmeu, 1, i + 5), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_thorium_fuel), 83 - i * 20)
.addOut(new ItemStack(ModItems.nugget_u233), 6 + i * 4)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.THORIUM.ordinal()), 10 + 16 * i) );
// LEP //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_lep, 1, i), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.nugget_plutonium_fuel), 84 - i * 14)
.addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 2)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 7 + 8 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 3 + 4 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_lep, 1, i + 5), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_plutonium_fuel), 83 - i * 14)
.addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 2)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 7 + 8 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 3 + 4 * i) );
// MEP //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_mep, 1, i), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.nugget_pu_mix), 85 - i * 20)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 10 + 10 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 5 + 5 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_mep, 1, i + 5), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_pu_mix), 84 - i * 20)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 10 + 10 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 5 + 5 * i) );
// HEP239 //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_hep239, 1, i), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.nugget_pu239), 85 - i * 20)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 15 + 20 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_hep239, 1, i + 5), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_pu239), 84 - i * 20)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 15 + 20 * i) );
// HEP241 //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_hep241, 1, i), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.nugget_pu241), 85 - i * 20)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM241.ordinal()), 15 + 20 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_hep241, 1, i + 5), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_pu241), 84 - i * 20)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM241.ordinal()), 15 + 20 * i) );
// MEN //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_men, 1, i), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.nugget_neptunium_fuel), 84 - i * 14)
.addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 2)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 4 + 5 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 6 + 7 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_men, 1, i + 5), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_neptunium_fuel), 83 - i * 14)
.addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 2)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 4 + 5 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 6 + 7 * i) );
// HEN //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_hen, 1, i), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.nugget_neptunium), 90 - i * 20)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 4 + 8 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 6 + 12 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_hen, 1, i + 5), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_neptunium), 89 - i * 20)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 4 + 8 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 6 + 12 * i) );
// MOX //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_mox, 1, i), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.nugget_mox_fuel), 84 - i * 20)
@ -253,7 +263,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 3 + 5 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 3 + 5 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 2 + 3 * i) );
//TODO: Readd xenon processing if/when the NEI handler can display more than 6 outputs properly
recipes.put(new ComparableStack(ModItems.rbmk_pellet_mox, 1, i + 5), new SILEXRecipe(600, 100, 1) //Plutonium processing isn't possible w/o fucking up the NEI handler or removing xenon
.addOut(new ItemStack(ModItems.nugget_mox_fuel), 84 - i * 20) //To prevent people from taking advantage of differing waste types, conform to the latter
@ -262,33 +272,33 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 3 + 5 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 3 + 5 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 2 + 3 * i) );
// LEAUS //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_leaus, 1, i), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.nugget_australium_lesser), 90 - i * 20)
.addOut(new ItemStack(ModItems.nugget_lead), 6 + 12 * i)
.addOut(new ItemStack(ModItems.nugget_pb209), 4 + 8 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_leaus, 1, i + 5), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_australium_lesser), 89 - i * 20)
.addOut(new ItemStack(ModItems.nugget_lead), 6 + 12 * i)
.addOut(new ItemStack(ModItems.nugget_pb209), 4 + 8 * i) );
// HEAUS //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_heaus, 1, i), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.nugget_australium_greater), 90 - i * 20)
.addOut(new ItemStack(ModItems.nugget_au198), 5 + 10 * i)
.addOut(new ItemStack(Items.gold_nugget), 3 + 6 * i)
.addOut(new ItemStack(ModItems.nugget_pb209), 2 + 4 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_heaus, 1, i + 5), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_australium_greater), 89 - i * 20)
.addOut(new ItemStack(ModItems.nugget_au198), 5 + 10 * i)
.addOut(new ItemStack(Items.gold_nugget), 3 + 6 * i)
.addOut(new ItemStack(ModItems.nugget_pb209), 2 + 4 * i) );
// LES //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_les, 1, i), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.nugget_les), 90 - i * 20)
@ -297,7 +307,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 1 + 2 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 1 + 2 * i)
.addOut(new ItemStack(ModItems.powder_coal_tiny), 4 + 8 * i) );
//TODO: Readd xenon processing if/when the NEI handler can display more than 6 outputs properly
recipes.put(new ComparableStack(ModItems.rbmk_pellet_les, 1, i + 5), new SILEXRecipe(600, 100, 2) //I'd rather not fuck up the NEI handler, so six items it is
.addOut(new ItemStack(ModItems.nugget_les), 90 - i * 20) //Just bullshit something about "not enough np237 for extractable amounts of xe135"
@ -305,8 +315,8 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 2 + 5 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 1 + 2 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 1 + 2 * i)
.addOut(new ItemStack(ModItems.powder_coal_tiny), 4 + 8 * i) );
.addOut(new ItemStack(ModItems.powder_coal_tiny), 4 + 8 * i) );
// MES //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_mes, 1, i), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.nugget_schrabidium_fuel), 90 - i * 20)
@ -315,7 +325,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 1 + 3 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 2 + 4 * i)
.addOut(new ItemStack(ModItems.powder_coal_tiny), 4 + 6 * i) );
//TODO: Readd xenon processing if/when the NEI handler can display more than 6 outputs properly
recipes.put(new ComparableStack(ModItems.rbmk_pellet_mes, 1, i + 5), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.nugget_schrabidium_fuel), 90 - i * 20) //ditto
@ -324,7 +334,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 1 + 3 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 2 + 4 * i)
.addOut(new ItemStack(ModItems.powder_coal_tiny), 4 + 6 * i) );
// HES //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_hes, 1, i), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.nugget_hes), 90 - i * 20)
@ -333,7 +343,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 2 + 5 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 4 + 6 * i)
.addOut(new ItemStack(ModItems.powder_coal_tiny), 2 + 4 * i) );
//TODO: Readd xenon processing if/when the NEI handler can display more than 6 outputs properly
recipes.put(new ComparableStack(ModItems.rbmk_pellet_hes, 1, i + 5), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.nugget_hes), 90 - i * 20) //ditto
@ -342,17 +352,17 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 2 + 5 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 4 + 6 * i)
.addOut(new ItemStack(ModItems.powder_coal_tiny), 2 + 4 * i) );
// BALEFIRE //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_balefire, 1, i), new SILEXRecipe(400, 100, 3)
.addOut(new ItemStack(ModItems.powder_balefire), 90 - i * 20)
.addOut(new ItemStack(ModItems.nuclear_waste_tiny), 10 + 20 * i) );
// FLASHGOLD //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_balefire_gold, 1, i), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.nugget_au198), 90 - 20 * i)
.addOut(new ItemStack(ModItems.powder_balefire), 10 + 20 * i) );
// FLASHLEAD //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_flashlead, 1, i), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.nugget_au198), 44 - 10 * i)
@ -360,14 +370,14 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nugget_bismuth), 1 + 6 * i)
.addOut(new ItemStack(ModItems.nugget_mercury), 1 + 6 * i)
.addOut(new ItemStack(ModItems.nugget_gh336), 10 + 8 * i) ); //Reimumunch
// POBE //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_po210be, 1, i), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.nugget_polonium), 45 - 10 * i)
.addOut(new ItemStack(ModItems.nugget_beryllium), 45 - 10 * i)
.addOut(new ItemStack(ModItems.nugget_lead), 5 + 10 * i)
.addOut(new ItemStack(ModItems.powder_coal_tiny), 5 + 10 * i) );
// PUBE //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_pu238be, 1, i), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.nugget_pu238), 45 - 10 * i)
@ -375,7 +385,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nugget_lead), 3 + 5 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_tiny), 2 + 5 * i)
.addOut(new ItemStack(ModItems.powder_coal_tiny), 5 + 10 * i) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_pu238be, 1, i + 5), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
.addOut(new ItemStack(ModItems.nugget_pu238), 44 - 10 * i)
@ -383,7 +393,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nugget_lead), 3 + 5 * i)
.addOut(new ItemStack(ModItems.nuclear_waste_tiny), 2 + 5 * i)
.addOut(new ItemStack(ModItems.powder_coal_tiny), 5 + 10 * i) );
// RABE //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_ra226be, 1, i), new SILEXRecipe(600, 100, 1)
.addOut(new ItemStack(ModItems.nugget_ra226), 45 - 10 * i)
@ -391,7 +401,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nugget_lead), 3 + 5 * i)
.addOut(new ItemStack(ModItems.nugget_polonium), 2 + 5 * i)
.addOut(new ItemStack(ModItems.powder_coal_tiny), 5 + 10 * i) );
// DRX //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_drx, 1, i), new SILEXRecipe(600, 100, 4)
.addOut(new ItemStack(ModItems.undefined), 1)
@ -400,7 +410,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.undefined), 1)
.addOut(new ItemStack(ModItems.undefined), 1)
.addOut(new ItemStack(ModItems.undefined), 1) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_drx, 1, i + 5), new SILEXRecipe(600, 100, 4)
.addOut(new ItemStack(ModItems.undefined), 1)
.addOut(new ItemStack(ModItems.undefined), 1)
@ -408,41 +418,41 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.undefined), 1)
.addOut(new ItemStack(ModItems.undefined), 1)
.addOut(new ItemStack(ModItems.undefined), 1) );
// ZFB BI //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_zfb_bismuth, 1, i), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.nugget_uranium), 50 - i * 10)
.addOut(new ItemStack(ModItems.nugget_pu241), 50 - i * 10)
.addOut(new ItemStack(ModItems.nugget_bismuth), 50 + i * 20)
.addOut(new ItemStack(ModItems.nugget_zirconium), 150) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_zfb_bismuth, 1, i + 5), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 3)
.addOut(new ItemStack(ModItems.nugget_uranium), 50 - i * 10)
.addOut(new ItemStack(ModItems.nugget_pu241), 50 - i * 10)
.addOut(new ItemStack(ModItems.nugget_bismuth), 50 + i * 20)
.addOut(new ItemStack(ModItems.nugget_zirconium), 147) );
// ZFB PU-241 //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_zfb_pu241, 1, i), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.nugget_u235), 50 - i * 10)
.addOut(new ItemStack(ModItems.nugget_pu240), 50 - i * 10)
.addOut(new ItemStack(ModItems.nugget_pu241), 50 + i * 20)
.addOut(new ItemStack(ModItems.nugget_zirconium), 150) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_zfb_pu241, 1, i + 5), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 3)
.addOut(new ItemStack(ModItems.nugget_u235), 50 - i * 10)
.addOut(new ItemStack(ModItems.nugget_pu240), 50 - i * 10)
.addOut(new ItemStack(ModItems.nugget_pu241), 50 + i * 20)
.addOut(new ItemStack(ModItems.nugget_zirconium), 147) );
// ZFB RG-AM //
recipes.put(new ComparableStack(ModItems.rbmk_pellet_zfb_am_mix, 1, i), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.nugget_pu241), 100 - i * 20)
.addOut(new ItemStack(ModItems.nugget_am_mix), 50 + i * 20)
.addOut(new ItemStack(ModItems.nugget_zirconium), 150) );
recipes.put(new ComparableStack(ModItems.rbmk_pellet_zfb_am_mix, 1, i + 5), new SILEXRecipe(600, 100, 2)
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 3)
.addOut(new ItemStack(ModItems.nugget_pu241), 100 - i * 20)
@ -503,7 +513,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nugget_bismuth), 10)
.addOut(new ItemStack(ModItems.nuclear_waste_tiny), 29)
);
recipes.put(new ComparableStack(ModItems.nuclear_waste_short, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), new SILEXRecipe(900, 100, 1)
.addOut(new ItemStack(ModItems.nugget_pu240), 10)
.addOut(new ItemStack(ModItems.nugget_pu241), 25)
@ -519,7 +529,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nugget_u238), 3)
.addOut(new ItemStack(ModItems.nuclear_waste_tiny), 39)
);
recipes.put(new ComparableStack(ModItems.nuclear_waste_short, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), new SILEXRecipe(900, 100, 1)
.addOut(new ItemStack(ModItems.nugget_pu241), 15)
.addOut(new ItemStack(ModItems.nugget_neptunium), 5)
@ -536,7 +546,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nugget_u238), 3)
.addOut(new ItemStack(ModItems.nuclear_waste_tiny), 36)
);
recipes.put(new ComparableStack(ModItems.nuclear_waste_short, 1, ItemWasteShort.WasteClass.PLUTONIUM241.ordinal()), new SILEXRecipe(900, 100, 2)
.addOut(new ItemStack(ModItems.nugget_am241), 25)
.addOut(new ItemStack(ModItems.nugget_am242), 35)
@ -591,7 +601,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.nugget_lead), 45)
.addOut(new ItemStack(ModItems.nuclear_waste_tiny), 17)
);
recipes.put(new ComparableStack(ModItems.nuclear_waste_long, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), new SILEXRecipe(900, 100, 1)
.addOut(new ItemStack(ModItems.nugget_solinium), 25)
.addOut(new ItemStack(ModItems.nugget_euphemium), 18)
@ -623,7 +633,7 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.dust_tiny), 20)
.addOut(new ItemStack(ModItems.nuclear_waste_tiny), 32)
);
recipes.put(new ComparableStack(ModItems.fallout, 1), new SILEXRecipe(900, 100, 2)
.addOut(new ItemStack(ModItems.dust_tiny), 90)
.addOut(new ItemStack(ModItems.nugget_co60), 2)
@ -632,14 +642,14 @@ public class SILEXRecipes {
.addOut(new ItemStack(ModItems.powder_cs137_tiny), 3)
.addOut(new ItemStack(ModItems.nugget_au198), 1)
);
recipes.put(new ComparableStack(Blocks.gravel, 1), new SILEXRecipe(1000, 250, EnumWavelengths.VISIBLE)
.addOut(new ItemStack(Items.flint), 80)
.addOut(new ItemStack(ModItems.powder_boron), 5)
.addOut(new ItemStack(ModItems.powder_lithium), 10)
.addOut(new ItemStack(ModItems.fluorite), 5)
);
recipes.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.FULLERENE.getID()),
new SILEXRecipe(1_000, 1_000, EnumWavelengths.VISIBLE).addOut(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE), 1));
}
@ -652,19 +662,19 @@ public class SILEXRecipes {
tinyWasteTranslation.put(ModItems.nuclear_waste_short_depleted_tiny, ModItems.nuclear_waste_short_depleted);
tinyWasteTranslation.put(ModItems.nuclear_waste_long_depleted_tiny, ModItems.nuclear_waste_long_depleted);
}
public static SILEXRecipe getOutput(ItemStack stack) {
if(stack == null || stack.getItem() == null)
return null;
ComparableStack comp = translateItem(stack);
if(recipes.containsKey(comp))
return recipes.get(comp);
String[] dictKeys = comp.getDictKeys();
for(String key : dictKeys) {
String translation = translateDict(key);
if(recipes.containsKey(translation))
@ -680,54 +690,54 @@ public class SILEXRecipes {
SILEXRecipe tinyVersion = new SILEXRecipe(fluidProduced, result.fluidConsumed, result.laserStrength);
// Shared ownership shouldn't be an issue since the resulting recipe isn't modified by the caller
tinyVersion.outputs = result.outputs;
// TODO: Cache? Might break saving recipes, IDK
// recipes.put(comp, tinyVersion);
return tinyVersion;
}
}
return null;
}
public static ComparableStack translateItem(ItemStack stack) {
ComparableStack orig = new ComparableStack(stack.getItem(), 1, stack.getItemDamage());
ComparableStack translation = itemTranslation.get(orig);
if(translation != null)
return translation;
return orig;
}
public static String translateDict(String key) {
String translation = dictTranslation.get(key);
if(translation != null)
return translation;
return key;
}
public static List<Object> getAllIngredients() {
List<Object> ing = new ArrayList();
for(Entry<Object, SILEXRecipe> entry : SILEXRecipes.recipes.entrySet()) ing.add(entry.getKey());
for(Entry<ComparableStack, ComparableStack> entry : SILEXRecipes.itemTranslation.entrySet()) ing.add(entry.getKey());
for(Entry<String, String> entry : SILEXRecipes.dictTranslation.entrySet()) ing.add(entry.getKey());
return ing;
}
public static Map<Object, SILEXRecipe> getRecipes() {
Map<Object, SILEXRecipe> recipes = new HashMap<Object, SILEXRecipe>();
List<Object> ing = getAllIngredients();
for(Object ingredient : ing) {
if(ingredient instanceof String) {
List<ItemStack> ingredients = OreDictionary.getOres((String)ingredient);
if(ingredients.size() > 0) {
@ -735,41 +745,41 @@ public class SILEXRecipes {
if(output != null)
recipes.put(ingredients, output);
}
} else if(ingredient instanceof ComparableStack) {
SILEXRecipe output = getOutput(((ComparableStack) ingredient).toStack());
if(output != null)
recipes.put(((ComparableStack)ingredient).toStack(), output);
}
}
return recipes;
}
public static class SILEXRecipe {
public int fluidProduced;
public int fluidConsumed;
public EnumWavelengths laserStrength;
public List<WeightedRandomObject> outputs = new ArrayList();
public SILEXRecipe(int fluidProduced, int fluidConsumed, EnumWavelengths laserStrength) {
this.fluidProduced = fluidProduced;
this.fluidConsumed = fluidConsumed;
this.laserStrength = laserStrength;
}
public SILEXRecipe(int fluidProduced, int fluidConsumed, int laserStrength) {
this(fluidProduced, fluidConsumed, EnumWavelengths.values()[laserStrength]);
}
public SILEXRecipe addOut(ItemStack stack, int weight) {
return addOut(new WeightedRandomObject(stack, weight));
}
}
public SILEXRecipe addOut(WeightedRandomObject entry) {
outputs.add(entry);
return this;
}
}
}
}

View File

@ -33,24 +33,24 @@ public class ShredderRecipes extends SerializableRecipe {
public static HashMap<ComparableStack, ItemStack> shredderRecipes = new HashMap();
public static HashMap<Object, Object> neiShredderRecipes;
@Override
public void registerPost() {
String[] names = OreDictionary.getOreNames();
for(int i = 0; i < names.length; i++) {
String name = names[i];
//if the dict contains invalid names, skip
if(name == null || name.isEmpty())
continue;
if(name.contains("Any")) continue;
List<ItemStack> matches = OreDictionary.getOres(name);
//if the name isn't assigned to an ore, also skip
if(matches == null || matches.isEmpty())
continue;
@ -63,23 +63,23 @@ public class ShredderRecipes extends SerializableRecipe {
generateRecipes("crystal", name, matches, 1);
//2 ingot units, any
generateRecipes("ore", name, matches, 2);
if(name.length() > 5 && name.substring(0, 5).equals("block")) {
ItemStack dust = getDustByName(name.substring(5));
if(dust != null && dust.getItem() != ModItems.scrap) {
dust.stackSize = 9;
if(getIngotOrGemByName(name.substring(5)) == null)
dust.stackSize = 4;
for(ItemStack stack : matches) {
putIfValid(stack, dust, name);
}
}
}
if(name.length() > 7 && name.substring(0, 8).equals("dustTiny")) {
for(ItemStack stack : matches) {
putIfValid(stack, new ItemStack(ModItems.dust_tiny), name);
@ -91,40 +91,40 @@ public class ShredderRecipes extends SerializableRecipe {
}
}
}
@Untested
private static void generateRecipes(String prefix, String name, List<ItemStack> matches, int outCount) {
int len = prefix.length();
if(name.length() > len && name.substring(0, len).equals(prefix)) {
String matName = name.substring(len);
ItemStack dust = getDustByName(matName);
if(dust != null && dust.getItem() != ModItems.scrap) {
dust.stackSize = outCount;
for(ItemStack stack : matches) {
putIfValid(stack, dust, name);
}
}
}
}
private static void putIfValid(ItemStack in, ItemStack dust, String name) {
if(in != null) {
if(in.getItem() != null) {
setRecipe(new ComparableStack(in), dust);
} else {
MainRegistry.logger.error("Ore dict entry '" + name + "' has a null item in its stack! How does that even happen?");
Thread.currentThread().dumpStack();
}
} else {
MainRegistry.logger.error("Ore dict entry '" + name + "' has a null stack!");
Thread.currentThread().dumpStack();
@ -209,15 +209,16 @@ public class ShredderRecipes extends SerializableRecipe {
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(ModBlocks.block_slag, new ItemStack(ModItems.powder_cement, 4));
ShredderRecipes.setRecipe(ModBlocks.ore_aluminium, DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.CRYOLITE, 2));
List<ItemStack> logs = OreDictionary.getOres("logWood");
List<ItemStack> planks = OreDictionary.getOres("plankWood");
List<ItemStack> saplings = OreDictionary.getOres("treeSapling");
for(ItemStack log : logs) ShredderRecipes.setRecipe(log, new ItemStack(ModItems.powder_sawdust, 4));
for(ItemStack plank : planks) ShredderRecipes.setRecipe(plank, new ItemStack(ModItems.powder_sawdust, 1));
for(ItemStack sapling : saplings) ShredderRecipes.setRecipe(sapling, new ItemStack(Items.stick, 1));
for(EnumBedrockOre ore : EnumBedrockOre.values()) {
int i = ore.ordinal();
ShredderRecipes.setRecipe(new ItemStack(ModItems.ore_bedrock, 1, i), new ItemStack(ModItems.ore_enriched, 1, i));
@ -230,7 +231,7 @@ public class ShredderRecipes extends SerializableRecipe {
ShredderRecipes.setRecipe(new ItemStack(ModItems.ore_deepcleaned, 1, i), new ItemStack(ModItems.ore_enriched, 1, i));
ShredderRecipes.setRecipe(new ItemStack(ModItems.ore_seared, 1, i), new ItemStack(ModItems.ore_enriched, 1, i));
}
for(int i = 0; i < 5; i++) ShredderRecipes.setRecipe(new ItemStack(Items.skull, 1, i), new ItemStack(ModItems.biomass, 4));
/* Crystal processing */
@ -295,7 +296,7 @@ public class ShredderRecipes extends SerializableRecipe {
ShredderRecipes.setRecipe(new ItemStack(ModBlocks.sellafield, 1, 3), new ItemStack(ModItems.scrap_nuclear, 5));
ShredderRecipes.setRecipe(new ItemStack(ModBlocks.sellafield, 1, 4), new ItemStack(ModItems.scrap_nuclear, 7));
ShredderRecipes.setRecipe(new ItemStack(ModBlocks.sellafield, 1, 5), new ItemStack(ModItems.scrap_nuclear, 15));
/* Fracking debris scrapping */
ShredderRecipes.setRecipe(ModBlocks.dirt_dead, new ItemStack(ModItems.scrap_oil, 1));
ShredderRecipes.setRecipe(ModBlocks.dirt_oily, new ItemStack(ModItems.scrap_oil, 1));
@ -335,13 +336,13 @@ public class ShredderRecipes extends SerializableRecipe {
ShredderRecipes.setRecipe(new ItemStack(Blocks.stained_hardened_clay, 1, i), new ItemStack(Items.clay_ball, 4));
ShredderRecipes.setRecipe(new ItemStack(Blocks.wool, 1, i), new ItemStack(Items.string, 4));
}
/* Shredding bobbleheads */
for(int i = 0; i < BobbleType.values().length; i++) {
BobbleType type = BobbleType.values()[i];
ShredderRecipes.setRecipe(new ItemStack(ModBlocks.bobblehead, 1, i), new ItemStack(ModItems.scrap_plastic, 1, type.scrap.ordinal()));
}
/* Debris shredding */
ShredderRecipes.setRecipe(ModItems.debris_concrete, new ItemStack(ModItems.scrap_nuclear, 2));
ShredderRecipes.setRecipe(ModItems.debris_shrapnel, new ItemStack(ModItems.powder_steel_tiny, 5));
@ -349,96 +350,96 @@ public class ShredderRecipes extends SerializableRecipe {
ShredderRecipes.setRecipe(ModItems.debris_element, new ItemStack(ModItems.scrap_nuclear, 4));
ShredderRecipes.setRecipe(ModItems.debris_metal, new ItemStack(ModItems.powder_steel_tiny, 3));
ShredderRecipes.setRecipe(ModItems.debris_graphite, new ItemStack(ModItems.powder_coal, 1));
/* GC COMPAT */
Block gcMoonBlock = Compat.tryLoadBlock(Compat.MOD_GCC, "moonBlock");
if(gcMoonBlock != null && gcMoonBlock != Blocks.air) {
ShredderRecipes.setRecipe(new ItemStack(gcMoonBlock, 1, 3), new ItemStack(ModBlocks.moon_turf)); //Moon dirt
ShredderRecipes.setRecipe(new ItemStack(gcMoonBlock, 1, 5), new ItemStack(ModBlocks.moon_turf)); //Moon topsoil
}
/* AR COMPAT */
Block arMoonTurf = Compat.tryLoadBlock(Compat.MOD_AR, "turf");
if(arMoonTurf != null && gcMoonBlock != Blocks.air) ShredderRecipes.setRecipe(arMoonTurf, new ItemStack(ModBlocks.moon_turf)); //i assume it's moon turf
Block arMoonTurfDark = Compat.tryLoadBlock(Compat.MOD_AR, "turfDark");
if(arMoonTurfDark != null && gcMoonBlock != Blocks.air) ShredderRecipes.setRecipe(arMoonTurfDark, new ItemStack(ModBlocks.moon_turf)); //probably moon dirt? would have helped if i had ever played AR for more than 5 seconds
}
/**
* Returns scrap when no dust is found, for quickly adding recipes
* @param name
* @return
*/
public static ItemStack getDustByName(String name) {
List<ItemStack> matches = OreDictionary.getOres("dust" + name);
if(matches != null && !matches.isEmpty())
return matches.get(0).copy();
return new ItemStack(ModItems.scrap);
}
/**
* Returns null when no ingot or gem is found, for deciding whether the block shredding output should be 9 or 4 dusts
* @param name
* @return
*/
public static ItemStack getIngotOrGemByName(String name) {
List<ItemStack> matches = OreDictionary.getOres("ingot" + name);
if(matches != null && !matches.isEmpty())
return matches.get(0).copy();
matches = OreDictionary.getOres("gem" + name);
if(matches != null && !matches.isEmpty())
return matches.get(0).copy();
return null;
}
public static void setRecipe(Item in, ItemStack out) {
setRecipe(new ComparableStack(in), out);
}
public static void setRecipe(Block in, ItemStack out) {
setRecipe(new ComparableStack(in), out);
}
public static void setRecipe(ItemStack in, ItemStack out) {
setRecipe(new ComparableStack(in), out);
}
public static void setRecipe(ComparableStack in, ItemStack out) {
if(!shredderRecipes.containsKey(in)) {
shredderRecipes.put(in, out);
}
}
public static Map<Object, Object> getShredderRecipes() {
//convert the map only once to save on processing power (might be more ram intensive but that can't be THAT bad, right?)
if(neiShredderRecipes == null)
neiShredderRecipes = new HashMap(shredderRecipes);
return neiShredderRecipes;
}
public static ItemStack getShredderResult(ItemStack stack) {
if(stack == null || stack.getItem() == null)
return new ItemStack(ModItems.scrap);
ComparableStack comp = new ComparableStack(stack).makeSingular();
ItemStack sta = shredderRecipes.get(comp);
if(sta == null) {
comp.meta = OreDictionary.WILDCARD_VALUE;
sta = shredderRecipes.get(comp);
}
return sta == null ? new ItemStack(ModItems.scrap) : sta;
}

View File

@ -55,12 +55,12 @@ public class SolidificationRecipes extends SerializableRecipe {
//in the event that these compounds are STILL too useless, add unsat + gas -> kerosene recipe for all those missile junkies
//aromatics can be idfk wax or soap or sth, perhaps artificial lubricant?
//on that note, add more leaded variants
private static HashMap<FluidType, Pair<Integer, ItemStack>> recipes = new HashMap();
@Override
public void registerDefaults() {
registerRecipe(WATER, 1000, Blocks.ice);
registerRecipe(LAVA, 1000, Blocks.obsidian);
registerRecipe(MERCURY, 125, ModItems.ingot_mercury);
@ -68,7 +68,7 @@ public class SolidificationRecipes extends SerializableRecipe {
registerRecipe(SALIENT, 1280, new ItemStack(ModItems.bio_wafer, 8)); //4 (food val) * 2 (sat mod) * 2 (constant) * 10 (quanta) * 8 (batch size)
registerRecipe(ENDERJUICE, 100, Items.ender_pearl);
registerRecipe(WATZ, 1000, ModItems.ingot_mud);
registerRecipe(REDMUD, 1000, Items.iron_ingot);
registerRecipe(REDMUD, 450, Items.iron_ingot);
registerRecipe(SODIUM, 100, ModItems.powder_sodium);
registerRecipe(LEAD, 100, ModItems.ingot_lead);
registerRecipe(SLOP, 250, ModBlocks.ore_oil_sand);
@ -84,7 +84,7 @@ public class SolidificationRecipes extends SerializableRecipe {
registerRecipe(LUBRICANT, SF_LUBE, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN));
registerRecipe(BALEFIRE, 250, ModItems.solid_fuel_bf);
registerSFAuto(SMEAR);
registerSFAuto(HEATINGOIL);
registerSFAuto(HEATINGOIL_VACUUM);
@ -114,7 +114,7 @@ public class SolidificationRecipes extends SerializableRecipe {
registerSFAuto(REFORMATE);
registerSFAuto(XYLENE);
registerSFAuto(BALEFIRE, 24_000_000L, ModItems.solid_fuel_bf); //holy shit this is energy dense*/
}
private static void registerSFAuto(FluidType fluid) {
@ -123,13 +123,13 @@ public class SolidificationRecipes extends SerializableRecipe {
private static void registerSFAuto(FluidType fluid, long tuPerSF, Item fuel) {
long tuPerBucket = fluid.getTrait(FT_Flammable.class).getHeatEnergy();
double penalty = 1.25D;
int mB = (int) (tuPerSF * 1000L * penalty / tuPerBucket);
if(mB > 10_000) mB -= (mB % 1000);
else if(mB > 1_000) mB -= (mB % 100);
else if(mB > 100) mB -= (mB % 10);
mB = Math.max(mB, 1);
registerRecipe(fluid, mB, fuel);
@ -140,24 +140,24 @@ public class SolidificationRecipes extends SerializableRecipe {
private static void registerRecipe(FluidType type, int quantity, ItemStack output) {
recipes.put(type, new Pair<Integer, ItemStack>(quantity, output));
}
public static Pair<Integer, ItemStack> getOutput(FluidType type) {
return recipes.get(type);
}
public static HashMap<ItemStack, ItemStack> getRecipes() {
HashMap<ItemStack, ItemStack> recipes = new HashMap<ItemStack, ItemStack>();
for(Entry<FluidType, Pair<Integer, ItemStack>> entry : SolidificationRecipes.recipes.entrySet()) {
FluidType type = entry.getKey();
int amount = entry.getValue().getKey();
ItemStack out = entry.getValue().getValue().copy();
recipes.put(ItemFluidIcon.make(type, amount), out);
}
return recipes;
}

View File

@ -43,7 +43,6 @@ public class AnvilRecipes extends SerializableRecipe {
public static void register() {
registerSmithing();
registerConstruction();
}
@Override public String getFileName() { return "hbmAnvil.json"; }
@ -598,7 +597,6 @@ public class AnvilRecipes extends SerializableRecipe {
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 28))).setTier(2));
pullFromAssembler(new ComparableStack(ModItems.pellet_buckshot), 1);
pullFromAssembler(new ComparableStack(ModItems.pellet_canister), 1);
}
public static void registerConstructionUpgrades() {

View File

@ -51,7 +51,9 @@ public class ItemEnums {
}
public static enum EnumChunkType {
RARE, MALACHITE
RARE,
MALACHITE,
CRYOLITE
}
public static enum EnumAchievementType {

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,14 @@
package com.hbm.items.machine;
import java.util.List;
import java.util.Locale;
import com.hbm.items.ItemEnumMulti;
import com.hbm.util.EnumUtil;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
public class ItemPACoil extends ItemEnumMulti {
@ -16,30 +18,33 @@ public class ItemPACoil extends ItemEnumMulti {
}
public static enum EnumCoilType {
GOLD(0, 10_000, 0, 10_000, 0.99D),
NIOBIUM(5_000, 100_000, 5_000, 100_000, 0.999D),
BSCCO(50_000, 500_000, 50_000, 500_000, 0.99975D);
GOLD(0, 2_200, 0, 2_200, 15),
NIOBIUM(1_500, 8_400, 1_500, 8_400, 21),
BSCCO(7_500, 15_000, 7_500, 15_000, 27),
CHLOROPHYTE(14_500, 75_000, 14_500, 75_000, 51);
public int quadMin;
public int quadMax;
public int diMin;
public int diMax;
public double diMult;
public int diDistMin;
private EnumCoilType(int quadMin, int quadMax, int diMin, int diMax, double diMult) {
private EnumCoilType(int quadMin, int quadMax, int diMin, int diMax, int diDistMin) {
this.quadMin = quadMin;
this.quadMax = quadMax;
this.diMin = diMin;
this.diMax = diMax;
this.diMult = diMult;
this.diDistMin = diDistMin;
}
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
EnumCoilType type = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage());
list.add("Quadrupole operational range: " + type.quadMin + " - " + type.quadMax);
list.add("Dipole operational range: " + type.diMin + " - " + type.diMax);
list.add("Dipole momentum multiplier: x" + type.diMult);
list.add(EnumChatFormatting.BLUE + "Quadrupole operational range: " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", type.quadMin) + " - " + String.format(Locale.US, "%,d", type.quadMax));
list.add(EnumChatFormatting.BLUE + "Dipole operational range: " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", type.diMin) + " - " + String.format(Locale.US, "%,d", type.diMax));
list.add(EnumChatFormatting.BLUE + "Dipole minimum side length: " + EnumChatFormatting.RESET + type.diDistMin);
list.add(EnumChatFormatting.RED + "Minimums not met result in a power draw penalty!");
list.add(EnumChatFormatting.RED + "Maximums exceeded result in the particle crashing!");
}
}

View File

@ -34,7 +34,7 @@ public class ItemBedrockOreNew extends Item {
public IIcon[] icons = new IIcon[BedrockOreType.values().length * BedrockOreGrade.values().length];
public IIcon[] overlays = new IIcon[ProcessingTrait.values().length];
public ItemBedrockOreNew() {
this.setHasSubtypes(true);
this.setMaxDamage(0);
@ -44,10 +44,10 @@ public class ItemBedrockOreNew extends Item {
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister reg) {
if(reg instanceof TextureMap) {
TextureMap map = (TextureMap) reg;
for(int i = 0; i < BedrockOreGrade.values().length; i++) { BedrockOreGrade grade = BedrockOreGrade.values()[i];
for(int j = 0; j < BedrockOreType.values().length; j++) { BedrockOreType type = BedrockOreType.values()[j];
String placeholderName = RefStrings.MODID + ":bedrock_ore_" + grade.prefix + "_" + type.suffix + "-" + (i * BedrockOreType.values().length + j);
@ -57,7 +57,7 @@ public class ItemBedrockOreNew extends Item {
}
}
}
for(int i = 0; i < overlays.length; i++) {
ProcessingTrait trait = ProcessingTrait.values()[i];
overlays[i] = reg.registerIcon(RefStrings.MODID + ":bedrock_ore_overlay." + trait.name().toLowerCase(Locale.US));
@ -67,7 +67,7 @@ public class ItemBedrockOreNew extends Item {
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, List list) {
for(int j = 0; j < BedrockOreType.values().length; j++) { BedrockOreType type = BedrockOreType.values()[j];
for(int i = 0; i < BedrockOreGrade.values().length; i++) { BedrockOreGrade grade = BedrockOreGrade.values()[i];
list.add(this.make(grade, type));
@ -80,7 +80,7 @@ public class ItemBedrockOreNew extends Item {
public boolean requiresMultipleRenderPasses() {
return true;
}
@Override
public int getRenderPasses(int metadata) {
return 1 + this.getGrade(metadata).traits.length;
@ -105,15 +105,15 @@ public class ItemBedrockOreNew extends Item {
String type = StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".type." + this.getType(meta).suffix + ".name");
return StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".grade." + this.getGrade(meta).name().toLowerCase(Locale.US) + ".name", type);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
for(ProcessingTrait trait : this.getGrade(stack.getItemDamage()).traits) {
list.add(I18nUtil.resolveKey(this.getUnlocalizedNameInefficiently(stack) + ".trait." + trait.name().toLowerCase(Locale.US)));
}
}
public static class BedrockOreOutput {
public NTMMaterial mat;
public int amount;
@ -122,21 +122,21 @@ public class ItemBedrockOreNew extends Item {
this.amount = amount;
}
}
public static BedrockOreOutput o(NTMMaterial mat, int amount) {
return new BedrockOreOutput(mat, amount);
}
public static enum BedrockOreType {
// primary sulfuric solvent radsolvent
LIGHT_METAL( 0xFFFFFF, 0x353535, "light", o(MAT_IRON, 9), o(MAT_COPPER, 9), o(MAT_TITANIUM, 9), o(MAT_ALUMINIUM, 5), o(MAT_ALUMINIUM, 4), o(MAT_CHLOROCALCITE, 5), o(MAT_LITHIUM, 5), o(MAT_SODIUM, 3), o(MAT_CHLOROCALCITE, 6), o(MAT_LITHIUM, 6), o(MAT_SODIUM, 6)),
LIGHT_METAL( 0xFFFFFF, 0x353535, "light", o(MAT_IRON, 9), o(MAT_COPPER, 9), o(MAT_TITANIUM, 6), o(MAT_BAUXITE, 9), o(MAT_CRYOLITE, 3), o(MAT_CHLOROCALCITE, 5), o(MAT_LITHIUM, 5), o(MAT_SODIUM, 3), o(MAT_CHLOROCALCITE, 6), o(MAT_LITHIUM, 6), o(MAT_SODIUM, 6)),
HEAVY_METAL( 0x868686, 0x000000, "heavy", o(MAT_TUNGSTEN, 9), o(MAT_LEAD, 9), o(MAT_GOLD, 2), o(MAT_GOLD, 2), o(MAT_BERYLLIUM, 3), o(MAT_TUNGSTEN, 9), o(MAT_LEAD, 9), o(MAT_GOLD, 5), o(MAT_BISMUTH, 1), o(MAT_BISMUTH, 1), o(MAT_GOLD, 6)),
RARE_EARTH( 0xE6E6B6, 0x1C1C00, "rare", o(MAT_COBALT, 5), o(MAT_RAREEARTH, 5),o(MAT_BORON, 5), o(MAT_LANTHANIUM, 3), o(MAT_NIOBIUM, 4), o(MAT_NEODYMIUM, 3), o(MAT_STRONTIUM, 3), o(MAT_ZIRCONIUM, 3), o(MAT_NIOBIUM, 5), o(MAT_NEODYMIUM, 5), o(MAT_STRONTIUM, 3)),
ACTINIDE( 0xC1C7BD, 0x2B3227, "actinide", o(MAT_URANIUM, 4), o(MAT_THORIUM, 4), o(MAT_RADIUM, 2), o(MAT_RADIUM, 2), o(MAT_POLONIUM, 2), o(MAT_RADIUM, 2), o(MAT_RADIUM, 2), o(MAT_POLONIUM, 2), o(MAT_TECHNETIUM, 1), o(MAT_TECHNETIUM, 1), o(MAT_U238, 1)),
NON_METAL( 0xAFAFAF, 0x0F0F0F, "nonmetal", o(MAT_COAL, 9), o(MAT_SULFUR, 9), o(MAT_LIGNITE, 9), o(MAT_KNO, 6), o(MAT_FLUORITE, 6), o(MAT_PHOSPHORUS, 5), o(MAT_FLUORITE, 6), o(MAT_SULFUR, 6), o(MAT_CHLOROCALCITE, 6), o(MAT_SILICON, 2), o(MAT_SILICON, 2)),
CRYSTALLINE( 0xE2FFFA, 0x1E8A77, "crystal", o(MAT_REDSTONE, 9), o(MAT_CINNABAR, 4), o(MAT_SODALITE, 9), o(MAT_ASBESTOS, 6), o(MAT_DIAMOND, 3), o(MAT_CINNABAR, 3), o(MAT_ASBESTOS, 5), o(MAT_EMERALD, 3), o(MAT_BORAX, 3), o(MAT_MOLYSITE, 3), o(MAT_SODALITE, 9));
//sediment
public int light;
public int dark;
public String suffix;
@ -144,7 +144,7 @@ public class ItemBedrockOreNew extends Item {
public BedrockOreOutput byproductAcid1, byproductAcid2, byproductAcid3;
public BedrockOreOutput byproductSolvent1, byproductSolvent2, byproductSolvent3;
public BedrockOreOutput byproductRad1, byproductRad2, byproductRad3;
private BedrockOreType(int light, int dark, String suffix, BedrockOreOutput p1, BedrockOreOutput p2, BedrockOreOutput bA1, BedrockOreOutput bA2, BedrockOreOutput bA3, BedrockOreOutput bS1, BedrockOreOutput bS2, BedrockOreOutput bS3, BedrockOreOutput bR1, BedrockOreOutput bR2, BedrockOreOutput bR3) {
this.light = light;
this.dark = dark;
@ -155,14 +155,14 @@ public class ItemBedrockOreNew extends Item {
this.byproductRad1 = bR1; this.byproductRad2 = bR2; this.byproductRad3 = bR3;
}
}
public static MaterialStack toFluid(BedrockOreOutput o, double amount) {
if(o.mat != null && o.mat.smeltable == SmeltingBehavior.SMELTABLE) {
return new MaterialStack(o.mat, (int) Math.ceil(MaterialShapes.FRAGMENT.q(o.amount) * amount));
}
return null;
}
public static ItemStack extract(BedrockOreOutput o, double amount) {
return new ItemStack(ModItems.bedrock_ore_fragment, Math.min((int) Math.ceil(o.amount * amount), 64), o.mat.id);
}
@ -179,7 +179,7 @@ public class ItemBedrockOreNew extends Item {
public static final int roasted = 0xCFCFCF;
public static final int arc = 0xC3A2A2;
public static final int washed = 0xDBE2CB;
public static enum ProcessingTrait {
ROASTED,
ARC,
@ -189,7 +189,7 @@ public class ItemBedrockOreNew extends Item {
SOLVENT,
RAD
}
public static enum BedrockOreGrade {
BASE(none, "base"), //from the slopper
BASE_ROASTED(roasted, "base", ROASTED), //optional combination oven step, yields vitriol
@ -205,45 +205,45 @@ public class ItemBedrockOreNew extends Item {
PRIMARY_FIRST(0xFFD3D4, "primary", CENTRIFUGED), //higher first material yield
PRIMARY_SECOND(0xD3FFEB, "primary", CENTRIFUGED), //higher second material yield
CRUMBS(none, "crumbs", CENTRIFUGED), //endpoint for primary, recycling
SULFURIC_BYPRODUCT(none, "sulfuric", CENTRIFUGED, SULFURIC), //from centrifuging
SULFURIC_ROASTED(roasted, "sulfuric", ROASTED, SULFURIC), //comboven again
SULFURIC_ARC(arc, "sulfuric", ARC, SULFURIC), //alternate step
SULFURIC_WASHED(washed, "sulfuric", WASHED, SULFURIC), //sulfuric endpoint
SOLVENT_BYPRODUCT(none, "solvent", CENTRIFUGED, SOLVENT), //from centrifuging
SOLVENT_ROASTED(roasted, "solvent", ROASTED, SOLVENT), //comboven again
SOLVENT_ARC(arc, "solvent", ARC, SOLVENT), //alternate step
SOLVENT_WASHED(washed, "solvent", WASHED, SOLVENT), //solvent endpoint
RAD_BYPRODUCT(none, "rad", CENTRIFUGED, RAD), //from centrifuging
RAD_ROASTED(roasted, "rad", ROASTED, RAD), //comboven again
RAD_ARC(arc, "rad", ARC, RAD), //alternate step
RAD_WASHED(washed, "rad", WASHED, RAD); //rad endpoint
public int tint;
public String prefix;
public ProcessingTrait[] traits;
private BedrockOreGrade(int tint, String prefix, ProcessingTrait... traits) {
this.tint = tint;
this.prefix = prefix;
this.traits = traits;
}
}
public static ItemStack make(BedrockOreGrade grade, BedrockOreType type) {
return make(grade, type, 1);
}
public static ItemStack make(BedrockOreGrade grade, BedrockOreType type, int amount) {
return new ItemStack(ModItems.bedrock_ore, amount, grade.ordinal() << 4 | type.ordinal());
}
public BedrockOreGrade getGrade(int meta) {
return EnumUtil.grabEnumSafely(BedrockOreGrade.class, meta >> 4);
}
public BedrockOreType getType(int meta) {
return EnumUtil.grabEnumSafely(BedrockOreType.class, meta & 15);
}

View File

@ -771,26 +771,27 @@ public class Orchestras {
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_STINGER = (stack, ctx) -> {
EntityLivingBase entity = ctx.entity;
if(entity.worldObj.isRemote) return;
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
AudioWrapper runningAudio = ItemGunBaseNT.loopedSounds.get(entity);
if(ItemGunStinger.getLockonProgress(stack) > 0 && !ItemGunStinger.getIsLockedOn(stack)) {
//start sound
if(runningAudio == null || !runningAudio.isPlaying()) {
AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.fire.lockon", (float) entity.posX, (float) entity.posY, (float) entity.posZ, 1F, 15F, 1F, 10);
ItemGunBaseNT.loopedSounds.put(entity, audio);
audio.startSound();
if(entity.worldObj.isRemote) {
AudioWrapper runningAudio = ItemGunBaseNT.loopedSounds.get(entity);
if(ItemGunStinger.getLockonProgress(stack) > 0 && !ItemGunStinger.getIsLockedOn(stack)) {
//start sound
if(runningAudio == null || !runningAudio.isPlaying()) {
AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.fire.lockon", (float) entity.posX, (float) entity.posY, (float) entity.posZ, 1F, 15F, 1F, 10);
ItemGunBaseNT.loopedSounds.put(entity, audio);
audio.startSound();
}
//keepalive
if(runningAudio != null && runningAudio.isPlaying()) {
runningAudio.keepAlive();
runningAudio.updatePosition((float) entity.posX, (float) entity.posY, (float) entity.posZ);
}
} else {
//stop sound due to timeout
if(runningAudio != null && runningAudio.isPlaying()) runningAudio.stopSound();
}
//keepalive
if(runningAudio != null && runningAudio.isPlaying()) {
runningAudio.keepAlive();
runningAudio.updatePosition((float) entity.posX, (float) entity.posY, (float) entity.posZ);
}
} else {
//stop sound due to timeout
if(runningAudio != null && runningAudio.isPlaying()) runningAudio.stopSound();
}
if(type == AnimType.RELOAD) {

View File

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

View File

@ -1639,6 +1639,10 @@ public class MainRegistry {
ignoreMappings.add("hbm:item.assembly_calamity");
ignoreMappings.add("hbm:item.assembly_lacunae");
ignoreMappings.add("hbm:item.assembly_luna");
ignoreMappings.add("hbm:item.pellet_chlorophyte");
ignoreMappings.add("hbm:item.pellet_canister");
ignoreMappings.add("hbm:item.pellet_claws");
ignoreMappings.add("hbm:item.pellet_flechette");
/// REMAP ///
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses);

View File

@ -69,6 +69,7 @@ public class NEIRegistry {
handlers.add(new RotaryFurnaceHandler());
handlers.add(new AmmoPressHandler());
handlers.add(new CompressorHandler());
handlers.add(new ParticleAcceleratorHandler());
//this shit comes last
handlers.add(new FluidRecipeHandler());

View File

@ -19,7 +19,9 @@ public class TileEntityPABeamline extends TileEntity implements IParticleUser {
}
@Override
public void onEnter(Particle particle, ForgeDirection dir) { }
public void onEnter(Particle particle, ForgeDirection dir) {
particle.addDistance(3);
}
@Override
public BlockPos getExitPos(Particle particle) {

View File

@ -49,6 +49,10 @@ public class TileEntityPADetector extends TileEntityCooledBase implements IGUIPr
public long getMaxPower() {
return 1_000_000;
}
@Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return slot == 1 || slot == 2; }
@Override public boolean canExtractItem(int slot, ItemStack stack, int side) { return slot == 3 || slot == 4; }
@Override public int[] getAccessibleSlotsFromSide(int side) { return new int[] { 1, 2, 3, 4 }; }
AxisAlignedBB bb = null;
@ -107,7 +111,7 @@ public class TileEntityPADetector extends TileEntityCooledBase implements IGUIPr
(recipe.input1.matchesRecipe(particle.input2, true) && recipe.input2.matchesRecipe(particle.input1, true)))) {
if(canAccept(recipe)) {
if(recipe.output1.getItem().hasContainerItem(recipe.output1)) this.decrStackSize(1, 1);
if(recipe.output2.getItem().hasContainerItem(recipe.output2)) this.decrStackSize(2, 1);
if(recipe.output2 != null && recipe.output2.getItem().hasContainerItem(recipe.output2)) this.decrStackSize(2, 1);
if(slots[3] == null) {
slots[3] = recipe.output1.copy();
@ -115,10 +119,12 @@ public class TileEntityPADetector extends TileEntityCooledBase implements IGUIPr
slots[3].stackSize += recipe.output1.stackSize;
}
if(slots[4] == null) {
slots[4] = recipe.output2.copy();
} else {
slots[4].stackSize += recipe.output2.stackSize;
if(recipe.output2 != null) {
if(slots[4] == null) {
slots[4] = recipe.output2.copy();
} else {
slots[4].stackSize += recipe.output2.stackSize;
}
}
}
particle.crash(PAState.SUCCESS);

View File

@ -40,7 +40,7 @@ public class TileEntityPADipole extends TileEntityCooledBase implements IGUIProv
@Override
public long getMaxPower() {
return 1_000_000;
return 5_000_000;
}
@Override
@ -70,7 +70,8 @@ public class TileEntityPADipole extends TileEntityCooledBase implements IGUIProv
int mult = 1;
if(slots[1] != null && slots[1].getItem() == ModItems.pa_coil) {
type = EnumUtil.grabEnumSafely(EnumCoilType.class, slots[1].getItemDamage());
mult = type.diMin > particle.momentum ? 5 : 1;
if(type.diMin > particle.momentum) mult *= 5;
if(type.diDistMin > particle.distanceTraveled) mult *= 5;
}
if(!isCool()) particle.crash(PAState.CRASH_NOCOOL);
@ -79,8 +80,8 @@ public class TileEntityPADipole extends TileEntityCooledBase implements IGUIProv
if(type != null && type.diMax < particle.momentum) particle.crash(PAState.CRASH_OVERSPEED);
if(particle.invalid) return;
particle.momentum *= type.diMult;
particle.resetDistance();
this.power -= this.usage * mult;
}

View File

@ -62,7 +62,8 @@ public class TileEntityPAQuadrupole extends TileEntityCooledBase implements IGUI
if(type != null && type.quadMax < particle.momentum) particle.crash(PAState.CRASH_OVERSPEED);
if(particle.invalid) return;
particle.addDistance(3);
particle.focus(focusGain);
this.power -= this.usage * mult;
}

View File

@ -51,7 +51,8 @@ public class TileEntityPARFC extends TileEntityCooledBase implements IGUIProvide
if(this.power < this.usage) particle.crash(PAState.CRASH_NOPOWER);
if(particle.invalid) return;
particle.addDistance(9);
particle.momentum += this.momentumGain;
particle.defocus(defocusGain);
this.power -= this.usage;

View File

@ -127,7 +127,7 @@ public class TileEntityPASource extends TileEntityCooledBase implements IGUIProv
super.serialize(buf);
buf.writeInt(debugSpeed);
buf.writeByte((byte) this.state.ordinal());
buf.writeInt(particle != null ? particle.momentum : 0);
buf.writeInt(this.lastSpeed);
}
@Override
@ -135,10 +135,7 @@ public class TileEntityPASource extends TileEntityCooledBase implements IGUIProv
super.deserialize(buf);
debugSpeed = buf.readInt();
state = EnumUtil.grabEnumSafely(PAState.class, buf.readByte());
int lastSpeed = buf.readInt();
if(lastSpeed != 0) {
this.lastSpeed = lastSpeed;
}
this.lastSpeed = buf.readInt();
}
@Override
@ -243,7 +240,8 @@ public class TileEntityPASource extends TileEntityCooledBase implements IGUIProv
public ForgeDirection dir;
public int momentum;
public int defocus;
public static final int maxDefocus = 100;
public int distanceTraveled;
public static final int maxDefocus = 1000;
public boolean invalid = false;
public ItemStack input1;
@ -268,8 +266,12 @@ public class TileEntityPASource extends TileEntityCooledBase implements IGUIProv
this.x = pos.getX();
this.y = pos.getY();
this.z = pos.getZ();
this.source.lastSpeed = this.momentum;
}
public void addDistance(int dist) { this.distanceTraveled += dist; }
public void resetDistance() { this.distanceTraveled = 0; }
public void defocus(int amount) {
this.defocus += amount;
if(this.defocus > this.maxDefocus) this.crash(PAState.CRASH_DEFOCUS);

View File

@ -405,6 +405,10 @@ container.nukeSolinium=Die Blauspülung
container.nukeTsar=Tsar Bombe
container.oilWell=Ölbohrturm
container.orbus=Schwerer Magnetischer Lagerbehälter
container.paDetector=Detektor
container.paDipole=Dipol
container.paQuadrupole=Quad.
container.paSource=Teilchenquelle
container.plasmaHeater=Plasmaerhitzer
container.press=Befeuerte Presse
container.puf6_tank=PuF6 Tank
@ -872,6 +876,7 @@ hbmmat.cobalt=Kobalt
hbmmat.cobalt60=Kobalt-60
hbmmat.coltan=Coltan
hbmmat.copper=Kupfer
hbmmat.cryolite=Kryolith
hbmmat.desh=Desh
hbmmat.diamond=Diamant
hbmmat.dineutronium=Dineutronium
@ -1723,7 +1728,8 @@ item.chopper_head.name=Jagdschrauber Cockpit
item.chopper_tail.name=Jagdschrauber Heck
item.chopper_torso.name=Jagdschrauber Rumpf
item.chopper_wing.name=Jagdschrauber Seitentragfläche
item.chunk_ore.malachite.name=Malachit-Brocken
item.chunk_ore.cryolite.name=Kryolithbrocken
item.chunk_ore.malachite.name=Malachitbrocken
item.chunk_ore.rare.name=Seltenerdenerz-Brocken
item.cigarette.name=FFI-Markenzigarette
item.cinnebar.name=Zinnober
@ -2939,6 +2945,10 @@ item.ore_seared.name=Geätztes %serz
item.ore_separated.name=Separiertes %serz
item.overfuse.name=Singularitätsschraubenzieher
item.oxy_mask.name=Sauerstoffmaske
item.pa_coil.bscco.name=Große BSCCO-Spule
item.pa_coil.chlorophyte.name=Große Grünalgenspule
item.pa_coil.gold.name=Große Goldspule
item.pa_coil.niobium.name=Große NbTi-Spule
item.paa_boots.name=PaA-"olle Latschen"
item.paa_legs.name=PaA-Beinverstärkungsschienen
item.paa_plate.name=PaA-Brustschutzplatte
@ -4646,7 +4656,7 @@ tile.oil_duct_solid.name=Verstärktes Ölrohr
tile.oil_pipe.name=Rohölrohr
tile.oil_spill.name=Ölteppich
tile.ore_alexandrite.name=Alexandriterz
tile.ore_aluminium.name=Aluminiumerz
tile.ore_aluminium.name=Aluminiumhaltiges Erz
tile.ore_asbestos.name=Asbesterz
tile.ore_australium.name=Australisches Erz
tile.ore_basalt_asbestos.name=Asbestreicher Basalt

View File

@ -414,14 +414,14 @@ book_lore.bf_bomb_2.page.1=And yet I can't even blame them. Swirlmat makes no go
book_lore.bf_bomb_2.page.2=Even worse, this thing is an energy source. The existence of our sample is a violation of ALARA: the lab was vacated when it arrived, and the only person brave enough (one Dr. Melfyn) donned a level A hazmat just to carry it 20 meters.
book_lore.bf_bomb_2.page.3=The empirical data isn't better, as we're breaking the first law of thermodynamics with how much energy it radiates. Being anywhere near that thing - even behind a meter of lead - was terrifying. We sprinted out of the chamber upon conclusion of the spectroscopy
book_lore.bf_bomb_2.page.4=and we got nothing new out of it. Those idiots in the science team, god, did not even waver after all that. Sitting through those "discussions" was horrible; that quack of a head researcher even rumored that the test ban would be lifted, that we could be
book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison.
book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison.
book_lore.bf_bomb_3.name=Private Notes
book_lore.bf_bomb_3.author=M. Porter
book_lore.bf_bomb_3.page.0=The team and I have made some breakthroughs. Emphasis on the separation - isolating myself from the more devout has made working there so much more bearable. While we still have no idea about the actual properties of balefire (it's difficult to analyze
book_lore.bf_bomb_3.page.1=a sample that fries your equipment) its interactions with other matter has proved fruitful. Notably, they synthesized a "gaseous" form: Andrew, of all people, informed me that it was really a colloid consisting of microscopic balefire particles, suspended in some
book_lore.bf_bomb_3.page.2=noble gas. Each particle is enveloped by a positively-charged 'bubble' of ionized gas, preventing it from settling. Who could've guessed that fatal gamma radiation had a benefit? Not me. $ I'm choosing not to think about how they transformed the sample into
book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off.
book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off.
book_lore.bf_bomb_3.page.4=He decided to get "dirty" by letting a cell of our new colloid interact directly with some very expensive antimatter: the resulting explosion turned the table it was on into a piece of radiation-bleached slag, carved a near-perfect hemisphere through
book_lore.bf_bomb_3.page.5=the top, and gave the head a healthy dose of ARS. I guess we know how to make it explode now, but god, some people...
@ -808,6 +808,10 @@ container.nukeSolinium=The Blue Rinse
container.nukeTsar=Tsar Bomba
container.oilWell=Oil Derrick
container.orbus=Heavy Antimatter Storage
container.paDetector=Detector
container.paDipole=Dipole
container.paQuadrupole=Quad.
container.paSource=Particle Source
container.plasmaHeater=Plasma Heater
container.press=Burner Press
container.puf6_tank=PuF6 Tank
@ -1404,10 +1408,12 @@ hbm.key.toggleHUD=Toggle HUD
hbm.key.trainInv=Train Inventory
hbm.key.reload=Reload
hbmfluid.alumina=Alumina
hbmfluid.amat=Antimatter
hbmfluid.aromatics=Aromatic Hydrocarbons
hbmfluid.aschrab=Antischrabidium
hbmfluid.balefire=BF Rocket Fuel
hbmfluid.bauxite_solution=Bauxite Solution
hbmfluid.biofuel=Biofuel
hbmfluid.biogas=Biogas
hbmfluid.bitumen=Bitumen
@ -1474,6 +1480,7 @@ hbmfluid.lightoil_ds=Desulfurized Light Oil
hbmfluid.lightoil_vacuum=Vacuum Light Oil
hbmfluid.lpg=LPG
hbmfluid.lubricant=Engine Lubricant
hbmfluid.lye=Lye
hbmfluid.mercury=Mercury
hbmfluid.mug=Mug Root Beer
hbmfluid.mug_hot=Hot Mug Root Beer
@ -1526,6 +1533,7 @@ hbmfluid.smoke_leaded=Leaded Smoke
hbmfluid.smoke_poison=Poison Smoke
hbmfluid.sodium=Liquid Sodium
hbmfluid.sodium_hot=Hot Liquid Sodium
hbmfluid.sodium_aluminate=Sodium Aluminate
hbmfluid.solvent=Solvent
hbmfluid.sourgas=Sour Gas
hbmfluid.spentsteam=Low-Pressure Steam
@ -1571,6 +1579,7 @@ hbmmat.arsenic=Arsenic
hbmmat.arsenicbronze=Arsenic Bronze
hbmmat.asbestos=Asbestos
hbmmat.bakelite=Bakelite
hbmmat.bauxite=Bauxite
hbmmat.beryllium=Beryllium
hbmmat.bismuth=Bismuth
hbmmat.bismuthbronze=Bismuth Bronze
@ -1591,6 +1600,7 @@ hbmmat.cobalt=Cobalt
hbmmat.cobalt60=Cobalt-60
hbmmat.coltan=Coltan
hbmmat.copper=Copper
hbmmat.cryolite=Cryolite
hbmmat.desh=Desh
hbmmat.diamond=Diamond
hbmmat.dineutronium=Dineutronium
@ -2494,6 +2504,7 @@ item.chopper_torso.name=Hunter Chopper Body
item.chopper_wing.name=Hunter Chopper Wing
item.chunk_ore.malachite.name=Malachite Chunk
item.chunk_ore.rare.name=Rare Earth Ore Chunk
item.chunk_ore.cryolite.name=Cryolite Chunk
item.cigarette.name=FFI-Brand Cigarette
item.cinnebar.name=Cinnabar
item.circuit.advanced.name=Military Grade Circuit Board
@ -3787,6 +3798,7 @@ item.overfuse.name=Singularity Screwdriver
item.overfuse.desc=Say what?
item.oxy_mask.name=Oxygen Mask
item.pa_coil.bscco.name=Large BSCCO Coil
item.pa_coil.chlorophyte.name=Large Chlorophyte Coil
item.pa_coil.gold.name=Large Gold Coil
item.pa_coil.niobium.name=Large NbTi Coil
item.paa_boots.name=PaA "good ol' shoes"
@ -4832,16 +4844,27 @@ itemGroup.tabTest=Nuclear Tech Mod Test Tab
itemGroup.tabWeapon=NTM Weapons and Turrets
pa.idle=Idle
pa.idle.desc=Idle
pa.running=Running
pa.running.desc=Running
pa.success=Success
pa.success.desc=Success
pa.pause_unloaded=Paused
pa.pause_unloaded.desc=The particle has entered an$unloaded chunk. The operation has$been suspended, until both the$particle and the particle source$are loaded.
pa.crash_defocus=Defocus!
pa.crash_defocus.desc=The particle has lost focus.$Ensure the accelerator has enough quadrupole magnets.
pa.crash_derail=Derail!
pa.crash_derail.desc=The particle has left the accelerator.$Ensure no parts are missing,$and that dipoles are configured correctly.
pa.crash_cannot_enter=Denied!
pa.crash_cannot_enter.desc=The particle tried to enter$part of the accelerator, but couldn't.$Ensure all parts are oriented correctly.
pa.crash_nocool=No cooling!
pa.crash_nocool.desc=The particle has entered an uncooled$part of the accelerator. Ensure all cooled$parts are connected and filled$with cold perfluoroethyl.
pa.crash_nopower=No power!
pa.crash_nopower.desc=The particle has entered an unpowered$part of the accelerator. Ensure all parts$receive power, and that the$power supply is sufficient.
pa.crash_nocoil=No coils!
pa.crash_nocoil.desc=The particle has entered a dipole$or quadrupole which lacks coils.$Install coils to allow this part to work.
pa.crash_overspeed=Overspeed!
pa.crash_overspeed.desc=The particle has entered a dipole$or quadrupole, while its speed exceeded$the coil's rating. Install higher$tier coils, or configure the dipoles$to leave the accelerator ring sooner.
potion.hbm_bang=! ! !
potion.hbm_death=Astolfization
@ -5193,7 +5216,7 @@ tile.cm_engine.bismuth.name=Bismuth Motor Block
tile.cm_engine.desh.name=Desh Motor Block
tile.cm_engine.standard.name=Motor Block
tile.cm_flux.name=Neutron Flux Receiver
tile.cm_heat.name=Heat receiver
tile.cm_heat.name=Heat Receiver
tile.cm_port.alloy.name=Advanced Alloy Port
tile.cm_port.desh.name=Desh Port
tile.cm_port.steel.name=Steel Port
@ -5759,7 +5782,7 @@ tile.oil_duct_solid.name=Coated Oil Pipe
tile.oil_pipe.name=Crude Oil Extraction Pipe
tile.oil_spill.name=Oil Spill
tile.ore_alexandrite.name=Alexandrite Ore
tile.ore_aluminium.name=Aluminium Ore
tile.ore_aluminium.name=Aluminium-Bearing Ore
tile.ore_asbestos.name=Asbestos Ore
tile.ore_australium.name=Australian Ore
tile.ore_basalt_asbestos.name=Asbestos-Rich Basalt
@ -5846,11 +5869,17 @@ tile.ore_verticium.name=Dollar Green Mineral
tile.ore_volcano.name=Geothermal Vent
tile.ore_weidanium.name=Weidite
tile.pa_beamline.name=Beamline
tile.pa_beamline.desc=Optional part, connects different accelerator parts.$Also allows to cheaply extend the ring's size,$for meeting dipole coil size requirements.
tile.pa_detector.name=Particle Detector
tile.pa_detector.desc=Requires cooling!$Accepts particles and performs the recipe.$Recipes may require containers (particle capsules).$Particle needs a defocus of 0 to be accepted.
tile.pa_dipole.name=Dipole Magnets
tile.pa_dipole.desc=Requires cooling!$Redirects particles based on momentum.$Has outputs for below threshold,$above threshold and above threshold$with restone applied.$Requires large coils to work.
tile.pa_quadrupole.name=Quadrupole Magnets
tile.pa_quadrupole.desc=Requires cooling!$Reduces particle defocus by 100 points.$Requires large coils to work.
tile.pa_rfc.name=RF Cavity
tile.pa_rfc.desc=Requires cooling!$Accelerates particles by 100 points,$and adds 100 points of defocus.$The particle will crash when reaching points of 1000 defocus.
tile.pa_source.name=Particle Source
tile.pa_source.desc=Requires cooling!$Uses two items to create a particle.
tile.part_emitter.name=Deco Particle Emitter
tile.pedestal.name=Pedestal
tile.pink_barrel.name=Kerosene Barrel

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 672 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 807 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB