aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/plugin
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/plugin
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/plugin')
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java80
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java22
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java92
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingDisplay.java68
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingCategory.java23
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java45
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireCategory.java13
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireDisplay.java31
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java34
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingDisplay.java32
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/cooking/DefaultCookingCategory.java (renamed from src/main/java/me/shedaniel/rei/plugin/smoking/DefaultSmokingCategory.java)77
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/cooking/DefaultCookingDisplay.java84
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java14
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java10
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCustomDisplay.java20
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java28
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java28
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/smelting/DefaultSmeltingCategory.java91
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/smelting/DefaultSmeltingDisplay.java68
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/smoking/DefaultSmokingDisplay.java69
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/stonecutting/DefaultStoneCuttingCategory.java11
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/stonecutting/DefaultStoneCuttingDisplay.java28
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/stripping/DefaultStrippingCategory.java13
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/stripping/DefaultStrippingDisplay.java20
24 files changed, 391 insertions, 610 deletions
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
index ef87e78c8..d3993a671 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
@@ -7,17 +7,17 @@ package me.shedaniel.rei.plugin;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import it.unimi.dsi.fastutil.objects.Object2FloatMap;
import me.shedaniel.math.api.Rectangle;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
import me.shedaniel.rei.api.DisplayHelper;
-import me.shedaniel.rei.api.Entry;
import me.shedaniel.rei.api.EntryRegistry;
+import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeHelper;
import me.shedaniel.rei.api.plugins.REIPluginV0;
import me.shedaniel.rei.gui.RecipeViewingScreen;
import me.shedaniel.rei.gui.VillagerRecipeViewingScreen;
import me.shedaniel.rei.impl.ScreenHelper;
-import me.shedaniel.rei.plugin.blasting.DefaultBlastingCategory;
import me.shedaniel.rei.plugin.blasting.DefaultBlastingDisplay;
import me.shedaniel.rei.plugin.brewing.DefaultBrewingCategory;
import me.shedaniel.rei.plugin.brewing.DefaultBrewingDisplay;
@@ -25,13 +25,12 @@ import me.shedaniel.rei.plugin.campfire.DefaultCampfireCategory;
import me.shedaniel.rei.plugin.campfire.DefaultCampfireDisplay;
import me.shedaniel.rei.plugin.composting.DefaultCompostingCategory;
import me.shedaniel.rei.plugin.composting.DefaultCompostingDisplay;
+import me.shedaniel.rei.plugin.cooking.DefaultCookingCategory;
import me.shedaniel.rei.plugin.crafting.DefaultCraftingCategory;
import me.shedaniel.rei.plugin.crafting.DefaultCustomDisplay;
import me.shedaniel.rei.plugin.crafting.DefaultShapedDisplay;
import me.shedaniel.rei.plugin.crafting.DefaultShapelessDisplay;
-import me.shedaniel.rei.plugin.smelting.DefaultSmeltingCategory;
import me.shedaniel.rei.plugin.smelting.DefaultSmeltingDisplay;
-import me.shedaniel.rei.plugin.smoking.DefaultSmokingCategory;
import me.shedaniel.rei.plugin.smoking.DefaultSmokingDisplay;
import me.shedaniel.rei.plugin.stonecutting.DefaultStoneCuttingCategory;
import me.shedaniel.rei.plugin.stonecutting.DefaultStoneCuttingDisplay;
@@ -47,6 +46,8 @@ import net.minecraft.client.gui.screen.recipebook.RecipeBookProvider;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.fluid.EmptyFluid;
+import net.minecraft.fluid.Fluid;
+import net.minecraft.item.Item;
import net.minecraft.item.ItemConvertible;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
@@ -97,26 +98,28 @@ public class DefaultPlugin implements REIPluginV0 {
if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().isLoadingDefaultPlugin()) {
return;
}
- Registry.ITEM.stream().forEach(item -> {
- entryRegistry.registerItemStack(item.getStackForRender());
+ for (Item item : Registry.ITEM) {
+ entryRegistry.registerEntry(EntryStack.create(item));
try {
- entryRegistry.registerItemStack(entryRegistry.getAllStacksFromItem(item));
+ for (ItemStack stack : entryRegistry.getAllStacksFromItem(item)) {
+ entryRegistry.registerEntry(EntryStack.create(stack));
+ }
} catch (Exception e) {
}
- });
- Registry.ENCHANTMENT.forEach(enchantment -> {
+ }
+ for (Enchantment enchantment : Registry.ENCHANTMENT) {
for (int i = enchantment.getMinimumLevel(); i <= enchantment.getMaximumLevel(); i++) {
Map<Enchantment, Integer> map = new HashMap<>();
map.put(enchantment, i);
ItemStack itemStack = new ItemStack(Items.ENCHANTED_BOOK);
EnchantmentHelper.set(map, itemStack);
- entryRegistry.registerItemStack(Items.ENCHANTED_BOOK, itemStack);
+ entryRegistry.registerEntriesAfter(EntryStack.create(Items.ENCHANTED_BOOK), EntryStack.create(itemStack));
}
- });
- Registry.FLUID.forEach(fluid -> {
+ }
+ for (Fluid fluid : Registry.FLUID) {
if (!(fluid instanceof EmptyFluid))
- entryRegistry.registerFluid(fluid);
- });
+ entryRegistry.registerEntry(EntryStack.create(fluid));
+ }
}
@Override
@@ -125,9 +128,9 @@ public class DefaultPlugin implements REIPluginV0 {
return;
}
recipeHelper.registerCategory(new DefaultCraftingCategory());
- recipeHelper.registerCategory(new DefaultSmeltingCategory());
- recipeHelper.registerCategory(new DefaultSmokingCategory());
- recipeHelper.registerCategory(new DefaultBlastingCategory());
+ recipeHelper.registerCategory(new DefaultCookingCategory(SMELTING, EntryStack.create(Items.FURNACE), "category.rei.smelting"));
+ recipeHelper.registerCategory(new DefaultCookingCategory(SMOKING, EntryStack.create(Items.SMOKER), "category.rei.smoking"));
+ recipeHelper.registerCategory(new DefaultCookingCategory(BLASTING, EntryStack.create(Items.BLAST_FURNACE), "category.rei.blasting"));
recipeHelper.registerCategory(new DefaultCampfireCategory());
recipeHelper.registerCategory(new DefaultStoneCuttingCategory());
recipeHelper.registerCategory(new DefaultBrewingCategory());
@@ -147,29 +150,32 @@ public class DefaultPlugin implements REIPluginV0 {
recipeHelper.registerRecipes(BLASTING, BlastingRecipe.class, DefaultBlastingDisplay::new);
recipeHelper.registerRecipes(CAMPFIRE, CampfireCookingRecipe.class, DefaultCampfireDisplay::new);
recipeHelper.registerRecipes(STONE_CUTTING, StonecuttingRecipe.class, DefaultStoneCuttingDisplay::new);
- BREWING_DISPLAYS.stream().forEachOrdered(display -> recipeHelper.registerDisplay(BREWING, display));
- List<ItemStack> arrowStack = Collections.singletonList(Items.ARROW.getStackForRender());
- RoughlyEnoughItemsCore.getEntryRegistry().getEntryList().stream().filter(stack -> stack.getEntryType() == Entry.Type.ITEM && stack.getItemStack().getItem().equals(Items.LINGERING_POTION)).forEach(entry -> {
- List<List<ItemStack>> input = new ArrayList<>();
- for (int i = 0; i < 4; i++)
- input.add(arrowStack);
- input.add(Collections.singletonList(entry.getItemStack()));
- for (int i = 0; i < 4; i++)
- input.add(arrowStack);
- ItemStack outputStack = new ItemStack(Items.TIPPED_ARROW, 8);
- PotionUtil.setPotion(outputStack, PotionUtil.getPotion(entry.getItemStack()));
- PotionUtil.setCustomPotionEffects(outputStack, PotionUtil.getCustomPotionEffects(entry.getItemStack()));
- List<ItemStack> output = Collections.singletonList(outputStack);
- recipeHelper.registerDisplay(CRAFTING, new DefaultCustomDisplay(input, output));
- });
+ for (DefaultBrewingDisplay display : BREWING_DISPLAYS) {
+ recipeHelper.registerDisplay(BREWING, display);
+ }
+ List<EntryStack> arrowStack = Collections.singletonList(EntryStack.create(Items.ARROW));
+ for (EntryStack entry : RoughlyEnoughItemsCore.getEntryRegistry().getStacksList()) {
+ if (entry.getItem() == Items.LINGERING_POTION) {
+ List<List<EntryStack>> input = new ArrayList<>();
+ for (int i = 0; i < 4; i++)
+ input.add(arrowStack);
+ input.add(Collections.singletonList(EntryStack.create(entry.getItemStack())));
+ for (int i = 0; i < 4; i++)
+ input.add(arrowStack);
+ ItemStack outputStack = new ItemStack(Items.TIPPED_ARROW, 8);
+ PotionUtil.setPotion(outputStack, PotionUtil.getPotion(entry.getItemStack()));
+ PotionUtil.setCustomPotionEffects(outputStack, PotionUtil.getCustomPotionEffects(entry.getItemStack()));
+ List<EntryStack> output = Collections.singletonList(EntryStack.create(outputStack).addSetting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE));
+ recipeHelper.registerDisplay(CRAFTING, new DefaultCustomDisplay(null, input, output));
+ }
+ }
Map<ItemConvertible, Float> map = Maps.newLinkedHashMap();
if (ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.isEmpty())
ComposterBlock.registerDefaultCompostableItems();
- ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.keySet().forEach(itemConvertible -> {
- float chance = ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.getOrDefault(itemConvertible, 0);
- if (chance > 0)
- map.put(itemConvertible, chance);
- });
+ for (Object2FloatMap.Entry<ItemConvertible> entry : ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.object2FloatEntrySet()) {
+ if (entry.getFloatValue() > 0)
+ map.put(entry.getKey(), entry.getFloatValue());
+ }
List<ItemConvertible> stacks = new LinkedList<>(map.keySet());
stacks.sort((first, second) -> {
return (int) ((map.get(first) - map.get(second)) * 100);
diff --git a/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java b/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java
index 5df184dad..11e32fdef 100644
--- a/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java
+++ b/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java
@@ -10,6 +10,7 @@ import it.unimi.dsi.fastutil.ints.IntArrayList;
import it.unimi.dsi.fastutil.ints.IntList;
import me.shedaniel.rei.RoughlyEnoughItemsNetwork;
import me.shedaniel.rei.api.AutoTransferHandler;
+import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.TransferRecipeDisplay;
import me.shedaniel.rei.listeners.RecipeBookGuiHooks;
import me.shedaniel.rei.server.ContainerInfo;
@@ -43,7 +44,7 @@ public class DefaultCategoryHandler implements AutoTransferHandler {
return Result.createNotApplicable();
if (recipe.getHeight() > containerInfo.getCraftingHeight(container) || recipe.getWidth() > containerInfo.getCraftingWidth(container))
return Result.createFailed(I18n.translate("error.rei.transfer.too_small", containerInfo.getCraftingWidth(container), containerInfo.getCraftingHeight(container)));
- List<List<ItemStack>> input = recipe.getOrganisedInput(containerInfo, container);
+ List<List<EntryStack>> input = recipe.getOrganisedInputEntries(containerInfo, container);
IntList intList = hasItems(input);
if (!intList.isEmpty())
return Result.createFailed("error.rei.not.enough.materials", intList);
@@ -60,10 +61,12 @@ public class DefaultCategoryHandler implements AutoTransferHandler {
buf.writeBoolean(Screen.hasShiftDown());
buf.writeInt(input.size());
- for (List<ItemStack> stacks : input) {
+ for (List<EntryStack> stacks : input) {
buf.writeInt(stacks.size());
- for (ItemStack stack : stacks) {
- buf.writeItemStack(stack);
+ for (EntryStack stack : stacks) {
+ if (stack.getItemStack() != null)
+ buf.writeItemStack(stack.getItemStack());
+ else buf.writeItemStack(ItemStack.EMPTY);
}
}
ClientSidePacketRegistry.INSTANCE.sendToServer(RoughlyEnoughItemsNetwork.MOVE_ITEMS_PACKET, buf);
@@ -79,7 +82,7 @@ public class DefaultCategoryHandler implements AutoTransferHandler {
return ClientSidePacketRegistry.INSTANCE.canServerReceive(RoughlyEnoughItemsNetwork.MOVE_ITEMS_PACKET);
}
- public IntList hasItems(List<List<ItemStack>> inputs) {
+ public IntList hasItems(List<List<EntryStack>> inputs) {
// Create a clone of player's inventory, and count
DefaultedList<ItemStack> copyMain = DefaultedList.of();
for (ItemStack stack : MinecraftClient.getInstance().player.inventory.main) {
@@ -87,13 +90,14 @@ public class DefaultCategoryHandler implements AutoTransferHandler {
}
IntList intList = new IntArrayList();
for (int i = 0; i < inputs.size(); i++) {
- List<ItemStack> possibleStacks = inputs.get(i);
+ List<EntryStack> possibleStacks = inputs.get(i);
boolean done = possibleStacks.isEmpty();
- for (ItemStack possibleStack : possibleStacks) {
+ for (EntryStack possibleStack : possibleStacks) {
if (!done) {
- int invRequiredCount = possibleStack.getCount();
+ int invRequiredCount = possibleStack.getAmount();
for (ItemStack stack : copyMain) {
- if (ItemStack.areItemsEqualIgnoreDamage(possibleStack, stack)) {
+ EntryStack entryStack = EntryStack.create(stack);
+ if (entryStack.equals(possibleStack)) {
while (invRequiredCount > 0 && !stack.isEmpty()) {
invRequiredCount--;
stack.decrement(1);
diff --git a/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java b/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java
deleted file mode 100644
index 4c5f3dac3..000000000
--- a/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Roughly Enough Items by Danielshe.
- * Licensed under the MIT License.
- */
-
-package me.shedaniel.rei.plugin.blasting;
-
-import com.mojang.blaze3d.systems.RenderSystem;
-import it.unimi.dsi.fastutil.ints.IntList;
-import me.shedaniel.math.api.Point;
-import me.shedaniel.math.api.Rectangle;
-import me.shedaniel.rei.api.Renderer;
-import me.shedaniel.rei.api.TransferRecipeCategory;
-import me.shedaniel.rei.gui.renderers.RecipeRenderer;
-import me.shedaniel.rei.gui.widget.RecipeArrowWidget;
-import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
-import me.shedaniel.rei.gui.widget.SlotWidget;
-import me.shedaniel.rei.gui.widget.Widget;
-import me.shedaniel.rei.plugin.DefaultPlugin;
-import net.minecraft.block.Blocks;
-import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.gui.DrawableHelper;
-import net.minecraft.client.render.GuiLighting;
-import net.minecraft.client.resource.language.I18n;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.Formatting;
-import net.minecraft.util.Identifier;
-import net.minecraft.util.math.MathHelper;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.function.Supplier;
-
-public class DefaultBlastingCategory implements TransferRecipeCategory<DefaultBlastingDisplay> {
-
- @Override
- public Identifier getIdentifier() {
- return DefaultPlugin.BLASTING;
- }
-
- @Override
- public Renderer getIcon() {
- return Renderer.fromItemStack(new ItemStack(Blocks.BLAST_FURNACE));
- }
-
- @Override
- public String getCategoryName() {
- return I18n.translate("category.rei.blasting");
- }
-
- @Override
- public RecipeRenderer getSimpleRenderer(DefaultBlastingDisplay recipe) {
- return Renderer.fromRecipe(() -> Arrays.asList(recipe.getInput().get(0)), recipe::getOutput);
- }
-
- @Override
- public List<Widget> setupDisplay(Supplier<DefaultBlastingDisplay> recipeDisplaySupplier, Rectangle bounds) {
- final DefaultBlastingDisplay recipeDisplay = recipeDisplaySupplier.get();
- Point startPoint = new Point(bounds.getCenterX() - 41, bounds.getCenterY() - 27);
- List<Widget> widgets = new LinkedList<>(Arrays.asList(new RecipeBaseWidget(bounds) {
- @Override
- public void render(int mouseX, int mouseY, float delta) {
- super.render(mouseX, mouseY, delta);
- RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
- GuiLighting.disable();
- MinecraftClient.getInstance().getTextureManager().bindTexture(DefaultPlugin.getDisplayTexture());
- blit(startPoint.x, startPoint.y, 0, 54, 82, 54);
- int height = MathHelper.ceil((System.currentTimeMillis() / 250 % 14d) / 1f);
- blit(startPoint.x + 2, startPoint.y + 21 + (14 - height), 82, 77 + (14 - height), 14, height);
- }
- }));
- widgets.add(new RecipeArrowWidget(startPoint.x + 24, startPoint.y + 18, true));
- List<List<ItemStack>> input = recipeDisplay.getInput();
- widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 1, Renderer.fromItemStacks(input.get(0)), true, true, true));
- widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 37, Renderer.fromItemStacks(() -> recipeDisplay.getFuel(), true, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.smelting.fuel"))), true, true, true));
- widgets.add(new SlotWidget(startPoint.x + 61, startPoint.y + 19, Renderer.fromItemStacks(recipeDisplay.getOutput()), false, true, true));
- return widgets;
- }
-
- @Override
- public void renderRedSlots(List<Widget> widgets, Rectangle bounds, DefaultBlastingDisplay display, IntList redSlots) {
- Point startPoint = new Point(bounds.getCenterX() - 41, bounds.getCenterY() - 27);
- RenderSystem.translatef(0, 0, 400);
- if (redSlots.contains(0)) {
- DrawableHelper.fill(startPoint.x + 1, startPoint.y + 1, startPoint.x + 1 + 16, startPoint.y + 1 + 16, 822018048);
- }
- RenderSystem.translatef(0, 0, -400);
- }
-
-}
diff --git a/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingDisplay.java
index 52f521a99..510d5eb96 100644
--- a/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingDisplay.java
@@ -5,81 +5,19 @@
package me.shedaniel.rei.plugin.blasting;
-import me.shedaniel.rei.api.TransferRecipeDisplay;
import me.shedaniel.rei.plugin.DefaultPlugin;
-import me.shedaniel.rei.server.ContainerInfo;
-import net.minecraft.block.entity.FurnaceBlockEntity;
-import net.minecraft.container.Container;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.recipe.AbstractCookingRecipe;
+import me.shedaniel.rei.plugin.cooking.DefaultCookingDisplay;
import net.minecraft.recipe.BlastingRecipe;
import net.minecraft.util.Identifier;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-public class DefaultBlastingDisplay implements TransferRecipeDisplay {
-
- private BlastingRecipe display;
- private List<List<ItemStack>> input;
- private List<ItemStack> output;
+public class DefaultBlastingDisplay extends DefaultCookingDisplay {
public DefaultBlastingDisplay(BlastingRecipe recipe) {
- this.display = recipe;
- this.input = recipe.getPreviewInputs().stream().map(i -> Arrays.asList(i.getMatchingStacksClient())).collect(Collectors.toList());
- this.input.add(FurnaceBlockEntity.createFuelTimeMap().keySet().stream().map(Item::getStackForRender).collect(Collectors.toList()));
- this.output = Collections.singletonList(recipe.getOutput());
- }
-
- @Override
- public Optional<Identifier> getRecipeLocation() {
- return Optional.ofNullable(display).map(AbstractCookingRecipe::getId);
- }
-
- @Override
- public List<List<ItemStack>> getInput() {
- return input;
- }
-
- public List<ItemStack> getFuel() {
- return input.get(1);
- }
-
- @Override
- public List<ItemStack> getOutput() {
- return output;
+ super(recipe);
}
@Override
public Identifier getRecipeCategory() {
return DefaultPlugin.BLASTING;
}
-
- @Override
- public List<List<ItemStack>> getRequiredItems() {
- return input;
- }
-
- public Optional<BlastingRecipe> getOptionalRecipe() {
- return Optional.ofNullable(display);
- }
-
- @Override
- public int getWidth() {
- return 1;
- }
-
- @Override
- public int getHeight() {
- return 1;
- }
-
- @Override
- public List<List<ItemStack>> getOrganisedInput(ContainerInfo<Container> containerInfo, Container container) {
- return display.getPreviewInputs().stream().map(i -> Arrays.asList(i.getMatchingStacksClient())).collect(Collectors.toList());
- }
}
diff --git a/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingCategory.java b/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingCategory.java
index b17c0066d..466ab9c2c 100644
--- a/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingCategory.java
+++ b/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingCategory.java
@@ -8,24 +8,21 @@ package me.shedaniel.rei.plugin.brewing;
import me.shedaniel.math.api.Point;
import me.shedaniel.math.api.Rectangle;
import com.mojang.blaze3d.systems.RenderSystem;
+import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.api.Renderer;
+import me.shedaniel.rei.gui.widget.EntryWidget;
import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
-import me.shedaniel.rei.gui.widget.SlotWidget;
import me.shedaniel.rei.gui.widget.Widget;
import me.shedaniel.rei.plugin.DefaultPlugin;
import net.minecraft.block.Blocks;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.GuiLighting;
import net.minecraft.client.resource.language.I18n;
-import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
-import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import java.util.Arrays;
-import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Supplier;
@@ -38,8 +35,8 @@ public class DefaultBrewingCategory implements RecipeCategory<DefaultBrewingDisp
}
@Override
- public Renderer getIcon() {
- return Renderer.fromItemStack(new ItemStack(Blocks.BREWING_STAND));
+ public EntryStack getLogo() {
+ return EntryStack.create(Blocks.BREWING_STAND);
}
@Override
@@ -63,12 +60,12 @@ public class DefaultBrewingCategory implements RecipeCategory<DefaultBrewingDisp
blit(startPoint.x + 44, startPoint.y + 28, 103, 163, width, 4);
}
}));
- widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 1, Renderer.fromItemStack(new ItemStack(Items.BLAZE_POWDER)), false, true, true));
- widgets.add(new SlotWidget(startPoint.x + 40, startPoint.y + 1, Renderer.fromItemStacks(() -> recipeDisplay.getInput().get(0), true, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.input"))), false, true, true));
- widgets.add(new SlotWidget(startPoint.x + 63, startPoint.y + 1, Renderer.fromItemStacks(() -> recipeDisplay.getInput().get(1), true, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.reactant"))), false, true, true));
- widgets.add(new SlotWidget(startPoint.x + 40, startPoint.y + 35, Renderer.fromItemStacks(() -> recipeDisplay.getOutput(0), true, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.result"))), false, true, true));
- widgets.add(new SlotWidget(startPoint.x + 63, startPoint.y + 42, Renderer.fromItemStacks(() -> recipeDisplay.getOutput(1), true, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.result"))), false, true, true));
- widgets.add(new SlotWidget(startPoint.x + 86, startPoint.y + 35, Renderer.fromItemStacks(() -> recipeDisplay.getOutput(2), true, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.result"))), false, true, true));
+ widgets.add(EntryWidget.create(startPoint.x + 1, startPoint.y + 1).entry(EntryStack.create(Items.BLAZE_POWDER)).noBackground());
+ widgets.add(EntryWidget.create(startPoint.x + 40, startPoint.y + 1).entries(recipeDisplay.getInputEntries().get(0)).noBackground());
+ widgets.add(EntryWidget.create(startPoint.x + 63, startPoint.y + 1).entries(recipeDisplay.getInputEntries().get(1)).noBackground());
+ widgets.add(EntryWidget.create(startPoint.x + 40, startPoint.y + 35).entries(recipeDisplay.getOutput(0)).noBackground());
+ widgets.add(EntryWidget.create(startPoint.x + 63, startPoint.y + 42).entries(recipeDisplay.getOutput(1)).noBackground());
+ widgets.add(EntryWidget.create(startPoint.x + 86, startPoint.y + 35).entries(recipeDisplay.getOutput(2)).noBackground());
return widgets;
}
diff --git a/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java
index 5a091e42b..3b8023779 100644
--- a/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java
@@ -6,36 +6,49 @@
package me.shedaniel.rei.plugin.brewing;
import com.google.common.collect.Lists;
+import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeDisplay;
import me.shedaniel.rei.plugin.DefaultPlugin;
-import net.minecraft.block.Blocks;
+import net.minecraft.client.resource.language.I18n;
import net.minecraft.item.ItemStack;
+import net.minecraft.item.PotionItem;
import net.minecraft.recipe.Ingredient;
+import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class DefaultBrewingDisplay implements RecipeDisplay {
- private ItemStack input, output;
- private Ingredient reactant;
+ private EntryStack input, output;
+ private List<EntryStack> reactant;
public DefaultBrewingDisplay(ItemStack input, Ingredient reactant, ItemStack output) {
- this.input = input;
- this.reactant = reactant;
- this.output = output;
+ this.input = EntryStack.create(input).setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.input")));
+ if (this.input.getItem() instanceof PotionItem)
+ this.input = this.input.setting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE);
+ this.reactant = new ArrayList<>();
+ for (ItemStack stack : reactant.getStackArray()) {
+ EntryStack entryStack = EntryStack.create(stack);
+ if (stack.getItem() instanceof PotionItem)
+ entryStack.setting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE);
+ entryStack.setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, s -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.reactant")));
+ this.reactant.add(entryStack);
+ }
+ this.output = EntryStack.create(output).setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.result")));
+ if (this.output.getItem() instanceof PotionItem)
+ this.output = this.output.setting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE);
}
@Override
- public List<List<ItemStack>> getInput() {
- return Lists.newArrayList(Collections.singletonList(input), Arrays.asList(reactant.getMatchingStacksClient()));
+ public List<List<EntryStack>> getInputEntries() {
+ return Lists.newArrayList(Collections.singletonList(input), reactant);
}
@Override
- public List<ItemStack> getOutput() {
+ public List<EntryStack> getOutputEntries() {
return Collections.singletonList(output);
}
@@ -44,17 +57,17 @@ public class DefaultBrewingDisplay implements RecipeDisplay {
return DefaultPlugin.BREWING;
}
- public List<ItemStack> getOutput(int slot) {
- List<ItemStack> stack = new ArrayList<>();
+ public List<EntryStack> getOutput(int slot) {
+ List<EntryStack> stack = new ArrayList<>();
for (int i = 0; i < slot * 2; i++)
- stack.add(new ItemStack(Blocks.AIR));
+ stack.add(EntryStack.empty());
for (int i = 0; i < 6 - slot * 2; i++)
- stack.addAll(getOutput());
+ stack.a