From 7b003e6fe1075df01dbb1efc8d068b141008803b Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 27 Sep 2024 12:09:26 -0400 Subject: [PATCH] Update MobLootRecipe.java polish addWidgetBuilders recursion and add try --- .../emi_loot/emi/MobLootRecipe.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/xplat/src/main/java/fzzyhmstrs/emi_loot/emi/MobLootRecipe.java b/xplat/src/main/java/fzzyhmstrs/emi_loot/emi/MobLootRecipe.java index 412d4dbd..360f207f 100644 --- a/xplat/src/main/java/fzzyhmstrs/emi_loot/emi/MobLootRecipe.java +++ b/xplat/src/main/java/fzzyhmstrs/emi_loot/emi/MobLootRecipe.java @@ -94,7 +94,12 @@ public MobLootRecipe(ClientMobLootTable loot) { builtPool.stacks().forEach(cs -> { list.addAll(cs.ingredient()); }); - addWidgetBuilders(builtPool, false); + try { + addWidgetBuilders(builtPool, false); + } catch (Throwable e) { + EmiLoot.LOGGER.error("Error encountered while preparing layout for mob recipe {}, display may be incomplete.", loot.id); + e.printStackTrace(); + } } ); outputStacks = list; @@ -107,26 +112,21 @@ public MobLootRecipe(ClientMobLootTable loot) { private final EntityType type; @Nullable private final EmiStack egg; - private final List rowBuilderList = new LinkedList<>(); + private final List rowBuilderList = new ArrayList<>(); private void addWidgetBuilders(ClientBuiltPool newPool, boolean recursive) { if (recursive || rowBuilderList.isEmpty()) { rowBuilderList.add(new WidgetRowBuilder(154)); } - boolean added = false; for (WidgetRowBuilder builder : rowBuilderList) { if (builder.canAddPool(newPool)) { builder.addAndTrim(newPool); - added = true; - break; + return; } } - if (!added) { - Optional opt = rowBuilderList.get(rowBuilderList.size() - 1).addAndTrim(newPool); - opt.ifPresent(clientMobBuiltPool -> addWidgetBuilders(clientMobBuiltPool, true)); - } - - + Optional opt = rowBuilderList.get(rowBuilderList.size() - 1).addAndTrim(newPool); + if (opt.isEmpty()) return; + addWidgetBuilders(opt.get(), true); } @Override @@ -292,4 +292,4 @@ public boolean supportsRecipeTree() { public boolean hideCraftable() { return EmiRecipe.super.hideCraftable(); } -} \ No newline at end of file +}