From 5619a996fff9ff11b4a616c5c027d08d59664302 Mon Sep 17 00:00:00 2001 From: Phoupraw <467934387@qq.com> Date: Mon, 15 Apr 2024 14:44:21 +0800 Subject: [PATCH 1/4] fix #366 --- xplat/src/main/java/dev/emi/emi/EmiUtil.java | 23 ++++++----- .../src/main/java/dev/emi/emi/api/EmiApi.java | 41 ++++++++----------- .../dev/emi/emi/registry/EmiRecipeFiller.java | 20 +++++---- .../java/dev/emi/emi/screen/BoMScreen.java | 32 +++++---------- .../java/dev/emi/emi/screen/RecipeScreen.java | 16 ++++---- 5 files changed, 57 insertions(+), 75 deletions(-) diff --git a/xplat/src/main/java/dev/emi/emi/EmiUtil.java b/xplat/src/main/java/dev/emi/emi/EmiUtil.java index 4df1912e..ae6d8421 100644 --- a/xplat/src/main/java/dev/emi/emi/EmiUtil.java +++ b/xplat/src/main/java/dev/emi/emi/EmiUtil.java @@ -1,13 +1,5 @@ package dev.emi.emi; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; -import java.util.Random; -import java.util.stream.Stream; - import dev.emi.emi.api.EmiApi; import dev.emi.emi.api.recipe.EmiPlayerInventory; import dev.emi.emi.api.recipe.EmiRecipe; @@ -37,6 +29,15 @@ import net.minecraft.registry.tag.TagKey; import net.minecraft.screen.ScreenHandler; import net.minecraft.util.Identifier; +import org.jetbrains.annotations.Nullable; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; +import java.util.Random; +import java.util.stream.Stream; public class EmiUtil { public static final Random RANDOM = new Random(); @@ -136,18 +137,18 @@ public static EmiRecipe getPreferredRecipe(EmiIngredient ingredient, EmiPlayerIn } @SuppressWarnings({"unchecked", "rawtypes"}) - public static EmiRecipe getPreferredRecipe(List recipes, EmiPlayerInventory inventory, boolean requireCraftable) { + public static @Nullable EmiRecipe getPreferredRecipe(List recipes, EmiPlayerInventory inventory, boolean requireCraftable) { EmiRecipe preferred = null; int preferredWeight = -1; HandledScreen hs = EmiApi.getHandledScreen(); - EmiCraftContext context = new EmiCraftContext<>(hs, inventory, EmiCraftContext.Type.CRAFTABLE); + EmiCraftContext context = hs == null ? null : new EmiCraftContext<>(hs, inventory, EmiCraftContext.Type.CRAFTABLE); for (EmiRecipe recipe : recipes) { if (!recipe.supportsRecipeTree()) { continue; } int weight = 0; EmiRecipeHandler handler = EmiRecipeFiller.getFirstValidHandler(recipe, hs); - if (handler != null && handler.canCraft(recipe, context)) { + if (context != null && handler != null && handler.canCraft(recipe, context)) { weight += 16; } else if (requireCraftable) { continue; diff --git a/xplat/src/main/java/dev/emi/emi/api/EmiApi.java b/xplat/src/main/java/dev/emi/emi/api/EmiApi.java index cd88b30f..6e520705 100644 --- a/xplat/src/main/java/dev/emi/emi/api/EmiApi.java +++ b/xplat/src/main/java/dev/emi/emi/api/EmiApi.java @@ -1,24 +1,12 @@ package dev.emi.emi.api; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.jetbrains.annotations.Nullable; - import com.google.common.collect.Lists; import com.google.common.collect.Maps; - import dev.emi.emi.VanillaPlugin; import dev.emi.emi.api.recipe.EmiRecipe; import dev.emi.emi.api.recipe.EmiRecipeCategory; import dev.emi.emi.api.recipe.EmiRecipeManager; -import dev.emi.emi.api.stack.EmiIngredient; -import dev.emi.emi.api.stack.EmiStack; -import dev.emi.emi.api.stack.EmiStackInteraction; -import dev.emi.emi.api.stack.ListEmiIngredient; -import dev.emi.emi.api.stack.TagEmiIngredient; +import dev.emi.emi.api.stack.*; import dev.emi.emi.bom.BoM; import dev.emi.emi.config.EmiConfig; import dev.emi.emi.recipe.EmiSyntheticIngredientRecipe; @@ -35,6 +23,12 @@ import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.gui.screen.ingame.InventoryScreen; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class EmiApi { private static final MinecraftClient client = MinecraftClient.getInstance(); @@ -99,14 +93,14 @@ public static EmiStackInteraction getHoveredStack(boolean includeStandard) { return null; } - public static HandledScreen getHandledScreen() { + public static @Nullable HandledScreen getHandledScreen() { Screen s = client.currentScreen; if (s instanceof HandledScreen hs) { return hs; - } else if (s instanceof RecipeScreen rs) { - return rs.old; - } else if (s instanceof BoMScreen bs) { - return bs.old; + } else if (s instanceof RecipeScreen rs && rs.old instanceof HandledScreen hs) { + return hs; + } else if (s instanceof BoMScreen bs && bs.old instanceof HandledScreen hs) { + return hs; } return null; } @@ -239,13 +233,7 @@ private static void setPages(Map> recipes, Em .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue())); if (!recipes.isEmpty()) { EmiSidebars.lookup(stack); - if (getHandledScreen() == null) { - client.setScreen(new InventoryScreen(client.player)); - } - if (client.currentScreen instanceof HandledScreen hs) { - push(); - client.setScreen(new RecipeScreen(hs, recipes)); - } else if (client.currentScreen instanceof BoMScreen bs) { + if (client.currentScreen instanceof BoMScreen bs) { push(); client.setScreen(new RecipeScreen(bs.old, recipes)); } else if (client.currentScreen instanceof RecipeScreen rs) { @@ -253,6 +241,9 @@ private static void setPages(Map> recipes, Em RecipeScreen n = new RecipeScreen(rs.old, recipes); client.setScreen(n); n.focusCategory(rs.getFocusedCategory()); + } else { + push(); + client.setScreen(new RecipeScreen(client.currentScreen, recipes)); } } } diff --git a/xplat/src/main/java/dev/emi/emi/registry/EmiRecipeFiller.java b/xplat/src/main/java/dev/emi/emi/registry/EmiRecipeFiller.java index 8bdb32dc..5171afac 100644 --- a/xplat/src/main/java/dev/emi/emi/registry/EmiRecipeFiller.java +++ b/xplat/src/main/java/dev/emi/emi/registry/EmiRecipeFiller.java @@ -1,14 +1,7 @@ package dev.emi.emi.registry; -import java.util.List; -import java.util.Map; -import java.util.function.BiFunction; - -import org.jetbrains.annotations.Nullable; - import com.google.common.collect.Lists; import com.google.common.collect.Maps; - import dev.emi.emi.api.EmiApi; import dev.emi.emi.api.recipe.EmiPlayerInventory; import dev.emi.emi.api.recipe.EmiRecipe; @@ -36,6 +29,12 @@ import net.minecraft.screen.slot.CraftingResultSlot; import net.minecraft.screen.slot.Slot; import net.minecraft.screen.slot.SlotActionType; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.Map; +import java.util.function.BiFunction; public class EmiRecipeFiller { public static Map, List>> handlers = Maps.newHashMap(); @@ -94,8 +93,10 @@ public static List> getAllHandlers return List.of(); } + @Contract("_, null -> null") @SuppressWarnings("unchecked") - public static @Nullable EmiRecipeHandler getFirstValidHandler(EmiRecipe recipe, HandledScreen screen) { + public static @Nullable EmiRecipeHandler getFirstValidHandler(EmiRecipe recipe, @Nullable HandledScreen screen) { + if (screen == null) return null; EmiRecipeHandler ret = null; for (EmiRecipeHandler handler : getAllHandlers(screen)) { if (handler.supportsRecipe(recipe)) { @@ -112,7 +113,8 @@ public static List> getAllHandlers return ret; } - public static boolean performFill(EmiRecipe recipe, HandledScreen screen, + @Contract("_,null,_,_,_->false") + public static boolean performFill(EmiRecipe recipe, @Nullable HandledScreen screen, EmiCraftContext.Type type, EmiCraftContext.Destination destination, int amount) { EmiRecipeHandler handler = getFirstValidHandler(recipe, screen); if (handler != null && handler.supportsRecipe(recipe)) { diff --git a/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java b/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java index 9b6da3cc..bb973c25 100644 --- a/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java +++ b/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java @@ -1,17 +1,7 @@ package dev.emi.emi.screen; -import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.lwjgl.glfw.GLFW; - import com.google.common.collect.Lists; import com.mojang.blaze3d.systems.RenderSystem; - import dev.emi.emi.EmiPort; import dev.emi.emi.EmiRenderHelper; import dev.emi.emi.EmiUtil; @@ -24,14 +14,7 @@ import dev.emi.emi.api.stack.EmiIngredient; import dev.emi.emi.api.stack.EmiStack; import dev.emi.emi.api.widget.Bounds; -import dev.emi.emi.bom.BoM; -import dev.emi.emi.bom.ChanceMaterialCost; -import dev.emi.emi.bom.ChanceState; -import dev.emi.emi.bom.FlatMaterialCost; -import dev.emi.emi.bom.FoldState; -import dev.emi.emi.bom.MaterialNode; -import dev.emi.emi.bom.ProgressState; -import dev.emi.emi.bom.TreeCost; +import dev.emi.emi.bom.*; import dev.emi.emi.config.EmiConfig; import dev.emi.emi.data.EmiRecipeCategoryProperties; import dev.emi.emi.input.EmiBind; @@ -46,7 +29,6 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.gui.tooltip.TooltipComponent; import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.client.util.InputUtil; @@ -56,6 +38,14 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.math.MathHelper; +import org.lwjgl.glfw.GLFW; + +import java.util.List; +import java.util.Map; +import java.util.function.BiConsumer; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class BoMScreen extends Screen { private static final int NODE_WIDTH = 30; @@ -73,13 +63,13 @@ public class BoMScreen extends Screen { private List costs = Lists.newArrayList(); private EmiPlayerInventory playerInv; private boolean hasRemainders = false;; - public HandledScreen old; + public Screen old; private int nodeWidth = 0; private int nodeHeight = 0; private int lastMouseX, lastMouseY; private double scrollAcc = 0; - public BoMScreen(HandledScreen old) { + public BoMScreen(Screen old) { super(EmiPort.translatable("screen.emi.recipe_tree")); this.old = old; } diff --git a/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java b/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java index c9727fc3..22dfd481 100644 --- a/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java +++ b/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java @@ -1,14 +1,7 @@ package dev.emi.emi.screen; -import java.util.List; -import java.util.Map; - -import org.jetbrains.annotations.Nullable; -import org.lwjgl.glfw.GLFW; - import com.google.common.collect.Lists; import com.mojang.blaze3d.systems.RenderSystem; - import dev.emi.emi.EmiPort; import dev.emi.emi.EmiRenderHelper; import dev.emi.emi.api.EmiApi; @@ -41,12 +34,17 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; import net.minecraft.util.Identifier; +import org.jetbrains.annotations.Nullable; +import org.lwjgl.glfw.GLFW; + +import java.util.List; +import java.util.Map; public class RecipeScreen extends Screen { private static final Identifier TEXTURE = new Identifier("emi", "textures/gui/background.png"); public static @Nullable EmiIngredient resolve = null; private Map> recipes; - public HandledScreen old; + public Screen old; private List tabs = Lists.newArrayList(); private int tabPageSize = 6; private int tabPage = 0, tab = 0, page = 0; @@ -62,7 +60,7 @@ public class RecipeScreen extends Screen { int x = (this.width - backgroundWidth) / 2; int y = (this.height - backgroundHeight) / 2; - public RecipeScreen(HandledScreen old, Map> recipes) { + public RecipeScreen(Screen old, Map> recipes) { super(EmiPort.translatable("screen.emi.recipe")); this.old = old; arrows = List.of( From f90ea4404ceeb3b8d03db24ff06e638e30c283e9 Mon Sep 17 00:00:00 2001 From: Phoupraw <467934387@qq.com> Date: Tue, 16 Apr 2024 15:50:52 +0800 Subject: [PATCH 2/4] imports order --- xplat/src/main/java/dev/emi/emi/EmiUtil.java | 20 ++++++----- .../src/main/java/dev/emi/emi/api/EmiApi.java | 35 +++++++++++-------- .../dev/emi/emi/registry/EmiRecipeFiller.java | 18 ++++++---- .../java/dev/emi/emi/screen/BoMScreen.java | 19 +++++----- .../java/dev/emi/emi/screen/RecipeScreen.java | 13 ++++--- 5 files changed, 62 insertions(+), 43 deletions(-) diff --git a/xplat/src/main/java/dev/emi/emi/EmiUtil.java b/xplat/src/main/java/dev/emi/emi/EmiUtil.java index ae6d8421..f86e8aa5 100644 --- a/xplat/src/main/java/dev/emi/emi/EmiUtil.java +++ b/xplat/src/main/java/dev/emi/emi/EmiUtil.java @@ -1,5 +1,15 @@ package dev.emi.emi; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; +import java.util.Random; +import java.util.stream.Stream; + +import org.jetbrains.annotations.Nullable; + import dev.emi.emi.api.EmiApi; import dev.emi.emi.api.recipe.EmiPlayerInventory; import dev.emi.emi.api.recipe.EmiRecipe; @@ -12,6 +22,7 @@ import dev.emi.emi.data.EmiRecipeCategoryProperties; import dev.emi.emi.platform.EmiAgnos; import dev.emi.emi.registry.EmiRecipeFiller; + import net.minecraft.block.Block; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ingame.HandledScreen; @@ -29,15 +40,6 @@ import net.minecraft.registry.tag.TagKey; import net.minecraft.screen.ScreenHandler; import net.minecraft.util.Identifier; -import org.jetbrains.annotations.Nullable; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; -import java.util.Random; -import java.util.stream.Stream; public class EmiUtil { public static final Random RANDOM = new Random(); diff --git a/xplat/src/main/java/dev/emi/emi/api/EmiApi.java b/xplat/src/main/java/dev/emi/emi/api/EmiApi.java index 6e520705..0e6f5f4f 100644 --- a/xplat/src/main/java/dev/emi/emi/api/EmiApi.java +++ b/xplat/src/main/java/dev/emi/emi/api/EmiApi.java @@ -1,7 +1,15 @@ package dev.emi.emi.api; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.jetbrains.annotations.Nullable; + import com.google.common.collect.Lists; import com.google.common.collect.Maps; + import dev.emi.emi.VanillaPlugin; import dev.emi.emi.api.recipe.EmiRecipe; import dev.emi.emi.api.recipe.EmiRecipeCategory; @@ -19,16 +27,11 @@ import dev.emi.emi.screen.BoMScreen; import dev.emi.emi.screen.EmiScreenManager; import dev.emi.emi.screen.RecipeScreen; + import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.gui.screen.ingame.InventoryScreen; -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; public class EmiApi { private static final MinecraftClient client = MinecraftClient.getInstance(); @@ -66,8 +69,9 @@ public static boolean isSearchFocused() { /** * Gets the currently hovered EmiIngredient at the provided screen coordinates, * or {@link EmiStack#EMPTY} if none. + * * @param includeStandard Whether to include the EmiIngredient representation of - * standard stacks in slots or otherwise provided to EMI. + * standard stacks in slots or otherwise provided to EMI. */ public static EmiStackInteraction getHoveredStack(int mouseX, int mouseY, boolean includeStandard) { return EmiScreenManager.getHoveredStack(mouseX, mouseY, includeStandard); @@ -75,8 +79,9 @@ public static EmiStackInteraction getHoveredStack(int mouseX, int mouseY, boolea /** * Gets the currently hovered EmiIngredient at the mouse or {@link EmiStack#EMPTY} if none. + * * @param includeStandard Whether to include the EmiIngredient representation of - * standard stacks in slots or otherwise provided to EMI. + * standard stacks in slots or otherwise provided to EMI. */ public static EmiStackInteraction getHoveredStack(boolean includeStandard) { return EmiScreenManager.getHoveredStack(EmiScreenManager.lastMouseX, EmiScreenManager.lastMouseY, includeStandard); @@ -84,7 +89,7 @@ public static EmiStackInteraction getHoveredStack(boolean includeStandard) { /** * @return Recipe context associated with specific ingredient implementations. - * This could be favorites, craftables, or something else. + * This could be favorites, craftables, or something else. */ public static @Nullable EmiRecipe getRecipeContext(EmiIngredient stack) { if (stack instanceof EmiFavorite fav) { @@ -117,7 +122,7 @@ public static void displayRecipeCategory(EmiRecipeCategory category) { public static void displayRecipe(EmiRecipe recipe) { setPages(Map.of(recipe.getCategory(), List.of(recipe)), EmiStack.EMPTY); } - + public static void displayRecipes(EmiIngredient stack) { if (stack instanceof EmiFavorite fav) { stack = fav.getStack(); @@ -142,9 +147,9 @@ public static void displayUses(EmiIngredient stack) { if (!stack.isEmpty()) { EmiStack zero = stack.getEmiStacks().get(0); Map> map - = mapRecipes(Stream.concat( - pruneUses(getRecipeManager().getRecipesByInput(zero), stack).stream(), - EmiRecipes.byWorkstation.getOrDefault(zero, List.of()).stream()).distinct().toList()); + = mapRecipes(Stream.concat( + pruneUses(getRecipeManager().getRecipesByInput(zero), stack).stream(), + EmiRecipes.byWorkstation.getOrDefault(zero, List.of()).stream()).distinct().toList()); setPages(map, stack); } } @@ -189,7 +194,7 @@ private static List pruneSources(List list, EmiStack conte private static List pruneUses(List list, EmiIngredient context) { return list.stream().filter(r -> { return r.getInputs().stream().anyMatch(i -> containsAll(i, context)) - || r.getCatalysts().stream().anyMatch(i -> containsAll(i, context)); + || r.getCatalysts().stream().anyMatch(i -> containsAll(i, context)); }).sorted((a, b) -> getSmallestPresence(a, context) - getSmallestPresence(b, context)).toList(); } @@ -230,7 +235,7 @@ private static boolean containsAll(EmiIngredient collection, EmiIngredient ingre private static void setPages(Map> recipes, EmiIngredient stack) { recipes = recipes.entrySet().stream().filter(e -> !e.getValue().isEmpty()) - .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue())); + .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue())); if (!recipes.isEmpty()) { EmiSidebars.lookup(stack); if (client.currentScreen instanceof BoMScreen bs) { diff --git a/xplat/src/main/java/dev/emi/emi/registry/EmiRecipeFiller.java b/xplat/src/main/java/dev/emi/emi/registry/EmiRecipeFiller.java index 5171afac..90ca4f7d 100644 --- a/xplat/src/main/java/dev/emi/emi/registry/EmiRecipeFiller.java +++ b/xplat/src/main/java/dev/emi/emi/registry/EmiRecipeFiller.java @@ -1,7 +1,15 @@ package dev.emi.emi.registry; +import java.util.List; +import java.util.Map; +import java.util.function.BiFunction; + +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.Nullable; + import com.google.common.collect.Lists; import com.google.common.collect.Maps; + import dev.emi.emi.api.EmiApi; import dev.emi.emi.api.recipe.EmiPlayerInventory; import dev.emi.emi.api.recipe.EmiRecipe; @@ -14,8 +22,7 @@ import dev.emi.emi.handler.CoercedRecipeHandler; import dev.emi.emi.mixin.accessor.CraftingResultSlotAccessor; import dev.emi.emi.runtime.EmiSidebars; -import it.unimi.dsi.fastutil.objects.Object2IntMap; -import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; + import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.gui.screen.ingame.InventoryScreen; @@ -29,12 +36,9 @@ import net.minecraft.screen.slot.CraftingResultSlot; import net.minecraft.screen.slot.Slot; import net.minecraft.screen.slot.SlotActionType; -import org.jetbrains.annotations.Contract; -import org.jetbrains.annotations.Nullable; -import java.util.List; -import java.util.Map; -import java.util.function.BiFunction; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; public class EmiRecipeFiller { public static Map, List>> handlers = Maps.newHashMap(); diff --git a/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java b/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java index bb973c25..7ad96545 100644 --- a/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java +++ b/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java @@ -1,7 +1,14 @@ package dev.emi.emi.screen; +import java.util.List; +import java.util.Map; +import java.util.function.BiConsumer; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; + import com.google.common.collect.Lists; -import com.mojang.blaze3d.systems.RenderSystem; + import dev.emi.emi.EmiPort; import dev.emi.emi.EmiRenderHelper; import dev.emi.emi.EmiUtil; @@ -26,6 +33,7 @@ import dev.emi.emi.screen.StackBatcher.Batchable; import dev.emi.emi.screen.tooltip.EmiTooltip; import dev.emi.emi.screen.tooltip.RecipeTooltipComponent; + import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; @@ -38,14 +46,9 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.math.MathHelper; -import org.lwjgl.glfw.GLFW; -import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.stream.Stream; +import com.mojang.blaze3d.systems.RenderSystem; +import org.lwjgl.glfw.GLFW; public class BoMScreen extends Screen { private static final int NODE_WIDTH = 30; diff --git a/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java b/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java index 22dfd481..c4302a8f 100644 --- a/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java +++ b/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java @@ -1,7 +1,12 @@ package dev.emi.emi.screen; +import java.util.List; +import java.util.Map; + +import org.jetbrains.annotations.Nullable; + import com.google.common.collect.Lists; -import com.mojang.blaze3d.systems.RenderSystem; + import dev.emi.emi.EmiPort; import dev.emi.emi.EmiRenderHelper; import dev.emi.emi.api.EmiApi; @@ -25,6 +30,7 @@ import dev.emi.emi.runtime.EmiHistory; import dev.emi.emi.screen.widget.ResolutionButtonWidget; import dev.emi.emi.screen.widget.SizedButtonWidget; + import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; @@ -34,11 +40,10 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; import net.minecraft.util.Identifier; -import org.jetbrains.annotations.Nullable; + +import com.mojang.blaze3d.systems.RenderSystem; import org.lwjgl.glfw.GLFW; -import java.util.List; -import java.util.Map; public class RecipeScreen extends Screen { private static final Identifier TEXTURE = new Identifier("emi", "textures/gui/background.png"); From 56cd56b2fb1efa868de744656a2248828a934558 Mon Sep 17 00:00:00 2001 From: Phoupraw <467934387@qq.com> Date: Wed, 17 Apr 2024 13:32:55 +0800 Subject: [PATCH 3/4] format to 02eb1d636d6cb3f6ffcc1348599dd4ce32aba479 --- xplat/src/main/java/dev/emi/emi/EmiUtil.java | 1 - .../src/main/java/dev/emi/emi/api/EmiApi.java | 25 ++++++++++--------- .../dev/emi/emi/registry/EmiRecipeFiller.java | 6 ++--- .../java/dev/emi/emi/screen/BoMScreen.java | 13 +++++++--- .../java/dev/emi/emi/screen/RecipeScreen.java | 5 +--- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/xplat/src/main/java/dev/emi/emi/EmiUtil.java b/xplat/src/main/java/dev/emi/emi/EmiUtil.java index f86e8aa5..ad19e8b1 100644 --- a/xplat/src/main/java/dev/emi/emi/EmiUtil.java +++ b/xplat/src/main/java/dev/emi/emi/EmiUtil.java @@ -22,7 +22,6 @@ import dev.emi.emi.data.EmiRecipeCategoryProperties; import dev.emi.emi.platform.EmiAgnos; import dev.emi.emi.registry.EmiRecipeFiller; - import net.minecraft.block.Block; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ingame.HandledScreen; diff --git a/xplat/src/main/java/dev/emi/emi/api/EmiApi.java b/xplat/src/main/java/dev/emi/emi/api/EmiApi.java index 0e6f5f4f..163725f3 100644 --- a/xplat/src/main/java/dev/emi/emi/api/EmiApi.java +++ b/xplat/src/main/java/dev/emi/emi/api/EmiApi.java @@ -14,7 +14,11 @@ import dev.emi.emi.api.recipe.EmiRecipe; import dev.emi.emi.api.recipe.EmiRecipeCategory; import dev.emi.emi.api.recipe.EmiRecipeManager; -import dev.emi.emi.api.stack.*; +import dev.emi.emi.api.stack.EmiIngredient; +import dev.emi.emi.api.stack.EmiStack; +import dev.emi.emi.api.stack.EmiStackInteraction; +import dev.emi.emi.api.stack.ListEmiIngredient; +import dev.emi.emi.api.stack.TagEmiIngredient; import dev.emi.emi.bom.BoM; import dev.emi.emi.config.EmiConfig; import dev.emi.emi.recipe.EmiSyntheticIngredientRecipe; @@ -27,7 +31,6 @@ import dev.emi.emi.screen.BoMScreen; import dev.emi.emi.screen.EmiScreenManager; import dev.emi.emi.screen.RecipeScreen; - import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; @@ -69,9 +72,8 @@ public static boolean isSearchFocused() { /** * Gets the currently hovered EmiIngredient at the provided screen coordinates, * or {@link EmiStack#EMPTY} if none. - * * @param includeStandard Whether to include the EmiIngredient representation of - * standard stacks in slots or otherwise provided to EMI. + * standard stacks in slots or otherwise provided to EMI. */ public static EmiStackInteraction getHoveredStack(int mouseX, int mouseY, boolean includeStandard) { return EmiScreenManager.getHoveredStack(mouseX, mouseY, includeStandard); @@ -79,9 +81,8 @@ public static EmiStackInteraction getHoveredStack(int mouseX, int mouseY, boolea /** * Gets the currently hovered EmiIngredient at the mouse or {@link EmiStack#EMPTY} if none. - * * @param includeStandard Whether to include the EmiIngredient representation of - * standard stacks in slots or otherwise provided to EMI. + * standard stacks in slots or otherwise provided to EMI. */ public static EmiStackInteraction getHoveredStack(boolean includeStandard) { return EmiScreenManager.getHoveredStack(EmiScreenManager.lastMouseX, EmiScreenManager.lastMouseY, includeStandard); @@ -89,7 +90,7 @@ public static EmiStackInteraction getHoveredStack(boolean includeStandard) { /** * @return Recipe context associated with specific ingredient implementations. - * This could be favorites, craftables, or something else. + * This could be favorites, craftables, or something else. */ public static @Nullable EmiRecipe getRecipeContext(EmiIngredient stack) { if (stack instanceof EmiFavorite fav) { @@ -147,9 +148,9 @@ public static void displayUses(EmiIngredient stack) { if (!stack.isEmpty()) { EmiStack zero = stack.getEmiStacks().get(0); Map> map - = mapRecipes(Stream.concat( - pruneUses(getRecipeManager().getRecipesByInput(zero), stack).stream(), - EmiRecipes.byWorkstation.getOrDefault(zero, List.of()).stream()).distinct().toList()); + = mapRecipes(Stream.concat( + pruneUses(getRecipeManager().getRecipesByInput(zero), stack).stream(), + EmiRecipes.byWorkstation.getOrDefault(zero, List.of()).stream()).distinct().toList()); setPages(map, stack); } } @@ -194,7 +195,7 @@ private static List pruneSources(List list, EmiStack conte private static List pruneUses(List list, EmiIngredient context) { return list.stream().filter(r -> { return r.getInputs().stream().anyMatch(i -> containsAll(i, context)) - || r.getCatalysts().stream().anyMatch(i -> containsAll(i, context)); + || r.getCatalysts().stream().anyMatch(i -> containsAll(i, context)); }).sorted((a, b) -> getSmallestPresence(a, context) - getSmallestPresence(b, context)).toList(); } @@ -235,7 +236,7 @@ private static boolean containsAll(EmiIngredient collection, EmiIngredient ingre private static void setPages(Map> recipes, EmiIngredient stack) { recipes = recipes.entrySet().stream().filter(e -> !e.getValue().isEmpty()) - .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue())); + .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue())); if (!recipes.isEmpty()) { EmiSidebars.lookup(stack); if (client.currentScreen instanceof BoMScreen bs) { diff --git a/xplat/src/main/java/dev/emi/emi/registry/EmiRecipeFiller.java b/xplat/src/main/java/dev/emi/emi/registry/EmiRecipeFiller.java index 90ca4f7d..b20f71e5 100644 --- a/xplat/src/main/java/dev/emi/emi/registry/EmiRecipeFiller.java +++ b/xplat/src/main/java/dev/emi/emi/registry/EmiRecipeFiller.java @@ -22,7 +22,8 @@ import dev.emi.emi.handler.CoercedRecipeHandler; import dev.emi.emi.mixin.accessor.CraftingResultSlotAccessor; import dev.emi.emi.runtime.EmiSidebars; - +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.gui.screen.ingame.InventoryScreen; @@ -37,9 +38,6 @@ import net.minecraft.screen.slot.Slot; import net.minecraft.screen.slot.SlotActionType; -import it.unimi.dsi.fastutil.objects.Object2IntMap; -import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; - public class EmiRecipeFiller { public static Map, List>> handlers = Maps.newHashMap(); public static BiFunction> extraHandlers = (h, r) -> null; diff --git a/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java b/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java index 7ad96545..90510823 100644 --- a/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java +++ b/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java @@ -9,6 +9,7 @@ import com.google.common.collect.Lists; +import com.mojang.blaze3d.systems.RenderSystem; import dev.emi.emi.EmiPort; import dev.emi.emi.EmiRenderHelper; import dev.emi.emi.EmiUtil; @@ -21,7 +22,14 @@ import dev.emi.emi.api.stack.EmiIngredient; import dev.emi.emi.api.stack.EmiStack; import dev.emi.emi.api.widget.Bounds; -import dev.emi.emi.bom.*; +import dev.emi.emi.bom.BoM; +import dev.emi.emi.bom.ChanceMaterialCost; +import dev.emi.emi.bom.ChanceState; +import dev.emi.emi.bom.FlatMaterialCost; +import dev.emi.emi.bom.FoldState; +import dev.emi.emi.bom.MaterialNode; +import dev.emi.emi.bom.ProgressState; +import dev.emi.emi.bom.TreeCost; import dev.emi.emi.config.EmiConfig; import dev.emi.emi.data.EmiRecipeCategoryProperties; import dev.emi.emi.input.EmiBind; @@ -33,7 +41,6 @@ import dev.emi.emi.screen.StackBatcher.Batchable; import dev.emi.emi.screen.tooltip.EmiTooltip; import dev.emi.emi.screen.tooltip.RecipeTooltipComponent; - import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; @@ -46,8 +53,6 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.math.MathHelper; - -import com.mojang.blaze3d.systems.RenderSystem; import org.lwjgl.glfw.GLFW; public class BoMScreen extends Screen { diff --git a/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java b/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java index c4302a8f..3ed7a407 100644 --- a/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java +++ b/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java @@ -7,6 +7,7 @@ import com.google.common.collect.Lists; +import com.mojang.blaze3d.systems.RenderSystem; import dev.emi.emi.EmiPort; import dev.emi.emi.EmiRenderHelper; import dev.emi.emi.api.EmiApi; @@ -30,7 +31,6 @@ import dev.emi.emi.runtime.EmiHistory; import dev.emi.emi.screen.widget.ResolutionButtonWidget; import dev.emi.emi.screen.widget.SizedButtonWidget; - import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; @@ -40,11 +40,8 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; import net.minecraft.util.Identifier; - -import com.mojang.blaze3d.systems.RenderSystem; import org.lwjgl.glfw.GLFW; - public class RecipeScreen extends Screen { private static final Identifier TEXTURE = new Identifier("emi", "textures/gui/background.png"); public static @Nullable EmiIngredient resolve = null; From a2cdaea6ec79e9d982d71a5410a808061203c7b7 Mon Sep 17 00:00:00 2001 From: Phoupraw <467934387@qq.com> Date: Wed, 17 Apr 2024 13:37:06 +0800 Subject: [PATCH 4/4] format imports and blank line --- xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java | 5 +++-- xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java b/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java index 90510823..042dfd5a 100644 --- a/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java +++ b/xplat/src/main/java/dev/emi/emi/screen/BoMScreen.java @@ -7,9 +7,11 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import com.google.common.collect.Lists; +import org.lwjgl.glfw.GLFW; +import com.google.common.collect.Lists; import com.mojang.blaze3d.systems.RenderSystem; + import dev.emi.emi.EmiPort; import dev.emi.emi.EmiRenderHelper; import dev.emi.emi.EmiUtil; @@ -53,7 +55,6 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.math.MathHelper; -import org.lwjgl.glfw.GLFW; public class BoMScreen extends Screen { private static final int NODE_WIDTH = 30; diff --git a/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java b/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java index 3ed7a407..b3a930a3 100644 --- a/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java +++ b/xplat/src/main/java/dev/emi/emi/screen/RecipeScreen.java @@ -4,10 +4,11 @@ import java.util.Map; import org.jetbrains.annotations.Nullable; +import org.lwjgl.glfw.GLFW; import com.google.common.collect.Lists; - import com.mojang.blaze3d.systems.RenderSystem; + import dev.emi.emi.EmiPort; import dev.emi.emi.EmiRenderHelper; import dev.emi.emi.api.EmiApi; @@ -40,7 +41,6 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; import net.minecraft.util.Identifier; -import org.lwjgl.glfw.GLFW; public class RecipeScreen extends Screen { private static final Identifier TEXTURE = new Identifier("emi", "textures/gui/background.png");