aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java
diff options
context:
space:
mode:
authorDanielshe <shekwancheung0528@gmail.com>2019-11-03 14:44:52 +0800
committerDanielshe <shekwancheung0528@gmail.com>2019-11-03 14:44:59 +0800
commit9f5a9eae9a7863412cc5eb433bf15e5ee71da616 (patch)
tree0e6b0b94af061c5e9023b1ff19f339a6c30149be /src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java
parent3e3e25855b9f6df507a7d4c8a07c64b9a502fae2 (diff)
downloadRoughlyEnoughItems-9f5a9eae9a7863412cc5eb433bf15e5ee71da616.tar.gz
RoughlyEnoughItems-9f5a9eae9a7863412cc5eb433bf15e5ee71da616.tar.bz2
RoughlyEnoughItems-9f5a9eae9a7863412cc5eb433bf15e5ee71da616.zip
3.2.1
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java')
-rw-r--r--src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java49
1 files changed, 28 insertions, 21 deletions
diff --git a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java
index 81710bddc..33f0a6991 100644
--- a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java
+++ b/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java
@@ -55,21 +55,22 @@ public class RecipeHelperImpl implements RecipeHelper {
private RecipeManager recipeManager;
@Override
- public List<ItemStack> findCraftableByItems(List<ItemStack> inventoryItems) {
- List<ItemStack> craftables = new ArrayList<>();
+ public List<EntryStack> findCraftableEntriesByItems(List<ItemStack> inventoryItems) {
+ List<EntryStack> craftables = new ArrayList<>();
for (List<RecipeDisplay> value : recipeCategoryListMap.values())
for (RecipeDisplay recipeDisplay : value) {
int slotsCraftable = 0;
- List<List<ItemStack>> requiredInput = (List<List<ItemStack>>) recipeDisplay.getRequiredItems();
- for (List<ItemStack> slot : requiredInput) {
+ List<List<EntryStack>> requiredInput = (List<List<EntryStack>>) recipeDisplay.getRequiredEntries();
+ for (List<EntryStack> slot : requiredInput) {
if (slot.isEmpty()) {
slotsCraftable++;
continue;
}
boolean slotDone = false;
for (ItemStack possibleType : inventoryItems) {
- for (ItemStack slotPossible : slot)
- if (ItemStack.areItemsEqualIgnoreDamage(slotPossible, possibleType)) {
+ EntryStack possibleEntryStack = EntryStack.create(possibleType);
+ for (EntryStack slotPossible : slot)
+ if (possibleEntryStack.equals(slotPossible)) {
slotsCraftable++;
slotDone = true;
break;
@@ -78,8 +79,8 @@ public class RecipeHelperImpl implements RecipeHelper {
break;
}
}
- if (slotsCraftable == recipeDisplay.getRequiredItems().size())
- craftables.addAll((List<ItemStack>) recipeDisplay.getOutput());
+ if (slotsCraftable == recipeDisplay.getRequiredEntries().size())
+ craftables.addAll((List<EntryStack>) recipeDisplay.getOutputEntries());
}
return craftables.stream().distinct().collect(Collectors.toList());
}
@@ -122,18 +123,21 @@ public class RecipeHelperImpl implements RecipeHelper {
}
@Override
- public Map<RecipeCategory<?>, List<RecipeDisplay>> getRecipesFor(ItemStack stack) {
+ public Map<RecipeCategory<?>, List<RecipeDisplay>> getRecipesFor(EntryStack stack) {
Map<Identifier, List<RecipeDisplay>> categoriesMap = new HashMap<>();
categories.forEach(f -> categoriesMap.put(f.getIdentifier(), Lists.newArrayList()));
for (Map.Entry<Identifier, List<RecipeDisplay>> entry : recipeCategoryListMap.entrySet()) {
RecipeCategory category = getCategory(entry.getKey());
for (RecipeDisplay recipeDisplay : entry.getValue())
- for (ItemStack outputStack : (List<ItemStack>) recipeDisplay.getOutput())
- if (category.checkTags() ? ItemStack.areEqualIgnoreDamage(stack, outputStack) : ItemStack.areItemsEqualIgnoreDamage(stack, outputStack))
+ for (EntryStack outputStack : recipeDisplay.getOutputEntries())
+ if (stack.equals(outputStack))
categoriesMap.get(recipeDisplay.getRecipeCategory()).add(recipeDisplay);
}
- for (LiveRecipeGenerator liveRecipeGenerator : liveRecipeGenerators)
- ((Optional<List>) liveRecipeGenerator.getRecipeFor(stack)).ifPresent(o -> categoriesMap.get(liveRecipeGenerator.getCategoryIdentifier()).addAll(o));
+ for (LiveRecipeGenerator<?> liveRecipeGenerator : liveRecipeGenerators) {
+ liveRecipeGenerator.getRecipeFor(stack).ifPresent(o -> categoriesMap.get(liveRecipeGenerator.getCategoryIdentifier()).addAll((List<RecipeDisplay>) o));
+ if (stack.getType() == EntryStack.Type.ITEM)
+ liveRecipeGenerator.getRecipeFor(stack.getItemStack()).ifPresent(o -> categoriesMap.get(liveRecipeGenerator.getCategoryIdentifier()).addAll((List<RecipeDisplay>) o));
+ }
Map<RecipeCategory<?>, List<RecipeDisplay>> recipeCategoryListMap = Maps.newLinkedHashMap();
categories.forEach(category -> {
if (categoriesMap.containsKey(category.getIdentifier()) && !categoriesMap.get(category.getIdentifier()).isEmpty())
@@ -156,16 +160,16 @@ public class RecipeHelperImpl implements RecipeHelper {
}
@Override
- public Map<RecipeCategory<?>, List<RecipeDisplay>> getUsagesFor(ItemStack stack) {
+ public Map<RecipeCategory<?>, List<RecipeDisplay>> getUsagesFor(EntryStack stack) {
Map<Identifier, List<RecipeDisplay>> categoriesMap = new HashMap<>();
categories.forEach(f -> categoriesMap.put(f.getIdentifier(), Lists.newArrayList()));
for (Map.Entry<Identifier, List<RecipeDisplay>> entry : recipeCategoryListMap.entrySet()) {
RecipeCategory category = getCategory(entry.getKey());
for (RecipeDisplay recipeDisplay : entry.getValue()) {
boolean found = false;
- for (List<ItemStack> input : (List<List<ItemStack>>) recipeDisplay.getInput()) {
- for (ItemStack itemStack : input) {
- if (category.checkTags() ? ItemStack.areEqualIgnoreDamage(itemStack, stack) : ItemStack.areItemsEqualIgnoreDamage(itemStack, stack)) {
+ for (List<EntryStack> input : recipeDisplay.getInputEntries()) {
+ for (EntryStack otherEntry : input) {
+ if (otherEntry.equals(stack)) {
categoriesMap.get(recipeDisplay.getRecipeCategory()).add(recipeDisplay);
found = true;
break;
@@ -176,8 +180,11 @@ public class RecipeHelperImpl implements RecipeHelper {
}
}
}
- for (LiveRecipeGenerator liveRecipeGenerator : liveRecipeGenerators)
- ((Optional<List>) liveRecipeGenerator.getUsageFor(stack)).ifPresent(o -> categoriesMap.get(liveRecipeGenerator.getCategoryIdentifier()).addAll(o));
+ for (LiveRecipeGenerator<?> liveRecipeGenerator : liveRecipeGenerators) {
+ liveRecipeGenerator.getUsageFor(stack).ifPresent(o -> categoriesMap.get(liveRecipeGenerator.getCategoryIdentifier()).addAll((List<RecipeDisplay>) o));
+ if (stack.getType() == EntryStack.Type.ITEM)
+ liveRecipeGenerator.getUsageFor(stack.getItemStack()).ifPresent(o -> categoriesMap.get(liveRecipeGenerator.getCategoryIdentifier()).addAll((List<RecipeDisplay>) o));
+ }
Map<RecipeCategory<?>, List<RecipeDisplay>> recipeCategoryListMap = Maps.newLinkedHashMap();
categories.forEach(category -> {
if (categoriesMap.containsKey(category.getIdentifier()) && !categoriesMap.get(category.getIdentifier()).isEmpty())
@@ -254,11 +261,11 @@ public class RecipeHelperImpl implements RecipeHelper {
if (((REIPluginV0) plugin).getMinimumVersion().compareTo((SemanticVersion) reiVersion) > 0) {
throw new IllegalStateException("Requires " + ((REIPluginV0) plugin).getMinimumVersion().getFriendlyString() + " version of REI!");
}
+ ((REIPluginV0) plugin).registerBounds(RoughlyEnoughItemsCore.getDisplayHelper());
+ ((REIPluginV0) plugin).registerEntries(RoughlyEnoughItemsCore.getEntryRegistry());
((REIPluginV0) plugin).registerPluginCategories(this);
((REIPluginV0) plugin).registerRecipeDisplays(this);
- ((REIPluginV0) plugin).registerBounds(RoughlyEnoughItemsCore.getDisplayHelper());
((REIPluginV0) plugin).registerOthers(this);
- ((REIPluginV0) plugin).registerEntries(RoughlyEnoughItemsCore.getEntryRegistry());
} else {
throw new IllegalStateException("Invaild Plugin Class!");
}