Moved advanced crafting recipes to be 100% on config.

master
sealedinterface 2016-05-20 19:39:02 -07:00
parent 51ce6f9691
commit 48fd361636
8 changed files with 242 additions and 167 deletions

View File

@ -150,7 +150,8 @@ public class BBConfig
// Crafting
advancedCraftingForLotsOfThings = config.getBoolean("Advanced crafting for lots of things", CRAFTING, true,
"Require Advanced Crafting for things like doors, pistons, chests, etc.");
"Require Advanced Crafting for things like doors, pistons, chests, etc." +
" Delete your config/betterbeginnings/advancedcrafting/main.json file afterward.");
removeCraftedFoodRecipes = config.getBoolean("Remove crafted food recipes", CRAFTING, true,
"Remove crafting recipes of vanilla food items, enforcing the use of the brick ovens.");
canMakeChainArmor = config.getBoolean("Enable chain armor", CRAFTING, true,
@ -158,15 +159,19 @@ public class BBConfig
removeWoodToolRecipes = config.getBoolean("Remove wooden tool recipes", CRAFTING, true,
"Remove recipes for wooden pickaxe, axe, shovel, and hoe.");
anyStringForTraps = config.getBoolean("Any string for traps", CRAFTING, false,
"Allow any string to be used for tripwire hooks, trapped chests, etc.");
"Allow any string to be used for tripwire hooks, trapped chests, etc. Delete your" +
" config/betterbeginnings/advancedcrafting/main.json file afterward.");
allowStringAsToolBinding = config.getBoolean("Allow string and twine as tool binding", CRAFTING, true,
"Allow string and twine to be used in place of leather strips in tool bindings, at a higher cost.");
"Allow string and twine to be used in place of leather strips in tool bindings, at a higher cost." +
" Delete your config/betterbeginnings/advancedcrafting/main.json file afterward.");
requireBlazePowderForDiamondPick = config.getBoolean("Require blaze powder for diamond pick", CRAFTING, true,
"Require blaze powder for a Diamond Pickaxe like all other diamond tools. This will require a trip to the" +
" Nether unless 'Netherless blaze powder recipe' is set to true.");
" Nether unless 'Netherless blaze powder recipe' is set to true. Delete your" +
" config/betterbeginnings/advancedcrafting/main.json file afterward.");
netherlessBlazePowderRecipe = config.getBoolean("Netherless blaze powder recipe", CRAFTING, true,
"Add an alternate, Netherless, but expensive recipe for blaze powder to help ease getting a diamond " +
"pick. Still works even if 'Require blaze powder for diamond pick' is false.");
"Add an alternate, Netherless, but expensive recipe for blaze powder to help ease getting a diamond" +
" pick. Still works even if 'Require blaze powder for diamond pick' is false." +
" Delete your config/betterbeginnings/advancedcrafting/main.json file afterward.");
// Smelting
canSmelterDoKilnStuff = config.getBoolean("Smelter can make kiln products", SMELTING, false,

View File

@ -2,6 +2,7 @@ package net.einsteinsci.betterbeginnings.config.json;
import net.einsteinsci.betterbeginnings.util.FileUtil;
import net.einsteinsci.betterbeginnings.util.LogUtil;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import org.apache.logging.log4j.Level;
@ -14,10 +15,22 @@ public class AdvancedCraftingConfig implements IJsonConfig
{
public static final AdvancedCraftingConfig INSTANCE = new AdvancedCraftingConfig();
private static JsonAdvancedCraftingHandler initialRecipes = new JsonAdvancedCraftingHandler();
private JsonAdvancedCraftingHandler mainRecipes = new JsonAdvancedCraftingHandler();
private JsonAdvancedCraftingHandler customRecipes = new JsonAdvancedCraftingHandler();
private List<JsonAdvancedCraftingHandler> includes = new ArrayList<>();
public static void addAdvancedRecipe(ItemStack result, Object[] additionalMaterials, Object... args)
{
addAdvancedRecipe(result, false, additionalMaterials, args);
}
public static void addAdvancedRecipe(ItemStack result, boolean hide, Object[] additionalMaterials, Object... args)
{
initialRecipes.getRecipes().add(new JsonAdvancedRecipe(result, hide, additionalMaterials, args));
}
@Override
public String getSubFolder()
{
@ -31,7 +44,8 @@ public class AdvancedCraftingConfig implements IJsonConfig
String json = FileUtil.readAllText(mainf);
if (json == null)
{
json = "{}";
// Kind of inefficient, but it's easiest this way.
json = BBJsonLoader.serializeObject(initialRecipes);
}
return json;
@ -46,14 +60,21 @@ public class AdvancedCraftingConfig implements IJsonConfig
@Override
public String getCustomJson(File subfolder)
{
return "{}";
File customf = new File(subfolder, "custom.json");
String json = FileUtil.readAllText(customf);
if (json == null)
{
json = "{}";
}
return json;
}
@Override
public List<String> getIncludedJson(File subfolder)
{
List<String> res = new ArrayList<>();
for (String fileName : mainRecipes.getIncludes())
for (String fileName : customRecipes.getIncludes())
{
File incf = new File(subfolder, fileName);
String json = FileUtil.readAllText(incf);
@ -67,11 +88,16 @@ public class AdvancedCraftingConfig implements IJsonConfig
public void loadJsonConfig(FMLInitializationEvent e, String mainJson, String autoJson, String customJson)
{
mainRecipes = BBJsonLoader.deserializeObject(mainJson, JsonAdvancedCraftingHandler.class);
for (JsonAdvancedRecipe j : mainRecipes.getRecipes())
{
j.register();
}
customRecipes = BBJsonLoader.deserializeObject(customJson, JsonAdvancedCraftingHandler.class);
for (JsonAdvancedRecipe r : customRecipes.getRecipes())
{
r.register();
}
}
@Override
@ -81,6 +107,12 @@ public class AdvancedCraftingConfig implements IJsonConfig
{
JsonAdvancedCraftingHandler handler = BBJsonLoader.deserializeObject(json, JsonAdvancedCraftingHandler.class);
if (handler == null)
{
LogUtil.log(Level.ERROR, "Could not deserialize included json.");
continue;
}
boolean missingDependencies = false;
for (String mod : handler.getModDependencies())
{
@ -118,4 +150,9 @@ public class AdvancedCraftingConfig implements IJsonConfig
{
return mainRecipes;
}
public JsonAdvancedCraftingHandler getCustomRecipes()
{
return customRecipes;
}
}

View File

@ -16,11 +16,17 @@ public class JsonAdvancedCraftingHandler
private List<String> modDependencies = new ArrayList<>();
public JsonAdvancedCraftingHandler()
{ }
public JsonAdvancedCraftingHandler(boolean addTesting)
{
// TESTING ONLY
recipes.add(new JsonAdvancedRecipe(new ItemStack(Items.string, 38),
new Object[]{new ItemStack(RegisterItems.cloth, 7), "dustRedstone", 13}, "ox ", "xxx", " xo",
'x', Blocks.bedrock, 'o', "nuggetIron"));
if (addTesting)
{
// TESTING ONLY
recipes.add(new JsonAdvancedRecipe(new ItemStack(Items.string, 38),
new Object[]{new ItemStack(RegisterItems.cloth, 7), "dustRedstone", 13}, "ox ", "xxx", " xo",
'x', Blocks.bedrock, 'o', "nuggetIron"));
}
}
public List<JsonAdvancedRecipe> getRecipes()

View File

@ -17,10 +17,16 @@ public class JsonAdvancedRecipe
private List<String> recipe = new ArrayList<>();
private Map<Character, JsonLoadedItem> ingredients = new HashMap<>();
private List<JsonLoadedItemStack> catalysts = new ArrayList<>();
private boolean hideFromNEI;
public JsonAdvancedRecipe(ItemStack output, Object[] catalysts, Object... params)
{
this(output, false, catalysts, params);
}
public JsonAdvancedRecipe(ItemStack output, boolean hide, Object[] catalysts, Object... params)
{
this.output = new JsonLoadedItemStack(output);
hideFromNEI = hide;
String ore = null;
for (Object obj : catalysts)
@ -186,7 +192,7 @@ public class JsonAdvancedRecipe
}
Object[] params = res.toArray();
AdvancedCraftingHandler.addAdvancedRecipe(output.getFirstItemStackOrNull(), addedMats, params);
AdvancedCraftingHandler.addAdvancedRecipe(output.getFirstItemStackOrNull(), hideFromNEI, addedMats, params);
}
public JsonLoadedItemStack getOutput()

View File

@ -118,6 +118,12 @@ public class KilnConfig implements IJsonConfig
{
JsonKilnRecipeHandler handler = BBJsonLoader.deserializeObject(json, JsonKilnRecipeHandler.class);
if (handler == null)
{
LogUtil.log(Level.ERROR, "Could not deserialize included json.");
continue;
}
boolean missingDependencies = false;
for (String mod : handler.getModDependencies())
{
@ -155,4 +161,9 @@ public class KilnConfig implements IJsonConfig
{
return mainRecipes;
}
public JsonKilnRecipeHandler getCustomRecipes()
{
return customRecipes;
}
}

View File

@ -120,6 +120,12 @@ public class SmelterConfig implements IJsonConfig
{
JsonSmelterRecipeHandler handler = BBJsonLoader.deserializeObject(json, JsonSmelterRecipeHandler.class);
if (handler == null)
{
LogUtil.log(Level.ERROR, "Could not deserialize included json.");
continue;
}
boolean missingDependencies = false;
for (String mod : handler.getModDependencies())
{
@ -157,4 +163,9 @@ public class SmelterConfig implements IJsonConfig
{
return mainRecipes;
}
public JsonSmelterRecipeHandler getCustomRecipes()
{
return customRecipes;
}
}

View File

@ -17,9 +17,7 @@ public class AdvancedCraftingHandler
public List<AdvancedRecipe> recipes = new ArrayList<>();
public AdvancedCraftingHandler()
{
}
{ }
public static void addAdvancedRecipe(ItemStack result, Object[] additionalMaterials, Object... args)
{