Clsoe #410
This commit is contained in:
parent
82ddcfd9cf
commit
e4f357dffe
5 changed files with 177 additions and 252 deletions
Binary file not shown.
|
@ -3,9 +3,8 @@ package modtweaker.mods.forestry.handlers;
|
|||
import com.blamejared.mtlib.helpers.LogHelper;
|
||||
import forestry.api.recipes.*;
|
||||
import forestry.core.recipes.ShapedRecipeCustom;
|
||||
import forestry.factory.recipes.CarpenterRecipeManager;
|
||||
import forestry.factory.recipes.jei.carpenter.*;
|
||||
import mezz.jei.api.recipe.*;
|
||||
import forestry.factory.recipes.jei.carpenter.CarpenterRecipeWrapper;
|
||||
import mezz.jei.api.recipe.IRecipeWrapper;
|
||||
import minetweaker.MineTweakerAPI;
|
||||
import minetweaker.api.item.*;
|
||||
import minetweaker.api.liquid.ILiquidStack;
|
||||
|
|
|
@ -2,8 +2,9 @@ package modtweaker.mods.forestry.handlers;
|
|||
|
||||
import com.blamejared.mtlib.helpers.LogHelper;
|
||||
import forestry.api.recipes.*;
|
||||
import forestry.factory.recipes.jei.fabricator.*;
|
||||
import mezz.jei.api.recipe.*;
|
||||
import forestry.core.recipes.ShapedRecipeCustom;
|
||||
import forestry.factory.recipes.jei.fabricator.FabricatorRecipeWrapper;
|
||||
import mezz.jei.api.recipe.IRecipeWrapper;
|
||||
import minetweaker.MineTweakerAPI;
|
||||
import minetweaker.api.item.*;
|
||||
import modtweaker.mods.forestry.*;
|
||||
|
@ -19,164 +20,161 @@ import static com.blamejared.mtlib.helpers.StackHelper.matches;
|
|||
|
||||
@ZenClass("mods.forestry.ThermionicFabricator")
|
||||
public class ThermionicFabricator {
|
||||
|
||||
public static final String nameSmelting = "Forestry Thermionic Fabricator (Smelting)";
|
||||
public static final String nameCasting = "Forestry Thermionic Fabricator (Casting)";
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Adds smelting recipe to Thermionic Fabricator
|
||||
*
|
||||
* @param fluidOutput recipe fluid amount
|
||||
* @param itemInput recipe input input
|
||||
* @param meltingPoint point at where itemInput melts down
|
||||
*/
|
||||
@ZenMethod
|
||||
public static void addSmelting(int fluidOutput, IItemStack itemInput, int meltingPoint) {
|
||||
//The machines internal tank accept only liquid glass, therefor this function only accept the amount and hardcode the fluid to glass
|
||||
MineTweakerAPI.apply(new AddSmelting(new FabricatorSmeltingRecipe(toStack(itemInput), FluidRegistry.getFluidStack("glass", fluidOutput), meltingPoint)));
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Adds casting recipe to Thermionic Fabricator
|
||||
*
|
||||
* @param output recipe output item
|
||||
* @param ingredients list of input items
|
||||
* @param fluidInput recipe fluid input
|
||||
* * @param plan recipe plan item (optional)
|
||||
* * @param remainingItems no idea(optional)
|
||||
*/
|
||||
@ZenMethod
|
||||
public static void addCast(IItemStack output, IIngredient[][] ingredients, int fluidInput, @Optional IItemStack plan, @Optional IItemStack[] remainingItems) {
|
||||
if(remainingItems == null) {
|
||||
remainingItems = new IItemStack[0];
|
||||
}
|
||||
IDescriptiveRecipe recipe = new DescriptiveRecipe(3, 3, toShapedObjects(ingredients), toStack(output), toStacks(remainingItems));
|
||||
MineTweakerAPI.apply(new AddCast(new FabricatorRecipe(toStack(plan), FluidRegistry.getFluidStack("glass", fluidInput), recipe)));
|
||||
}
|
||||
|
||||
/*
|
||||
Implements the actions to add a recipe
|
||||
Since the machine has two crafting Steps, this is a constructors for both
|
||||
*/
|
||||
private static class AddSmelting extends ForestryListAddition<IFabricatorSmeltingRecipe> {
|
||||
|
||||
public AddSmelting(IFabricatorSmeltingRecipe recipe) {
|
||||
super(ThermionicFabricator.nameSmelting, RecipeManagers.fabricatorSmeltingManager);
|
||||
recipes.add(recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeInfo(IFabricatorSmeltingRecipe recipe) {
|
||||
return LogHelper.getStackDescription(recipe.getResource());
|
||||
}
|
||||
|
||||
//It's not clear to me how the smelting recipes should be wrapped
|
||||
@Override
|
||||
public IRecipeWrapper wrapRecipe(IFabricatorSmeltingRecipe recipe){
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static class AddCast extends ForestryListAddition<IFabricatorRecipe> {
|
||||
|
||||
public AddCast(IFabricatorRecipe recipe) {
|
||||
super(ThermionicFabricator.nameCasting, RecipeManagers.fabricatorManager);
|
||||
recipes.add(recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeInfo(IFabricatorRecipe recipe) {
|
||||
return LogHelper.getStackDescription(recipe.getRecipeOutput());
|
||||
}
|
||||
|
||||
@Override
|
||||
public IRecipeWrapper wrapRecipe(IFabricatorRecipe recipe){
|
||||
return new FabricatorRecipeWrapper(recipe);
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Removes smelting recipe from Thermionic Fabricator
|
||||
*
|
||||
* @param itemInput = item input
|
||||
*/
|
||||
@ZenMethod
|
||||
public static void removeSmelting(IIngredient itemInput) {
|
||||
List<IFabricatorSmeltingRecipe> recipes = new LinkedList<IFabricatorSmeltingRecipe>();
|
||||
|
||||
for(IFabricatorSmeltingRecipe r : RecipeManagers.fabricatorSmeltingManager.recipes()) {
|
||||
if(r != null && r.getResource() != null && matches(itemInput, toIItemStack(r.getResource()))) {
|
||||
recipes.add(r);
|
||||
}
|
||||
}
|
||||
|
||||
if(!recipes.isEmpty()) {
|
||||
MineTweakerAPI.apply(new RemoveSmelting(recipes));
|
||||
} else {
|
||||
LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", ThermionicFabricator.nameSmelting, itemInput.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes casting recipe from Thermionic Fabricator
|
||||
*
|
||||
* @param product = recipe result
|
||||
*/
|
||||
@ZenMethod
|
||||
public static void removeCast(IIngredient product) {
|
||||
List<IFabricatorRecipe> recipes = new LinkedList<IFabricatorRecipe>();
|
||||
|
||||
for(IFabricatorRecipe r : RecipeManagers.fabricatorManager.recipes()) {
|
||||
if(r != null && r.getRecipeOutput() != null && matches(product, toIItemStack(r.getRecipeOutput()))) {
|
||||
recipes.add(r);
|
||||
}
|
||||
}
|
||||
|
||||
if(!recipes.isEmpty()) {
|
||||
MineTweakerAPI.apply(new RemoveCasts(recipes));
|
||||
} else {
|
||||
LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", ThermionicFabricator.nameSmelting, product.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
private static class RemoveSmelting extends ForestryListRemoval<IFabricatorSmeltingRecipe, IFabricatorSmeltingManager> {
|
||||
|
||||
public RemoveSmelting(List<IFabricatorSmeltingRecipe> recipes) {
|
||||
super(ThermionicFabricator.nameSmelting, RecipeManagers.fabricatorSmeltingManager, recipes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeInfo(IFabricatorSmeltingRecipe recipe) {
|
||||
return LogHelper.getStackDescription(recipe.getResource());
|
||||
}
|
||||
|
||||
//It's not clear to me how the smelting recipes should be wrapped
|
||||
@Override
|
||||
public IRecipeWrapper wrapRecipe(IFabricatorSmeltingRecipe recipe){
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static class RemoveCasts extends ForestryListRemoval<IFabricatorRecipe, IFabricatorManager> {
|
||||
|
||||
public RemoveCasts(List<IFabricatorRecipe> recipes) {
|
||||
super(ThermionicFabricator.nameCasting, RecipeManagers.fabricatorManager, recipes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeInfo(IFabricatorRecipe recipe) {
|
||||
return LogHelper.getStackDescription(recipe.getRecipeOutput());
|
||||
}
|
||||
|
||||
@Override
|
||||
public IRecipeWrapper wrapRecipe(IFabricatorRecipe recipe){
|
||||
return new FabricatorRecipeWrapper(recipe);
|
||||
}
|
||||
}
|
||||
|
||||
public static final String nameSmelting = "Forestry Thermionic Fabricator (Smelting)";
|
||||
public static final String nameCasting = "Forestry Thermionic Fabricator (Casting)";
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Adds smelting recipe to Thermionic Fabricator
|
||||
*
|
||||
* @param fluidOutput recipe fluid amount
|
||||
* @param itemInput recipe input input
|
||||
* @param meltingPoint point at where itemInput melts down
|
||||
*/
|
||||
@ZenMethod
|
||||
public static void addSmelting(int fluidOutput, IItemStack itemInput, int meltingPoint) {
|
||||
//The machines internal tank accept only liquid glass, therefor this function only accept the amount and hardcode the fluid to glass
|
||||
MineTweakerAPI.apply(new AddSmelting(new FabricatorSmeltingRecipe(toStack(itemInput), FluidRegistry.getFluidStack("glass", fluidOutput), meltingPoint)));
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Adds casting recipe to Thermionic Fabricator
|
||||
*
|
||||
* @param output recipe output item
|
||||
* @param ingredients list of input items
|
||||
* @param fluidInput recipe fluid input
|
||||
* * @param plan recipe plan item (optional)
|
||||
* * @param remainingItems no idea(optional)
|
||||
*/
|
||||
@ZenMethod
|
||||
public static void addCast(IItemStack output, IIngredient[][] ingredients, int fluidInput, @Optional IItemStack plan) {
|
||||
IDescriptiveRecipe recipe = new ShapedRecipeCustom(toStack(output), toShapedObjects(ingredients));
|
||||
MineTweakerAPI.apply(new AddCast(new FabricatorRecipe(toStack(plan), FluidRegistry.getFluidStack("glass", fluidInput), recipe)));
|
||||
}
|
||||
|
||||
/*
|
||||
Implements the actions to add a recipe
|
||||
Since the machine has two crafting Steps, this is a constructors for both
|
||||
*/
|
||||
private static class AddSmelting extends ForestryListAddition<IFabricatorSmeltingRecipe> {
|
||||
|
||||
public AddSmelting(IFabricatorSmeltingRecipe recipe) {
|
||||
super(ThermionicFabricator.nameSmelting, RecipeManagers.fabricatorSmeltingManager);
|
||||
recipes.add(recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeInfo(IFabricatorSmeltingRecipe recipe) {
|
||||
return LogHelper.getStackDescription(recipe.getResource());
|
||||
}
|
||||
|
||||
//It's not clear to me how the smelting recipes should be wrapped
|
||||
@Override
|
||||
public IRecipeWrapper wrapRecipe(IFabricatorSmeltingRecipe recipe) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static class AddCast extends ForestryListAddition<IFabricatorRecipe> {
|
||||
|
||||
public AddCast(IFabricatorRecipe recipe) {
|
||||
super(ThermionicFabricator.nameCasting, RecipeManagers.fabricatorManager);
|
||||
recipes.add(recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeInfo(IFabricatorRecipe recipe) {
|
||||
return LogHelper.getStackDescription(recipe.getRecipeOutput());
|
||||
}
|
||||
|
||||
@Override
|
||||
public IRecipeWrapper wrapRecipe(IFabricatorRecipe recipe) {
|
||||
return new FabricatorRecipeWrapper(recipe);
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Removes smelting recipe from Thermionic Fabricator
|
||||
*
|
||||
* @param itemInput = item input
|
||||
*/
|
||||
@ZenMethod
|
||||
public static void removeSmelting(IIngredient itemInput) {
|
||||
List<IFabricatorSmeltingRecipe> recipes = new LinkedList<IFabricatorSmeltingRecipe>();
|
||||
|
||||
for(IFabricatorSmeltingRecipe r : RecipeManagers.fabricatorSmeltingManager.recipes()) {
|
||||
if(r != null && r.getResource() != null && matches(itemInput, toIItemStack(r.getResource()))) {
|
||||
recipes.add(r);
|
||||
}
|
||||
}
|
||||
|
||||
if(!recipes.isEmpty()) {
|
||||
MineTweakerAPI.apply(new RemoveSmelting(recipes));
|
||||
} else {
|
||||
LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", ThermionicFabricator.nameSmelting, itemInput.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes casting recipe from Thermionic Fabricator
|
||||
*
|
||||
* @param product = recipe result
|
||||
*/
|
||||
@ZenMethod
|
||||
public static void removeCast(IIngredient product) {
|
||||
List<IFabricatorRecipe> recipes = new LinkedList<IFabricatorRecipe>();
|
||||
|
||||
for(IFabricatorRecipe r : RecipeManagers.fabricatorManager.recipes()) {
|
||||
if(r != null && r.getRecipeOutput() != null && matches(product, toIItemStack(r.getRecipeOutput()))) {
|
||||
recipes.add(r);
|
||||
}
|
||||
}
|
||||
|
||||
if(!recipes.isEmpty()) {
|
||||
MineTweakerAPI.apply(new RemoveCasts(recipes));
|
||||
} else {
|
||||
LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", ThermionicFabricator.nameSmelting, product.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
private static class RemoveSmelting extends ForestryListRemoval<IFabricatorSmeltingRecipe, IFabricatorSmeltingManager> {
|
||||
|
||||
public RemoveSmelting(List<IFabricatorSmeltingRecipe> recipes) {
|
||||
super(ThermionicFabricator.nameSmelting, RecipeManagers.fabricatorSmeltingManager, recipes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeInfo(IFabricatorSmeltingRecipe recipe) {
|
||||
return LogHelper.getStackDescription(recipe.getResource());
|
||||
}
|
||||
|
||||
//It's not clear to me how the smelting recipes should be wrapped
|
||||
@Override
|
||||
public IRecipeWrapper wrapRecipe(IFabricatorSmeltingRecipe recipe) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static class RemoveCasts extends ForestryListRemoval<IFabricatorRecipe, IFabricatorManager> {
|
||||
|
||||
public RemoveCasts(List<IFabricatorRecipe> recipes) {
|
||||
super(ThermionicFabricator.nameCasting, RecipeManagers.fabricatorManager, recipes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeInfo(IFabricatorRecipe recipe) {
|
||||
return LogHelper.getStackDescription(recipe.getRecipeOutput());
|
||||
}
|
||||
|
||||
@Override
|
||||
public IRecipeWrapper wrapRecipe(IFabricatorRecipe recipe) {
|
||||
return new FabricatorRecipeWrapper(recipe);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,72 +0,0 @@
|
|||
package modtweaker.mods.forestry.recipes;
|
||||
|
||||
import forestry.api.recipes.IDescriptiveRecipe;
|
||||
import net.minecraft.inventory.InventoryCrafting;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.oredict.ShapedOreRecipe;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class DescriptiveRecipe implements IDescriptiveRecipe {
|
||||
|
||||
private final int width;
|
||||
private final int height;
|
||||
private final ShapedOreRecipe recipe;
|
||||
private final ItemStack[] remainingItems;
|
||||
|
||||
public DescriptiveRecipe(int width, int height, Object[] ingredients, ItemStack output, ItemStack[] remainingItems) {
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.recipe = new ShapedOreRecipe(output, ingredients);
|
||||
this.remainingItems = remainingItems;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getRecipeOutput() {
|
||||
return recipe.getRecipeOutput();
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public ItemStack func_77571_b() {
|
||||
return recipe.getRecipeOutput();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack[] getRemainingItems(InventoryCrafting inv) {
|
||||
return remainingItems;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object[] getIngredients() {
|
||||
return recipe.getInput();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean matches(InventoryCrafting inventoryCrafting, World world) {
|
||||
return recipe.matches(inventoryCrafting, world);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getCraftingResult(InventoryCrafting inventoryCrafting) {
|
||||
return recipe.getCraftingResult(inventoryCrafting);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRecipeSize() {
|
||||
return width * height;
|
||||
}
|
||||
}
|
|
@ -1,58 +1,58 @@
|
|||
package modtweaker.mods.forestry.recipes;
|
||||
|
||||
import forestry.api.recipes.IDescriptiveRecipe;
|
||||
import forestry.api.recipes.IFabricatorRecipe;
|
||||
import forestry.api.recipes.*;
|
||||
import forestry.core.recipes.ShapedRecipeCustom;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class FabricatorRecipe implements IFabricatorRecipe {
|
||||
|
||||
|
||||
private final ItemStack plan;
|
||||
private final FluidStack molten;
|
||||
private final IDescriptiveRecipe internal;
|
||||
|
||||
public FabricatorRecipe(ItemStack plan, FluidStack molten, ItemStack result, ItemStack[] remainingItems, Object[] ingredients) {
|
||||
this(plan, molten, new DescriptiveRecipe(3, 3, ingredients, result, remainingItems));
|
||||
|
||||
public FabricatorRecipe(ItemStack plan, FluidStack molten, ItemStack result, Object[] ingredients) {
|
||||
this(plan, molten, new ShapedRecipeCustom(result, ingredients));
|
||||
}
|
||||
|
||||
|
||||
public FabricatorRecipe(ItemStack plan, FluidStack molten, IDescriptiveRecipe internal) {
|
||||
this.plan = plan;
|
||||
this.molten = molten;
|
||||
this.internal = internal;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public Object[] getIngredients() {
|
||||
return internal.getIngredients();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getWidth() {
|
||||
return internal.getWidth();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getHeight() {
|
||||
return internal.getHeight();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public ItemStack getPlan() {
|
||||
return plan;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public FluidStack getLiquid() {
|
||||
return molten;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ItemStack getRecipeOutput() {
|
||||
return internal.getRecipeOutput();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue