ActuallyAdditions/src/main/java/de/ellpeck/actuallyadditions/mod/recipe/CrusherRecipeRegistry.java

135 lines
6.2 KiB
Java
Raw Normal View History

2016-01-05 04:47:35 +01:00
/*
2016-05-16 22:52:27 +02:00
* This file ("CrusherRecipeRegistry.java") is part of the Actually Additions mod for Minecraft.
2016-01-05 04:47:35 +01:00
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
2016-05-16 22:52:27 +02:00
* http://ellpeck.de/actaddlicense
2016-01-05 04:47:35 +01:00
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
2017-01-01 16:23:26 +01:00
* © 2015-2017 Ellpeck
2016-01-05 04:47:35 +01:00
*/
package de.ellpeck.actuallyadditions.mod.recipe;
2021-12-30 18:30:01 +01:00
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.mod.crafting.CrushingRecipe;
2024-03-02 21:23:08 +01:00
import net.minecraft.world.item.ItemStack;
2024-03-04 20:21:48 +01:00
import net.minecraft.world.item.crafting.RecipeHolder;
2021-12-30 18:30:01 +01:00
2019-05-02 09:10:29 +02:00
public final class CrusherRecipeRegistry {
2021-04-19 21:20:23 +02:00
//
// public static final ArrayList<SearchCase> SEARCH_CASES = new ArrayList<>();
//
// public static void registerFinally() {
// ArrayList<String> oresNoResult = new ArrayList<>();
// int recipeStartedAt = ActuallyAdditionsAPI.CRUSHER_RECIPES.size();
//
// for (String ore : OreDictionary.getOreNames()) {
// if (!hasException(ore)) {
// for (SearchCase theCase : SEARCH_CASES) {
// if (ore.length() > theCase.theCase.length()) {
// if (ore.substring(0, theCase.theCase.length()).equals(theCase.theCase)) {
// String outputOre = theCase.resultPreString + ore.substring(theCase.theCase.length());
// List<ItemStack> outputs = OreDictionary.getOres(outputOre, false);
2024-03-04 20:21:48 +01:00
// ItemStack stack = outputs.isEmpty() ? ItemStack.EMPTY : outputs.get(0).copy();
// stack.setCount(theCase.resultAmount);
// if (stack.isEmpty()) {
2021-04-19 21:20:23 +02:00
// if (!oresNoResult.contains(ore)) {
// oresNoResult.add(ore);
// }
2024-03-04 20:21:48 +01:00
// } else ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient(ore), stack, StackUtil.getEmpty(), 0);
2021-04-19 21:20:23 +02:00
// }
// }
// }
// }
// }
//
// ArrayList<String> addedRecipes = new ArrayList<>();
// for (int i = recipeStartedAt; i < ActuallyAdditionsAPI.CRUSHER_RECIPES.size(); i++) {
// CrusherRecipe recipe = ActuallyAdditionsAPI.CRUSHER_RECIPES.get(i);
// addedRecipes.add(recipe.getInput().getMatchingStacks() + " -> " + recipe.getOutputOne());
// }
// ActuallyAdditions.LOGGER.debug("Added " + addedRecipes.size() + " Crusher Recipes automatically: " + addedRecipes);
// ActuallyAdditions.LOGGER.debug("Couldn't add " + oresNoResult.size() + " Crusher Recipes automatically, either because the inputs were missing outputs, or because they exist already: " + oresNoResult);
// removeDuplicateRecipes();
// }
//
// public static void removeDuplicateRecipes() {
// ArrayList<CrusherRecipe> usable = new ArrayList<>();
// ArrayList<CrusherRecipe> removed = new ArrayList<>();
// for (CrusherRecipe r : ActuallyAdditionsAPI.CRUSHER_RECIPES) {
// boolean canUse = true;
// if (r.getInput().getMatchingStacks().length == 0) canUse = false;
// else for (CrusherRecipe re : usable) {
// if (re.getInput().apply(r.getInput().getMatchingStacks()[0])) canUse = false;
// }
//
// if (canUse) usable.add(r);
// else removed.add(r);
// }
//
// ActuallyAdditionsAPI.CRUSHER_RECIPES.clear();
// ActuallyAdditionsAPI.CRUSHER_RECIPES.addAll(usable);
// ActuallyAdditions.LOGGER.debug(String.format("Removed %s crusher recipes that had dupliate inputs, %s remain.", removed.size(), usable.size()));
// }
//
2024-03-04 20:21:48 +01:00
// public static boolean hasBlacklistedOutput(ItemStack stack, String[] config) {
// if (StackUtil.isValid(stack)) {
// Item item = stack.getItem();
2021-04-19 21:20:23 +02:00
// if (item != null) {
// String reg = item.getRegistryName().toString();
//
// for (String conf : config) {
// String confReg = conf;
// int meta = 0;
//
// if (conf.contains("@")) {
// try {
// String[] split = conf.split("@");
// confReg = split[0];
// meta = Integer.parseInt(split[1]);
// } catch (Exception e) {
// ActuallyAdditions.LOGGER.warn("A config option appears to be incorrect: The entry " + conf + " can't be parsed!");
// }
// }
//
2024-03-04 20:21:48 +01:00
// if (reg.equals(confReg) && stack.getItemDamage() == meta) { return true; }
2021-04-19 21:20:23 +02:00
// }
//
// return false;
// }
// }
// return true;
// }
//
// public static boolean hasException(String ore) {
// for (String conf : ConfigStringListValues.CRUSHER_RECIPE_EXCEPTIONS.getValue()) {
// if (conf.equals(ore)) { return true; }
// }
// return false;
// }
//
2021-12-30 18:30:01 +01:00
public static CrushingRecipe getRecipeFromInput(ItemStack input) {
2024-03-04 20:21:48 +01:00
for (RecipeHolder<CrushingRecipe> holder : ActuallyAdditionsAPI.CRUSHER_RECIPES)
if (holder.value().matches(input)) return holder.value();
2021-12-30 18:30:01 +01:00
return null;
}
2021-04-19 21:20:23 +02:00
//
// public static class SearchCase {
//
// final String theCase;
// final int resultAmount;
// final String resultPreString;
//
// public SearchCase(String theCase, int resultAmount) {
// this(theCase, resultAmount, "dust");
// }
//
// public SearchCase(String theCase, int resultAmount, String resultPreString) {
// this.theCase = theCase;
// this.resultAmount = resultAmount;
// this.resultPreString = resultPreString;
// }
// }
2016-01-05 04:47:35 +01:00
}