aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/util/minecraft
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/core/util/minecraft')
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java42
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/LangUtils.java100
2 files changed, 102 insertions, 40 deletions
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java
index 2ed4532d18..d7d611a1e4 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java
@@ -912,46 +912,10 @@ public class ItemUtils {
return CORE.burnables.add(new Pair<Integer, ItemStack>(burn, aBurnable));
}
- /**
- * Quick Block Name Lookup that is friendly to servers and locale.
- */
- private static volatile Map<String, String> mLocaleCache = new HashMap<String, String>();
-
public static String getLocalizedNameOfBlock(BlockPos pos) {
Block block = pos.world.getBlock(pos.xPos, pos.yPos, pos.zPos);
int metaData = pos.world.getBlockMetadata(pos.xPos, pos.yPos, pos.zPos);
- return getLocalizedNameOfBlock(block, metaData);
- }
-
- public synchronized static String getLocalizedNameOfBlock(Block block, int meta) {
- if (block == null || meta < 0) {
- return "Bad Block";
- }
- String mCacheKey = block.getUnlocalizedName() + ":" + meta;
- if (mLocaleCache.containsKey(mCacheKey)) {
- // Recache the key if it's invalid.
- if (mLocaleCache.get(mCacheKey).toLowerCase().contains(".name")) {
- mLocaleCache.remove(mCacheKey);
- String mNew = ItemUtils.simpleMetaStack(block, meta, 1).getDisplayName();
- //Logger.INFO("Re-caching "+mNew+" into locale cache.");
- mLocaleCache.put(mCacheKey, mNew);
- }
- //Logger.INFO("Returning Cached Value.");
- return mLocaleCache.get(mCacheKey);
- } else {
- Item item = Item.getItemFromBlock(block);
- if (item == null) {
- return "Bad Item";
- }
- String unlocalizedName = item.getUnlocalizedName(new ItemStack(block, 1, meta));
- String blockName = StatCollector.translateToLocal(unlocalizedName + ".name");
- if (blockName.toLowerCase().contains(".name")) {
- blockName = ItemUtils.simpleMetaStack(block, meta, 1).getDisplayName();
- }
- mLocaleCache.put(mCacheKey, blockName);
- //Logger.INFO("Cached New Value.");
- return blockName;
- }
+ return LangUtils.getLocalizedNameOfBlock(block, metaData);
}
public static boolean checkForInvalidItems(ItemStack mInput) {
@@ -1346,4 +1310,8 @@ public class ItemUtils {
return false;
}
+ public static String getLocalizedNameOfBlock(Block aBlock, int aMeta) {
+ return LangUtils.getLocalizedNameOfBlock(aBlock, aMeta);
+ }
+
}
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/LangUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/LangUtils.java
index 01d0efac54..0b24e962af 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/LangUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/LangUtils.java
@@ -7,7 +7,13 @@ import java.util.Properties;
import cpw.mods.fml.common.registry.LanguageRegistry;
import gregtech.api.util.GT_LanguageManager;
+import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import net.minecraft.block.Block;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.StatCollector;
public class LangUtils {
@@ -15,7 +21,7 @@ public class LangUtils {
public static boolean rewriteEntryForLanguageRegistry(String aKey, String aNewValue){
return rewriteEntryForLanguageRegistry("en_US", aKey, aNewValue);
}
-
+
@SuppressWarnings("unchecked")
public static boolean rewriteEntryForLanguageRegistry(String aLang, String aKey, String aNewValue){
LanguageRegistry aInstance = LanguageRegistry.instance();
@@ -43,7 +49,7 @@ public class LangUtils {
}
}
catch (IllegalArgumentException | IllegalAccessException e) {
-
+
}
}
return false;
@@ -52,5 +58,93 @@ public class LangUtils {
public static String trans(String aNr, String aEnglish) {
return GT_LanguageManager.addStringLocalization("Interaction_DESCRIPTION_Index_GTPP_" + aNr, aEnglish, false);
}
-
+
+
+
+ /**
+ * Quick Block Name Lookup that is friendly to servers and locale.
+ */
+ private static final Map<String, String> mLocaleCache = new HashMap<String, String>();
+
+ public static String getLocalizedNameOfBlock(Block aBlock, int aMeta) {
+ if (aBlock != null) {
+ return getLocalizedNameOfItemStack(ItemUtils.simpleMetaStack(aBlock, aMeta, 1));
+ }
+ return "Bad Block Name";
+ }
+
+ public static String getLocalizedNameOfItem(Item aItem, int aMeta) {
+ if (aItem != null) {
+ return getLocalizedNameOfItemStack(ItemUtils.simpleMetaStack(aItem, aMeta, 1));
+ }
+ return "Bad Item Name";
+ }
+
+ public static String getLocalizedNameOfItemStack(ItemStack aStack) {
+ String aUnlocalized;
+ if (aStack != null) {
+ aUnlocalized = ItemUtils.getUnlocalizedItemName(aStack)+"."+aStack.getItemDamage()+".name";
+ if (aUnlocalized == null || aUnlocalized.length() <= 0) {
+ return "Bad Locale Data";
+ }
+ String mCacheKey = aUnlocalized;
+ if (mLocaleCache.containsKey(mCacheKey)) {
+ // Recache the key if it's invalid.
+ if (mLocaleCache.get(mCacheKey).toLowerCase().contains(".name") || mLocaleCache.get(mCacheKey).toLowerCase().contains("|")) {
+ mLocaleCache.remove(mCacheKey);
+ String mNew;
+ try {
+ mNew = ("" + StatCollector
+ .translateToLocal(aStack.getItem().getUnlocalizedNameInefficiently(aStack) + ".name"))
+ .trim();
+ if (aStack.hasTagCompound()) {
+ if (aStack.stackTagCompound != null && aStack.stackTagCompound.hasKey("display", 10)) {
+ NBTTagCompound nbttagcompound = aStack.stackTagCompound.getCompoundTag("display");
+
+ if (nbttagcompound.hasKey("Name", 8)) {
+ mNew = nbttagcompound.getString("Name");
+ }
+ }
+ }
+ } catch (Throwable t) {
+ mNew = "ERROR - Empty Stack";
+ }
+ Logger.INFO("Re-caching "+mNew+" into locale cache. Key: "+mCacheKey);
+ mLocaleCache.put(mCacheKey, mNew);
+ }
+ Logger.INFO("Returning Cached Value. Key: "+mCacheKey);
+ return mLocaleCache.get(mCacheKey);
+ }
+ else {
+ String unlocalizedName = aStack.getItem().getUnlocalizedName(aStack);
+ Logger.INFO("Cached New Value. UnlocalName: "+unlocalizedName);
+ String blockName = StatCollector.translateToLocal(unlocalizedName + ".name");
+ Logger.INFO("Cached New Value. TranslatedName: "+unlocalizedName);
+ if (blockName.toLowerCase().contains(".name") || blockName.toLowerCase().contains("|")) {
+ try {
+ blockName = ("" + StatCollector
+ .translateToLocal(aStack.getItem().getUnlocalizedNameInefficiently(aStack) + ".name"))
+ .trim();
+ if (aStack.hasTagCompound()) {
+ if (aStack.stackTagCompound != null && aStack.stackTagCompound.hasKey("display", 10)) {
+ NBTTagCompound nbttagcompound = aStack.stackTagCompound.getCompoundTag("display");
+ if (nbttagcompound.hasKey("Name", 8)) {
+ blockName = nbttagcompound.getString("Name");
+ }
+ }
+ }
+ } catch (Throwable t) {
+ blockName = "ERROR - Empty Stack";
+ }
+ }
+ mLocaleCache.put(mCacheKey, blockName);
+ Logger.INFO("Cached New Value. Key: "+mCacheKey);
+ return blockName;
+ }
+
+ }
+ return "Bad ItemStack Name";
+ }
+
+
}