diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java index 8cc8200fb72..0a00d5a9c19 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java @@ -309,16 +309,12 @@ public int getItemColor(OreInfo item) { @Override public IGuiTexture getItemIcon(OreInfo item) { Material material = item.material; - ItemStack stack = ChemicalHelper.get(TagPrefix.get(ConfigHolder.INSTANCE.machines.bedrockOreDropTagPrefix), - material); - if (stack.isEmpty()) stack = ChemicalHelper.get(TagPrefix.crushed, material); // backup 1: crushed; if raw - // ore doesn't exist - if (stack.isEmpty()) stack = ChemicalHelper.get(TagPrefix.gem, material); // backup 2: gem; if crushed ore - // doesn't exist - if (stack.isEmpty()) stack = ChemicalHelper.get(TagPrefix.ore, material); // backup 3: ore; if gem doesn't - // exist - if (stack.isEmpty()) stack = ChemicalHelper.get(TagPrefix.dust, material); // backup 4: just fallback to - // dust... + ItemStack stack = GTUtil.getFirstNonEmpty( + ChemicalHelper.get(TagPrefix.get(ConfigHolder.INSTANCE.machines.bedrockOreDropTagPrefix), material), + ChemicalHelper.get(TagPrefix.crushed, material), + ChemicalHelper.get(TagPrefix.gem, material), + ChemicalHelper.get(TagPrefix.ore, material), + ChemicalHelper.get(TagPrefix.dust, material)); return new ItemStackTexture(stack).scale(0.8f); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java index 4deaedb2bae..976b1c590a8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java @@ -72,28 +72,12 @@ private GTRecipe getOreMinerRecipe() { WeightedMaterial wm = GTUtil.getRandomItem(serverLevel.random, veinMaterials); if (wm == null) return null; Material material = wm.material(); - ItemStack stack = ChemicalHelper.get(TagPrefix.get(ConfigHolder.INSTANCE.machines.bedrockOreDropTagPrefix), - material, getOreToProduce()); - if (stack.isEmpty()) stack = ChemicalHelper.get(TagPrefix.crushed, material, getOreToProduce()); // backup - // 1: - // crushed; - // if raw - // ore - // doesn't - // exist - if (stack.isEmpty()) stack = ChemicalHelper.get(TagPrefix.gem, material, getOreToProduce()); // backup 2: - // gem; if - // crushed ore - // doesn't - // exist - if (stack.isEmpty()) stack = ChemicalHelper.get(TagPrefix.ore, material, getOreToProduce()); // backup 3: - // normal ore; - // if gem - // doesn't - // exist. - if (stack.isEmpty()) stack = ChemicalHelper.get(TagPrefix.dust, material, getOreToProduce()); // backup 4: - // fallback to - // dust + ItemStack stack = GTUtil.getFirstNonEmpty( + ChemicalHelper.get(TagPrefix.get(ConfigHolder.INSTANCE.machines.bedrockOreDropTagPrefix), material), + ChemicalHelper.get(TagPrefix.crushed, material), + ChemicalHelper.get(TagPrefix.gem, material), + ChemicalHelper.get(TagPrefix.ore, material), + ChemicalHelper.get(TagPrefix.dust, material)); if (stack.isEmpty()) { return null; } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java index 61a1c8e3cfd..04a9f1fefae 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java @@ -300,6 +300,25 @@ public static byte getFloorTierByVoltage(long voltage) { return ItemStack.EMPTY; } + /** + * Returns first non-empty ItemStack from {@code stacks}. + * + * @param stacks list of candidates + * @return an ItemStack, or {@link ItemStack#EMPTY} if all the candidates are empty + * @throws IllegalArgumentException if {@code stacks} is empty + */ + public static @NotNull ItemStack getFirstNonEmpty(@NotNull ItemStack... stacks) { + if (stacks.length == 0) { + throw new IllegalArgumentException("Empty ItemStack candidates"); + } + for (ItemStack stack : stacks) { + if (!stack.isEmpty()) { + return stack; + } + } + return ItemStack.EMPTY; + } + public static M getItem(List list, int index, M replacement) { if (index >= 0 && index < list.size()) return list.get(index);