diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-08-06 22:35:12 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-08-06 22:35:12 +0800 |
| commit | 70417f41613ae30582cd48708fe43ce9a3e6ae86 (patch) | |
| tree | 7a0b8286005568237e894662a9c40bfdb42550d7 /src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableHandler.java | |
| parent | cbf03f9c2625b0f336ae86a916fe77db2ee4a420 (diff) | |
| download | RoughlyEnoughItems-70417f41613ae30582cd48708fe43ce9a3e6ae86.tar.gz RoughlyEnoughItems-70417f41613ae30582cd48708fe43ce9a3e6ae86.tar.bz2 RoughlyEnoughItems-70417f41613ae30582cd48708fe43ce9a3e6ae86.zip | |
These days are great days to completely scrap an api
Diffstat (limited to 'src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableHandler.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableHandler.java | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableHandler.java b/src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableHandler.java index 627ac6982..d92b40de9 100644 --- a/src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableHandler.java +++ b/src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableHandler.java @@ -8,9 +8,7 @@ package me.shedaniel.rei.plugin.autocrafting; import com.google.common.collect.Lists; import io.netty.buffer.Unpooled; import me.shedaniel.rei.RoughlyEnoughItemsNetwork; -import me.shedaniel.rei.api.AutoCraftingHandler; -import me.shedaniel.rei.api.RecipeDisplay; -import me.shedaniel.rei.gui.ContainerScreenOverlay; +import me.shedaniel.rei.api.AutoTransferHandler; import me.shedaniel.rei.listeners.RecipeBookGuiHooks; import me.shedaniel.rei.plugin.crafting.DefaultCraftingCategory; import me.shedaniel.rei.plugin.crafting.DefaultCraftingDisplay; @@ -18,7 +16,6 @@ import me.shedaniel.rei.plugin.crafting.DefaultShapedDisplay; import net.fabricmc.fabric.api.network.ClientSidePacketRegistry; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen; import net.minecraft.client.gui.screen.ingame.CraftingTableScreen; import net.minecraft.client.gui.screen.ingame.InventoryScreen; import net.minecraft.client.gui.screen.recipebook.RecipeBookProvider; @@ -28,18 +25,30 @@ import net.minecraft.util.DefaultedList; import net.minecraft.util.PacketByteBuf; import java.util.List; -import java.util.function.Supplier; -public class AutoCraftingTableHandler implements AutoCraftingHandler { +public class AutoCraftingTableHandler implements AutoTransferHandler { @Override - public boolean handle(Supplier<RecipeDisplay> displaySupplier, MinecraftClient minecraft, Screen recipeViewingScreen, AbstractContainerScreen<?> parentScreen, ContainerScreenOverlay overlay) { - minecraft.openScreen(parentScreen); - ((RecipeBookGuiHooks) ((RecipeBookProvider) parentScreen).getRecipeBookGui()).rei_getGhostSlots().reset(); - DefaultCraftingDisplay display = (DefaultCraftingDisplay) displaySupplier.get(); + public Result handle(Context context) { + if (!(context.getRecipe() instanceof DefaultCraftingDisplay)) + return Result.createNotApplicable(); + if (!(context.getContainerScreen() instanceof CraftingTableScreen) && !(context.getContainerScreen() instanceof InventoryScreen)) + return Result.createNotApplicable(); + if (context.getContainerScreen() instanceof InventoryScreen && (((DefaultCraftingDisplay) context.getRecipe()).getWidth() > 2 || ((DefaultCraftingDisplay) context.getRecipe()).getHeight() > 2)) + return Result.createFailed("error.rei.transfer.too_small"); + if (!canUseMovePackets()) + return Result.createFailed("error.rei.not.on.server"); + if (!hasItems(context.getRecipe().getInput())) + return Result.createFailed("error.rei.not.enough.materials"); + if (!context.isActuallyCrafting()) + return Result.createSuccessful(); + + context.getMinecraft().openScreen(context.getContainerScreen()); + ((RecipeBookGuiHooks) ((RecipeBookProvider) context.getContainerScreen()).getRecipeBookGui()).rei_getGhostSlots().reset(); + DefaultCraftingDisplay display = (DefaultCraftingDisplay) context.getRecipe(); PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer()); buf.writeUuid(RoughlyEnoughItemsNetwork.CRAFTING_TABLE_MOVE); buf.writeBoolean(Screen.hasShiftDown()); - CraftingContainer craftingContainer = (CraftingContainer) parentScreen.getContainer(); + CraftingContainer craftingContainer = (CraftingContainer) context.getContainer(); List<List<ItemStack>> ogInput = display.getInput(); List<List<ItemStack>> input = Lists.newArrayListWithCapacity(craftingContainer.getCraftingWidth() * craftingContainer.getCraftingHeight()); @@ -63,15 +72,7 @@ public class AutoCraftingTableHandler implements AutoCraftingHandler { } } ClientSidePacketRegistry.INSTANCE.sendToServer(RoughlyEnoughItemsNetwork.MOVE_ITEMS_PACKET, buf); - return true; - } - - @Override - public boolean canHandle(Supplier<RecipeDisplay> displaySupplier, MinecraftClient minecraft, Screen recipeViewingScreen, AbstractContainerScreen<?> parentScreen, ContainerScreenOverlay overlay) { - if (displaySupplier.get() instanceof DefaultCraftingDisplay && (parentScreen instanceof CraftingTableScreen || (parentScreen instanceof InventoryScreen && ((DefaultCraftingDisplay) displaySupplier.get()).getWidth() <= 2 && ((DefaultCraftingDisplay) displaySupplier.get()).getHeight() <= 2)) && canUseMovePackets()) { - return hasItems(displaySupplier.get().getInput()); - } - return false; + return Result.createSuccessful(); } @Override |
