Add in some reverse lookup methods for game registry data

This commit is contained in:
cpw committed 2013-07-29 22:05:22 +02:00
1 parent 7d31e4b25e
commit 952218c845
2 files changed
+67

No files matched your search

@@ -52,6 +52,7 @@ import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.LoaderState;
import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.registry.GameRegistry.UniqueIdentifier;
public class GameData {
private static Map<Integer, ItemData> idMap = Maps.newHashMap();
@@ -362,4 +363,28 @@ public class GameData {
}
}
}
static UniqueIdentifier getUniqueName(Block block)
{
if (block == null) return null;
ItemData itemData = idMap.get(block.field_71990_ca);
if (itemData == null || !itemData.isOveridden() || customItemStacks.contains(itemData.getModId(), itemData.getItemType()))
{
return null;
}
return new UniqueIdentifier(itemData.getModId(), itemData.getItemType());
}
static UniqueIdentifier getUniqueName(Item item)
{
if (item == null) return null;
ItemData itemData = idMap.get(item.field_77779_bT);
if (itemData == null || !itemData.isOveridden() || customItemStacks.contains(itemData.getModId(), itemData.getItemType()))
{
return null;
}
return new UniqueIdentifier(itemData.getModId(), itemData.getItemType());
}
}
@@ -430,4 +430,46 @@ public class GameRegistry
}
return null;
}
public static class UniqueIdentifier
{
public final String modId;
public final String name;
UniqueIdentifier(String modId, String name)
{
this.modId = modId;
this.name = name;
}
}
/**
* Look up the mod identifier data for a block.
* Returns null if there is no mod specified mod identifier data, or it is part of a
* custom itemstack definition {@link #registerCustomItemStack}
*
* Note: uniqueness and persistence is only guaranteed by mods using the game registry
* correctly.
*
* @param block to lookup
* @return a {@link UniqueIdentifier} for the block or null
*/
public static UniqueIdentifier findUniqueIdentifierFor(net.minecraft.block.Block block)
{
return GameData.getUniqueName(block);
}
/**
* Look up the mod identifier data for an item.
* Returns null if there is no mod specified mod identifier data, or it is part of a
* custom itemstack definition {@link #registerCustomItemStack}
*
* Note: uniqueness and persistence is only guaranteed by mods using the game registry
* correctly.
*
* @param item to lookup
* @return a {@link UniqueIdentifier} for the item or null
*/
public static UniqueIdentifier findUniqueIdentifierFor(net.minecraft.item.Item item)
{
return GameData.getUniqueName(item);
}
}