diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-01-24 23:05:57 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-01-24 23:05:57 +0800 |
| commit | e4d5665de955e8f9377df2fc15bbfeb765dcaa95 (patch) | |
| tree | 95fe2cffb67e86bb84827758994e8b019277be18 /src/main/java/me/shedaniel/rei/impl | |
| parent | c230eab17af075bd58bcf8e6c6961e81bf53202a (diff) | |
| download | RoughlyEnoughItems-e4d5665de955e8f9377df2fc15bbfeb765dcaa95.tar.gz RoughlyEnoughItems-e4d5665de955e8f9377df2fc15bbfeb765dcaa95.tar.bz2 RoughlyEnoughItems-e4d5665de955e8f9377df2fc15bbfeb765dcaa95.zip | |
3.3.16
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl')
5 files changed, 66 insertions, 8 deletions
diff --git a/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java b/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java index 9e9f05bc3..f520184f0 100644 --- a/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java @@ -273,6 +273,11 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData { return appearance.useCompactTabs; } + @Override + public boolean isLowerConfigButton() { + return appearance.lowerConfigButton; + } + public static class General { @ConfigEntry.Gui.Excluded public List<String> favorites = new ArrayList<>(); @Comment("Declares whether cheating mode is on.") private boolean cheating = false; @@ -310,6 +315,7 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData { @Comment("Declares whether favorites will be searched.") private boolean searchFavorites = true; @UsePercentage(min = 0.5, max = 4.0) private double entrySize = 1.0; private boolean useCompactTabs = true; + private boolean lowerConfigButton = false; } public static class Technical { diff --git a/src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java b/src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java index e03d77745..a18b71307 100644 --- a/src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java +++ b/src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java @@ -7,9 +7,13 @@ package me.shedaniel.rei.impl; import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; +import me.shedaniel.math.api.Executor; import me.shedaniel.math.api.Rectangle; import me.shedaniel.rei.api.*; import me.shedaniel.rei.gui.widget.QueuedTooltip; +import me.shedaniel.rei.impl.compat.ModelHasDepth1151Compat; +import me.shedaniel.rei.impl.compat.ModelSideLit1152Compat; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.OverlayTexture; import net.minecraft.client.render.VertexConsumerProvider; @@ -26,14 +30,28 @@ import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.function.Predicate; @ApiStatus.Internal public class ItemEntryStack extends AbstractEntryStack implements OptimalEntryStack { + private static final Predicate<BakedModel> IS_SIDE_LIT; private static final MatrixStack MATRICES = new MatrixStack(); private ItemStack itemStack; private int hash = -1; + static { + boolean isOn1_15_2 = false; + String isSideLit = FabricLoader.getInstance().getMappingResolver().mapMethodName("intermediary", "net.minecraft.class_1087", "method_24304", "()Z"); + try { + BakedModel.class.getDeclaredMethod(isSideLit); + isOn1_15_2 = true; + } catch (NoSuchMethodException ignored) { + } + //noinspection Convert2MethodRef + IS_SIDE_LIT = isOn1_15_2 ? Executor.call(() -> () -> new ModelSideLit1152Compat()) : Executor.call(() -> () -> new ModelHasDepth1151Compat()); + } + public ItemEntryStack(ItemStack itemStack) { this.itemStack = itemStack; } @@ -187,7 +205,7 @@ public class ItemEntryStack extends AbstractEntryStack implements OptimalEntrySt MATRICES.scale(bounds.getWidth(), (bounds.getWidth() + bounds.getHeight()) / -2f, bounds.getHeight()); VertexConsumerProvider.Immediate immediate = MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(); BakedModel model = getModelFromStack(stack); - boolean bl = !model.isSideLit(); + boolean bl = !IS_SIDE_LIT.test(model); if (bl) GlStateManager.method_24221(); MinecraftClient.getInstance().getItemRenderer().renderItem(stack, ModelTransformation.Mode.GUI, false, MATRICES, immediate, 15728880, OverlayTexture.DEFAULT_UV, model); diff --git a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java index c8cadf503..b0a19fc75 100644 --- a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java @@ -58,7 +58,7 @@ public class RecipeHelperImpl implements RecipeHelper { public List<EntryStack> findCraftableEntriesByItems(List<EntryStack> inventoryItems) { List<EntryStack> craftables = new ArrayList<>(); for (List<RecipeDisplay> value : recipeCategoryListMap.values()) - for (RecipeDisplay recipeDisplay : value) { + for (RecipeDisplay recipeDisplay : Lists.newArrayList(value)) { int slotsCraftable = 0; List<List<EntryStack>> requiredInput = recipeDisplay.getRequiredEntries(); for (List<EntryStack> slot : requiredInput) { @@ -132,7 +132,7 @@ public class RecipeHelperImpl implements RecipeHelper { RecipeCategory<?> category = entry.getKey(); Identifier categoryId = entry.getValue(); Set<RecipeDisplay> set = Sets.newLinkedHashSet(); - for (RecipeDisplay display : recipeCategoryListMap.get(categoryId)) { + for (RecipeDisplay display : Lists.newArrayList(recipeCategoryListMap.get(categoryId))) { for (EntryStack outputStack : display.getOutputEntries()) if (stack.equals(outputStack) && isDisplayVisible(display)) { set.add(display); @@ -185,7 +185,7 @@ public class RecipeHelperImpl implements RecipeHelper { Set<RecipeDisplay> set = Sets.newLinkedHashSet(); RecipeCategory<?> category = entry.getKey(); Identifier categoryId = entry.getValue(); - for (RecipeDisplay display : recipeCategoryListMap.get(categoryId)) { + for (RecipeDisplay display : Lists.newArrayList(recipeCategoryListMap.get(categoryId))) { back: for (List<EntryStack> input : display.getInputEntries()) { for (EntryStack otherEntry : input) { @@ -198,7 +198,7 @@ public class RecipeHelperImpl implements RecipeHelper { } } if (isStackWorkStationOfCategory(categoryId, stack)) { - set.addAll(recipeCategoryListMap.get(categoryId)); + set.addAll(Lists.newArrayList(recipeCategoryListMap.get(categoryId))); } if (!set.isEmpty()) CollectionUtils.getOrPutEmptyList(result, category).addAll(set); @@ -378,11 +378,11 @@ public class RecipeHelperImpl implements RecipeHelper { for (Map.Entry<RecipeCategory<?>, Identifier> entry : categories.entrySet()) { RecipeCategory<?> category = entry.getKey(); Identifier categoryId = entry.getValue(); - List<RecipeDisplay> displays = recipeCategoryListMap.get(categoryId); + List<RecipeDisplay> displays = Lists.newArrayList(recipeCategoryListMap.get(categoryId)); if (displays != null) { displays.removeIf(this::isDisplayNotVisible); if (!displays.isEmpty()) - result.put(category, Lists.newArrayList(displays)); + result.put(category, displays); } } return result; @@ -390,7 +390,7 @@ public class RecipeHelperImpl implements RecipeHelper { @Override public List<RecipeDisplay> getAllRecipesFromCategory(RecipeCategory<?> category) { - return recipeCategoryListMap.get(category.getIdentifier()); + return Lists.newArrayList(recipeCategoryListMap.get(category.getIdentifier())); } @Override diff --git a/src/main/java/me/shedaniel/rei/impl/compat/ModelHasDepth1151Compat.java b/src/main/java/me/shedaniel/rei/impl/compat/ModelHasDepth1151Compat.java new file mode 100644 index 000000000..ec2a53d88 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/impl/compat/ModelHasDepth1151Compat.java @@ -0,0 +1,17 @@ +/* + * Roughly Enough Items by Danielshe. + * Licensed under the MIT License. + */ + +package me.shedaniel.rei.impl.compat; + +import net.minecraft.client.render.model.BakedModel; + +import java.util.function.Predicate; + +public class ModelHasDepth1151Compat implements Predicate<BakedModel> { + @Override + public boolean test(BakedModel bakedModel) { + return bakedModel.hasDepth(); + } +} diff --git a/src/main/java/me/shedaniel/rei/impl/compat/ModelSideLit1152Compat.java b/src/main/java/me/shedaniel/rei/impl/compat/ModelSideLit1152Compat.java new file mode 100644 index 000000000..69706c901 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/impl/compat/ModelSideLit1152Compat.java @@ -0,0 +1,17 @@ +/* + * Roughly Enough Items by Danielshe. + * Licensed under the MIT License. + */ + +package me.shedaniel.rei.impl.compat; + +import net.minecraft.client.render.model.BakedModel; + +import java.util.function.Predicate; + +public class ModelSideLit1152Compat implements Predicate<BakedModel> { + @Override + public boolean test(BakedModel bakedModel) { + return bakedModel.isSideLit(); + } +} |
