diff options
Diffstat (limited to 'src/main/java')
11 files changed, 329 insertions, 17 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/IRecipeCategoryCraftable.java b/src/main/java/me/shedaniel/rei/api/IRecipeCategoryCraftable.java new file mode 100644 index 000000000..49156a943 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/api/IRecipeCategoryCraftable.java @@ -0,0 +1,19 @@ +package me.shedaniel.rei.api; + +import me.shedaniel.rei.gui.widget.IWidget; +import me.shedaniel.rei.gui.widget.RecipeViewingWidget; +import me.shedaniel.rei.listeners.IMixinContainerGui; +import net.minecraft.client.gui.Gui; + +import java.awt.*; +import java.util.List; + +public interface IRecipeCategoryCraftable<T extends IRecipeDisplay> { + + public boolean canAutoCraftHere(Class<? extends Gui> guiClass, T recipe); + + public boolean performAutoCraft(Gui gui, T recipe); + + public void registerAutoCraftButton(List<IWidget> widgets, Rectangle rectangle, IMixinContainerGui parentGui, T recipe); + +} diff --git a/src/main/java/me/shedaniel/rei/api/IRecipePlugin.java b/src/main/java/me/shedaniel/rei/api/IRecipePlugin.java index 870691e6d..5fa4f8d99 100644 --- a/src/main/java/me/shedaniel/rei/api/IRecipePlugin.java +++ b/src/main/java/me/shedaniel/rei/api/IRecipePlugin.java @@ -8,4 +8,6 @@ public interface IRecipePlugin extends IListener { public void registerRecipes(); + public void registerAutoCraftingGui(); + } diff --git a/src/main/java/me/shedaniel/rei/client/RecipeHelper.java b/src/main/java/me/shedaniel/rei/client/RecipeHelper.java index 70dad4c7c..d23d3d69d 100644 --- a/src/main/java/me/shedaniel/rei/client/RecipeHelper.java +++ b/src/main/java/me/shedaniel/rei/client/RecipeHelper.java @@ -4,9 +4,11 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.IRecipeCategory; +import me.shedaniel.rei.api.IRecipeCategoryCraftable; import me.shedaniel.rei.api.IRecipeDisplay; import me.shedaniel.rei.api.IRecipePlugin; import me.shedaniel.rei.listeners.RecipeSync; +import net.minecraft.client.gui.Gui; import net.minecraft.item.ItemStack; import net.minecraft.recipe.RecipeManager; import net.minecraft.util.Identifier; @@ -19,10 +21,12 @@ public class RecipeHelper implements RecipeSync { private static Map<Identifier, List<IRecipeDisplay>> recipeCategoryListMap; private static List<IRecipeCategory> categories; private static RecipeManager recipeManager; + private static Map<Class, IRecipeCategoryCraftable> craftables; public RecipeHelper() { this.recipeCategoryListMap = Maps.newHashMap(); this.categories = Lists.newArrayList(); + this.craftables = Maps.newHashMap(); } public static List<ItemStack> findCraftableByItems(List<ItemStack> inventoryItems) { @@ -113,20 +117,39 @@ public class RecipeHelper implements RecipeSync { return recipeCategoryListMap; } + public static List<IRecipeCategory> getCategories() { + return categories; + } + + public static void registerCategoryCraftable(Class<? extends IRecipeDisplay> guiClass, IRecipeCategoryCraftable categoryCraftable) { + craftables.put(guiClass, categoryCraftable); + } + + public static void registerCategoryCraftable(Class<? extends IRecipeDisplay>[] guiClasses, IRecipeCategoryCraftable categoryCraftable) { + for(Class<? extends IRecipeDisplay> guiClass : guiClasses) craftables.put(guiClass, categoryCraftable); + } + + public static IRecipeCategoryCraftable getCategoryCraftable(IRecipeDisplay gui) { + if (!craftables.containsKey(gui.getClass())) + return null; + return craftables.get(gui.getClass()); + } + @Override public void recipesLoaded(RecipeManager recipeManager) { this.recipeManager = recipeManager; this.recipeCategoryListMap.clear(); this.categories.clear(); + this.craftables.clear(); RoughlyEnoughItemsCore.getListeners(IRecipePlugin.class).forEach(plugin -> { plugin.registerPluginCategories(); plugin.registerRecipes(); + plugin.registerAutoCraftingGui(); }); Collections.reverse(categories); - RoughlyEnoughItemsCore.LOGGER.info("Registered REI Categories: " + String.join(", ", categories.stream().map(category -> {return category.getCategoryName();}).collect(Collectors.toList()))); + RoughlyEnoughItemsCore.LOGGER.info("Registered REI Categories: " + String.join(", ", categories.stream().map(category -> { + return category.getCategoryName(); + }).collect(Collectors.toList()))); } - public static List<IRecipeCategory> getCategories() { - return categories; - } } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java index 777106f93..955c4e5d9 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java @@ -3,6 +3,7 @@ package me.shedaniel.rei.gui.widget; import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.api.IRecipeCategory; +import me.shedaniel.rei.api.IRecipeCategoryCraftable; import me.shedaniel.rei.api.IRecipeDisplay; import me.shedaniel.rei.client.ClientHelper; import me.shedaniel.rei.client.GuiHelper; @@ -177,9 +178,17 @@ public class RecipeViewingWidget extends Gui { if (page * getRecipesPerPage() < categoriesMap.get(selectedCategory).size()) { IRecipeDisplay topDisplay = categoriesMap.get(selectedCategory).get(page * getRecipesPerPage()); widgets.addAll(selectedCategory.setupDisplay(getParent(), topDisplay, new Rectangle((int) getBounds().getCenterX() - 75, getBounds().y + 40, 150, selectedCategory.usesFullPage() ? 118 : 66))); + IRecipeCategoryCraftable craftable = RecipeHelper.getCategoryCraftable(topDisplay); + if (craftable != null) + craftable.registerAutoCraftButton(widgets, new Rectangle((int) getBounds().getCenterX() - 75, getBounds().y + 40, 150, selectedCategory.usesFullPage() ? 118 : 66), + getParent(), topDisplay); if (!selectedCategory.usesFullPage() && page * getRecipesPerPage() + 1 < categoriesMap.get(selectedCategory).size()) { IRecipeDisplay middleDisplay = categoriesMap.get(selectedCategory).get(page * getRecipesPerPage() + 1); widgets.addAll(selectedCategory.setupDisplay(getParent(), middleDisplay, new Rectangle((int) getBounds().getCenterX() - 75, getBounds().y + 108, 150, 66))); + craftable = RecipeHelper.getCategoryCraftable(middleDisplay); + if (craftable != null) + craftable.registerAutoCraftButton(widgets, new Rectangle((int) getBounds().getCenterX() - 75, getBounds().y + 108, 150, 66), + getParent(), middleDisplay); } } diff --git a/src/main/java/me/shedaniel/rei/listeners/IMixinRecipeBookGui.java b/src/main/java/me/shedaniel/rei/listeners/IMixinRecipeBookGui.java new file mode 100644 index 000000000..599467173 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/listeners/IMixinRecipeBookGui.java @@ -0,0 +1,9 @@ +package me.shedaniel.rei.listeners; + +import net.minecraft.client.gui.widget.RecipeBookGhostSlots; + +public interface IMixinRecipeBookGui { + + public RecipeBookGhostSlots getGhostSlots(); + +} diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinRecipeBookGui.java b/src/main/java/me/shedaniel/rei/mixin/MixinRecipeBookGui.java new file mode 100644 index 000000000..8dbe39700 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/mixin/MixinRecipeBookGui.java @@ -0,0 +1,20 @@ +package me.shedaniel.rei.mixin; + +import me.shedaniel.rei.listeners.IMixinRecipeBookGui; +import net.minecraft.client.gui.recipebook.RecipeBookGui; +import net.minecraft.client.gui.widget.RecipeBookGhostSlots; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(RecipeBookGui.class) +public class MixinRecipeBookGui implements IMixinRecipeBookGui { + + @Shadow @Final protected RecipeBookGhostSlots ghostSlots; + + @Override + public RecipeBookGhostSlots getGhostSlots() { + return ghostSlots; + } + +} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java index 75c35407c..69cafd573 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java @@ -1,13 +1,20 @@ package me.shedaniel.rei.plugin; +import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.api.IRecipeCategory; -import me.shedaniel.rei.gui.widget.IWidget; -import me.shedaniel.rei.gui.widget.ItemSlotWidget; -import me.shedaniel.rei.gui.widget.RecipeBaseWidget; +import me.shedaniel.rei.api.IRecipeCategoryCraftable; +import me.shedaniel.rei.client.ClientHelper; +import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.gui.widget.*; import me.shedaniel.rei.listeners.IMixinContainerGui; +import me.shedaniel.rei.listeners.IMixinRecipeBookGui; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.container.BlastFurnaceGui; +import net.minecraft.client.gui.container.FurnaceGui; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.ItemStack; diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java index ded3e3087..b7bd87d06 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java @@ -2,13 +2,20 @@ package me.shedaniel.rei.plugin; import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; +import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.IRecipeCategory; -import me.shedaniel.rei.gui.widget.IWidget; -import me.shedaniel.rei.gui.widget.ItemSlotWidget; -import me.shedaniel.rei.gui.widget.RecipeBaseWidget; +import me.shedaniel.rei.api.IRecipeCategoryCraftable; +import me.shedaniel.rei.client.ClientHelper; +import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.gui.widget.*; import me.shedaniel.rei.listeners.IMixinContainerGui; +import me.shedaniel.rei.listeners.IMixinRecipeBookGui; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.container.CraftingTableGui; +import net.minecraft.client.gui.ingame.PlayerInventoryGui; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.ItemStack; diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java index 5d55de0e6..937a275c8 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java @@ -1,9 +1,25 @@ package me.shedaniel.rei.plugin; import com.google.common.collect.Lists; -import me.shedaniel.rei.RoughlyEnoughItemsCore; +import me.shedaniel.rei.api.IRecipeCategoryCraftable; import me.shedaniel.rei.api.IRecipePlugin; +import me.shedaniel.rei.client.ClientHelper; +import me.shedaniel.rei.client.GuiHelper; import me.shedaniel.rei.client.RecipeHelper; +import me.shedaniel.rei.gui.widget.ButtonWidget; +import me.shedaniel.rei.gui.widget.IWidget; +import me.shedaniel.rei.gui.widget.QueuedTooltip; +import me.shedaniel.rei.listeners.IMixinContainerGui; +import me.shedaniel.rei.listeners.IMixinRecipeBookGui; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.container.BlastFurnaceGui; +import net.minecraft.client.gui.container.CraftingTableGui; +import net.minecraft.client.gui.container.FurnaceGui; +import net.minecraft.client.gui.container.SmokerGui; +import net.minecraft.client.gui.ingame.PlayerInventoryGui; +import net.minecraft.client.resource.language.I18n; import net.minecraft.recipe.Recipe; import net.minecraft.recipe.crafting.ShapedRecipe; import net.minecraft.recipe.crafting.ShapelessRecipe; @@ -12,6 +28,8 @@ import net.minecraft.recipe.smelting.SmeltingRecipe; import net.minecraft.recipe.smelting.SmokingRecipe; import net.minecraft.util.Identifier; +import java.awt.*; +import java.util.Arrays; import java.util.List; public class DefaultPlugin implements IRecipePlugin { @@ -53,4 +71,188 @@ public class DefaultPlugin implements IRecipePlugin { BREWING_DISPLAYS.forEach(display -> RecipeHelper.registerRecipe(BREWING, display)); } + @Override + public void registerAutoCraftingGui() { + RecipeHelper.registerCategoryCraftable(new Class[]{DefaultShapelessDisplay.class, DefaultShapedDisplay.class}, new IRecipeCategoryCraftable<DefaultCraftingDisplay>() { + @Override + public boolean canAutoCraftHere(Class<? extends Gui> guiClass, DefaultCraftingDisplay recipe) { + return guiClass.isAssignableFrom(CraftingTableGui.class) || (guiClass.isAssignableFrom(PlayerInventoryGui.class) && recipe.getHeight() < 3 && recipe.getWidth() < 3); + } + + @Override + public boolean performAutoCraft(Gui gui, DefaultCraftingDisplay recipe) { + if (gui.getClass().isAssignableFrom(CraftingTableGui.class)) + ((IMixinRecipeBookGui) (((CraftingTableGui) gui).getRecipeBookGui())).getGhostSlots().reset(); + else if (gui.getClass().isAssignableFrom(PlayerInventoryGui.class)) + ((IMixinRecipeBookGui) (((PlayerInventoryGui) gui).getRecipeBookGui())).getGhostSlots().reset(); + else return false; + MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); + return true; + } + + @Override + public void registerAutoCraftButton(List<IWidget> widgets, Rectangle rectangle, IMixinContainerGui parentGui, DefaultCraftingDisplay recipe) { + Point startPoint = new Point((int) rectangle.getCenterX() - 58, (int) rectangle.getCenterY() - 27); + ButtonWidget widget; + widgets.add(widget = new ButtonWidget(rectangle.x + 134, startPoint.y + 45, 10, 10, "+") { + @Override + public void onPressed(int button, double mouseX, double mouseY) { + MinecraftClient.getInstance().openGui(parentGui.getContainerGui()); + if (canAutoCraftHere(parentGui.getContainerGui().getClass(), recipe)) + performAutoCraft(parentGui.getContainerGui(), recipe); + } + + @Override + public void draw(int mouseX, int mouseY, float partialTicks) { + super.draw(mouseX, mouseY, partialTicks); + List<String> tooltips = getToolTip(parentGui.getContainerGui(), recipe); + if (tooltips.size() > 0 && getBounds().contains(mouseX, mouseY)) + GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), tooltips)); + } + }); + widget.enabled = canAutoCraftHere(parentGui.getContainerGui().getClass(), recipe); + } + + private List<String> getToolTip(ContainerGui parentGui, DefaultCraftingDisplay recipe) { + if (!(parentGui instanceof CraftingTableGui || parentGui instanceof PlayerInventoryGui)) + return Arrays.asList(I18n.translate("text.auto_craft.wrong_gui")); + if (parentGui instanceof PlayerInventoryGui && !(recipe.getHeight() < 3 && recipe.getWidth() < 3)) + return Arrays.asList(I18n.translate("text.auto_craft.crafting.too_small")); + return Lists.newArrayList(); + } + }); + RecipeHelper.registerCategoryCraftable(DefaultSmeltingDisplay.class, new IRecipeCategoryCraftable<DefaultSmeltingDisplay>() { + @Override + public boolean canAutoCraftHere(Class<? extends Gui> guiClass, DefaultSmeltingDisplay recipe) { + return guiClass.isAssignableFrom(FurnaceGui.class); + } + + @Override + public boolean performAutoCraft(Gui gui, DefaultSmeltingDisplay recipe) { + if (gui.getClass().isAssignableFrom(FurnaceGui.class)) + ((IMixinRecipeBookGui) (((FurnaceGui) gui).getRecipeBookGui())).getGhostSlots().reset(); + else return false; + MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); + return true; + } + + @Override + public void registerAutoCraftButton(List<IWidget> widgets, Rectangle rectangle, IMixinContainerGui parentGui, DefaultSmeltingDisplay recipe) { + Point startPoint = new Point((int) rectangle.getCenterX() - 58, (int) rectangle.getCenterY() - 27); + ButtonWidget widget; + widgets.add(widget = new ButtonWidget(rectangle.x + 134, startPoint.y + 45, 10, 10, "+") { + @Override + public void onPressed(int button, double mouseX, double mouseY) { + MinecraftClient.getInstance().openGui(parentGui.getContainerGui()); + if (canAutoCraftHere(parentGui.getContainerGui().getClass(), recipe)) + performAutoCraft(parentGui.getContainerGui(), recipe); + } + + @Override + public void draw(int mouseX, int mouseY, float partialTicks) { + super.draw(mouseX, mouseY, partialTicks); + List<String> tooltips = getToolTip(parentGui.getContainerGui(), recipe); + if (tooltips.size() > 0 && getBounds().contains(mouseX, mouseY)) + GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), tooltips)); + } + }); + widget.enabled = canAutoCraftHere(parentGui.getContainerGui().getClass(), recipe); + } + + private List<String> getToolTip(ContainerGui parentGui, DefaultSmeltingDisplay recipe) { + if (!(parentGui instanceof FurnaceGui)) + return Arrays.asList(I18n.translate("text.auto_craft.wrong_gui")); + return Lists.newArrayList(); + } + }); + RecipeHelper.registerCategoryCraftable(DefaultSmokingDisplay.class, new IRecipeCategoryCraftable<DefaultSmokingDisplay>() { + @Override + public boolean canAutoCraftHere(Class<? extends Gui> guiClass, DefaultSmokingDisplay recipe) { + return guiClass.isAssignableFrom(SmokerGui.class); + } + + @Override + public boolean performAutoCraft(Gui gui, DefaultSmokingDisplay recipe) { + if (gui.getClass().isAssignableFrom(SmokerGui.class)) + ((IMixinRecipeBookGui) (((SmokerGui) gui).getRecipeBookGui())).getGhostSlots().reset(); + else return false; + MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); + return true; + } + + @Override + public void registerAutoCraftButton(List<IWidget> widgets, Rectangle rectangle, IMixinContainerGui parentGui, DefaultSmokingDisplay recipe) { + Point startPoint = new Point((int) rectangle.getCenterX() - 58, (int) rectangle.getCenterY() - 27); + ButtonWidget widget; + widgets.add(widget = new ButtonWidget(rectangle.x + 134, startPoint.y + 45, 10, 10, "+") { + @Override + public void onPressed(int button, double mouseX, double mouseY) { + MinecraftClient.getInstance().openGui(parentGui.getContainerGui()); + if (canAutoCraftHere(parentGui.getContainerGui().getClass(), recipe)) + performAutoCraft(parentGui.getContainerGui(), recipe); + } + + @Override + public void draw(int mouseX, int mouseY, float partialTicks) { + super.draw(mouseX, mouseY, partialTicks); + List<String> tooltips = getToolTip(parentGui.getContainerGui(), recipe); + if (tooltips.size() > 0 && getBounds().contains(mouseX, mouseY)) + GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), tooltips)); + } + }); + widget.enabled = canAutoCraftHere(parentGui.getContainerGui().getClass(), recipe); + } + + private List<String> getToolTip(ContainerGui parentGui, DefaultSmokingDisplay recipe) { + if (!(parentGui instanceof SmokerGui)) + return Arrays.asList(I18n.translate("text.auto_craft.wrong_gui")); + return Lists.newArrayList(); + } + }); + RecipeHelper.registerCategoryCraftable(DefaultBlastingDisplay.class, new IRecipeCategoryCraftable<DefaultBlastingDisplay>() { + @Override + public boolean canAutoCraftHere(Class<? extends Gui> guiClass, DefaultBlastingDisplay recipe) { + return guiClass.isAssignableFrom(BlastFurnaceGui.class); + } + + @Override + public boolean performAutoCraft(Gui gui, DefaultBlastingDisplay recipe) { + if (gui.getClass().isAssignableFrom(BlastFurnaceGui.class)) + ((IMixinRecipeBookGui) (((BlastFurnaceGui) gui).getRecipeBookGui())).getGhostSlots().reset(); + else return false; + MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); + return true; + } + + @Override + public void registerAutoCraftButton(List<IWidget> widgets, Rectangle rectangle, IMixinContainerGui parentGui, DefaultBlastingDisplay recipe) { + Point startPoint = new Point((int) rectangle.getCenterX() - 58, (int) rectangle.getCenterY() - 27); + ButtonWidget widget; + widgets.add(widget = new ButtonWidget(rectangle.x + 134, startPoint.y + 45, 10, 10, "+") { + @Override + public void onPressed(int button, double mouseX, double mouseY) { + MinecraftClient.getInstance().openGui(parentGui.getContainerGui()); + if (canAutoCraftHere(parentGui.getContainerGui().getClass(), recipe)) + performAutoCraft(parentGui.getContainerGui(), recipe); + } + + @Override + public void draw(int mouseX, int mouseY, float partialTicks) { + super.draw(mouseX, mouseY, partialTicks); + List<String> tooltips = getToolTip(parentGui.getContainerGui(), recipe); + if (tooltips.size() > 0 && getBounds().contains(mouseX, mouseY)) + GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), tooltips)); + } + }); + widget.enabled = canAutoCraftHere(parentGui.getContainerGui().getClass(), recipe); + } + + private List<String> getToolTip(ContainerGui parentGui, DefaultBlastingDisplay recipe) { + if (!(parentGui instanceof BlastFurnaceGui)) + return Arrays.asList(I18n.translate("text.auto_craft.wrong_gui")); + return Lists.newArrayList(); + } + }); + } + } diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java index 63fbbd164..97481b953 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java @@ -1,13 +1,19 @@ package me.shedaniel.rei.plugin; +import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.api.IRecipeCategory; -import me.shedaniel.rei.gui.widget.IWidget; -import me.shedaniel.rei.gui.widget.ItemSlotWidget; -import me.shedaniel.rei.gui.widget.RecipeBaseWidget; +import me.shedaniel.rei.api.IRecipeCategoryCraftable; +import me.shedaniel.rei.client.ClientHelper; +import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.gui.widget.*; import me.shedaniel.rei.listeners.IMixinContainerGui; +import me.shedaniel.rei.listeners.IMixinRecipeBookGui; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.container.FurnaceGui; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.ItemStack; @@ -66,4 +72,5 @@ public class DefaultSmeltingCategory implements IRecipeCategory<DefaultSmeltingD widgets.add(new ItemSlotWidget(startPoint.x + 61, startPoint.y + 19, recipeDisplay.getOutput(), false, true, containerGui, true)); return widgets; } + } diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultSmokingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultSmokingCategory.java index eedce2977..71d3d3b49 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultSmokingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultSmokingCategory.java @@ -1,13 +1,20 @@ package me.shedaniel.rei.plugin; +import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.api.IRecipeCategory; -import me.shedaniel.rei.gui.widget.IWidget; -import me.shedaniel.rei.gui.widget.ItemSlotWidget; -import me.shedaniel.rei.gui.widget.RecipeBaseWidget; +import me.shedaniel.rei.api.IRecipeCategoryCraftable; +import me.shedaniel.rei.client.ClientHelper; +import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.gui.widget.*; import me.shedaniel.rei.listeners.IMixinContainerGui; +import me.shedaniel.rei.listeners.IMixinRecipeBookGui; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.container.FurnaceGui; +import net.minecraft.client.gui.container.SmokerGui; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.ItemStack; |
