Files
ForestryMC/src/main/java/forestry/plugins/PluginFactory.java
T
2023-12-29 13:26:43 +01:00

813 lines
32 KiB
Java

/*******************************************************************************
* Copyright (c) 2011-2014 SirSengir. All rights reserved. This program and the accompanying materials are made
* available under the terms of the GNU Lesser Public License v3 which accompanies this distribution, and is available
* at http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Various Contributors including, but not limited to: SirSengir (original work), CovertJaguar, Player, Binnie,
* MysteriousAges
******************************************************************************/
package forestry.plugins;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import com.google.common.collect.ImmutableList;
import forestry.api.circuits.ChipsetManager;
import forestry.api.circuits.CircuitSocketType;
import forestry.api.circuits.ICircuitLayout;
import forestry.api.core.ForestryAPI;
import forestry.api.fuels.EngineBronzeFuel;
import forestry.api.fuels.EngineCopperFuel;
import forestry.api.fuels.FermenterFuel;
import forestry.api.fuels.FuelManager;
import forestry.api.fuels.MoistenerFuel;
import forestry.api.fuels.RainSubstrate;
import forestry.api.recipes.RecipeManagers;
import forestry.apiculture.items.ItemRegistryApiculture;
import forestry.core.blocks.BlockCoreType;
import forestry.core.blocks.BlockSoil;
import forestry.core.circuits.Circuit;
import forestry.core.circuits.CircuitLayout;
import forestry.core.circuits.EnumCircuitBoardType;
import forestry.core.circuits.ItemCircuitBoard;
import forestry.core.config.Constants;
import forestry.core.fluids.Fluids;
import forestry.core.items.EnumElectronTube;
import forestry.core.items.ItemElectronTube;
import forestry.core.items.ItemRegistryCore;
import forestry.core.network.IPacketRegistry;
import forestry.core.recipes.RecipeUtil;
import forestry.core.recipes.craftguide.CraftGuideIntegration;
import forestry.core.tiles.MachineDefinition;
import forestry.core.utils.Log;
import forestry.core.utils.ModUtil;
import forestry.core.utils.datastructures.FluidMap;
import forestry.core.utils.datastructures.ItemStackMap;
import forestry.factory.DummyManagers;
import forestry.factory.blocks.BlockFactoryPlainType;
import forestry.factory.blocks.BlockFactoryTesrType;
import forestry.factory.blocks.BlockRegistryFactory;
import forestry.factory.circuits.CircuitSpeedUpgrade;
import forestry.factory.network.PacketRegistryFactory;
import forestry.factory.recipes.CarpenterRecipeManager;
import forestry.factory.recipes.CentrifugeRecipeManager;
import forestry.factory.recipes.FabricatorRecipeManager;
import forestry.factory.recipes.FabricatorSmeltingRecipeManager;
import forestry.factory.recipes.FermenterRecipeManager;
import forestry.factory.recipes.MoistenerRecipeManager;
import forestry.factory.recipes.SqueezerRecipeManager;
import forestry.factory.recipes.StillRecipeManager;
import forestry.factory.triggers.FactoryTriggers;
@Plugin(
pluginID = "Factory",
name = "Factory",
author = "SirSengir",
url = Constants.URL,
unlocalizedDescription = "for.plugin.factory.description")
public class PluginFactory extends ForestryPlugin {
public static BlockRegistryFactory blocks;
@Override
protected void setupAPI() {
super.setupAPI();
RecipeManagers.craftingProviders = ImmutableList.of(
RecipeManagers.carpenterManager = new CarpenterRecipeManager(),
RecipeManagers.centrifugeManager = new CentrifugeRecipeManager(),
RecipeManagers.fabricatorManager = new FabricatorRecipeManager(),
RecipeManagers.fabricatorSmeltingManager = new FabricatorSmeltingRecipeManager(),
RecipeManagers.fermenterManager = new FermenterRecipeManager(),
RecipeManagers.moistenerManager = new MoistenerRecipeManager(),
RecipeManagers.squeezerManager = new SqueezerRecipeManager(),
RecipeManagers.stillManager = new StillRecipeManager());
setupFuelManager();
}
@Override
protected void disabledSetupAPI() {
super.disabledSetupAPI();
RecipeManagers.craftingProviders = ImmutableList.of(
RecipeManagers.carpenterManager = new DummyManagers.DummyCarpenterManager(),
RecipeManagers.centrifugeManager = new DummyManagers.DummyCentrifugeManager(),
RecipeManagers.fabricatorManager = new DummyManagers.DummyFabricatorManager(),
RecipeManagers.fabricatorSmeltingManager = new DummyManagers.DummyFabricatorSmeltingManager(),
RecipeManagers.fermenterManager = new DummyManagers.DummyFermenterManager(),
RecipeManagers.moistenerManager = new DummyManagers.DummyMoistenerManager(),
RecipeManagers.squeezerManager = new DummyManagers.DummySqueezerManager(),
RecipeManagers.stillManager = new DummyManagers.DummyStillManager());
setupFuelManager();
}
private static void setupFuelManager() {
FuelManager.fermenterFuel = new ItemStackMap<>();
FuelManager.moistenerResource = new ItemStackMap<>();
FuelManager.rainSubstrate = new ItemStackMap<>();
FuelManager.bronzeEngineFuel = new FluidMap<>();
FuelManager.copperEngineFuel = new ItemStackMap<>();
FuelManager.generatorFuel = new FluidMap<>();
}
@Override
protected void registerItemsAndBlocks() {
blocks = new BlockRegistryFactory();
}
@Override
public IPacketRegistry getPacketRegistry() {
return new PacketRegistryFactory();
}
@Override
public void preInit() {
super.preInit();
ItemRegistryCore coreItems = PluginCore.items;
// Set fuels and resources for the fermenter
ItemStack fertilizerCompound = coreItems.fertilizerCompound.getItemStack();
FuelManager.fermenterFuel.put(
fertilizerCompound,
new FermenterFuel(
fertilizerCompound,
ForestryAPI.activeMode.getIntegerSetting("fermenter.value.fertilizer"),
ForestryAPI.activeMode.getIntegerSetting("fermenter.cycles.fertilizer")));
int cyclesCompost = ForestryAPI.activeMode.getIntegerSetting("fermenter.cycles.compost");
int valueCompost = ForestryAPI.activeMode.getIntegerSetting("fermenter.value.compost");
ItemStack fertilizerBio = coreItems.fertilizerBio.getItemStack();
ItemStack mulch = coreItems.mulch.getItemStack();
FuelManager.fermenterFuel.put(fertilizerBio, new FermenterFuel(fertilizerBio, valueCompost, cyclesCompost));
FuelManager.fermenterFuel.put(mulch, new FermenterFuel(mulch, valueCompost, cyclesCompost));
// Add moistener resources
ItemStack wheat = new ItemStack(Items.wheat);
ItemStack mouldyWheat = coreItems.mouldyWheat.getItemStack();
ItemStack decayingWheat = coreItems.decayingWheat.getItemStack();
FuelManager.moistenerResource.put(wheat, new MoistenerFuel(wheat, mouldyWheat, 0, 300));
FuelManager.moistenerResource.put(mouldyWheat, new MoistenerFuel(mouldyWheat, decayingWheat, 1, 600));
FuelManager.moistenerResource.put(decayingWheat, new MoistenerFuel(decayingWheat, mulch, 2, 900));
// Set fuels for our own engines
ItemStack peat = coreItems.peat.getItemStack();
FuelManager.copperEngineFuel.put(
peat,
new EngineCopperFuel(
peat,
Constants.ENGINE_COPPER_FUEL_VALUE_PEAT,
Constants.ENGINE_COPPER_CYCLE_DURATION_PEAT));
ItemStack bituminousPeat = coreItems.bituminousPeat.getItemStack();
FuelManager.copperEngineFuel.put(
bituminousPeat,
new EngineCopperFuel(
bituminousPeat,
Constants.ENGINE_COPPER_FUEL_VALUE_BITUMINOUS_PEAT,
Constants.ENGINE_COPPER_CYCLE_DURATION_BITUMINOUS_PEAT));
FuelManager.bronzeEngineFuel.put(
Fluids.BIOMASS.getFluid(),
new EngineBronzeFuel(
Fluids.BIOMASS.getFluid(),
Constants.ENGINE_FUEL_VALUE_BIOMASS,
(int) (Constants.ENGINE_CYCLE_DURATION_BIOMASS
* ForestryAPI.activeMode.getFloatSetting("fuel.biomass.biogas")),
1));
FuelManager.bronzeEngineFuel.put(
Fluids.WATER.getFluid(),
new EngineBronzeFuel(
Fluids.WATER.getFluid(),
Constants.ENGINE_FUEL_VALUE_WATER,
Constants.ENGINE_CYCLE_DURATION_WATER,
3));
FuelManager.bronzeEngineFuel.put(
Fluids.MILK.getFluid(),
new EngineBronzeFuel(
Fluids.MILK.getFluid(),
Constants.ENGINE_FUEL_VALUE_MILK,
Constants.ENGINE_CYCLE_DURATION_MILK,
3));
FuelManager.bronzeEngineFuel.put(
Fluids.SEEDOIL.getFluid(),
new EngineBronzeFuel(
Fluids.SEEDOIL.getFluid(),
Constants.ENGINE_FUEL_VALUE_SEED_OIL,
Constants.ENGINE_CYCLE_DURATION_SEED_OIL,
1));
FuelManager.bronzeEngineFuel.put(
Fluids.HONEY.getFluid(),
new EngineBronzeFuel(
Fluids.HONEY.getFluid(),
Constants.ENGINE_FUEL_VALUE_HONEY,
Constants.ENGINE_CYCLE_DURATION_HONEY,
1));
FuelManager.bronzeEngineFuel.put(
Fluids.JUICE.getFluid(),
new EngineBronzeFuel(
Fluids.JUICE.getFluid(),
Constants.ENGINE_FUEL_VALUE_JUICE,
Constants.ENGINE_CYCLE_DURATION_JUICE,
1));
// Set rain substrates
ItemStack iodineCharge = coreItems.iodineCharge.getItemStack();
ItemStack dissipationCharge = coreItems.craftingMaterial.getDissipationCharge();
FuelManager.rainSubstrate
.put(iodineCharge, new RainSubstrate(iodineCharge, Constants.RAINMAKER_RAIN_DURATION_IODINE, 0.01f));
FuelManager.rainSubstrate.put(dissipationCharge, new RainSubstrate(dissipationCharge, 0.075f));
for (BlockFactoryTesrType type : BlockFactoryTesrType.VALUES) {
MachineDefinition machineDefinition = new MachineDefinition(type);
blocks.factoryTESR.addDefinition(machineDefinition);
}
blocks.factoryPlain.addDefinitions(
new MachineDefinition(BlockFactoryPlainType.FABRICATOR).setFaces(0, 1, 2, 3, 4, 4),
new MachineDefinition(BlockFactoryPlainType.RAINTANK).setFaces(0, 1, 0, 0, 0, 0),
new MachineDefinition(BlockFactoryPlainType.WORKTABLE).setFaces(0, 1, 2, 3, 4, 4));
ICircuitLayout layoutMachineUpgrade = new CircuitLayout("machine.upgrade", CircuitSocketType.MACHINE);
ChipsetManager.circuitRegistry.registerLayout(layoutMachineUpgrade);
}
@Override
protected void registerTriggers() {
FactoryTriggers.initialize();
}
@Override
public void doInit() {
super.doInit();
blocks.factoryTESR.init();
blocks.factoryPlain.init();
Circuit.machineSpeedUpgrade1 = new CircuitSpeedUpgrade("machine.speed.boost.1", 0.125f, 0.05f, 4);
Circuit.machineSpeedUpgrade2 = new CircuitSpeedUpgrade("machine.speed.boost.2", 0.250f, 0.10f, 4);
Circuit.machineEfficiencyUpgrade1 = new CircuitSpeedUpgrade("machine.efficiency.1", 0, -0.10f, 2);
}
@Override
public void postInit() {
super.postInit();
if (ModUtil.isModLoaded("craftguide")) {
CraftGuideIntegration.register();
} else {
Log.info("Skipping CraftGuide integration.");
}
}
@Override
protected void registerRecipes() {
// / FABRICATOR
ItemElectronTube electronTube = PluginCore.items.tubes;
EnumElectronTube.COPPER.registerTubeRecipe("ingotCopper");
EnumElectronTube.BRONZE.registerTubeRecipe("ingotBronze");
EnumElectronTube.TIN.registerTubeRecipe("ingotTin");
EnumElectronTube.IRON.registerTubeRecipe("ingotIron");
EnumElectronTube.GOLD.registerTubeRecipe("ingotGold");
EnumElectronTube.DIAMOND.registerTubeRecipe("gemDiamond");
EnumElectronTube.OBSIDIAN.registerTubeRecipe(new ItemStack(Blocks.obsidian));
EnumElectronTube.BLAZE.registerTubeRecipe(new ItemStack(Items.blaze_powder));
EnumElectronTube.EMERALD.registerTubeRecipe("gemEmerald");
EnumElectronTube.APATITE.registerTubeRecipe("gemApatite");
EnumElectronTube.LAPIS.registerTubeRecipe("gemLapis");
RecipeManagers.fabricatorManager.addRecipe(
null,
Fluids.GLASS.getFluid(500),
electronTube.get(EnumElectronTube.ENDER, 4),
new Object[] { " X ", "#X#", "XXX", '#', new ItemStack(Items.ender_eye, 1, 0), 'X',
new ItemStack(Blocks.end_stone, 1, 0) });
String[] dyes = { "dyeBlack", "dyeRed", "dyeGreen", "dyeBrown", "dyeBlue", "dyePurple", "dyeCyan",
"dyeLightGray", "dyeGray", "dyePink", "dyeLime", "dyeYellow", "dyeLightBlue", "dyeMagenta", "dyeOrange",
"dyeWhite" };
if (PluginManager.Module.APICULTURE.isEnabled()) {
ItemRegistryApiculture beeItems = PluginApiculture.items;
FluidStack liquidGlassX4 = Fluids.GLASS.getFluid(Constants.BUCKET_VOLUME * 4);
for (int i = 0; i < 16; i++) {
RecipeManagers.fabricatorManager.addRecipe(
beeItems.waxCast.getWildcard(),
liquidGlassX4,
new ItemStack(Blocks.stained_glass, 4, 15 - i),
new Object[] { "#", "X", '#', dyes[i], 'X', beeItems.propolis.getWildcard() });
}
RecipeManagers.fabricatorManager.addRecipe(
beeItems.waxCast.getWildcard(),
liquidGlassX4,
new ItemStack(Blocks.glass, 4, 0),
new Object[] { "#", "X", 'X', beeItems.propolis.getWildcard() });
}
// / SQUEEZER
int appleMulchAmount = ForestryAPI.activeMode.getIntegerSetting("squeezer.mulch.apple");
int appleJuiceAmount = ForestryAPI.activeMode.getIntegerSetting("squeezer.liquid.apple");
RecipeManagers.squeezerManager.addRecipe(
10,
new ItemStack[] { new ItemStack(Items.apple) },
Fluids.JUICE.getFluid(appleJuiceAmount),
PluginCore.items.mulch.getItemStack(),
appleMulchAmount);
int seedOilAmount = ForestryAPI.activeMode.getIntegerSetting("squeezer.liquid.seed");
FluidStack seedOil = Fluids.SEEDOIL.getFluid(seedOilAmount);
RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[] { new ItemStack(Items.wheat_seeds) }, seedOil);
RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[] { new ItemStack(Items.pumpkin_seeds) }, seedOil);
RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[] { new ItemStack(Items.melon_seeds) }, seedOil);
RecipeManagers.squeezerManager.addRecipe(
10,
new ItemStack[] { PluginCore.items.phosphor.getItemStack(2), new ItemStack(Blocks.cobblestone) },
Fluids.LAVA.getFluid(1600));
RecipeManagers.squeezerManager
.addRecipe(10, new ItemStack[] { new ItemStack(Blocks.cactus) }, Fluids.WATER.getFluid(500));
RecipeManagers.squeezerManager.addRecipe(
10,
new ItemStack[] { new ItemStack(Items.snowball), PluginCore.items.craftingMaterial.getIceShard(4) },
Fluids.ICE.getFluid(4000));
// STILL
RecipeManagers.stillManager.addRecipe(
Constants.STILL_DESTILLATION_DURATION,
Fluids.BIOMASS.getFluid(Constants.STILL_DESTILLATION_INPUT),
Fluids.ETHANOL.getFluid(Constants.STILL_DESTILLATION_OUTPUT));
// convert old honey to new honey
if (FluidRegistry.isFluidRegistered(Fluids.LEGACY_HONEY.name())) {
RecipeManagers.stillManager.addRecipe(1, Fluids.LEGACY_HONEY.getFluid(1000), Fluids.HONEY.getFluid(1000));
}
// MOISTENER
RecipeManagers.moistenerManager
.addRecipe(new ItemStack(Items.wheat_seeds), new ItemStack(Blocks.mycelium), 5000);
RecipeManagers.moistenerManager
.addRecipe(new ItemStack(Blocks.cobblestone), new ItemStack(Blocks.mossy_cobblestone), 20000);
RecipeManagers.moistenerManager
.addRecipe(new ItemStack(Blocks.stonebrick), new ItemStack(Blocks.stonebrick, 1, 1), 20000);
// FERMENTER
for (int i = 0; i < 6; i++) {
RecipeUtil.addFermenterRecipes(
new ItemStack(Blocks.sapling, 1, i),
ForestryAPI.activeMode.getIntegerSetting("fermenter.yield.sapling"),
Fluids.BIOMASS);
}
RecipeUtil.addFermenterRecipes(
new ItemStack(Blocks.cactus),
ForestryAPI.activeMode.getIntegerSetting("fermenter.yield.cactus"),
Fluids.BIOMASS);
RecipeUtil.addFermenterRecipes(
new ItemStack(Items.wheat),
ForestryAPI.activeMode.getIntegerSetting("fermenter.yield.wheat"),
Fluids.BIOMASS);
RecipeUtil.addFermenterRecipes(
new ItemStack(Items.potato),
(2 * ForestryAPI.activeMode.getIntegerSetting("fermenter.yield.wheat")),
Fluids.BIOMASS);
RecipeUtil.addFermenterRecipes(
new ItemStack(Items.reeds),
ForestryAPI.activeMode.getIntegerSetting("fermenter.yield.cane"),
Fluids.BIOMASS);
RecipeUtil.addFermenterRecipes(
new ItemStack(Blocks.brown_mushroom),
ForestryAPI.activeMode.getIntegerSetting("fermenter.yield.mushroom"),
Fluids.BIOMASS);
RecipeUtil.addFermenterRecipes(
new ItemStack(Blocks.red_mushroom),
ForestryAPI.activeMode.getIntegerSetting("fermenter.yield.mushroom"),
Fluids.BIOMASS);
// FABRICATOR
RecipeManagers.fabricatorSmeltingManager
.addSmelting(new ItemStack(Blocks.glass), Fluids.GLASS.getFluid(1000), 1000);
RecipeManagers.fabricatorSmeltingManager
.addSmelting(new ItemStack(Blocks.glass_pane), Fluids.GLASS.getFluid(375), 1000);
RecipeManagers.fabricatorSmeltingManager
.addSmelting(new ItemStack(Blocks.sand), Fluids.GLASS.getFluid(1000), 3000);
RecipeManagers.fabricatorSmeltingManager
.addSmelting(new ItemStack(Blocks.sand, 1, 1), Fluids.GLASS.getFluid(1000), 3000);
RecipeManagers.fabricatorSmeltingManager
.addSmelting(new ItemStack(Blocks.sandstone), Fluids.GLASS.getFluid(4000), 4800);
RecipeManagers.fabricatorSmeltingManager
.addSmelting(new ItemStack(Blocks.sandstone, 1, 1), Fluids.GLASS.getFluid(4000), 4800);
RecipeManagers.fabricatorSmeltingManager
.addSmelting(new ItemStack(Blocks.sandstone, 1, 2), Fluids.GLASS.getFluid(4000), 4800);
// / CARPENTER
RecipeManagers.carpenterManager.addRecipe(
50,
Fluids.SEEDOIL.getFluid(250),
null,
PluginCore.items.impregnatedCasing.getItemStack(),
"###",
"# #",
"###",
'#',
"logWood");
RecipeManagers.carpenterManager.addRecipe(
50,
Fluids.SEEDOIL.getFluid(500),
null,
PluginCore.blocks.core.get(BlockCoreType.ESCRITOIRE),
"# ",
"###",
"# #",
'#',
"plankWood");
// RESOURCES
RecipeManagers.carpenterManager.addRecipe(
10,
Fluids.SEEDOIL.getFluid(100),
null,
PluginCore.items.stickImpregnated.getItemStack(2),
"#",
"#",
'#',
"logWood");
RecipeManagers.carpenterManager.addRecipe(
5,
Fluids.WATER.getFluid(250),
null,
PluginCore.items.woodPulp.getItemStack(4),
"#",
'#',
"logWood");
RecipeManagers.carpenterManager.addRecipe(
5,
Fluids.WATER.getFluid(250),
null,
new ItemStack(Items.paper, 1),
"#",
"#",
'#',
"pulpWood");
RecipeManagers.carpenterManager.addRecipe(
5,
Fluids.WATER.getFluid(1000),
null,
PluginCore.blocks.soil.get(BlockSoil.SoilType.HUMUS, 9),
"###",
"#X#",
"###",
'#',
Blocks.dirt,
'X',
PluginCore.items.mulch);
RecipeManagers.carpenterManager.addRecipe(
5,
Fluids.WATER.getFluid(1000),
null,
PluginCore.blocks.soil.get(BlockSoil.SoilType.BOG_EARTH, 8),
"#X#",
"XYX",
"#X#",
'#',
Blocks.dirt,
'X',
"sand",
'Y',
PluginCore.items.mulch);
RecipeManagers.carpenterManager.addRecipe(
75,
Fluids.WATER.getFluid(5000),
null,
PluginCore.items.hardenedCasing.getItemStack(),
"# #",
" Y ",
"# #",
'#',
"gemDiamond",
'Y',
PluginCore.items.sturdyCasing);
// / CHIPSETS
ItemCircuitBoard circuitBoard = PluginCore.items.circuitboards;
RecipeManagers.carpenterManager.addRecipe(
20,
Fluids.WATER.getFluid(1000),
null,
circuitBoard.get(EnumCircuitBoardType.BASIC),
"R R",
"R#R",
"R R",
'#',
"ingotTin",
'R',
"dustRedstone");
RecipeManagers.carpenterManager.addRecipe(
40,
Fluids.WATER.getFluid(1000),
null,
circuitBoard.get(EnumCircuitBoardType.ENHANCED),
"R#R",
"R#R",
"R#R",
'#',
"ingotBronze",
'R',
"dustRedstone");
RecipeManagers.carpenterManager.addRecipe(
80,
Fluids.WATER.getFluid(1000),
null,
circuitBoard.get(EnumCircuitBoardType.REFINED),
"R#R",
"R#R",
"R#R",
'#',
"ingotIron",
'R',
"dustRedstone");
RecipeManagers.carpenterManager.addRecipe(
80,
Fluids.WATER.getFluid(1000),
null,
circuitBoard.get(EnumCircuitBoardType.INTRICATE),
"R#R",
"R#R",
"R#R",
'#',
"ingotGold",
'R',
"dustRedstone");
RecipeManagers.carpenterManager.addRecipe(
40,
Fluids.WATER.getFluid(1000),
null,
PluginCore.items.solderingIron.getItemStack(),
" # ",
"# #",
" B",
'#',
"ingotIron",
'B',
"ingotBronze");
// RAIN SUBSTRATES
ItemRegistryApiculture beeItems = PluginApiculture.items;
if (beeItems != null) {
RecipeManagers.carpenterManager.addRecipe(
5,
Fluids.WATER.getFluid(1000),
null,
PluginCore.items.iodineCharge.getItemStack(),
"Z#Z",
"#Y#",
"X#X",
'#',
beeItems.pollenCluster.getWildcard(),
'X',
Items.gunpowder,
'Y',
PluginFluids.items.canEmpty,
'Z',
beeItems.honeyDrop);
RecipeManagers.carpenterManager.addRecipe(
5,
Fluids.WATER.getFluid(1000),
null,
PluginCore.items.craftingMaterial.getDissipationCharge(),
"Z#Z",
"#Y#",
"X#X",
'#',
beeItems.royalJelly,
'X',
Items.gunpowder,
'Y',
PluginFluids.items.canEmpty,
'Z',
beeItems.honeydew);
}
// Ender pearl
RecipeManagers.carpenterManager.addRecipe(
100,
null,
new ItemStack(Items.ender_pearl, 1),
" # ",
"###",
" # ",
'#',
PluginCore.items.craftingMaterial.getPulsatingMesh());
// Woven Silk
RecipeManagers.carpenterManager.addRecipe(
10,
Fluids.WATER.getFluid(500),
null,
PluginCore.items.craftingMaterial.getWovenSilk(),
"###",
"###",
"###",
'#',
PluginCore.items.craftingMaterial.getSilkWisp());
// Boxes
RecipeManagers.carpenterManager.addRecipe(
5,
Fluids.WATER.getFluid(1000),
null,
PluginCore.items.carton.getItemStack(2),
" # ",
"# #",
" # ",
'#',
"pulpWood");
// Assembly Kits
RecipeManagers.carpenterManager.addRecipe(
20,
null,
PluginCore.items.carton.getItemStack(),
PluginCore.items.kitPickaxe.getItemStack(),
new Object[] { "###", " X ", " X ", '#', "ingotBronze", 'X', "stickWood" });
RecipeManagers.carpenterManager.addRecipe(
20,
null,
PluginCore.items.carton.getItemStack(),
PluginCore.items.kitShovel.getItemStack(),
new Object[] { " # ", " X ", " X ", '#', "ingotBronze", 'X', "stickWood" });
// Reclamation
RecipeManagers.carpenterManager.addRecipe(
null,
PluginCore.items.ingotBronze.getItemStack(2),
"#",
'#',
PluginCore.items.brokenBronzePickaxe);
RecipeManagers.carpenterManager.addRecipe(
null,
PluginCore.items.ingotBronze.getItemStack(),
"#",
'#',
PluginCore.items.brokenBronzeShovel);
// Crating and uncrating
if (PluginManager.Module.STORAGE.isEnabled()) {
PluginStorage.createCrateRecipes();
}
ICircuitLayout layout = ChipsetManager.circuitRegistry.getLayout("forestry.machine.upgrade");
// / Solder Manager
ChipsetManager.solderManager.addRecipe(
layout,
PluginCore.items.tubes.get(EnumElectronTube.EMERALD, 1),
Circuit.machineSpeedUpgrade1);
ChipsetManager.solderManager
.addRecipe(layout, PluginCore.items.tubes.get(EnumElectronTube.BLAZE, 1), Circuit.machineSpeedUpgrade2);
ChipsetManager.solderManager.addRecipe(
layout,
PluginCore.items.tubes.get(EnumElectronTube.GOLD, 1),
Circuit.machineEfficiencyUpgrade1);
RecipeUtil.addRecipe(
blocks.factoryTESR.get(BlockFactoryTesrType.BOTTLER),
"X#X",
"#Y#",
"X#X",
'#',
"blockGlass",
'X',
PluginFluids.items.canEmpty,
'Y',
PluginCore.items.sturdyCasing);
RecipeUtil.addRecipe(
blocks.factoryTESR.get(BlockFactoryTesrType.CARPENTER),
"X#X",
"XYX",
"X#X",
'#',
"blockGlass",
'X',
"ingotBronze",
'Y',
PluginCore.items.sturdyCasing);
RecipeUtil.addRecipe(
blocks.factoryTESR.get(BlockFactoryTesrType.CENTRIFUGE),
"X#X",
"XYX",
"X#X",
'#',
"blockGlass",
'X',
"ingotCopper",
'Y',
PluginCore.items.sturdyCasing);
RecipeUtil.addRecipe(
blocks.factoryTESR.get(BlockFactoryTesrType.FERMENTER),
"X#X",
"#Y#",
"X#X",
'#',
"blockGlass",
'X',
"gearBronze",
'Y',
PluginCore.items.sturdyCasing);
RecipeUtil.addRecipe(
blocks.factoryTESR.get(BlockFactoryTesrType.MOISTENER),
"X#X",
"#Y#",
"X#X",
'#',
"blockGlass",
'X',
"gearCopper",
'Y',
PluginCore.items.sturdyCasing);
RecipeUtil.addRecipe(
blocks.factoryTESR.get(BlockFactoryTesrType.SQUEEZER),
"X#X",
"XYX",
"X#X",
'#',
"blockGlass",
'X',
"ingotTin",
'Y',
PluginCore.items.sturdyCasing);
RecipeUtil.addRecipe(
blocks.factoryTESR.get(BlockFactoryTesrType.STILL),
"X#X",
"#Y#",
"X#X",
'#',
"blockGlass",
'X',
"dustRedstone",
'Y',
PluginCore.items.sturdyCasing);
RecipeUtil.addRecipe(
blocks.factoryTESR.get(BlockFactoryTesrType.RAINMAKER),
"X#X",
"#Y#",
"X#X",
'#',
"blockGlass",
'X',
"gearTin",
'Y',
PluginCore.items.hardenedCasing);
RecipeUtil.addRecipe(
blocks.factoryPlain.get(BlockFactoryPlainType.FABRICATOR),
"X#X",
"#Y#",
"XZX",
'#',
"blockGlass",
'X',
"ingotGold",
'Y',
PluginCore.items.sturdyCasing,
'Z',
"chestWood");
RecipeUtil.addRecipe(
blocks.factoryPlain.get(BlockFactoryPlainType.RAINTANK),
"X#X",
"XYX",
"X#X",
'#',
"blockGlass",
'X',
"ingotIron",
'Y',
PluginCore.items.sturdyCasing);
RecipeUtil.addRecipe(
blocks.factoryPlain.get(BlockFactoryPlainType.WORKTABLE),
"B",
"W",
"C",
'B',
Items.book,
'W',
"craftingTableWood",
'C',
"chestWood");
}
}