Skip to content

Commit

Permalink
Do a better job of getting an item's mod name
Browse files Browse the repository at this point in the history
  • Loading branch information
mezz committed Nov 25, 2015
1 parent 4783115 commit 70fa820
Show file tree
Hide file tree
Showing 8 changed files with 108 additions and 36 deletions.
27 changes: 0 additions & 27 deletions src/main/java/mezz/jei/GuiEventHandler.java
Expand Up @@ -3,26 +3,18 @@
import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import org.apache.commons.lang3.text.WordUtils;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;

import net.minecraftforge.client.event.GuiScreenEvent;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.ModContainer;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;

import org.lwjgl.input.Mouse;

import mezz.jei.config.Config;
import mezz.jei.gui.ItemListOverlay;
import mezz.jei.gui.RecipesGui;
import mezz.jei.input.InputHandler;
Expand Down Expand Up @@ -101,25 +93,6 @@ public void onDrawScreenEventPost(@Nonnull GuiScreenEvent.DrawScreenEvent.Post e
}
}

@SubscribeEvent
public void onToolTip(@Nonnull ItemTooltipEvent event) {
if (!Config.tooltipModNameEnabled) {
return;
}

ItemStack itemStack = event.itemStack;
String modName;
String modId = GameRegistry.findUniqueIdentifierFor(itemStack.getItem()).modId;
ModContainer modContainer = FMLCommonHandler.instance().findContainerFor(modId);
if (modContainer != null) {
modName = modContainer.getName();
} else {
modName = modId;
}
modName = WordUtils.capitalize(modName);
event.toolTip.add(EnumChatFormatting.BLUE + modName);
}

