diff options
Diffstat (limited to 'src/main/java/de')
4 files changed, 16 insertions, 20 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java index 6a3fe0a5..1a97c471 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java @@ -1,6 +1,5 @@ package de.hysky.skyblocker.mixins; -import com.llamalad7.mixinextras.injector.ModifyReturnValue; import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.systems.RenderSystem; import de.hysky.skyblocker.SkyblockerMod; @@ -17,7 +16,6 @@ import de.hysky.skyblocker.skyblock.item.slottext.SlotText; import de.hysky.skyblocker.skyblock.item.slottext.SlotTextManager; import de.hysky.skyblocker.skyblock.item.tooltip.BackpackPreview; import de.hysky.skyblocker.skyblock.item.tooltip.CompactorDeletorPreview; -import de.hysky.skyblocker.skyblock.item.tooltip.TooltipManager; import de.hysky.skyblocker.skyblock.quicknav.QuickNav; import de.hysky.skyblocker.skyblock.quicknav.QuickNavButton; import de.hysky.skyblocker.utils.ItemUtils; @@ -38,7 +36,10 @@ import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyVariable; @@ -189,12 +190,6 @@ public abstract class HandledScreenMixin<T extends ScreenHandler> extends Screen return skyblocker$experimentSolvers$getStack(focusedSlot, stack); } - @SuppressWarnings("deprecation") - @ModifyReturnValue(method = "getTooltipFromItem", at = @At("RETURN")) - private List<Text> skyblocker$tooltips$addToTooltip(List<Text> tooltip, ItemStack stack) { - return TooltipManager.addToTooltip(focusedSlot, stack, tooltip); - } - @ModifyVariable(method = "drawSlot", at = @At(value = "LOAD", ordinal = 3), ordinal = 0) private ItemStack skyblocker$experimentSolvers$replaceDisplayStack(ItemStack stack, DrawContext context, Slot slot) { return skyblocker$experimentSolvers$getStack(slot, stack); diff --git a/src/main/java/de/hysky/skyblocker/mixins/accessors/HandledScreenAccessor.java b/src/main/java/de/hysky/skyblocker/mixins/accessors/HandledScreenAccessor.java index 41323a5e..9a2a8311 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/accessors/HandledScreenAccessor.java +++ b/src/main/java/de/hysky/skyblocker/mixins/accessors/HandledScreenAccessor.java @@ -1,16 +1,11 @@ package de.hysky.skyblocker.mixins.accessors; import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.item.ItemStack; import net.minecraft.screen.ScreenHandler; import net.minecraft.screen.slot.Slot; -import net.minecraft.text.Text; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; -import org.spongepowered.asm.mixin.gen.Invoker; - -import java.util.List; @Mixin(HandledScreen.class) public interface HandledScreenAccessor { @@ -32,7 +27,4 @@ public interface HandledScreenAccessor { @Accessor("focusedSlot") Slot getFocusedSlot(); - - @Invoker - List<Text> invokeGetTooltipFromItem(ItemStack stack); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java index 1e7950e3..e3a2ef04 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java @@ -1,10 +1,14 @@ package de.hysky.skyblocker.skyblock.item.tooltip; +import de.hysky.skyblocker.mixins.accessors.HandledScreenAccessor; import de.hysky.skyblocker.skyblock.chocolatefactory.ChocolateFactorySolver; import de.hysky.skyblocker.skyblock.item.tooltip.adders.*; import de.hysky.skyblocker.utils.Utils; +import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; @@ -36,6 +40,13 @@ public class TooltipManager { } public static void init() { + ItemTooltipCallback.EVENT.register((stack, tooltipContext, tooltipType, lines) -> { + if (MinecraftClient.getInstance().currentScreen instanceof HandledScreen<?> handledScreen) { + addToTooltip(((HandledScreenAccessor) handledScreen).getFocusedSlot(), stack, lines); + } else { + addToTooltip(null, stack, lines); + } + }); ScreenEvents.AFTER_INIT.register((client, screen, width, height) -> { onScreenChange(screen); ScreenEvents.remove(screen).register(ignored -> currentScreenAdders.clear()); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ResultButtonWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ResultButtonWidget.java index 9e2ec0b3..6af03f31 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ResultButtonWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ResultButtonWidget.java @@ -1,10 +1,8 @@ package de.hysky.skyblocker.skyblock.itemlist; -import de.hysky.skyblocker.mixins.accessors.HandledScreenAccessor; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; import net.minecraft.client.gui.widget.ClickableWidget; import net.minecraft.item.ItemStack; @@ -44,7 +42,7 @@ public class ResultButtonWidget extends ClickableWidget { public void renderTooltip(DrawContext context, int mouseX, int mouseY) { MinecraftClient client = MinecraftClient.getInstance(); if (client.currentScreen == null) return; - List<Text> tooltip = client.currentScreen instanceof HandledScreen<?> handledScreen ? ((HandledScreenAccessor) handledScreen).invokeGetTooltipFromItem(this.itemStack) : Screen.getTooltipFromItem(client, this.itemStack); + List<Text> tooltip = Screen.getTooltipFromItem(client, this.itemStack); client.currentScreen.setTooltip(tooltip.stream().map(Text::asOrderedText).toList()); } |