diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-01-17 22:19:57 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-01-17 22:19:57 +0800 |
| commit | 943b3c0a7f68630261f0c06c60fee0b107d052cd (patch) | |
| tree | 634656ecc76abf07e3cf892a90ea86fbd692543e /src/main/java/me/shedaniel/rei/plugin | |
| parent | 55fb26865a7c77a098b2be067afcf29c335df48c (diff) | |
| download | RoughlyEnoughItems-2.0.0.39.tar.gz RoughlyEnoughItems-2.0.0.39.tar.bz2 RoughlyEnoughItems-2.0.0.39.zip | |
API Changev2.0.0.39
Diffstat (limited to 'src/main/java/me/shedaniel/rei/plugin')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java | 176 |
1 files changed, 38 insertions, 138 deletions
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java index 937a275c8..e821d06ef 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java @@ -1,25 +1,18 @@ package me.shedaniel.rei.plugin; import com.google.common.collect.Lists; -import me.shedaniel.rei.api.IRecipeCategoryCraftable; +import me.shedaniel.rei.api.IRecipeDisplay; import me.shedaniel.rei.api.IRecipePlugin; -import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.api.SpeedCraftFunctional; 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; @@ -29,7 +22,6 @@ 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 { @@ -72,11 +64,12 @@ public class DefaultPlugin implements IRecipePlugin { } @Override - public void registerAutoCraftingGui() { - RecipeHelper.registerCategoryCraftable(new Class[]{DefaultShapelessDisplay.class, DefaultShapedDisplay.class}, new IRecipeCategoryCraftable<DefaultCraftingDisplay>() { + public void registerSpeedCraft() { + RecipeHelper.registerSpeedCraftButtonArea(DefaultPlugin.BREWING, null); + RecipeHelper.registerSpeedCraftFunctional(DefaultPlugin.CRAFTING, new SpeedCraftFunctional<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); + public Class[] getFunctioningFor() { + return new Class[]{PlayerInventoryGui.class, CraftingTableGui.class}; } @Override @@ -91,168 +84,75 @@ public class DefaultPlugin implements IRecipePlugin { } @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(); + public boolean acceptRecipe(Gui gui, DefaultCraftingDisplay recipe) { + return gui instanceof CraftingTableGui || (gui instanceof PlayerInventoryGui && recipe.getHeight() < 3 && recipe.getWidth() < 3); } }); - RecipeHelper.registerCategoryCraftable(DefaultSmeltingDisplay.class, new IRecipeCategoryCraftable<DefaultSmeltingDisplay>() { + RecipeHelper.registerSpeedCraftFunctional(DefaultPlugin.SMELTING, new SpeedCraftFunctional<DefaultSmeltingDisplay>() { @Override - public boolean canAutoCraftHere(Class<? extends Gui> guiClass, DefaultSmeltingDisplay recipe) { - return guiClass.isAssignableFrom(FurnaceGui.class); + public Class[] getFunctioningFor() { + return new Class[]{FurnaceGui.class}; } - + @Override public boolean performAutoCraft(Gui gui, DefaultSmeltingDisplay recipe) { - if (gui.getClass().isAssignableFrom(FurnaceGui.class)) + if (gui instanceof FurnaceGui) ((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(); + public boolean acceptRecipe(Gui gui, DefaultSmeltingDisplay recipe) { + return gui instanceof FurnaceGui; } }); - RecipeHelper.registerCategoryCraftable(DefaultSmokingDisplay.class, new IRecipeCategoryCraftable<DefaultSmokingDisplay>() { + RecipeHelper.registerSpeedCraftFunctional(DefaultPlugin.SMOKING, new SpeedCraftFunctional<DefaultSmokingDisplay>() { @Override - public boolean canAutoCraftHere(Class<? extends Gui> guiClass, DefaultSmokingDisplay recipe) { - return guiClass.isAssignableFrom(SmokerGui.class); + public Class[] getFunctioningFor() { + return new Class[]{SmokerGui.class}; } - + @Override public boolean performAutoCraft(Gui gui, DefaultSmokingDisplay recipe) { - if (gui.getClass().isAssignableFrom(SmokerGui.class)) + if (gui instanceof SmokerGui) ((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(); + public boolean acceptRecipe(Gui gui, DefaultSmokingDisplay recipe) { + return gui instanceof SmokerGui; } }); - RecipeHelper.registerCategoryCraftable(DefaultBlastingDisplay.class, new IRecipeCategoryCraftable<DefaultBlastingDisplay>() { + RecipeHelper.registerSpeedCraftFunctional(DefaultPlugin.BLASTING, new SpeedCraftFunctional<DefaultBlastingDisplay>() { @Override - public boolean canAutoCraftHere(Class<? extends Gui> guiClass, DefaultBlastingDisplay recipe) { - return guiClass.isAssignableFrom(BlastFurnaceGui.class); + public Class[] getFunctioningFor() { + return new Class[]{BlastFurnaceGui.class}; } - + @Override public boolean performAutoCraft(Gui gui, DefaultBlastingDisplay recipe) { - if (gui.getClass().isAssignableFrom(BlastFurnaceGui.class)) + if (gui instanceof BlastFurnaceGui) ((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(); + public boolean acceptRecipe(Gui gui, DefaultBlastingDisplay recipe) { + return gui instanceof BlastFurnaceGui; } }); } + @Override + public int getPriority() { + return -1; + } + } |