@SubscribeEvent
public void onClientTick(@Nonnull TickEvent.ClientTickEvent event) {
if (event.phase == TickEvent.Phase.END) {
Expand Down
15 changes: 14 additions & 1 deletion src/main/java/mezz/jei/ItemRegistry.java
Expand Up @@ -20,6 +20,7 @@

import mezz.jei.api.IItemRegistry;
import mezz.jei.util.Log;
import mezz.jei.util.ModList;
import mezz.jei.util.StackUtil;

class ItemRegistry implements IItemRegistry {
Expand All @@ -30,8 +31,11 @@ class ItemRegistry implements IItemRegistry {
private final ImmutableList<ItemStack> itemList;
@Nonnull
private final ImmutableList<ItemStack> fuels;
@Nonnull
private final ModList modList;

public ItemRegistry() {
public ItemRegistry(@Nonnull ModList modList) {
this.modList = modList;
List<ItemStack> itemList = new ArrayList<>();
List<ItemStack> fuels = new ArrayList<>();

Expand Down Expand Up @@ -59,6 +63,15 @@ public ImmutableList<ItemStack> getFuels() {
return fuels;
}

@Nonnull
@Override
public String getModNameForItem(@Nullable Item item) {
if (item == null) {
return "";
}
return modList.getModNameForItemStack(item);
}

private void addItemAndSubItems(@Nullable Item item, @Nonnull List<ItemStack> itemList, @Nonnull List<ItemStack> fuels) {
if (item == null) {
return;
Expand Down
8 changes: 7 additions & 1 deletion src/main/java/mezz/jei/JustEnoughItems.java
Expand Up @@ -26,6 +26,7 @@
import mezz.jei.gui.GuiHelper;
import mezz.jei.gui.ItemListOverlay;
import mezz.jei.plugins.vanilla.VanillaPlugin;
import mezz.jei.util.ModList;

@Mod(modid = Constants.MOD_ID,
name = Constants.NAME,
Expand Down Expand Up @@ -80,7 +81,9 @@ public void aboutToStart(FMLServerAboutToStartEvent event) {
}
jeiStarted = true;

JEIManager.itemRegistry = new ItemRegistry();
ModList modList = new ModList();

JEIManager.itemRegistry = new ItemRegistry(modList);

ImmutableList.Builder<IRecipeCategory> recipeCategories = ImmutableList.builder();
ImmutableList.Builder<IRecipeHandler> recipeHandlers = ImmutableList.builder();
Expand All @@ -99,6 +102,9 @@ public void aboutToStart(FMLServerAboutToStartEvent event) {
GuiEventHandler guiEventHandler = new GuiEventHandler(itemListOverlay);
MinecraftForge.EVENT_BUS.register(guiEventHandler);
FMLCommonHandler.instance().bus().register(guiEventHandler);

TooltipEventHandler tooltipEventHandler = new TooltipEventHandler();
MinecraftForge.EVENT_BUS.register(tooltipEventHandler);
}

@SubscribeEvent
Expand Down
35 changes: 35 additions & 0 deletions src/main/java/mezz/jei/TooltipEventHandler.java
@@ -0,0 +1,35 @@
package mezz.jei;

import javax.annotation.Nonnull;

import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;

import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

import mezz.jei.api.JEIManager;
import mezz.jei.config.Config;

public class TooltipEventHandler {
@SubscribeEvent
public void onToolTip(@Nonnull ItemTooltipEvent event) {
if (!Config.tooltipModNameEnabled) {
return;
}

ItemStack itemStack = event.itemStack;
if (itemStack == null) {
return;
}

Item item = itemStack.getItem();
if (item == null) {
return;
}

String modName = JEIManager.itemRegistry.getModNameForItem(item);
event.toolTip.add(EnumChatFormatting.BLUE + modName);
}
}
4 changes: 4 additions & 0 deletions src/main/java/mezz/jei/api/IItemRegistry.java
Expand Up @@ -4,6 +4,7 @@

import javax.annotation.Nonnull;

import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

public interface IItemRegistry {
Expand All @@ -16,4 +17,7 @@ public interface IItemRegistry {
@Nonnull
ImmutableList<ItemStack> getFuels();

/** Returns a mod name for the given item. */
@Nonnull
String getModNameForItem(Item item);
}
4 changes: 3 additions & 1 deletion src/main/java/mezz/jei/config/Constants.java
@@ -1,5 +1,7 @@
package mezz.jei.config;

import java.util.Locale;

public class Constants {

// Mod info
Expand All @@ -8,7 +10,7 @@ public class Constants {
public static final String VERSION = "1.0";

// Textures
public static final String RESOURCE_DOMAIN = MOD_ID.toLowerCase();
public static final String RESOURCE_DOMAIN = MOD_ID.toLowerCase(Locale.ENGLISH);
public static final String TEXTURE_GUI_PATH = "textures/gui/";

}
13 changes: 7 additions & 6 deletions src/main/java/mezz/jei/util/ItemStackElement.java
Expand Up @@ -3,12 +3,16 @@
import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import java.util.Locale;

import net.minecraft.item.ItemStack;

import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.ModContainer;
import net.minecraftforge.fml.common.registry.GameRegistry;

import mezz.jei.api.JEIManager;

/**
* For getting properties of ItemStacks efficiently
*/
Expand Down Expand Up @@ -36,12 +40,9 @@ public ItemStackElement(@Nonnull ItemStack itemStack) {
this.localizedName = itemStack.getDisplayName().toLowerCase();

String modId = GameRegistry.findUniqueIdentifierFor(itemStack.getItem()).modId;
ModContainer modContainer = FMLCommonHandler.instance().findContainerFor(modId);
if (modContainer != null) {
this.modName = modId.toLowerCase() + " " + modContainer.getName().toLowerCase();
} else {
this.modName = modId.toLowerCase();
}
String modName = JEIManager.itemRegistry.getModNameForItem(itemStack.getItem());

this.modName = modId.toLowerCase(Locale.ENGLISH) + " " + modName.toLowerCase(Locale.ENGLISH);
}

@Nonnull
Expand Down
38 changes: 38 additions & 0 deletions src/main/java/mezz/jei/util/ModList.java
@@ -0,0 +1,38 @@
package mezz.jei.util;

import javax.annotation.Nonnull;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import org.apache.commons.lang3.text.WordUtils;

import net.minecraft.item.Item;

import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.ModContainer;
import net.minecraftforge.fml.common.registry.GameRegistry;

public class ModList {

private final Map<String, String> modNamesForIds = new HashMap<>();

public ModList() {
Map<String,ModContainer> modMap = Loader.instance().getIndexedModList();
for (Map.Entry<String, ModContainer> modEntry : modMap.entrySet()) {
String lowercaseId = modEntry.getKey().toLowerCase(Locale.ENGLISH);
String modName = modEntry.getValue().getName();
modNamesForIds.put(lowercaseId, modName);
}
}

@Nonnull
public String getModNameForItemStack(@Nonnull Item item) {
String modId = GameRegistry.findUniqueIdentifierFor(item).modId;
String modName = modNamesForIds.get(modId.toLowerCase(Locale.ENGLISH));
if (modName == null) {
modName = WordUtils.capitalize(modId);
}
return modName;
}
}

0 comments on commit 70fa820

Please sign in to comment.