mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
in a rush
This commit is contained in:
parent
891d4d869d
commit
0be198d21f
@ -8,7 +8,7 @@ public class FluidStack {
|
|||||||
public int fill;
|
public int fill;
|
||||||
public int pressure;
|
public int pressure;
|
||||||
|
|
||||||
public FluidStack(int fill, FluidType type) {
|
@Deprecated public FluidStack(int fill, FluidType type) { // weird ass format
|
||||||
this.fill = fill;
|
this.fill = fill;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,42 @@
|
|||||||
|
package com.hbm.inventory.recipes;
|
||||||
|
|
||||||
|
import com.hbm.inventory.FluidStack;
|
||||||
|
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||||
|
import com.hbm.inventory.fluid.Fluids;
|
||||||
|
import com.hbm.inventory.recipes.loader.GenericRecipe;
|
||||||
|
import com.hbm.inventory.recipes.loader.GenericRecipes;
|
||||||
|
import com.hbm.items.ModItems;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public class ChemicalPlantRecipes extends GenericRecipes<GenericRecipe> {
|
||||||
|
|
||||||
|
@Override public int inputItemLimit() { return 3; }
|
||||||
|
@Override public int inputFluidLimit() { return 3; }
|
||||||
|
@Override public int outputItemLimit() { return 3; }
|
||||||
|
@Override public int outputFluidLimit() { return 3; }
|
||||||
|
|
||||||
|
@Override public String getFileName() { return "hbmChemicalPlant.json"; }
|
||||||
|
@Override public GenericRecipe instantiateRecipe(String name) { return new GenericRecipe(name); }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerDefaults() {
|
||||||
|
|
||||||
|
this.register(new GenericRecipe("chem.biogas").setup(60, 100).setIcon(ModItems.gas_full, Fluids.BIOGAS.getID())
|
||||||
|
.setInputItems(new ComparableStack(ModItems.biomass, 16))
|
||||||
|
.setInputFluids(new FluidStack(Fluids.AIR, 4000))
|
||||||
|
.setOutputFluids(new FluidStack(Fluids.BIOGAS, 2000)));
|
||||||
|
|
||||||
|
this.register(new GenericRecipe("chem.test").setup(60, 100)
|
||||||
|
.setInputItems(new ComparableStack(ModItems.biomass, 16))
|
||||||
|
.setInputFluids(new FluidStack(Fluids.AIR, 4000))
|
||||||
|
.setOutputItems(
|
||||||
|
new ChanceOutput(new ItemStack(ModItems.glyphid_meat, 16)),
|
||||||
|
new ChanceOutput(new ItemStack(ModItems.ingot_asbestos, 1), 0.5F, 0),
|
||||||
|
new ChanceOutputMulti() {{
|
||||||
|
pool.add(new ChanceOutput(new ItemStack(ModItems.billet_co60), 1));
|
||||||
|
pool.add(new ChanceOutput(new ItemStack(ModItems.billet_cobalt), 5));
|
||||||
|
}})
|
||||||
|
.setOutputFluids(new FluidStack(Fluids.BIOGAS, 2000)));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,69 @@
|
|||||||
|
package com.hbm.inventory.recipes.loader;
|
||||||
|
|
||||||
|
import com.hbm.inventory.FluidStack;
|
||||||
|
import com.hbm.inventory.RecipesCommon.AStack;
|
||||||
|
import com.hbm.inventory.recipes.loader.GenericRecipes.ChanceOutput;
|
||||||
|
import com.hbm.inventory.recipes.loader.GenericRecipes.ChanceOutputMulti;
|
||||||
|
import com.hbm.inventory.recipes.loader.GenericRecipes.IOutput;
|
||||||
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.items.machine.ItemFluidIcon;
|
||||||
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public class GenericRecipe {
|
||||||
|
|
||||||
|
public String name;
|
||||||
|
public AStack[] inputItem;
|
||||||
|
public FluidStack[] inputFluid;
|
||||||
|
public IOutput[] outputItem;
|
||||||
|
public FluidStack[] outputFluid;
|
||||||
|
public int duration;
|
||||||
|
public long power;
|
||||||
|
public ItemStack icon;
|
||||||
|
public boolean writeIcon = false;
|
||||||
|
public boolean customLocalization = false;
|
||||||
|
|
||||||
|
public GenericRecipe(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GenericRecipe setDuration(int duration) { this.duration = duration; return this; }
|
||||||
|
public GenericRecipe setPower(long power) { this.power = power; return this; }
|
||||||
|
public GenericRecipe setup(int duration, long power) { return this.setDuration(duration).setPower(power); }
|
||||||
|
public GenericRecipe setIcon(ItemStack icon) { this.icon = icon; this.writeIcon = true; return this; }
|
||||||
|
public GenericRecipe setIcon(Item item, int meta) { return this.setIcon(new ItemStack(item, 1, meta)); }
|
||||||
|
public GenericRecipe setIcon(Item item) { return this.setIcon(new ItemStack(item)); }
|
||||||
|
public GenericRecipe setNamed() { this.customLocalization = true; return this; }
|
||||||
|
|
||||||
|
public GenericRecipe setInputItems(AStack... input) { this.inputItem = input; return this; }
|
||||||
|
public GenericRecipe setInputFluids(FluidStack... input) { this.inputFluid = input; return this; }
|
||||||
|
public GenericRecipe setOutputItems(IOutput... output) { this.outputItem = output; return this; }
|
||||||
|
public GenericRecipe setOutputFluids(FluidStack... output) { this.outputFluid = output; return this; }
|
||||||
|
|
||||||
|
public ItemStack getIcon() {
|
||||||
|
|
||||||
|
if(icon == null) {
|
||||||
|
if(outputItem != null) {
|
||||||
|
if(outputItem[0] instanceof ChanceOutput) icon = ((ChanceOutput) outputItem[0]).stack.copy();
|
||||||
|
if(outputItem[0] instanceof ChanceOutputMulti) icon = ((ChanceOutputMulti) outputItem[0]).pool.get(0).stack.copy();
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
if(outputFluid != null) {
|
||||||
|
icon = ItemFluidIcon.make(outputFluid[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(icon == null) icon = new ItemStack(ModItems.nothing);
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
if(customLocalization) {
|
||||||
|
return I18nUtil.resolveKey(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.getIcon().getDisplayName();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -12,8 +12,6 @@ import com.google.gson.JsonObject;
|
|||||||
import com.google.gson.stream.JsonWriter;
|
import com.google.gson.stream.JsonWriter;
|
||||||
import com.hbm.inventory.FluidStack;
|
import com.hbm.inventory.FluidStack;
|
||||||
import com.hbm.inventory.RecipesCommon.AStack;
|
import com.hbm.inventory.RecipesCommon.AStack;
|
||||||
import com.hbm.items.ModItems;
|
|
||||||
import com.hbm.items.machine.ItemFluidIcon;
|
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.WeightedRandom;
|
import net.minecraft.util.WeightedRandom;
|
||||||
@ -29,17 +27,19 @@ import net.minecraft.util.WeightedRandom;
|
|||||||
*
|
*
|
||||||
* @author hbm
|
* @author hbm
|
||||||
*/
|
*/
|
||||||
public abstract class GenericRecipes extends SerializableRecipe {
|
public abstract class GenericRecipes<T extends GenericRecipe> extends SerializableRecipe {
|
||||||
|
|
||||||
public static final Random RNG = new Random();
|
public static final Random RNG = new Random();
|
||||||
|
|
||||||
public List<GenericRecipe> recipeOrderedList = new ArrayList();
|
public List<T> recipeOrderedList = new ArrayList();
|
||||||
public HashMap<String, GenericRecipe> recipeNameMap = new HashMap();
|
public HashMap<String, T> recipeNameMap = new HashMap();
|
||||||
|
|
||||||
public abstract int inputItemLimit();
|
public abstract int inputItemLimit();
|
||||||
public abstract int inputFluidLimit();
|
public abstract int inputFluidLimit();
|
||||||
public abstract int outputItemLimit();
|
public abstract int outputItemLimit();
|
||||||
public abstract int outputFluidLimit();
|
public abstract int outputFluidLimit();
|
||||||
|
public boolean hasDuration() { return true; }
|
||||||
|
public boolean hasPower() { return true; }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getRecipeObject() {
|
public Object getRecipeObject() {
|
||||||
@ -52,7 +52,7 @@ public abstract class GenericRecipes extends SerializableRecipe {
|
|||||||
this.recipeNameMap.clear();
|
this.recipeNameMap.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void register(GenericRecipe recipe) {
|
public void register(T recipe) {
|
||||||
this.recipeOrderedList.add(recipe);
|
this.recipeOrderedList.add(recipe);
|
||||||
this.recipeNameMap.put(recipe.name, recipe);
|
this.recipeNameMap.put(recipe.name, recipe);
|
||||||
}
|
}
|
||||||
@ -60,28 +60,67 @@ public abstract class GenericRecipes extends SerializableRecipe {
|
|||||||
@Override
|
@Override
|
||||||
public void readRecipe(JsonElement element) {
|
public void readRecipe(JsonElement element) {
|
||||||
JsonObject obj = (JsonObject) element;
|
JsonObject obj = (JsonObject) element;
|
||||||
GenericRecipe recipe = instantiateRecipe(obj.get("name").getAsString(), obj.get("duration").getAsInt());
|
T recipe = instantiateRecipe(obj.get("name").getAsString());
|
||||||
|
|
||||||
if(this.inputItemLimit() > 0) recipe.inputItem = this.readAStackArray(obj.get("inputItem").getAsJsonArray());
|
if(this.inputItemLimit() > 0 && obj.has("inputItem")) recipe.inputItem = this.readAStackArray(obj.get("inputItem").getAsJsonArray());
|
||||||
if(this.inputFluidLimit() > 0) recipe.inputFluid = this.readFluidArray(obj.get("inputFluid").getAsJsonArray());
|
if(this.inputFluidLimit() > 0 && obj.has("inputFluid")) recipe.inputFluid = this.readFluidArray(obj.get("inputFluid").getAsJsonArray());
|
||||||
|
|
||||||
if(this.outputItemLimit() > 0) recipe.outputItem = this.readOutputArray(obj.get("outputItem").getAsJsonArray());
|
if(this.outputItemLimit() > 0 && obj.has("outputItem")) recipe.outputItem = this.readOutputArray(obj.get("outputItem").getAsJsonArray());
|
||||||
if(this.outputFluidLimit() > 0) recipe.outputFluid = this.readFluidArray(obj.get("outputFluid").getAsJsonArray());
|
if(this.outputFluidLimit() > 0 && obj.has("outputFluid")) recipe.outputFluid = this.readFluidArray(obj.get("outputFluid").getAsJsonArray());
|
||||||
|
|
||||||
|
if(this.hasDuration()) recipe.setDuration(obj.get("duration").getAsInt());
|
||||||
|
if(this.hasPower()) recipe.setPower(obj.get("power").getAsLong());
|
||||||
|
|
||||||
|
if(obj.has("icon")) recipe.setIcon(this.readItemStack(obj.get("icon").getAsJsonArray()));
|
||||||
|
|
||||||
readExtraData(element, recipe);
|
readExtraData(element, recipe);
|
||||||
|
|
||||||
register(recipe);
|
register(recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GenericRecipe instantiateRecipe(String name, int duration) { return new GenericRecipe(name, duration); }
|
public abstract T instantiateRecipe(String name);
|
||||||
public void readExtraData(JsonElement element, GenericRecipe recipe) { }
|
public void readExtraData(JsonElement element, T recipe) { }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeRecipe(Object recipe, JsonWriter writer) throws IOException {
|
public void writeRecipe(Object recipeObject, JsonWriter writer) throws IOException {
|
||||||
|
T recipe = (T) recipeObject;
|
||||||
|
|
||||||
|
if(this.inputItemLimit() > 0 && recipe.inputItem != null) {
|
||||||
|
writer.name("inputItem").beginArray();
|
||||||
|
for(AStack stack : recipe.inputItem) this.writeAStack(stack, writer);
|
||||||
|
writer.endArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.inputFluidLimit() > 0 && recipe.inputFluid != null) {
|
||||||
|
writer.name("inputFluid").beginArray();
|
||||||
|
for(FluidStack stack : recipe.inputFluid) this.writeFluidStack(stack, writer);
|
||||||
|
writer.endArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.outputItemLimit() > 0 && recipe.outputItem != null) {
|
||||||
|
writer.name("outputItem").beginArray();
|
||||||
|
for(IOutput stack : recipe.outputItem) stack.serialize(writer);
|
||||||
|
writer.endArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.outputFluidLimit() > 0 && recipe.outputFluid != null) {
|
||||||
|
writer.name("outputFluid").beginArray();
|
||||||
|
for(FluidStack stack : recipe.outputFluid) this.writeFluidStack(stack, writer);
|
||||||
|
writer.endArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.hasDuration()) writer.name("duration").value(recipe.duration);
|
||||||
|
if(this.hasPower()) writer.name("power").value(recipe.power);
|
||||||
|
|
||||||
|
if(recipe.writeIcon) {
|
||||||
|
writer.name("icon");
|
||||||
|
this.writeItemStack(recipe.icon, writer);
|
||||||
|
}
|
||||||
|
|
||||||
|
writeExtraData(recipe, writer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeExtraData(Object recipe, JsonWriter writer) { }
|
public void writeExtraData(T recipe, JsonWriter writer) { }
|
||||||
|
|
||||||
public IOutput[] readOutputArray(JsonArray array) {
|
public IOutput[] readOutputArray(JsonArray array) {
|
||||||
IOutput[] output = new IOutput[array.size()];
|
IOutput[] output = new IOutput[array.size()];
|
||||||
@ -110,45 +149,6 @@ public abstract class GenericRecipes extends SerializableRecipe {
|
|||||||
///////////////
|
///////////////
|
||||||
/// CLASSES ///
|
/// CLASSES ///
|
||||||
///////////////
|
///////////////
|
||||||
|
|
||||||
public static class GenericRecipe {
|
|
||||||
|
|
||||||
public String name;
|
|
||||||
public AStack[] inputItem;
|
|
||||||
public FluidStack[] inputFluid;
|
|
||||||
public IOutput[] outputItem;
|
|
||||||
public FluidStack[] outputFluid;
|
|
||||||
public int duration;
|
|
||||||
public ItemStack icon;
|
|
||||||
|
|
||||||
public GenericRecipe(String name, int duration) {
|
|
||||||
this.name = name;
|
|
||||||
this.duration = duration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GenericRecipe setIcon(ItemStack icon) {
|
|
||||||
this.icon = icon;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack getIcon() {
|
|
||||||
|
|
||||||
if(icon == null) {
|
|
||||||
if(outputItem != null) {
|
|
||||||
if(outputItem[0] instanceof ChanceOutput) icon = ((ChanceOutput) outputItem[0]).stack.copy();
|
|
||||||
if(outputItem[0] instanceof ChanceOutputMulti) icon = ((ChanceOutputMulti) outputItem[0]).pool.get(0).stack.copy();
|
|
||||||
return icon;
|
|
||||||
}
|
|
||||||
if(outputFluid != null) {
|
|
||||||
icon = ItemFluidIcon.make(outputFluid[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(icon == null) icon = new ItemStack(ModItems.nothing);
|
|
||||||
return icon;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static interface IOutput {
|
public static interface IOutput {
|
||||||
public boolean possibleMultiOutput();
|
public boolean possibleMultiOutput();
|
||||||
public ItemStack collapse();
|
public ItemStack collapse();
|
||||||
@ -184,16 +184,21 @@ public abstract class GenericRecipes extends SerializableRecipe {
|
|||||||
@Override
|
@Override
|
||||||
public void serialize(JsonWriter writer) throws IOException {
|
public void serialize(JsonWriter writer) throws IOException {
|
||||||
boolean standardStack = chance >= 1 && itemWeight == 0;
|
boolean standardStack = chance >= 1 && itemWeight == 0;
|
||||||
if(!standardStack) writer.beginArray();
|
|
||||||
|
writer.beginArray();
|
||||||
|
writer.setIndent("");
|
||||||
|
|
||||||
if(itemWeight == 0) writer.value("single");
|
if(itemWeight == 0) writer.value("single");
|
||||||
SerializableRecipe.writeItemStack(stack, writer);
|
SerializableRecipe.writeItemStack(stack, writer);
|
||||||
|
writer.setIndent("");
|
||||||
|
|
||||||
if(!standardStack) {
|
if(!standardStack) {
|
||||||
writer.value(chance);
|
writer.value(chance);
|
||||||
if(itemWeight > 0) writer.value(itemWeight);
|
if(itemWeight > 0) writer.value(itemWeight);
|
||||||
writer.endArray();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
writer.endArray();
|
||||||
|
writer.setIndent(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -81,6 +81,9 @@ public abstract class SerializableRecipe {
|
|||||||
//AFTER Assembler
|
//AFTER Assembler
|
||||||
recipeHandlers.add(new AnvilRecipes());
|
recipeHandlers.add(new AnvilRecipes());
|
||||||
recipeHandlers.add(new PedestalRecipes());
|
recipeHandlers.add(new PedestalRecipes());
|
||||||
|
|
||||||
|
//GENERIC
|
||||||
|
recipeHandlers.add(new ChemicalPlantRecipes());
|
||||||
|
|
||||||
recipeHandlers.add(new MatDistribution());
|
recipeHandlers.add(new MatDistribution());
|
||||||
recipeHandlers.add(new CustomMachineRecipes());
|
recipeHandlers.add(new CustomMachineRecipes());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user