diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-01-06 20:47:14 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-01-06 20:47:14 +0800 |
| commit | 8622811b9b8cd1447d08f5ee1654d18e01098536 (patch) | |
| tree | d59478a252703e752082cb774e31de32fd96654c /src/main/java/me/shedaniel/plugin | |
| parent | 63fdcc76da7e2d7cbd79d327c6dd72404708f64f (diff) | |
| download | RoughlyEnoughItems-8622811b9b8cd1447d08f5ee1654d18e01098536.tar.gz RoughlyEnoughItems-8622811b9b8cd1447d08f5ee1654d18e01098536.tar.bz2 RoughlyEnoughItems-8622811b9b8cd1447d08f5ee1654d18e01098536.zip | |
Close #6
Diffstat (limited to 'src/main/java/me/shedaniel/plugin')
7 files changed, 126 insertions, 5 deletions
diff --git a/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceCategory.java b/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceCategory.java index 159d274ae..48a977eb3 100755 --- a/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceCategory.java +++ b/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceCategory.java @@ -1,12 +1,21 @@ package me.shedaniel.plugin.blastfurnace; +import me.shedaniel.api.DisplayCategoryCraftable; import me.shedaniel.api.IDisplayCategory; +import me.shedaniel.gui.RecipeGui; import me.shedaniel.gui.widget.Control; import me.shedaniel.gui.widget.REISlot; +import me.shedaniel.gui.widget.SmallButton; import me.shedaniel.gui.widget.WidgetArrow; +import me.shedaniel.listenerdefinitions.IMixinRecipeBookGui; +import me.shedaniel.plugin.smoker.VanillaSmokerRecipe; import net.minecraft.block.Blocks; import net.minecraft.block.entity.BlastFurnaceBlockEntity; import net.minecraft.block.entity.SmokerBlockEntity; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.container.BlastFurnaceGui; +import net.minecraft.client.gui.container.SmokerGui; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -16,7 +25,7 @@ import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; -public class VanillaBlastFurnaceCategory implements IDisplayCategory<VanillaBlastFurnaceRecipe> { +public class VanillaBlastFurnaceCategory implements DisplayCategoryCraftable<VanillaBlastFurnaceRecipe> { private List<VanillaBlastFurnaceRecipe> recipes; @Override @@ -87,4 +96,31 @@ public class VanillaBlastFurnaceCategory implements IDisplayCategory<VanillaBlas public ItemStack getCategoryIcon() { return new ItemStack(Blocks.BLAST_FURNACE.getItem()); } + + @Override + public boolean canAutoCraftHere(Class<? extends Gui> guiClass, VanillaBlastFurnaceRecipe recipe) { + return guiClass.isAssignableFrom(BlastFurnaceGui.class); + } + + @Override + public boolean performAutoCraft(Gui gui, VanillaBlastFurnaceRecipe recipe) { + if (!gui.getClass().isAssignableFrom(BlastFurnaceGui.class)) + return false; + ((IMixinRecipeBookGui) (((BlastFurnaceGui) gui).getRecipeBookGui())).getGhostSlots().reset(); + MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); + return false; + } + + @Override + public void registerAutoCraftButton(List<Control> control, RecipeGui recipeGui, Gui parentGui, VanillaBlastFurnaceRecipe recipe, int number) { + SmallButton button = new SmallButton(128, 75 + 6 + 26 + number * 75, 10, 10, "+"); + button.setOnClick(mouse -> { + 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/blastfurnace/VanillaBlastFurnaceRecipe.java b/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceRecipe.java index 6554420c3..dad285c71 100755 --- a/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceRecipe.java +++ b/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceRecipe.java @@ -44,4 +44,9 @@ public class VanillaBlastFurnaceRecipe implements IRecipe<ItemStack> { input.add(BlastFurnaceBlockEntity.createBurnableMap().keySet().stream().map(Item::getDefaultStack).collect(Collectors.toList())); return input; } + + public BlastingRecipe getRecipe() { + return recipe; + } + } diff --git a/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java b/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java index 2c6d48a08..50fa4ad1e 100755 --- a/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java +++ b/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java @@ -132,6 +132,7 @@ public class VanillaCraftingCategory implements DisplayCategoryCraftable<Vanilla ((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; } @@ -140,7 +141,6 @@ public class VanillaCraftingCategory implements DisplayCategoryCraftable<Vanilla 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); diff --git a/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceCategory.java b/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceCategory.java index 12e7d2324..0603bb444 100755 --- a/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceCategory.java +++ b/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceCategory.java @@ -1,11 +1,17 @@ package me.shedaniel.plugin.furnace; -import me.shedaniel.api.IDisplayCategory; +import me.shedaniel.api.DisplayCategoryCraftable; +import me.shedaniel.gui.RecipeGui; import me.shedaniel.gui.widget.Control; import me.shedaniel.gui.widget.REISlot; +import me.shedaniel.gui.widget.SmallButton; import me.shedaniel.gui.widget.WidgetArrow; +import me.shedaniel.listenerdefinitions.IMixinRecipeBookGui; import net.minecraft.block.Blocks; import net.minecraft.block.entity.FurnaceBlockEntity; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.container.FurnaceGui; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -15,7 +21,7 @@ import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; -public class VanillaFurnaceCategory implements IDisplayCategory<VanillaFurnaceRecipe> { +public class VanillaFurnaceCategory implements DisplayCategoryCraftable<VanillaFurnaceRecipe> { private List<VanillaFurnaceRecipe> recipes; @Override @@ -86,4 +92,31 @@ public class VanillaFurnaceCategory implements IDisplayCategory<VanillaFurnaceRe public ItemStack getCategoryIcon() { return new ItemStack(Blocks.FURNACE.getItem()); } + + @Override + public boolean canAutoCraftHere(Class<? extends Gui> guiClass, VanillaFurnaceRecipe recipe) { + return guiClass.isAssignableFrom(FurnaceGui.class); + } + + @Override + public boolean performAutoCraft(Gui gui, VanillaFurnaceRecipe recipe) { + if (!gui.getClass().isAssignableFrom(FurnaceGui.class)) + return false; + ((IMixinRecipeBookGui) (((FurnaceGui) gui).getRecipeBookGui())).getGhostSlots().reset(); + MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); + return false; + } + + @Override + public void registerAutoCraftButton(List<Control> control, RecipeGui recipeGui, Gui parentGui, VanillaFurnaceRecipe recipe, int number) { + SmallButton button = new SmallButton(128, 75 + 6 + 26 + number * 75, 10, 10, "+"); + button.setOnClick(mouse -> { + 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/furnace/VanillaFurnaceRecipe.java b/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceRecipe.java index 0e7d00dd5..c207c386a 100755 --- a/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceRecipe.java +++ b/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceRecipe.java @@ -5,6 +5,7 @@ import net.minecraft.block.entity.FurnaceBlockEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.Recipe; import net.minecraft.recipe.smelting.SmeltingRecipe; import java.util.Arrays; @@ -13,6 +14,7 @@ import java.util.List; import java.util.stream.Collectors; public class VanillaFurnaceRecipe implements IRecipe<ItemStack> { + private final SmeltingRecipe recipe; @Override @@ -41,4 +43,9 @@ public class VanillaFurnaceRecipe implements IRecipe<ItemStack> { input.add(FurnaceBlockEntity.createBurnableMap().keySet().stream().map(Item::getDefaultStack).collect(Collectors.toList())); return input; } + + public Recipe getRecipe() { + return recipe; + } + } diff --git a/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerCategory.java b/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerCategory.java index 477578e6a..862d5ba35 100755 --- a/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerCategory.java +++ b/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerCategory.java @@ -1,11 +1,19 @@ package me.shedaniel.plugin.smoker; +import me.shedaniel.api.DisplayCategoryCraftable; import me.shedaniel.api.IDisplayCategory; +import me.shedaniel.gui.RecipeGui; import me.shedaniel.gui.widget.Control; import me.shedaniel.gui.widget.REISlot; +import me.shedaniel.gui.widget.SmallButton; import me.shedaniel.gui.widget.WidgetArrow; +import me.shedaniel.listenerdefinitions.IMixinRecipeBookGui; import net.minecraft.block.Blocks; import net.minecraft.block.entity.SmokerBlockEntity; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.container.FurnaceGui; +import net.minecraft.client.gui.container.SmokerGui; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -15,7 +23,7 @@ import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; -public class VanillaSmokerCategory implements IDisplayCategory<VanillaSmokerRecipe> { +public class VanillaSmokerCategory implements DisplayCategoryCraftable<VanillaSmokerRecipe> { private List<VanillaSmokerRecipe> recipes; @Override @@ -86,4 +94,31 @@ public class VanillaSmokerCategory implements IDisplayCategory<VanillaSmokerReci public ItemStack getCategoryIcon() { return new ItemStack(Blocks.SMOKER.getItem()); } + + @Override + public boolean canAutoCraftHere(Class<? extends Gui> guiClass, VanillaSmokerRecipe recipe) { + return guiClass.isAssignableFrom(SmokerGui.class); + } + + @Override + public boolean performAutoCraft(Gui gui, VanillaSmokerRecipe recipe) { + if (!gui.getClass().isAssignableFrom(SmokerGui.class)) + return false; + ((IMixinRecipeBookGui) (((SmokerGui) gui).getRecipeBookGui())).getGhostSlots().reset(); + MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); + return false; + } + + @Override + public void registerAutoCraftButton(List<Control> control, RecipeGui recipeGui, Gui parentGui, VanillaSmokerRecipe recipe, int number) { + SmallButton button = new SmallButton(128, 75 + 6 + 26 + number * 75, 10, 10, "+"); + button.setOnClick(mouse -> { + 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/smoker/VanillaSmokerRecipe.java b/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerRecipe.java index 4eadd9db1..4ff98077a 100755 --- a/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerRecipe.java +++ b/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerRecipe.java @@ -41,4 +41,9 @@ public class VanillaSmokerRecipe implements IRecipe<ItemStack> { input.add(SmokerBlockEntity.createBurnableMap().keySet().stream().map(Item::getDefaultStack).collect(Collectors.toList())); return input; } + + public SmokingRecipe getRecipe() { + return recipe; + } + } |
