added possibility to blacklist recipes, close #1750

This commit is contained in:
SpaceToad 2014-05-10 22:08:23 +02:00
parent 29d308f4f9
commit 4dcb9af871
4 changed files with 47 additions and 3 deletions

View file

@ -12,6 +12,7 @@ import java.io.File;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.FloatBuffer; import java.nio.FloatBuffer;
import java.nio.IntBuffer; import java.nio.IntBuffer;
import java.util.HashSet;
import java.util.TreeMap; import java.util.TreeMap;
import org.lwjgl.input.Mouse; import org.lwjgl.input.Mouse;
@ -56,6 +57,7 @@ import buildcraft.api.blueprints.SchematicRegistry;
import buildcraft.api.core.BCLog; import buildcraft.api.core.BCLog;
import buildcraft.api.core.BuildCraftAPI; import buildcraft.api.core.BuildCraftAPI;
import buildcraft.api.core.IIconProvider; import buildcraft.api.core.IIconProvider;
import buildcraft.api.core.JavaTools;
import buildcraft.api.gates.ActionManager; import buildcraft.api.gates.ActionManager;
import buildcraft.api.recipes.BuildcraftRecipes; import buildcraft.api.recipes.BuildcraftRecipes;
import buildcraft.builders.urbanism.EntityRobotUrbanism; import buildcraft.builders.urbanism.EntityRobotUrbanism;
@ -199,6 +201,8 @@ public class BuildCraftCore extends BuildCraftMod {
public static AchievementPage BuildcraftAchievements; public static AchievementPage BuildcraftAchievements;
public static HashSet<String> recipesBlacklist = new HashSet<String>();
public static float diffX, diffY, diffZ; public static float diffX, diffY, diffZ;
private static FloatBuffer modelviewF; private static FloatBuffer modelviewF;
@ -322,6 +326,15 @@ public class BuildCraftCore extends BuildCraftMod {
MinecraftForge.EVENT_BUS.register(new SpringPopulate()); MinecraftForge.EVENT_BUS.register(new SpringPopulate());
} }
for (String l : BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL,
"recipesBlacklist", new String[0]).getStringList()) {
recipesBlacklist.add(JavaTools.stripSurroundingQuotes(l.trim()));
}
if (mainConfiguration.hasChanged()) {
mainConfiguration.save();
}
if (BuildCraftCore.loadDefaultRecipes) { if (BuildCraftCore.loadDefaultRecipes) {
loadRecipes(); loadRecipes();
} }

View file

@ -36,6 +36,7 @@ import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe;
import buildcraft.BuildCraftCore;
import buildcraft.api.core.ICoreProxy; import buildcraft.api.core.ICoreProxy;
import buildcraft.core.EntityBlock; import buildcraft.core.EntityBlock;
import buildcraft.core.ItemBlockBuildCraft; import buildcraft.core.ItemBlockBuildCraft;
@ -110,13 +111,23 @@ public class CoreProxy implements ICoreProxy {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public void addCraftingRecipe(ItemStack result, Object... recipe) { public void addCraftingRecipe(ItemStack result, Object... recipe) {
String name = Item.itemRegistry.getNameForObject(result.getItem());
if (BuildCraftCore.recipesBlacklist.contains(name)) {
return;
}
CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(result, recipe)); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(result, recipe));
//GameRegistry.addRecipe(result, recipe);
} }
public void addShapelessRecipe(ItemStack result, Object... recipe) { public void addShapelessRecipe(ItemStack result, Object... recipe) {
CraftingManager.getInstance().getRecipeList().add(new ShapelessOreRecipe(result, recipe)); String name = Item.itemRegistry.getNameForObject(result.getItem());
//GameRegistry.addShapelessRecipe(result, recipe);
if (BuildCraftCore.recipesBlacklist.contains(name)) {
return;
}
CraftingManager.getInstance().getRecipeList().add(new ShapelessOreRecipe(result, recipe));
} }
public int addCustomTexture(String pathToTexture) { public int addCustomTexture(String pathToTexture) {

View file

@ -19,6 +19,7 @@ import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.OreDictionary;
import buildcraft.BuildCraftCore;
import buildcraft.api.core.IInvSlot; import buildcraft.api.core.IInvSlot;
import buildcraft.api.recipes.IAssemblyRecipeManager; import buildcraft.api.recipes.IAssemblyRecipeManager;
import buildcraft.core.inventory.ITransactor; import buildcraft.core.inventory.ITransactor;
@ -33,6 +34,12 @@ public class AssemblyRecipeManager implements IAssemblyRecipeManager {
@Override @Override
public void addRecipe(double energyCost, ItemStack output, Object... input) { public void addRecipe(double energyCost, ItemStack output, Object... input) {
String name = Item.itemRegistry.getNameForObject(output.getItem());
if (BuildCraftCore.recipesBlacklist.contains(name)) {
return;
}
assemblyRecipes.add(new AssemblyRecipe(output, energyCost, input)); assemblyRecipes.add(new AssemblyRecipe(output, energyCost, input));
} }

View file

@ -16,6 +16,7 @@ import com.google.common.base.Objects;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import buildcraft.BuildCraftCore;
import buildcraft.api.recipes.IRefineryRecipeManager; import buildcraft.api.recipes.IRefineryRecipeManager;
public final class RefineryRecipeManager implements IRefineryRecipeManager { public final class RefineryRecipeManager implements IRefineryRecipeManager {
@ -28,11 +29,23 @@ public final class RefineryRecipeManager implements IRefineryRecipeManager {
@Override @Override
public void addRecipe(FluidStack ingredient, FluidStack result, int energy, int delay) { public void addRecipe(FluidStack ingredient, FluidStack result, int energy, int delay) {
String name = result.getFluid().getName();
if (BuildCraftCore.recipesBlacklist.contains(name)) {
return;
}
addRecipe(ingredient, null, result, energy, delay); addRecipe(ingredient, null, result, energy, delay);
} }
@Override @Override
public void addRecipe(FluidStack ingredient1, FluidStack ingredient2, FluidStack result, int energy, int delay) { public void addRecipe(FluidStack ingredient1, FluidStack ingredient2, FluidStack result, int energy, int delay) {
String name = result.getFluid().getName();
if (BuildCraftCore.recipesBlacklist.contains(name)) {
return;
}
RefineryRecipe recipe = new RefineryRecipe(ingredient1, ingredient2, result, energy, delay); RefineryRecipe recipe = new RefineryRecipe(ingredient1, ingredient2, result, energy, delay);
recipes.add(recipe); recipes.add(recipe);
} }