summaryrefslogtreecommitdiffstats
path: root/src/BlockID.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/BlockID.cpp')
-rw-r--r--src/BlockID.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/BlockID.cpp b/src/BlockID.cpp
index 06f4232d3..7f0db3cfc 100644
--- a/src/BlockID.cpp
+++ b/src/BlockID.cpp
@@ -26,8 +26,18 @@ class cBlockIDMap
typedef std::map<AString, std::pair<short, short>, Comparator> ItemMap;
public:
+ static bool m_bHasRunInit;
+
cBlockIDMap(void)
{
+ // Dont load items.ini on construct, this will search the wrong path when running as a service.
+ }
+
+
+ void init()
+ {
+ m_bHasRunInit = true;
+
cIniFile Ini;
if (!Ini.ReadFile("items.ini"))
{
@@ -174,7 +184,7 @@ protected:
-
+bool cBlockIDMap::m_bHasRunInit = false;
static cBlockIDMap gsBlockIDMap;
@@ -209,6 +219,10 @@ int BlockStringToType(const AString & a_BlockTypeString)
return res;
}
+ if (!gsBlockIDMap.m_bHasRunInit)
+ {
+ gsBlockIDMap.init();
+ }
return gsBlockIDMap.Resolve(TrimString(a_BlockTypeString));
}
@@ -222,6 +236,11 @@ bool StringToItem(const AString & a_ItemTypeString, cItem & a_Item)
{
ItemName = ItemName.substr(10);
}
+
+ if (!gsBlockIDMap.m_bHasRunInit)
+ {
+ gsBlockIDMap.init();
+ }
return gsBlockIDMap.ResolveItem(ItemName, a_Item);
}
@@ -231,6 +250,10 @@ bool StringToItem(const AString & a_ItemTypeString, cItem & a_Item)
AString ItemToString(const cItem & a_Item)
{
+ if (!gsBlockIDMap.m_bHasRunInit)
+ {
+ gsBlockIDMap.init();
+ }
return gsBlockIDMap.Desolve(a_Item.m_ItemType, a_Item.m_ItemDamage);
}
@@ -240,6 +263,10 @@ AString ItemToString(const cItem & a_Item)
AString ItemTypeToString(short a_ItemType)
{
+ if (!gsBlockIDMap.m_bHasRunInit)
+ {
+ gsBlockIDMap.init();
+ }
return gsBlockIDMap.Desolve(a_ItemType, -1);
}