Skip to content

Commit

Permalink
Fix tooltip line rendering
Browse files Browse the repository at this point in the history
  • Loading branch information
sakura-ryoko committed Jan 24, 2025
1 parent 2b431d5 commit c7e5345
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import org.jetbrains.annotations.ApiStatus;
import org.joml.Matrix4f;

Expand Down Expand Up @@ -117,7 +118,7 @@ public void onRenderGameOverlayPost(DrawContext drawContext, MinecraftClient mc,
}

@ApiStatus.Internal
public void onRenderTooltipComponentInsertFirst(Item.TooltipContext context, ItemStack stack, List<Text> list)
public void onRenderTooltipComponentInsertFirst(Item.TooltipContext context, ItemStack stack, Consumer<Text> list)
{
if (this.tooltipLastRenderers.isEmpty() == false)
{
Expand All @@ -129,7 +130,7 @@ public void onRenderTooltipComponentInsertFirst(Item.TooltipContext context, Ite
}

@ApiStatus.Internal
public void onRenderTooltipComponentInsertMiddle(Item.TooltipContext context, ItemStack stack, List<Text> list)
public void onRenderTooltipComponentInsertMiddle(Item.TooltipContext context, ItemStack stack, Consumer<Text> list)
{
if (this.tooltipLastRenderers.isEmpty() == false)
{
Expand All @@ -141,7 +142,7 @@ public void onRenderTooltipComponentInsertMiddle(Item.TooltipContext context, It
}

@ApiStatus.Internal
public void onRenderTooltipComponentInsertLast(Item.TooltipContext context, ItemStack stack, List<Text> list)
public void onRenderTooltipComponentInsertLast(Item.TooltipContext context, ItemStack stack, Consumer<Text> list)
{
if (this.tooltipLastRenderers.isEmpty() == false)
{
Expand Down
7 changes: 4 additions & 3 deletions src/main/java/fi/dy/masa/malilib/interfaces/IRenderer.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package fi.dy.masa.malilib.interfaces;

import java.util.List;
import java.util.function.Consumer;
import java.util.function.Supplier;

import net.minecraft.client.MinecraftClient;
Expand Down Expand Up @@ -52,20 +53,20 @@ default void onRenderWorldLast(Matrix4f posMatrix, Matrix4f projMatrix) {}
* If you want to 'Modify' the item name/Title, this is where
* you should do it; or just insert text below it as normal.
*/
default void onRenderTooltipComponentInsertFirst(Item.TooltipContext context, ItemStack stack, List<Text> list) {}
default void onRenderTooltipComponentInsertFirst(Item.TooltipContext context, ItemStack stack, Consumer<Text> list) {}

/**
* Called before the regular tooltip text data components
* of an item, such as the Music Disc info, Trims, and Lore,
* but after the regular item 'additional' item tooltips.
*/
default void onRenderTooltipComponentInsertMiddle(Item.TooltipContext context, ItemStack stack, List<Text> list) {}
default void onRenderTooltipComponentInsertMiddle(Item.TooltipContext context, ItemStack stack, Consumer<Text> list) {}

/**
* Called after the tooltip text components of an item has been added,
* and occurs before the item durability, id, and component count.
*/
default void onRenderTooltipComponentInsertLast(Item.TooltipContext context, ItemStack stack, List<Text> list) {}
default void onRenderTooltipComponentInsertLast(Item.TooltipContext context, ItemStack stack, Consumer<Text> list) {}

/**
* Called after the tooltip text of an item has been rendered
Expand Down
40 changes: 20 additions & 20 deletions src/main/java/fi/dy/masa/malilib/mixin/MixinItemStack.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package fi.dy.masa.malilib.mixin;

import java.util.List;
import java.util.function.Consumer;

import javax.annotation.Nullable;

import com.llamalad7.mixinextras.sugar.Local;

import net.minecraft.component.type.TooltipDisplayComponent;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
Expand All @@ -14,6 +16,7 @@
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.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import fi.dy.masa.malilib.event.RenderEventHandler;
Expand All @@ -22,37 +25,34 @@
public abstract class MixinItemStack
{
// This Goes before the Item Additional Tooltips.
@Inject(method = "getTooltip",
at = @At(value = "INVOKE",
target = "Lnet/minecraft/item/Item;appendTooltip(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/Item$TooltipContext;Ljava/util/List;Lnet/minecraft/item/tooltip/TooltipType;)V",
shift = At.Shift.BEFORE))
private void onGetTooltipComponentsFirst(Item.TooltipContext context, @Nullable PlayerEntity player, TooltipType type, CallbackInfoReturnable<List<Text>> cir,
@Local List<Text> list)
@Inject(method = "appendTooltip(Lnet/minecraft/item/Item$TooltipContext;Lnet/minecraft/component/type/TooltipDisplayComponent;Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/item/tooltip/TooltipType;Ljava/util/function/Consumer;)V",
at = @At("HEAD"))
private void onGetTooltipComponentsFirst(Item.TooltipContext context, TooltipDisplayComponent displayComponent,
PlayerEntity player, TooltipType type, Consumer<Text> textConsumer, CallbackInfo ci)
{
((RenderEventHandler) RenderEventHandler.getInstance()).onRenderTooltipComponentInsertFirst(context, (ItemStack) (Object) this, list);
((RenderEventHandler) RenderEventHandler.getInstance()).onRenderTooltipComponentInsertFirst(context, (ItemStack) (Object) this, textConsumer);
}

// This Goes after the Item Additional Tooltips.
@Inject(method = "getTooltip",
@Inject(method = "appendTooltip(Lnet/minecraft/item/Item$TooltipContext;Lnet/minecraft/component/type/TooltipDisplayComponent;Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/item/tooltip/TooltipType;Ljava/util/function/Consumer;)V",
at = @At(value = "INVOKE",
target = "Lnet/minecraft/item/ItemStack;appendTooltip(Lnet/minecraft/component/ComponentType;Lnet/minecraft/item/Item$TooltipContext;Ljava/util/function/Consumer;Lnet/minecraft/item/tooltip/TooltipType;)V",
ordinal = 0,
shift = At.Shift.BEFORE))
private void onGetTooltipComponentsMiddle(Item.TooltipContext context, @Nullable PlayerEntity player, TooltipType type, CallbackInfoReturnable<List<Text>> cir,
@Local List<Text> list)
target = "Lnet/minecraft/item/Item;appendTooltip(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/Item$TooltipContext;Lnet/minecraft/component/type/TooltipDisplayComponent;Ljava/util/function/Consumer;Lnet/minecraft/item/tooltip/TooltipType;)V",
shift = At.Shift.AFTER))
private void onGetTooltipComponentsMiddle(Item.TooltipContext context, TooltipDisplayComponent displayComponent,
PlayerEntity player, TooltipType type, Consumer<Text> textConsumer, CallbackInfo ci)
{
((RenderEventHandler) RenderEventHandler.getInstance()).onRenderTooltipComponentInsertMiddle(context, (ItemStack) (Object) this, list);
((RenderEventHandler) RenderEventHandler.getInstance()).onRenderTooltipComponentInsertMiddle(context, (ItemStack) (Object) this, textConsumer);
}

// This Goes before the Item durability, item id, and component count.
@Inject(method = "getTooltip",
@Inject(method = "appendTooltip(Lnet/minecraft/item/Item$TooltipContext;Lnet/minecraft/component/type/TooltipDisplayComponent;Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/item/tooltip/TooltipType;Ljava/util/function/Consumer;)V",
at = @At(value = "INVOKE",
target = "Lnet/minecraft/item/ItemStack;appendTooltip(Lnet/minecraft/component/ComponentType;Lnet/minecraft/item/Item$TooltipContext;Ljava/util/function/Consumer;Lnet/minecraft/item/tooltip/TooltipType;)V",
ordinal = 6,
target = "Lnet/minecraft/item/ItemStack;appendComponentTooltip(Lnet/minecraft/component/ComponentType;Lnet/minecraft/item/Item$TooltipContext;Lnet/minecraft/component/type/TooltipDisplayComponent;Ljava/util/function/Consumer;Lnet/minecraft/item/tooltip/TooltipType;)V",
ordinal = 22,
shift = At.Shift.AFTER))
private void onGetTooltipComponentsLast(Item.TooltipContext context, @Nullable PlayerEntity player, TooltipType type, CallbackInfoReturnable<List<Text>> cir,
@Local List<Text> list)
private void onGetTooltipComponentsLast(Item.TooltipContext context, TooltipDisplayComponent displayComponent,
PlayerEntity player, TooltipType type, Consumer<Text> textConsumer, CallbackInfo ci)
{
((RenderEventHandler) RenderEventHandler.getInstance()).onRenderTooltipComponentInsertLast(context, (ItemStack) (Object) this, list);
((RenderEventHandler) RenderEventHandler.getInstance()).onRenderTooltipComponentInsertLast(context, (ItemStack) (Object) this, textConsumer);
}
}
13 changes: 7 additions & 6 deletions src/main/java/fi/dy/masa/malilib/test/TestRenderHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Supplier;

@ApiStatus.Experimental
Expand Down Expand Up @@ -99,7 +100,7 @@ public void onRenderWorldLastAdvanced(Matrix4f posMatrix, Matrix4f projMatrix, F
}

@Override
public void onRenderTooltipComponentInsertFirst(Item.TooltipContext context, ItemStack stack, List<Text> list)
public void onRenderTooltipComponentInsertFirst(Item.TooltipContext context, ItemStack stack, Consumer<Text> list)
{
if (MaLiLibConfigs.Test.TEST_CONFIG_BOOLEAN.getBooleanValue())
{
Expand All @@ -109,25 +110,25 @@ public void onRenderTooltipComponentInsertFirst(Item.TooltipContext context, Ite
MutableText title = Text.empty().append(StringUtils.translateAsText(MaLiLibReference.MOD_ID+".gui.tooltip.test.title"));
list.addFirst(title);
*/
list.add(StringUtils.translateAsText(MaLiLibReference.MOD_ID+".gui.tooltip.test.first"));
list.accept(StringUtils.translateAsText(MaLiLibReference.MOD_ID+".gui.tooltip.test.first"));
}
}

@Override
public void onRenderTooltipComponentInsertMiddle(Item.TooltipContext context, ItemStack stack, List<Text> list)
public void onRenderTooltipComponentInsertMiddle(Item.TooltipContext context, ItemStack stack, Consumer<Text> list)
{
if (MaLiLibConfigs.Test.TEST_CONFIG_BOOLEAN.getBooleanValue())
{
list.add(StringUtils.translateAsText(MaLiLibReference.MOD_ID+".gui.tooltip.test.middle"));
list.accept(StringUtils.translateAsText(MaLiLibReference.MOD_ID+".gui.tooltip.test.middle"));
}
}

@Override
public void onRenderTooltipComponentInsertLast(Item.TooltipContext context, ItemStack stack, List<Text> list)
public void onRenderTooltipComponentInsertLast(Item.TooltipContext context, ItemStack stack, Consumer<Text> list)
{
if (MaLiLibConfigs.Test.TEST_CONFIG_BOOLEAN.getBooleanValue())
{
list.add(StringUtils.translateAsText(MaLiLibReference.MOD_ID+".gui.tooltip.test.last"));
list.accept(StringUtils.translateAsText(MaLiLibReference.MOD_ID+".gui.tooltip.test.last"));
}
}

Expand Down

0 comments on commit c7e5345

Please sign in to comment.