diff options
| author | Danielshe <shekwancheung0528@gmail.com> | 2019-11-03 14:44:52 +0800 |
|---|---|---|
| committer | Danielshe <shekwancheung0528@gmail.com> | 2019-11-03 14:44:59 +0800 |
| commit | 9f5a9eae9a7863412cc5eb433bf15e5ee71da616 (patch) | |
| tree | 0e6b0b94af061c5e9023b1ff19f339a6c30149be /src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java | |
| parent | 3e3e25855b9f6df507a7d4c8a07c64b9a502fae2 (diff) | |
| download | RoughlyEnoughItems-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.java | 49 |
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!"); } |
