浏览代码

2x2 crafting

Unknown 5 年之前
父节点
当前提交
9770078daa

+ 6 - 2
src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java

@@ -36,8 +36,12 @@ public class AutoCraftingButtonWidget extends ButtonWidget {
     public void onPressed() {
         for (AutoCraftingHandler autoCraftingHandler : RecipeHelper.getInstance().getSortedAutoCraftingHandler())
             if (autoCraftingHandler.canHandle(displaySupplier, minecraft, minecraft.currentScreen, containerScreen, ScreenHelper.getLastOverlay()))
-                if (autoCraftingHandler.handle(displaySupplier, minecraft, minecraft.currentScreen, containerScreen, ScreenHelper.getLastOverlay()))
-                    return;
+                try {
+                    if (autoCraftingHandler.handle(displaySupplier, minecraft, minecraft.currentScreen, containerScreen, ScreenHelper.getLastOverlay()))
+                        return;
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
         minecraft.openScreen(containerScreen);
         ScreenHelper.getLastOverlay().init();
     }

+ 2 - 1
src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableHandler.java

@@ -20,6 +20,7 @@ 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;
 import net.minecraft.container.CraftingContainer;
 import net.minecraft.item.ItemStack;
@@ -67,7 +68,7 @@ public class AutoCraftingTableHandler implements AutoCraftingHandler {
     
     @Override
     public boolean canHandle(Supplier<RecipeDisplay> displaySupplier, MinecraftClient minecraft, Screen recipeViewingScreen, AbstractContainerScreen<?> parentScreen, ContainerScreenOverlay overlay) {
-        if (parentScreen instanceof CraftingTableScreen && displaySupplier.get() instanceof DefaultCraftingDisplay && canUseMovePackets()) {
+        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;

+ 3 - 3
src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java

@@ -32,11 +32,11 @@ public class InputSlotCrafter<C extends Inventory> {
         this.craftingContainer = craftingContainer_1;
     }
     
-    public static <C extends Inventory> void start(CraftingContainer<C> craftingContainer_1, ServerPlayerEntity player, Map<Integer, List<ItemStack>> map, boolean shifting) {
-        new InputSlotCrafter<C>(craftingContainer_1).fillInputSlots(player, map, shifting);
+    public static <C extends Inventory> void start(CraftingContainer<C> craftingContainer_1, ServerPlayerEntity player, Map<Integer, List<ItemStack>> map, boolean hasShift) {
+        new InputSlotCrafter<C>(craftingContainer_1).fillInputSlots(player, map, hasShift);
     }
     
-    private void fillInputSlots(ServerPlayerEntity player, Map<Integer, List<ItemStack>> map, boolean boolean_1) {
+    private void fillInputSlots(ServerPlayerEntity player, Map<Integer, List<ItemStack>> map, boolean hasShift) {
         this.inventory = player.inventory;
         if (this.canReturnInputs() || player.isCreative()) {
             // Return the already placed items on the grid