aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei
diff options
context:
space:
mode:
authorDanielshe <shekwancheung0528@gmail.com>2019-09-12 22:55:09 +0800
committerDanielshe <shekwancheung0528@gmail.com>2019-09-12 22:55:09 +0800
commitd1f620a845d3b0bf1cf4f226b2beb723507aafa4 (patch)
tree89961372bc601c22352c97b155514226325aa2e0 /src/main/java/me/shedaniel/rei
parent1b71bba8dde93522c400afb7111bd72d4fe5993e (diff)
downloadRoughlyEnoughItems-d1f620a845d3b0bf1cf4f226b2beb723507aafa4.tar.gz
RoughlyEnoughItems-d1f620a845d3b0bf1cf4f226b2beb723507aafa4.tar.bz2
RoughlyEnoughItems-d1f620a845d3b0bf1cf4f226b2beb723507aafa4.zip
3.1.4
Diffstat (limited to 'src/main/java/me/shedaniel/rei')
-rw-r--r--src/main/java/me/shedaniel/rei/api/ConfigObject.java5
-rw-r--r--src/main/java/me/shedaniel/rei/api/ItemStackRenderOverlayHook.java5
-rw-r--r--src/main/java/me/shedaniel/rei/api/Renderer.java15
-rw-r--r--src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java11
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java7
-rw-r--r--src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java17
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/MixinItemStack.java25
-rw-r--r--src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java4
-rw-r--r--src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java2
9 files changed, 83 insertions, 8 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/ConfigObject.java b/src/main/java/me/shedaniel/rei/api/ConfigObject.java
index f60d6bc35..f529d4581 100644
--- a/src/main/java/me/shedaniel/rei/api/ConfigObject.java
+++ b/src/main/java/me/shedaniel/rei/api/ConfigObject.java
@@ -10,9 +10,12 @@ import me.shedaniel.rei.gui.config.ItemListOrdering;
import me.shedaniel.rei.gui.config.RecipeScreenType;
import me.shedaniel.rei.gui.config.SearchFieldLocation;
import me.zeroeightsix.fiber.tree.ConfigNode;
+import me.zeroeightsix.fiber.tree.Node;
public interface ConfigObject {
+ Node getGeneral();
+
ConfigNode getConfigNode();
boolean isCheating();
@@ -25,6 +28,8 @@ public interface ConfigObject {
boolean isUsingDarkTheme();
+ boolean doesRenderEntryExtraOverlay();
+
boolean isEntryListWidgetScrolled();
boolean shouldAppendModNames();
diff --git a/src/main/java/me/shedaniel/rei/api/ItemStackRenderOverlayHook.java b/src/main/java/me/shedaniel/rei/api/ItemStackRenderOverlayHook.java
new file mode 100644
index 000000000..6baf5f218
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/api/ItemStackRenderOverlayHook.java
@@ -0,0 +1,5 @@
+package me.shedaniel.rei.api;
+
+public interface ItemStackRenderOverlayHook {
+ void rei_setRenderOverlay(boolean b);
+}
diff --git a/src/main/java/me/shedaniel/rei/api/Renderer.java b/src/main/java/me/shedaniel/rei/api/Renderer.java
index 5bd86e058..cb356be5e 100644
--- a/src/main/java/me/shedaniel/rei/api/Renderer.java
+++ b/src/main/java/me/shedaniel/rei/api/Renderer.java
@@ -20,6 +20,7 @@ import java.util.Collections;
import java.util.List;
import java.util.function.Function;
import java.util.function.Supplier;
+import java.util.stream.Collectors;
public abstract class Renderer extends DrawableHelper {
/**
@@ -114,12 +115,17 @@ public abstract class Renderer extends DrawableHelper {
}
public static ItemStackRenderer fromItemStacks(Supplier<List<ItemStack>> stacksSupplier, @Nullable Function<ItemStack, String> countsFunction, @Nullable Function<ItemStack, List<String>> extraTooltipSupplier) {
+ return fromItemStacks(stacksSupplier, countsFunction, extraTooltipSupplier, true);
+ }
+
+ public static ItemStackRenderer fromItemStacks(Supplier<List<ItemStack>> stacksSupplier, @Nullable Function<ItemStack, String> countsFunction, @Nullable Function<ItemStack, List<String>> extraTooltipSupplier, boolean renderOverlay) {
+ List<ItemStack> stacks = stacksSupplier.get().stream().map(ItemStack::copy).collect(Collectors.toList());
return new ItemStackRenderer() {
@Override
public ItemStack getItemStack() {
- if (stacksSupplier.get().isEmpty())
+ if (stacks.isEmpty())
return ItemStack.EMPTY;
- return stacksSupplier.get().get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) stacksSupplier.get().size()) / 1f));
+ return stacks.get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) stacks.size()) / 1f));
}
@Override
@@ -128,6 +134,11 @@ public abstract class Renderer extends DrawableHelper {
}
@Override
+ protected boolean renderOverlay() {
+ return renderOverlay;
+ }
+
+ @Override
protected List<String> getExtraToolTips(ItemStack stack) {
if (extraTooltipSupplier == null)
return super.getExtraToolTips(stack);
diff --git a/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java b/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java
index 106a85561..f916843b8 100644
--- a/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java
+++ b/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java
@@ -9,6 +9,7 @@ import com.google.common.collect.Lists;
import me.shedaniel.math.compat.RenderHelper;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
import me.shedaniel.rei.api.ClientHelper;
+import me.shedaniel.rei.api.ItemStackRenderOverlayHook;
import me.shedaniel.rei.api.Renderer;
import me.shedaniel.rei.gui.widget.EntryListWidget;
import me.shedaniel.rei.gui.widget.QueuedTooltip;
@@ -35,6 +36,8 @@ public abstract class ItemStackRenderer extends Renderer {
@Override
public void render(int x, int y, double mouseX, double mouseY, float delta) {
int l = x - 8, i1 = y - 6;
+ ItemStack stack = getItemStack();
+ ((ItemStackRenderOverlayHook) (Object) stack).rei_setRenderOverlay(renderOverlay());
RenderHelper.color4f(1.0F, 1.0F, 1.0F, 1.0F);
ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer();
itemRenderer.zOffset = blitOffset;
@@ -43,8 +46,8 @@ public abstract class ItemStackRenderer extends Renderer {
RenderHelper.enableLighting();
RenderHelper.enableRescaleNormal();
RenderHelper.enableDepthTest();
- itemRenderer.renderGuiItem(getItemStack(), l, i1);
- itemRenderer.renderGuiItemOverlay(MinecraftClient.getInstance().textRenderer, getItemStack(), l, i1, getCounts());
+ itemRenderer.renderGuiItem(stack, l, i1);
+ itemRenderer.renderGuiItemOverlay(MinecraftClient.getInstance().textRenderer, stack, l, i1, getCounts());
itemRenderer.zOffset = 0.0F;
this.blitOffset = 0;
}
@@ -71,6 +74,10 @@ public abstract class ItemStackRenderer extends Renderer {
return true;
}
+ protected boolean renderOverlay() {
+ return true;
+ }
+
protected String getCounts() {
return renderCounts() ? null : "";
}
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java
index 850e1973a..1c11b136d 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java
@@ -376,7 +376,12 @@ public class EntryListWidget extends Widget {
protected String getCounts() {
return "";
}
-
+
+ @Override
+ protected boolean renderOverlay() {
+ return RoughlyEnoughItemsCore.getConfigManager().getConfig().doesRenderEntryExtraOverlay();
+ }
+
@Nullable
@Override
public QueuedTooltip getQueuedTooltip(float delta) {
diff --git a/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java b/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java
index 5fc06cdd5..910d1aeb5 100644
--- a/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java
+++ b/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java
@@ -42,6 +42,13 @@ public class ConfigObjectImpl implements ConfigObject {
.withName("darkTheme")
.build();
+ private ConfigValue<Boolean> renderEntryExtraOverlay = ConfigValue.builder(Boolean.class)
+ .withParent(appearance)
+ .withDefaultValue(true)
+ .withComment("Whether REI should render entry's overlay.\nExample: Enchantment Glint")
+ .withName("renderEntryExtraOverlay")
+ .build();
+
private ConfigValue<RecipeScreenType> recipeScreenType = ConfigValue.builder(RecipeScreenType.class)
.withParent(appearance)
.withDefaultValue(RecipeScreenType.UNSET)
@@ -180,6 +187,11 @@ public class ConfigObjectImpl implements ConfigObject {
}
@Override
+ public Node getGeneral() {
+ return general;
+ }
+
+ @Override
public ConfigNode getConfigNode() {
return configNode;
}
@@ -210,6 +222,11 @@ public class ConfigObjectImpl implements ConfigObject {
}
@Override
+ public boolean doesRenderEntryExtraOverlay() {
+ return renderEntryExtraOverlay.getValue().booleanValue();
+ }
+
+ @Override
public boolean isEntryListWidgetScrolled() {
return scrollingEntryListWidget.getValue().booleanValue();
}
diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinItemStack.java b/src/main/java/me/shedaniel/rei/mixin/MixinItemStack.java
new file mode 100644
index 000000000..a9d6563e8
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/mixin/MixinItemStack.java
@@ -0,0 +1,25 @@
+package me.shedaniel.rei.mixin;
+
+import me.shedaniel.rei.api.ItemStackRenderOverlayHook;
+import net.minecraft.item.ItemStack;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
+
+@Mixin(ItemStack.class)
+public class MixinItemStack implements ItemStackRenderOverlayHook {
+ private boolean rei_dontRenderOverlay = false;
+
+ @Override
+ public void rei_setRenderOverlay(boolean b) {
+ rei_dontRenderOverlay = !b;
+ }
+
+ @Inject(method = "hasEnchantmentGlint", at = @At("HEAD"), cancellable = true)
+ public void hasEnchantmentGlint(CallbackInfoReturnable<Boolean> callbackInfo) {
+ if (rei_dontRenderOverlay)
+ callbackInfo.setReturnValue(false);
+ }
+
+}
diff --git a/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java b/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java
index c7eba25b1..03abd2170 100644
--- a/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java
+++ b/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java
@@ -65,7 +65,7 @@ public class InputSlotCrafter<C extends Inventory> implements RecipeGridAligner<
player.inventory.markDirty();
throw new NotEnoughMaterialsException();
}
-
+
player.inventory.markDirty();
}
}
@@ -73,7 +73,7 @@ public class InputSlotCrafter<C extends Inventory> implements RecipeGridAligner<
@Override
public void acceptAlignedInput(Iterator<Integer> iterator_1, int int_1, int int_2, int int_3, int int_4) {
Slot slot_1 = this.craftingContainer.getSlot(int_1);
- ItemStack itemStack_1 = net.minecraft.recipe.RecipeFinder.getStackFromId((Integer) iterator_1.next());
+ ItemStack itemStack_1 = RecipeFinder.getStackFromId(iterator_1.next());
if (!itemStack_1.isEmpty()) {
for (int int_5 = 0; int_5 < int_2; ++int_5) {
this.fillInputSlot(slot_1, itemStack_1);
diff --git a/src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java b/src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java
index 2a91ae0fb..b76ae996f 100644
--- a/src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java
+++ b/src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java
@@ -78,7 +78,7 @@ public class ClothScreenRegistry {
MinecraftClient.getInstance().openScreen(new CreditsScreen(screen));
}
});
- }).build().getScreen();
+ }).setDefaultCategoryNode(configManager.getConfig().getGeneral()).build().getScreen();
}
}