No need for these to be maps
This commit is contained in:
parent
4a47f5cbdc
commit
4c44c871e7
3 changed files with 41 additions and 36 deletions
|
@ -7,9 +7,7 @@ import WayofTime.bloodmagic.api_impl.recipe.RecipeTartaricForge;
|
||||||
import WayofTime.bloodmagic.apiv2.IBloodMagicRecipeRegistrar;
|
import WayofTime.bloodmagic.apiv2.IBloodMagicRecipeRegistrar;
|
||||||
import WayofTime.bloodmagic.core.recipe.IngredientBloodOrb;
|
import WayofTime.bloodmagic.core.recipe.IngredientBloodOrb;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.*;
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.crafting.Ingredient;
|
import net.minecraft.item.crafting.Ingredient;
|
||||||
import net.minecraft.util.NonNullList;
|
import net.minecraft.util.NonNullList;
|
||||||
|
@ -20,17 +18,18 @@ import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar {
|
public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar {
|
||||||
|
|
||||||
private final Map<Ingredient, RecipeBloodAltar> altarRecipes;
|
private final Set<RecipeBloodAltar> altarRecipes;
|
||||||
private final Map<List<Ingredient>, RecipeAlchemyTable> alchemyRecipes;
|
private final Set<RecipeAlchemyTable> alchemyRecipes;
|
||||||
private final Map<List<Ingredient>, RecipeTartaricForge> tartaricForgeRecipes;
|
private final Set<RecipeTartaricForge> tartaricForgeRecipes;
|
||||||
|
|
||||||
public BloodMagicRecipeRegistrar() {
|
public BloodMagicRecipeRegistrar() {
|
||||||
this.altarRecipes = Maps.newHashMap();
|
this.altarRecipes = Sets.newHashSet();
|
||||||
this.alchemyRecipes = Maps.newHashMap();
|
this.alchemyRecipes = Sets.newHashSet();
|
||||||
this.tartaricForgeRecipes = Maps.newHashMap();
|
this.tartaricForgeRecipes = Sets.newHashSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -42,7 +41,7 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar {
|
||||||
Preconditions.checkArgument(consumeRate >= 0, "consumeRate cannot be negative.");
|
Preconditions.checkArgument(consumeRate >= 0, "consumeRate cannot be negative.");
|
||||||
Preconditions.checkArgument(drainRate >= 0, "drainRate cannot be negative.");
|
Preconditions.checkArgument(drainRate >= 0, "drainRate cannot be negative.");
|
||||||
|
|
||||||
altarRecipes.put(input, new RecipeBloodAltar(input, output, minimumTier, syphon, consumeRate, drainRate));
|
altarRecipes.add(new RecipeBloodAltar(input, output, minimumTier, syphon, consumeRate, drainRate));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -54,7 +53,7 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar {
|
||||||
Preconditions.checkNotNull(input, "input cannot be null.");
|
Preconditions.checkNotNull(input, "input cannot be null.");
|
||||||
|
|
||||||
NonNullList<Ingredient> inputs = NonNullList.from(Ingredient.EMPTY, input);
|
NonNullList<Ingredient> inputs = NonNullList.from(Ingredient.EMPTY, input);
|
||||||
alchemyRecipes.put(inputs, new RecipeAlchemyTable(inputs, output, syphon, ticks, minimumTier));
|
alchemyRecipes.add(new RecipeAlchemyTable(inputs, output, syphon, ticks, minimumTier));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -65,7 +64,7 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar {
|
||||||
Preconditions.checkNotNull(input, "input cannot be null.");
|
Preconditions.checkNotNull(input, "input cannot be null.");
|
||||||
|
|
||||||
NonNullList<Ingredient> inputs = NonNullList.from(Ingredient.EMPTY, input);
|
NonNullList<Ingredient> inputs = NonNullList.from(Ingredient.EMPTY, input);
|
||||||
tartaricForgeRecipes.put(inputs, new RecipeTartaricForge(inputs, output, minimumSouls, soulDrain));
|
tartaricForgeRecipes.add(new RecipeTartaricForge(inputs, output, minimumSouls, soulDrain));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addTartaricForge(@Nonnull ItemStack output, @Nonnegative double minimumSouls, @Nonnegative double soulDrain, @Nonnull Object... input) {
|
public void addTartaricForge(@Nonnull ItemStack output, @Nonnegative double minimumSouls, @Nonnegative double soulDrain, @Nonnull Object... input) {
|
||||||
|
@ -90,10 +89,12 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar {
|
||||||
@Nullable
|
@Nullable
|
||||||
public RecipeBloodAltar getBloodAltar(@Nonnull ItemStack input) {
|
public RecipeBloodAltar getBloodAltar(@Nonnull ItemStack input) {
|
||||||
Preconditions.checkNotNull(input, "input cannot be null.");
|
Preconditions.checkNotNull(input, "input cannot be null.");
|
||||||
|
if (input.isEmpty())
|
||||||
|
return null;
|
||||||
|
|
||||||
for (Map.Entry<Ingredient, RecipeBloodAltar> entry : altarRecipes.entrySet())
|
for (RecipeBloodAltar recipe : altarRecipes)
|
||||||
if (entry.getKey().test(input))
|
if (recipe.getInput().test(input))
|
||||||
return entry.getValue();
|
return recipe;
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -101,19 +102,21 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar {
|
||||||
@Nullable
|
@Nullable
|
||||||
public RecipeAlchemyTable getAlchemyTable(@Nonnull List<ItemStack> input) {
|
public RecipeAlchemyTable getAlchemyTable(@Nonnull List<ItemStack> input) {
|
||||||
Preconditions.checkNotNull(input, "input cannot be null.");
|
Preconditions.checkNotNull(input, "input cannot be null.");
|
||||||
|
if (input.isEmpty())
|
||||||
|
return null;
|
||||||
|
|
||||||
mainLoop:
|
mainLoop:
|
||||||
for (Map.Entry<List<Ingredient>, RecipeAlchemyTable> entry : alchemyRecipes.entrySet()) {
|
for (RecipeAlchemyTable recipe : alchemyRecipes) {
|
||||||
if (entry.getKey().size() != input.size())
|
if (recipe.getInput().size() != input.size())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (int i = 0; i > input.size(); i++) {
|
for (int i = 0; i < input.size(); i++) {
|
||||||
Ingredient ingredient = entry.getKey().get(i);
|
Ingredient ingredient = recipe.getInput().get(i);
|
||||||
if (!ingredient.apply(input.get(i)))
|
if (!ingredient.apply(input.get(i)))
|
||||||
continue mainLoop;
|
continue mainLoop;
|
||||||
}
|
}
|
||||||
|
|
||||||
return entry.getValue();
|
return recipe;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
@ -122,33 +125,35 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar {
|
||||||
@Nullable
|
@Nullable
|
||||||
public RecipeTartaricForge getTartaricForge(@Nonnull List<ItemStack> input) {
|
public RecipeTartaricForge getTartaricForge(@Nonnull List<ItemStack> input) {
|
||||||
Preconditions.checkNotNull(input, "input cannot be null.");
|
Preconditions.checkNotNull(input, "input cannot be null.");
|
||||||
|
if (input.isEmpty())
|
||||||
|
return null;
|
||||||
|
|
||||||
mainLoop:
|
mainLoop:
|
||||||
for (Map.Entry<List<Ingredient>, RecipeTartaricForge> entry : tartaricForgeRecipes.entrySet()) {
|
for (RecipeTartaricForge recipe : tartaricForgeRecipes) {
|
||||||
if (entry.getKey().size() != input.size())
|
if (recipe.getInput().size() != input.size())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (int i = 0; i > input.size(); i++) {
|
for (int i = 0; i < input.size(); i++) {
|
||||||
Ingredient ingredient = entry.getKey().get(i);
|
Ingredient ingredient = recipe.getInput().get(i);
|
||||||
if (!ingredient.apply(input.get(i)))
|
if (!ingredient.apply(input.get(i)))
|
||||||
continue mainLoop;
|
continue mainLoop;
|
||||||
}
|
}
|
||||||
|
|
||||||
return entry.getValue();
|
return recipe;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<Ingredient, RecipeBloodAltar> getAltarRecipes() {
|
public Set<RecipeBloodAltar> getAltarRecipes() {
|
||||||
return ImmutableMap.copyOf(altarRecipes);
|
return ImmutableSet.copyOf(altarRecipes);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<List<Ingredient>, RecipeAlchemyTable> getAlchemyRecipes() {
|
public Set<RecipeAlchemyTable> getAlchemyRecipes() {
|
||||||
return ImmutableMap.copyOf(alchemyRecipes);
|
return ImmutableSet.copyOf(alchemyRecipes);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<List<Ingredient>, RecipeTartaricForge> getTartaricForgeRecipes() {
|
public Set<RecipeTartaricForge> getTartaricForgeRecipes() {
|
||||||
return ImmutableMap.copyOf(tartaricForgeRecipes);
|
return ImmutableSet.copyOf(tartaricForgeRecipes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ public class BookUtils {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static PageAltarRecipe getAltarPage(ItemStack output) {
|
public static PageAltarRecipe getAltarPage(ItemStack output) {
|
||||||
for (RecipeBloodAltar recipe : BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAltarRecipes().values())
|
for (RecipeBloodAltar recipe : BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAltarRecipes())
|
||||||
if (ItemStack.areItemStacksEqualUsingNBTShareTag(output, recipe.getOutput()))
|
if (ItemStack.areItemStacksEqualUsingNBTShareTag(output, recipe.getOutput()))
|
||||||
return new PageAltarRecipe(recipe);
|
return new PageAltarRecipe(recipe);
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ public class BookUtils {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static PageTartaricForgeRecipe getForgePage(ItemStack output) {
|
public static PageTartaricForgeRecipe getForgePage(ItemStack output) {
|
||||||
for (RecipeTartaricForge recipe : BloodMagicAPI.INSTANCE.getRecipeRegistrar().getTartaricForgeRecipes().values())
|
for (RecipeTartaricForge recipe : BloodMagicAPI.INSTANCE.getRecipeRegistrar().getTartaricForgeRecipes())
|
||||||
if (ItemStack.areItemStacksEqualUsingNBTShareTag(output, recipe.getOutput()))
|
if (ItemStack.areItemStacksEqualUsingNBTShareTag(output, recipe.getOutput()))
|
||||||
return new PageTartaricForgeRecipe(recipe);
|
return new PageTartaricForgeRecipe(recipe);
|
||||||
|
|
||||||
|
|
|
@ -46,9 +46,9 @@ public class BloodMagicJEIPlugin implements IModPlugin {
|
||||||
new ArmourDowngradeRecipeHandler()
|
new ArmourDowngradeRecipeHandler()
|
||||||
);
|
);
|
||||||
|
|
||||||
registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAltarRecipes().values(), Constants.Compat.JEI_CATEGORY_ALTAR);
|
registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAltarRecipes(), Constants.Compat.JEI_CATEGORY_ALTAR);
|
||||||
registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAlchemyRecipes().values(), Constants.Compat.JEI_CATEGORY_ALCHEMYTABLE);
|
registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAlchemyRecipes(), Constants.Compat.JEI_CATEGORY_ALCHEMYTABLE);
|
||||||
registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getTartaricForgeRecipes().values(), Constants.Compat.JEI_CATEGORY_SOULFORGE);
|
registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getTartaricForgeRecipes(), Constants.Compat.JEI_CATEGORY_SOULFORGE);
|
||||||
|
|
||||||
registry.handleRecipes(RecipeBloodAltar.class, AltarRecipeJEI::new, Constants.Compat.JEI_CATEGORY_ALTAR);
|
registry.handleRecipes(RecipeBloodAltar.class, AltarRecipeJEI::new, Constants.Compat.JEI_CATEGORY_ALTAR);
|
||||||
registry.handleRecipes(RecipeAlchemyTable.class, AlchemyTableRecipeJEI::new, Constants.Compat.JEI_CATEGORY_ALCHEMYTABLE);
|
registry.handleRecipes(RecipeAlchemyTable.class, AlchemyTableRecipeJEI::new, Constants.Compat.JEI_CATEGORY_ALCHEMYTABLE);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue