diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-01-05 22:14:37 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-01-05 22:14:37 +0800 |
| commit | 63fdcc76da7e2d7cbd79d327c6dd72404708f64f (patch) | |
| tree | 7d95f69850beb2935856253db1d8515493717d1a /src/main/java/me/shedaniel/plugin | |
| parent | 418ee1e13fb66ef30c9473e0069695d89967124f (diff) | |
| download | RoughlyEnoughItems-63fdcc76da7e2d7cbd79d327c6dd72404708f64f.tar.gz RoughlyEnoughItems-63fdcc76da7e2d7cbd79d327c6dd72404708f64f.tar.bz2 RoughlyEnoughItems-63fdcc76da7e2d7cbd79d327c6dd72404708f64f.zip | |
Buggy Autocrafting
Diffstat (limited to 'src/main/java/me/shedaniel/plugin')
5 files changed, 69 insertions, 28 deletions
diff --git a/src/main/java/me/shedaniel/plugin/VanillaPlugin.java b/src/main/java/me/shedaniel/plugin/VanillaPlugin.java index 5b0bb9e82..a9cebf134 100755 --- a/src/main/java/me/shedaniel/plugin/VanillaPlugin.java +++ b/src/main/java/me/shedaniel/plugin/VanillaPlugin.java @@ -30,8 +30,6 @@ import net.minecraft.recipe.smelting.SmeltingRecipe; import net.minecraft.recipe.smelting.SmokingRecipe; import net.minecraft.util.registry.Registry; -import java.lang.reflect.Array; -import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; @@ -39,13 +37,13 @@ import java.util.stream.Collectors; public class VanillaPlugin implements IREIPlugin, PotionCraftingAdder { private List<VanillaPotionRecipe> potionRecipes = new LinkedList<>(); + private List<VanillaCraftingRecipe> recipes = new LinkedList<>(); + private List<VanillaFurnaceRecipe> furnaceRecipes = new LinkedList<>(); + private List<VanillaSmokerRecipe> smokerRecipes = new LinkedList<>(); + private List<VanillaBlastFurnaceRecipe> blastFurnaceRecipes = new LinkedList<>(); @Override - public void register() { - List<VanillaCraftingRecipe> recipes = new LinkedList<>(); - List<VanillaFurnaceRecipe> furnaceRecipes = new LinkedList<>(); - List<VanillaSmokerRecipe> smokerRecipes = new LinkedList<>(); - List<VanillaBlastFurnaceRecipe> blastFurnaceRecipes = new LinkedList<>(); + public void registerCategories() { REIRecipeManager.instance().addDisplayAdapter(new VanillaCraftingCategory()); REIRecipeManager.instance().addDisplayAdapter(new VanillaFurnaceCategory()); REIRecipeManager.instance().addDisplayAdapter(new VanillaSmokerCategory()); @@ -56,25 +54,21 @@ public class VanillaPlugin implements IREIPlugin, PotionCraftingAdder { // REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("c", new ItemStack(Items.ITEM_FRAME))); // REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("d", new ItemStack(Items.ITEM_FRAME))); // REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("e", new ItemStack(Items.ITEM_FRAME))); - - - for(Recipe recipe : REIRecipeManager.instance().recipeManager.values()) { - if (recipe instanceof ShapelessRecipe) { + } + + @Override + public void registerRecipes() { + for(Recipe recipe : REIRecipeManager.instance().recipeManager.values()) + if (recipe instanceof ShapelessRecipe) recipes.add(new VanillaShapelessCraftingRecipe((ShapelessRecipe) recipe)); - } - if (recipe instanceof ShapedRecipe) { + else if (recipe instanceof ShapedRecipe) recipes.add(new VanillaShapedCraftingRecipe((ShapedRecipe) recipe)); - } - if (recipe instanceof SmeltingRecipe) { + else if (recipe instanceof SmeltingRecipe) furnaceRecipes.add(new VanillaFurnaceRecipe((SmeltingRecipe) recipe)); - } - if (recipe instanceof SmokingRecipe) { + else if (recipe instanceof SmokingRecipe) smokerRecipes.add(new VanillaSmokerRecipe((SmokingRecipe) recipe)); - } - if (recipe instanceof BlastingRecipe) { + else if (recipe instanceof BlastingRecipe) blastFurnaceRecipes.add(new VanillaBlastFurnaceRecipe((BlastingRecipe) recipe)); - } - } Registry.POTION.stream().filter(potion -> !potion.equals(Potions.EMPTY)).forEach(potion -> { ItemStack basePotion = PotionUtil.setPotion(new ItemStack(Items.POTION), potion), splashPotion = PotionUtil.setPotion(new ItemStack(Items.SPLASH_POTION), potion), @@ -97,6 +91,10 @@ public class VanillaPlugin implements IREIPlugin, PotionCraftingAdder { // REIRecipeManager.instance().addRecipe("e", Arrays.asList(new RandomRecipe("e"))); } + @Override + public void registerSpecialGuiExclusion() { + + } @Override public void addPotionRecipe(Potion inputType, Item reagent, Potion outputType) { 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"; } |
