aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-01-24 23:05:57 +0800
committershedaniel <daniel@shedaniel.me>2020-01-24 23:05:57 +0800
commite4d5665de955e8f9377df2fc15bbfeb765dcaa95 (patch)
tree95fe2cffb67e86bb84827758994e8b019277be18 /src/main/java/me/shedaniel/rei/impl
parentc230eab17af075bd58bcf8e6c6961e81bf53202a (diff)
downloadRoughlyEnoughItems-e4d5665de955e8f9377df2fc15bbfeb765dcaa95.tar.gz
RoughlyEnoughItems-e4d5665de955e8f9377df2fc15bbfeb765dcaa95.tar.bz2
RoughlyEnoughItems-e4d5665de955e8f9377df2fc15bbfeb765dcaa95.zip
3.3.16
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl')
-rw-r--r--src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java6
-rw-r--r--src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java20
-rw-r--r--src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java14
-rw-r--r--src/main/java/me/shedaniel/rei/impl/compat/ModelHasDepth1151Compat.java17
-rw-r--r--src/main/java/me/shedaniel/rei/impl/compat/ModelSideLit1152Compat.java17
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();
+ }
+}