aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/plugin/crafting
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-01-05 22:14:37 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-01-05 22:14:37 +0800
commit63fdcc76da7e2d7cbd79d327c6dd72404708f64f (patch)
tree7d95f69850beb2935856253db1d8515493717d1a /src/main/java/me/shedaniel/plugin/crafting
parent418ee1e13fb66ef30c9473e0069695d89967124f (diff)
downloadRoughlyEnoughItems-63fdcc76da7e2d7cbd79d327c6dd72404708f64f.tar.gz
RoughlyEnoughItems-63fdcc76da7e2d7cbd79d327c6dd72404708f64f.tar.bz2
RoughlyEnoughItems-63fdcc76da7e2d7cbd79d327c6dd72404708f64f.zip
Buggy Autocrafting
Diffstat (limited to 'src/main/java/me/shedaniel/plugin/crafting')
-rwxr-xr-xsrc/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java42
-rwxr-xr-xsrc/main/java/me/shedaniel/plugin/crafting/VanillaCraftingRecipe.java3
-rwxr-xr-xsrc/main/java/me/shedaniel/plugin/crafting/VanillaShapedCraftingRecipe.java6
-rwxr-xr-xsrc/main/java/me/shedaniel/plugin/crafting/VanillaShapelessCraftingRecipe.java6
4 files changed, 50 insertions, 7 deletions
diff --git a/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java b/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java
index 30c6a0726..2c6d48a08 100755
--- a/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java
+++ b/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java
@@ -1,11 +1,15 @@
package me.shedaniel.plugin.crafting;
-import me.shedaniel.api.IDisplayCategory;
-import me.shedaniel.gui.widget.Control;
-import me.shedaniel.gui.widget.REISlot;
-import me.shedaniel.gui.widget.WidgetArrow;
+import me.shedaniel.api.DisplayCategoryCraftable;
+import me.shedaniel.gui.RecipeGui;
+import me.shedaniel.gui.widget.*;
+import me.shedaniel.listenerdefinitions.IMixinRecipeBookGui;
+import me.shedaniel.mixins.MixinRecipeBookGui;
import net.minecraft.block.Blocks;
import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.Gui;
+import net.minecraft.client.gui.container.CraftingTableGui;
+import net.minecraft.client.gui.ingame.PlayerInventoryGui;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.client.util.Window;
import net.minecraft.item.ItemStack;
@@ -14,7 +18,7 @@ import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
-public class VanillaCraftingCategory implements IDisplayCategory<VanillaCraftingRecipe> {
+public class VanillaCraftingCategory implements DisplayCategoryCraftable<VanillaCraftingRecipe> {
Window mainWindow = MinecraftClient.getInstance().window;
private List<VanillaCraftingRecipe> recipes;
@@ -117,4 +121,32 @@ public class VanillaCraftingCategory implements IDisplayCategory<VanillaCrafting
return new ItemStack(Blocks.CRAFTING_TABLE.getItem());
}
+ @Override
+ public boolean canAutoCraftHere(Class<? extends Gui> guiClass, VanillaCraftingRecipe recipe) {
+ return guiClass.isAssignableFrom(CraftingTableGui.class) || (guiClass.isAssignableFrom(PlayerInventoryGui.class) && recipe.getHeight() < 3 && recipe.getWidth() < 3);
+ }
+
+ @Override
+ public boolean performAutoCraft(Gui gui, VanillaCraftingRecipe 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();
+ MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed());
+ return true;
+ }
+
+ @Override
+ public void registerAutoCraftButton(List<Control> control, RecipeGui recipeGui, Gui parentGui, VanillaCraftingRecipe recipe, int number) {
+ SmallButton button = new SmallButton(78, 75 + 6 + 36 + number * 75, 10, 10, "+");
+ button.setOnClick(mouse -> {
+ System.out.println(parentGui.getClass().getName());
+ recipeGui.close();
+ MinecraftClient.getInstance().openGui(parentGui);
+ return canAutoCraftHere(parentGui.getClass(), recipe) && performAutoCraft(parentGui, recipe);
+ });
+ button.setEnabled(canAutoCraftHere(parentGui.getClass(), recipe));
+ control.add(button);
+ }
+
}
diff --git a/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingRecipe.java b/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingRecipe.java
index f39b5d695..c7d7bfeb2 100755
--- a/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingRecipe.java
+++ b/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingRecipe.java
@@ -2,6 +2,7 @@ package me.shedaniel.plugin.crafting;
import me.shedaniel.api.IRecipe;
import net.minecraft.item.ItemStack;
+import net.minecraft.recipe.Recipe;
public abstract class VanillaCraftingRecipe implements IRecipe<ItemStack> {
@@ -13,4 +14,6 @@ public abstract class VanillaCraftingRecipe implements IRecipe<ItemStack> {
return 2;
}
+ public abstract Recipe getRecipe();
+
}
diff --git a/src/main/java/me/shedaniel/plugin/crafting/VanillaShapedCraftingRecipe.java b/src/main/java/me/shedaniel/plugin/crafting/VanillaShapedCraftingRecipe.java
index 3f830f381..81bc101a0 100755
--- a/src/main/java/me/shedaniel/plugin/crafting/VanillaShapedCraftingRecipe.java
+++ b/src/main/java/me/shedaniel/plugin/crafting/VanillaShapedCraftingRecipe.java
@@ -12,11 +12,15 @@ public class VanillaShapedCraftingRecipe extends VanillaCraftingRecipe {
private final ShapedRecipe recipe;
public VanillaShapedCraftingRecipe(ShapedRecipe recipe) {
-
this.recipe = recipe;
}
@Override
+ public ShapedRecipe getRecipe() {
+ return recipe;
+ }
+
+ @Override
public int getWidth() {
return recipe.getWidth();
}
diff --git a/src/main/java/me/shedaniel/plugin/crafting/VanillaShapelessCraftingRecipe.java b/src/main/java/me/shedaniel/plugin/crafting/VanillaShapelessCraftingRecipe.java
index 7b04e9901..dfb8d042b 100755
--- a/src/main/java/me/shedaniel/plugin/crafting/VanillaShapelessCraftingRecipe.java
+++ b/src/main/java/me/shedaniel/plugin/crafting/VanillaShapelessCraftingRecipe.java
@@ -12,11 +12,15 @@ public class VanillaShapelessCraftingRecipe extends VanillaCraftingRecipe {
private final ShapelessRecipe recipe;
public VanillaShapelessCraftingRecipe(ShapelessRecipe recipe) {
-
this.recipe = recipe;
}
@Override
+ public ShapelessRecipe getRecipe() {
+ return recipe;
+ }
+
+ @Override
public String getId() {
return "vanilla";
}