Skip to content

Commit

Permalink
Support Meta in Tooltips
Browse files Browse the repository at this point in the history
  • Loading branch information
IntegerLimit committed Jul 12, 2024
1 parent ba0844d commit b0846ce
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 38 deletions.
12 changes: 5 additions & 7 deletions src/main/groovy-tests/tooltipTests.groovy
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
import static com.nomiceu.nomilabs.util.LabsTranslate.*
import static com.nomiceu.nomilabs.groovy.GroovyHelpers.TranslationHelpers.*
import static com.nomiceu.nomilabs.groovy.GroovyHelpers.TooltipHelpers.*

// (Item) Tooltip Helper, Goes in Post Init.

// Note that tooltips apply to all stacks of that Item/ResourceLocation, regardless of meta or NBT Tag.
// Note that tooltips apply to all stacks of that Item and Meta, regardless of NBT Tag.
// If meta is not provided, tooltip only applies to item of meta 0.

// Add a tooltip based on ResourceLocation (Uses Translatable, see `jeiTests.groovy`)
addTooltip(resource('minecraft:dirt'), translatableLiteral('Hello World!'))

// Add a tooltip based on Item/ItemStack (Uses Translatable, see `jeiTests.groovy`)
// Add a tooltip (Uses Translatable, see `jeiTests.groovy`)
addTooltip(item('minecraft:sand'), translatable('item.material.oreprefix.gemPerfect', 'World'))

// Add multiple tooltips based on ResourceLocation/Item/ItemStack (Uses Translatable, see `jeiTests.groovy`)
// Add multiple tooltips (Uses Translatable, see `jeiTests.groovy`)
// Tooltips are joined with `\n`.
addTooltip(item('minecraft:glass'), [translatableLiteral('Testing'), translatable('nomilabs.subtitle.tick.microverse')])

22 changes: 3 additions & 19 deletions src/main/java/com/nomiceu/nomilabs/groovy/GroovyHelpers.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import java.util.function.Function;
import java.util.stream.Collectors;

import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
Expand All @@ -30,6 +29,7 @@
import com.nomiceu.nomilabs.LabsValues;
import com.nomiceu.nomilabs.integration.jei.JEIPlugin;
import com.nomiceu.nomilabs.tooltip.LabsTooltipHelper;
import com.nomiceu.nomilabs.util.ItemMeta;
import com.nomiceu.nomilabs.util.LabsTranslate;

import gregtech.api.GTValues;
Expand Down Expand Up @@ -85,28 +85,12 @@ public static LabsTranslate.Translatable translatableEmpty() {

public static class TooltipHelpers {

public static void addTooltip(ResourceLocation rl, List<LabsTranslate.Translatable> tr) {
LabsTooltipHelper.addTooltip(rl, tr);
}

public static void addTooltip(Item item, List<LabsTranslate.Translatable> tr) {
LabsTooltipHelper.addTooltip(item.getRegistryName(), tr);
}

public static void addTooltip(ItemStack item, List<LabsTranslate.Translatable> tr) {
LabsTooltipHelper.addTooltip(item.getItem().getRegistryName(), tr);
}

public static void addTooltip(ResourceLocation rl, LabsTranslate.Translatable tr) {
LabsTooltipHelper.addTooltip(rl, Collections.singletonList(tr));
}

public static void addTooltip(Item item, LabsTranslate.Translatable tr) {
LabsTooltipHelper.addTooltip(item.getRegistryName(), Collections.singletonList(tr));
LabsTooltipHelper.addTooltip(new ItemMeta(item), tr);
}

public static void addTooltip(ItemStack item, LabsTranslate.Translatable tr) {
LabsTooltipHelper.addTooltip(item.getItem().getRegistryName(), Collections.singletonList(tr));
LabsTooltipHelper.addTooltip(new ItemMeta(item), Collections.singletonList(tr));
}
}

Expand Down
25 changes: 13 additions & 12 deletions src/main/java/com/nomiceu/nomilabs/tooltip/LabsTooltipHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
import java.util.stream.Collectors;

import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;

import org.jetbrains.annotations.Nullable;
import org.lwjgl.input.Keyboard;

import com.cleanroommc.groovyscript.api.GroovyBlacklist;
import com.nomiceu.nomilabs.util.ItemMeta;
import com.nomiceu.nomilabs.util.LabsTranslate;

import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
Expand All @@ -20,8 +20,8 @@
@GroovyBlacklist
public class LabsTooltipHelper {

private static final Map<ResourceLocation, List<LabsTranslate.Translatable>> TOOLTIPS = new Object2ObjectOpenHashMap<>();
private static final Map<ResourceLocation, List<String>> CACHED_TOOLTIPS = new Object2ObjectOpenHashMap<>();
private static final Map<ItemMeta, List<LabsTranslate.Translatable>> TOOLTIPS = new Object2ObjectOpenHashMap<>();
private static final Map<ItemMeta, List<String>> CACHED_TOOLTIPS = new Object2ObjectOpenHashMap<>();

public static boolean isShiftDown() {
return Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT);
Expand All @@ -40,9 +40,9 @@ public static String getTOPFormat(String str) {
* <p>
* If you want to add a tooltip in Labs, add a function to {@link TooltipAdder}.
*/
public static void addTooltip(ResourceLocation rl, List<LabsTranslate.Translatable> tr) {
if (TOOLTIPS.containsKey(rl)) TOOLTIPS.get(rl).addAll(tr);
TOOLTIPS.put(rl, tr);
public static void addTooltip(ItemMeta itemMeta, List<LabsTranslate.Translatable> tr) {
if (TOOLTIPS.containsKey(itemMeta)) TOOLTIPS.get(itemMeta).addAll(tr);
TOOLTIPS.put(itemMeta, tr);
}

public static void clearAll() {
Expand All @@ -57,13 +57,14 @@ public static void onLanguageChange() {
@Nullable
public static List<String> getTranslatableFromStack(ItemStack stack) {
if (stack.isEmpty()) return null;
ResourceLocation rl = stack.getItem().getRegistryName();
if (!TOOLTIPS.containsKey(rl)) return null;
ItemMeta itemMeta = new ItemMeta(stack);
if (!TOOLTIPS.containsKey(itemMeta)) return null;

if (CACHED_TOOLTIPS.containsKey(rl)) return CACHED_TOOLTIPS.get(rl);
if (CACHED_TOOLTIPS.containsKey(itemMeta)) return CACHED_TOOLTIPS.get(itemMeta);

CACHED_TOOLTIPS.put(rl,
TOOLTIPS.get(rl).stream().map(LabsTranslate.Translatable::translate).collect(Collectors.toList()));
return CACHED_TOOLTIPS.get(rl);
CACHED_TOOLTIPS.put(itemMeta,
TOOLTIPS.get(itemMeta).stream().map(LabsTranslate.Translatable::translate)
.collect(Collectors.toList()));
return CACHED_TOOLTIPS.get(itemMeta);
}
}

0 comments on commit b0846ce

Please sign in to comment.