From d1f620a845d3b0bf1cf4f226b2beb723507aafa4 Mon Sep 17 00:00:00 2001 From: Danielshe Date: Thu, 12 Sep 2019 22:55:09 +0800 Subject: 3.1.4 --- .../java/me/shedaniel/rei/api/ConfigObject.java | 5 +++++ .../rei/api/ItemStackRenderOverlayHook.java | 5 +++++ src/main/java/me/shedaniel/rei/api/Renderer.java | 15 +++++++++++-- .../rei/gui/renderers/ItemStackRenderer.java | 11 ++++++++-- .../shedaniel/rei/gui/widget/EntryListWidget.java | 7 +++++- .../me/shedaniel/rei/impl/ConfigObjectImpl.java | 17 +++++++++++++++ .../me/shedaniel/rei/mixin/MixinItemStack.java | 25 ++++++++++++++++++++++ .../me/shedaniel/rei/server/InputSlotCrafter.java | 4 ++-- .../shedaniel/rei/utils/ClothScreenRegistry.java | 2 +- 9 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 src/main/java/me/shedaniel/rei/api/ItemStackRenderOverlayHook.java create mode 100644 src/main/java/me/shedaniel/rei/mixin/MixinItemStack.java (limited to 'src/main/java') 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> stacksSupplier, @Nullable Function countsFunction, @Nullable Function> extraTooltipSupplier) { + return fromItemStacks(stacksSupplier, countsFunction, extraTooltipSupplier, true); + } + + public static ItemStackRenderer fromItemStacks(Supplier> stacksSupplier, @Nullable Function countsFunction, @Nullable Function> extraTooltipSupplier, boolean renderOverlay) { + List 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 @@ -127,6 +133,11 @@ public abstract class Renderer extends DrawableHelper { return countsFunction == null ? null : countsFunction.apply(getItemStack()); } + @Override + protected boolean renderOverlay() { + return renderOverlay; + } + @Override protected List getExtraToolTips(ItemStack stack) { if (extraTooltipSupplier == null) 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 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 = ConfigValue.builder(RecipeScreenType.class) .withParent(appearance) .withDefaultValue(RecipeScreenType.UNSET) @@ -179,6 +186,11 @@ public class ConfigObjectImpl implements ConfigObject { } + @Override + public Node getGeneral() { + return general; + } + @Override public ConfigNode getConfigNode() { return configNode; @@ -209,6 +221,11 @@ public class ConfigObjectImpl implements ConfigObject { return darkTheme.getValue().booleanValue(); } + @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 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 implements RecipeGridAligner< player.inventory.markDirty(); throw new NotEnoughMaterialsException(); } - + player.inventory.markDirty(); } } @@ -73,7 +73,7 @@ public class InputSlotCrafter implements RecipeGridAligner< @Override public void acceptAlignedInput(Iterator 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(); } } -- cgit