Danielshe 5 жил өмнө
parent
commit
3d352c0682

+ 2 - 2
build.gradle

@@ -48,7 +48,7 @@ dependencies {
     modImplementation("me.shedaniel.cloth:config-2:${cloth_config_version}") {
         transitive = false
     }
-    modApi("me.shedaniel.cloth:fiber2cloth:1.1.0") {
+    modApi("me.shedaniel.cloth:fiber2cloth:1.2.0") {
         transitive = false
     }
     modApi "me.zeroeightsix:fiber:0.6.0-7"
@@ -60,7 +60,7 @@ dependencies {
         include("me.shedaniel.cloth:config-2:${cloth_config_version}") {
             transitive = false
         }
-        include("me.shedaniel.cloth:fiber2cloth:1.1.0") {
+        include("me.shedaniel.cloth:fiber2cloth:1.2.0") {
             transitive = false
         }
         include "me.zeroeightsix:fiber:0.6.0-7"

+ 2 - 2
gradle.properties

@@ -1,10 +1,10 @@
-mod_version=3.1.3
+mod_version=3.1.4
 minecraft_version=1.14.4
 yarn_version=1.14.4+build.1
 fabricloader_version=0.6.1+build.164
 jankson_version=1.1.0
 cloth_events_version=0.6.0
-cloth_config_version=1.1.1
+cloth_config_version=1.1.2
 modmenu_version=1.7.9+build.118
 fabric_api=0.3.2+build.218-1.14
 

+ 5 - 0
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();

+ 5 - 0
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);
+}

+ 13 - 2
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
@@ -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<String> getExtraToolTips(ItemStack stack) {
                 if (extraTooltipSupplier == null)

+ 9 - 2
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 : "";
     }

+ 6 - 1
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) {

+ 17 - 0
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)
@@ -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();

+ 25 - 0
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);
+    }
+    
+}

+ 2 - 2
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);

+ 1 - 1
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();
     }
     
 }

+ 1 - 0
src/main/resources/assets/roughlyenoughitems/lang/en_us.json

@@ -88,6 +88,7 @@
   "config.roughlyenoughitems.clickableRecipeArrows": "Clickable Recipe Arrows:",
   "config.roughlyenoughitems.clickableRecipeArrows.boolean.true": "Enabled",
   "config.roughlyenoughitems.clickableRecipeArrows.boolean.false": "Disabled",
+  "config.roughlyenoughitems.renderEntryExtraOverlay": "Render Entry Extra Overlay:",
   "config.roughlyenoughitems.darkTheme": "Appearance Theme:",
   "config.roughlyenoughitems.darkTheme.boolean.true": "Dark Theme",
   "config.roughlyenoughitems.darkTheme.boolean.false": "Light Theme",

+ 2 - 1
src/main/resources/mixin.roughlyenoughitems.json

@@ -5,7 +5,8 @@
   "compatibilityLevel": "JAVA_8",
   "mixins": [],
   "client": [
-    "MixinBrewingRecipeRegistry"
+    "MixinBrewingRecipeRegistry",
+    "MixinItemStack"
   ],
   "injectors": {
     "defaultRequire": 1