summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Bindings/BindingsProcessor.lua4
-rw-r--r--src/Bindings/LuaState.cpp87
-rw-r--r--src/Bindings/LuaState.h156
-rw-r--r--src/Bindings/ManualBindings_World.cpp2
-rw-r--r--src/Bindings/Plugin.h1
-rw-r--r--src/Bindings/PluginLua.cpp24
-rw-r--r--src/Bindings/PluginLua.h1
-rw-r--r--src/Bindings/PluginManager.cpp19
-rw-r--r--src/Bindings/PluginManager.h2
-rw-r--r--src/BiomeDef.h22
-rw-r--r--src/BlockArea.cpp8
-rw-r--r--src/BlockEntities/ChestEntity.h2
-rw-r--r--src/BlockEntities/HopperEntity.cpp2
-rw-r--r--src/BlockInfo.cpp1
-rw-r--r--src/Blocks/BlockBed.h5
-rw-r--r--src/Blocks/BlockButton.h26
-rw-r--r--src/Blocks/BlockDirt.h41
-rw-r--r--src/Blocks/BlockDoor.h2
-rw-r--r--src/Blocks/BlockFarmland.h13
-rw-r--r--src/Blocks/BlockFire.h19
-rw-r--r--src/Blocks/BlockFluid.h6
-rw-r--r--src/Blocks/BlockHandler.cpp40
-rw-r--r--src/Blocks/BlockHandler.h23
-rw-r--r--src/Blocks/BlockLeaves.h8
-rw-r--r--src/Blocks/BlockPiston.cpp6
-rw-r--r--src/Blocks/BlockRail.h36
-rw-r--r--src/Blocks/BlockSlab.h6
-rw-r--r--src/Blocks/BlockStairs.h6
-rw-r--r--src/Blocks/WorldInterface.h12
-rw-r--r--src/BoundingBox.cpp13
-rw-r--r--src/ByteBuffer.cpp15
-rw-r--r--src/CMakeLists.txt2
-rw-r--r--src/Chunk.cpp20
-rw-r--r--src/ClientHandle.h4
-rw-r--r--src/CompositeChat.cpp23
-rw-r--r--src/Defines.h18
-rw-r--r--src/Entities/Entity.cpp26
-rw-r--r--src/Entities/Entity.h23
-rw-r--r--src/Entities/HangingEntity.h1
-rw-r--r--src/Entities/Player.cpp25
-rw-r--r--src/Generating/CMakeLists.txt2
-rw-r--r--src/Generating/ComposableGenerator.cpp6
-rw-r--r--src/Generating/CompositedHeiGen.h7
-rw-r--r--src/Generating/PieceGenerator.cpp12
-rw-r--r--src/Generating/Prefab.cpp49
-rw-r--r--src/Generating/Prefab.h25
-rw-r--r--src/Generating/PrefabPiecePool.cpp488
-rw-r--r--src/Generating/PrefabPiecePool.h140
-rw-r--r--src/Generating/Prefabs/AlchemistVillagePrefabs.cpp3590
-rw-r--r--src/Generating/Prefabs/AlchemistVillagePrefabs.h15
-rw-r--r--src/Generating/Prefabs/CMakeLists.txt16
-rw-r--r--src/Generating/Prefabs/JapaneseVillagePrefabs.cpp3386
-rw-r--r--src/Generating/Prefabs/JapaneseVillagePrefabs.h15
-rw-r--r--src/Generating/Prefabs/PlainsVillagePrefabs.cpp6118
-rw-r--r--src/Generating/Prefabs/PlainsVillagePrefabs.h15
-rw-r--r--src/Generating/Prefabs/SandFlatRoofVillagePrefabs.cpp1669
-rw-r--r--src/Generating/Prefabs/SandFlatRoofVillagePrefabs.h15
-rw-r--r--src/Generating/Prefabs/SandVillagePrefabs.cpp2307
-rw-r--r--src/Generating/Prefabs/SandVillagePrefabs.h15
-rw-r--r--src/Generating/Prefabs/UnderwaterBasePrefabs.cpp185
-rw-r--r--src/Generating/VillageGen.cpp162
-rw-r--r--src/Generating/VillageGen.h24
-rw-r--r--src/Globals.h16
-rw-r--r--src/Items/ItemBed.h15
-rw-r--r--src/Items/ItemBigFlower.h15
-rw-r--r--src/Items/ItemChest.h75
-rw-r--r--src/Items/ItemDoor.h13
-rw-r--r--src/Items/ItemDye.h2
-rw-r--r--src/Items/ItemHandler.cpp71
-rw-r--r--src/Items/ItemHandler.h20
-rw-r--r--src/Items/ItemMobHead.h33
-rw-r--r--src/LoggerListeners.cpp18
-rw-r--r--src/Mobs/Monster.cpp6
-rw-r--r--src/NetherPortalScanner.cpp12
-rw-r--r--src/NetherPortalScanner.h2
-rw-r--r--src/OSSupport/NetworkInterfaceEnum.cpp13
-rw-r--r--src/Protocol/ChunkDataSerializer.cpp60
-rw-r--r--src/Protocol/ChunkDataSerializer.h2
-rw-r--r--src/Protocol/Protocol17x.cpp2
-rw-r--r--src/Protocol/Protocol18x.cpp5
-rw-r--r--src/Root.cpp26
-rw-r--r--src/Root.h10
-rw-r--r--src/SelfTests.cpp71
-rw-r--r--src/SelfTests.h51
-rw-r--r--src/World.cpp16
-rw-r--r--src/World.h40
-rw-r--r--src/WorldStorage/CMakeLists.txt6
-rw-r--r--src/WorldStorage/SchematicFileSerializer.cpp30
-rw-r--r--src/WorldStorage/WorldStorage.cpp4
89 files changed, 1868 insertions, 17777 deletions
diff --git a/src/Bindings/BindingsProcessor.lua b/src/Bindings/BindingsProcessor.lua
index fba992082..a398f5026 100644
--- a/src/Bindings/BindingsProcessor.lua
+++ b/src/Bindings/BindingsProcessor.lua
@@ -98,7 +98,9 @@ local function OutputLuaStateHelpers(a_Package)
f:write("// This file expects to be included form inside the cLuaState class definition\n")
f:write("\n\n\n\n\n")
for _, item in ipairs(types) do
- f:write("void Push(" .. item.name .. " * a_Value);\n")
+ if not(g_HasCustomPushImplementation[item.name]) then
+ f:write("void Push(" .. item.name .. " * a_Value);\n")
+ end
end
for _, item in ipairs(types) do
f:write("bool GetStackValue(int a_StackPos, Ptr" .. item.lname .. " & a_ReturnedVal);\n")
diff --git a/src/Bindings/LuaState.cpp b/src/Bindings/LuaState.cpp
index 232432a99..a0fdecb8b 100644
--- a/src/Bindings/LuaState.cpp
+++ b/src/Bindings/LuaState.cpp
@@ -211,23 +211,31 @@ void cLuaState::AddPackagePath(const AString & a_PathVariable, const AString & a
-bool cLuaState::LoadFile(const AString & a_FileName)
+bool cLuaState::LoadFile(const AString & a_FileName, bool a_LogWarnings)
{
ASSERT(IsValid());
// Load the file:
int s = luaL_loadfile(m_LuaState, a_FileName.c_str());
- if (ReportErrors(s))
+ if (s != 0)
{
- LOGWARNING("Can't load %s because of an error in file %s", m_SubsystemName.c_str(), a_FileName.c_str());
+ if (a_LogWarnings)
+ {
+ LOGWARNING("Can't load %s because of a load error in file %s: %d (%s)", m_SubsystemName.c_str(), a_FileName.c_str(), s, lua_tostring(m_LuaState, -1));
+ }
+ lua_pop(m_LuaState, 1);
return false;
}
// Execute the globals:
s = lua_pcall(m_LuaState, 0, LUA_MULTRET, 0);
- if (ReportErrors(s))
+ if (s != 0)
{
- LOGWARNING("Error in %s in file %s", m_SubsystemName.c_str(), a_FileName.c_str());
+ if (a_LogWarnings)
+ {
+ LOGWARNING("Can't load %s because of an initialization error in file %s: %d (%s)", m_SubsystemName.c_str(), a_FileName.c_str(), s, lua_tostring(m_LuaState, -1));
+ }
+ lua_pop(m_LuaState, 1);
return false;
}
@@ -446,6 +454,18 @@ void cLuaState::Push(const cPlayer * a_Player)
+void cLuaState::Push(const cLuaState::cRef & a_Ref)
+{
+ ASSERT(IsValid());
+
+ lua_rawgeti(m_LuaState, LUA_REGISTRYINDEX, static_cast<int>(a_Ref));
+ m_NumCurrentFunctionArgs += 1;
+}
+
+
+
+
+
void cLuaState::Push(const HTTPRequest * a_Request)
{
ASSERT(IsValid());
@@ -765,14 +785,17 @@ bool cLuaState::GetStackValue(int a_StackPos, double & a_ReturnedVal)
-bool cLuaState::GetStackValue(int a_StackPos, float & a_ReturnedVal)
+bool cLuaState::GetStackValue(int a_StackPos, eBlockFace & a_ReturnedVal)
{
- if (lua_isnumber(m_LuaState, a_StackPos))
+ if (!lua_isnumber(m_LuaState, a_StackPos))
{
- a_ReturnedVal = static_cast<float>(tolua_tonumber(m_LuaState, a_StackPos, a_ReturnedVal));
- return true;
+ return false;
}
- return false;
+ a_ReturnedVal = static_cast<eBlockFace>(Clamp(
+ static_cast<int>(tolua_tonumber(m_LuaState, a_StackPos, a_ReturnedVal)),
+ static_cast<int>(BLOCK_FACE_MIN), static_cast<int>(BLOCK_FACE_MAX))
+ );
+ return true;
}
@@ -796,6 +819,50 @@ bool cLuaState::GetStackValue(int a_StackPos, eWeather & a_ReturnedVal)
+bool cLuaState::GetStackValue(int a_StackPos, float & a_ReturnedVal)
+{
+ if (lua_isnumber(m_LuaState, a_StackPos))
+ {
+ a_ReturnedVal = static_cast<float>(tolua_tonumber(m_LuaState, a_StackPos, a_ReturnedVal));
+ return true;
+ }
+ return false;
+}
+
+
+
+
+
+cLuaState::cStackValue cLuaState::WalkToValue(const AString & a_Name)
+{
+ // There needs to be at least one value on the stack:
+ ASSERT(lua_gettop(m_LuaState) > 0);
+
+ // Iterate over path and replace the top of the stack with the walked element
+ lua_pushvalue(m_LuaState, -1); // Copy the stack value into the "working area"
+ auto path = StringSplit(a_Name, ".");
+ for (const auto & elem: path)
+ {
+ // If the value is not a table, bail out (error):
+ if (!lua_istable(m_LuaState, -1))
+ {
+ lua_pop(m_LuaState, 1);
+ return cStackValue();
+ }
+
+ // Get the next part of the path:
+ lua_getfield(m_LuaState, -1, elem.c_str());
+
+ // Remove the previous value from the stack (keep only the new one):
+ lua_remove(m_LuaState, -2);
+ } // for elem - path[]
+ return std::move(cStackValue(*this));
+}
+
+
+
+
+
bool cLuaState::CallFunction(int a_NumResults)
{
ASSERT (m_NumCurrentFunctionArgs >= 0); // A function must be pushed to stack first
diff --git a/src/Bindings/LuaState.h b/src/Bindings/LuaState.h
index 8a3411d30..cc8214646 100644
--- a/src/Bindings/LuaState.h
+++ b/src/Bindings/LuaState.h
@@ -78,11 +78,14 @@ public:
bool IsValid(void) const {return (m_Ref != LUA_REFNIL); }
/** Allows to use this class wherever an int (i. e. ref) is to be used */
- operator int(void) const { return m_Ref; }
-
+ explicit operator int(void) const { return m_Ref; }
+
protected:
cLuaState * m_LuaState;
int m_Ref;
+
+ // Remove the copy-constructor:
+ cRef(const cRef &) = delete;
} ;
@@ -98,6 +101,12 @@ public:
{
}
+ cTableRef(const cRef & a_TableRef, const char * a_FnName) :
+ m_TableRef(static_cast<int>(a_TableRef)),
+ m_FnName(a_FnName)
+ {
+ }
+
int GetTableRef(void) const { return m_TableRef; }
const char * GetFnName(void) const { return m_FnName; }
} ;
@@ -111,6 +120,61 @@ public:
static const cRet Return; // Use this constant to delimit function args from return values for cLuaState::Call()
+ /** A RAII class for values pushed onto the Lua stack.
+ Will pop the value off the stack in the destructor. */
+ class cStackValue
+ {
+ public:
+ cStackValue(void):
+ m_LuaState(nullptr)
+ {
+ }
+
+ cStackValue(cLuaState & a_LuaState):
+ m_LuaState(a_LuaState)
+ {
+ m_StackLen = lua_gettop(a_LuaState);
+ }
+
+ cStackValue(cStackValue && a_Src):
+ m_LuaState(nullptr),
+ m_StackLen(-1)
+ {
+ std::swap(m_LuaState, a_Src.m_LuaState);
+ std::swap(m_StackLen, a_Src.m_StackLen);
+ }
+
+ ~cStackValue()
+ {
+ if (m_LuaState != nullptr)
+ {
+ auto top = lua_gettop(m_LuaState);
+ ASSERT(m_StackLen == top);
+ lua_pop(m_LuaState, 1);
+ }
+ }
+
+ void Set(cLuaState & a_LuaState)
+ {
+ m_LuaState = a_LuaState;
+ m_StackLen = lua_gettop(a_LuaState);
+ }
+
+ bool IsValid(void) const
+ {
+ return (m_LuaState != nullptr);
+ }
+
+ protected:
+ lua_State * m_LuaState;
+
+ int m_StackLen;
+
+ // Remove the copy-constructor:
+ cStackValue(const cStackValue &) = delete;
+ };
+
+
/** Creates a new instance. The LuaState is not initialized.
a_SubsystemName is used for reporting problems in the console, it is "plugin %s" for plugins,
or "LuaScript" for the cLuaScript template
@@ -151,10 +215,9 @@ public:
void AddPackagePath(const AString & a_PathVariable, const AString & a_Path);
/** Loads the specified file
- Returns false and logs a warning to the console if not successful (but the LuaState is kept open).
- m_SubsystemName is displayed in the warning log message.
- */
- bool LoadFile(const AString & a_FileName);
+ Returns false and optionally logs a warning to the console if not successful (but the LuaState is kept open).
+ m_SubsystemName is displayed in the warning log message. */
+ bool LoadFile(const AString & a_FileName, bool a_LogWarnings = true);
/** Returns true if a_FunctionName is a valid Lua function that can be called */
bool HasFunction(const char * a_FunctionName);
@@ -169,6 +232,7 @@ public:
void Push(const char * a_Value);
void Push(const cItems & a_Items);
void Push(const cPlayer * a_Player);
+ void Push(const cRef & a_Ref);
void Push(const HTTPRequest * a_Request);
void Push(const HTTPTemplateRequest * a_Request);
void Push(const Vector3d & a_Vector);
@@ -178,22 +242,24 @@ public:
// Push a simple value onto the stack (keep alpha-sorted):
void Push(bool a_Value);
+ void Push(cEntity * a_Entity);
+ void Push(cLuaServerHandle * a_ServerHandle);
+ void Push(cLuaTCPLink * a_TCPLink);
+ void Push(cLuaUDPEndpoint * a_UDPEndpoint);
void Push(double a_Value);
void Push(int a_Value);
void Push(void * a_Ptr);
void Push(std::chrono::milliseconds a_time);
- void Push(cLuaServerHandle * a_ServerHandle);
- void Push(cLuaTCPLink * a_TCPLink);
- void Push(cLuaUDPEndpoint * a_UDPEndpoint);
// GetStackValue() retrieves the value at a_StackPos, if it is a valid type. If not, a_Value is unchanged.
// Returns whether value was changed
- // Enum values are clamped to their allowed range.
+ // Enum values are checked for their allowed values and fail if the value is not assigned.
bool GetStackValue(int a_StackPos, AString & a_Value);
bool GetStackValue(int a_StackPos, bool & a_Value);
bool GetStackValue(int a_StackPos, cPluginManager::CommandResult & a_Result);
bool GetStackValue(int a_StackPos, cRef & a_Ref);
bool GetStackValue(int a_StackPos, double & a_Value);
+ bool GetStackValue(int a_StackPos, eBlockFace & a_Value);
bool GetStackValue(int a_StackPos, eWeather & a_Value);
bool GetStackValue(int a_StackPos, float & a_ReturnedVal);
@@ -202,21 +268,53 @@ public:
bool GetStackValue(int a_StackPos, T & a_ReturnedVal, typename std::enable_if<std::is_integral<T>::value>::type * unused = nullptr)
{
UNUSED(unused);
- if (lua_isnumber(m_LuaState, a_StackPos))
+ if (!lua_isnumber(m_LuaState, a_StackPos)) // Also accepts strings representing a number: http://pgl.yoyo.org/luai/i/lua_isnumber
{
- lua_Number Val = tolua_tonumber(m_LuaState, a_StackPos, a_ReturnedVal);
- if (Val > std::numeric_limits<T>::max())
- {
- return false;
- }
- if (Val < std::numeric_limits<T>::min())
- {
- return false;
- }
- a_ReturnedVal = static_cast<T>(Val);
- return true;
+ return false;
+ }
+ lua_Number Val = lua_tonumber(m_LuaState, a_StackPos);
+ if (Val > std::numeric_limits<T>::max())
+ {
+ return false;
+ }
+ if (Val < std::numeric_limits<T>::min())
+ {
+ return false;
+ }
+ a_ReturnedVal = static_cast<T>(Val);
+ return true;
+ }
+
+ /** Pushes the named value in the table at the top of the stack.
+ a_Name may be a path containing multiple table levels, such as "_G.cChatColor.Blue".
+ If the value is found, it is pushed on top of the stack and the returned cStackValue is valid.
+ If the value is not found, the stack is unchanged and the returned cStackValue is invalid. */
+ cStackValue WalkToValue(const AString & a_Name);
+
+ /** Retrieves the named value in the table at the top of the Lua stack.
+ a_Name may be a path containing multiple table levels, such as "_G.cChatColor.Blue".
+ Returns true if the value was successfully retrieved, false on error. */
+ template <typename T> bool GetNamedValue(const AString & a_Name, T & a_Value)
+ {
+ auto stk = WalkToValue(a_Name);
+ if (!stk.IsValid())
+ {
+ // Name not found
+ return false;
}
- return false;
+ return GetStackValue(-1, a_Value);
+ }
+
+ /** Retrieves the named global value. a_Name may be a path containing multiple table levels, such as "_G.cChatColor.Blue".
+ Returns true if the value was successfully retrieved, false on error. */
+ template <typename T> bool GetNamedGlobal(const AString & a_Name, T & a_Value)
+ {
+ // Push the globals table onto the stack and make it RAII-removed:
+ lua_getglobal(m_LuaState, "_G");
+ cStackValue stk(*this);
+
+ // Get the named global:
+ return GetNamedValue(a_Name, a_Value);
}
// Include the auto-generated Push and GetStackValue() functions:
@@ -229,12 +327,12 @@ public:
template <typename FnT, typename... Args>
bool Call(const FnT & a_Function, Args &&... args)
{
- if (!PushFunction(a_Function))
+ if (!PushFunction(std::forward<const FnT &>(a_Function)))
{
// Pushing the function failed
return false;
}
- return PushCallPop(args...);
+ return PushCallPop(std::forward<Args>(args)...);
}
/** Retrieves a list of values from the Lua stack, starting at the specified index. */
@@ -343,10 +441,10 @@ protected:
/** Variadic template recursor: More params to push. Push them and recurse. */
template <typename T, typename... Args>
- inline bool PushCallPop(T a_Param, Args &&... args)
+ inline bool PushCallPop(T && a_Param, Args &&... args)
{
- Push(a_Param);
- return PushCallPop(args...);
+ Push(std::forward<T>(a_Param));
+ return PushCallPop(std::forward<Args>(args)...);
}
/** Variadic template terminator: If there's nothing more to push, but return values to collect, call the function and collect the returns. */
@@ -363,7 +461,7 @@ protected:
}
// Collect the return values:
- GetStackValues(-NumReturns, args...);
+ GetStackValues(-NumReturns, std::forward<Args>(args)...);
lua_pop(m_LuaState, NumReturns);
// All successful:
diff --git a/src/Bindings/ManualBindings_World.cpp b/src/Bindings/ManualBindings_World.cpp
index ddbebce78..d9590de33 100644
--- a/src/Bindings/ManualBindings_World.cpp
+++ b/src/Bindings/ManualBindings_World.cpp
@@ -490,7 +490,7 @@ static int tolua_cWorld_ScheduleTask(lua_State * tolua_S)
auto task = std::make_shared<cLuaScheduledWorldTask>(*Plugin, FnRef);
Plugin->AddResettable(task);
- World->ScheduleTask(DelayTicks, task);
+ World->ScheduleTask(DelayTicks, static_cast<cWorld::cTaskPtr>(task));
return 0;
}
diff --git a/src/Bindings/Plugin.h b/src/Bindings/Plugin.h
index 1330bca0d..2fdf73a65 100644
--- a/src/Bindings/Plugin.h
+++ b/src/Bindings/Plugin.h
@@ -64,6 +64,7 @@ public:
virtual bool OnHandshake (cClientHandle & a_Client, const AString & a_Username) = 0;
virtual bool OnHopperPullingItem (cWorld & a_World, cHopperEntity & a_Hopper, int a_DstSlotNum, cBlockEntityWithItems & a_SrcEntity, int a_SrcSlotNum) = 0;
virtual bool OnHopperPushingItem (cWorld & a_World, cHopperEntity & a_Hopper, int a_SrcSlotNum, cBlockEntityWithItems & a_DstEntity, int a_DstSlotNum) = 0;
+ virtual bool OnKilled (cEntity & a_Victim, TakeDamageInfo & a_TDI, AString & a_DeathMessage) = 0;
virtual bool OnKilling (cEntity & a_Victim, cEntity * a_Killer, TakeDamageInfo & a_TDI) = 0;
virtual bool OnLogin (cClientHandle & a_Client, int a_ProtocolVersion, const AString & a_Username) = 0;
virtual bool OnPlayerAnimation (cPlayer & a_Player, int a_Animation) = 0;
diff --git a/src/Bindings/PluginLua.cpp b/src/Bindings/PluginLua.cpp
index d3ffcd0f4..9be4e0eb4 100644
--- a/src/Bindings/PluginLua.cpp
+++ b/src/Bindings/PluginLua.cpp
@@ -750,6 +750,30 @@ bool cPluginLua::OnHopperPushingItem(cWorld & a_World, cHopperEntity & a_Hopper,
+bool cPluginLua::OnKilled(cEntity & a_Victim, TakeDamageInfo & a_TDI, AString & a_DeathMessage)
+{
+ cCSLock Lock(m_CriticalSection);
+ if (!m_LuaState.IsValid())
+ {
+ return false;
+ }
+ bool res = false;
+ cLuaRefs & Refs = m_HookMap[cPluginManager::HOOK_KILLED];
+ for (cLuaRefs::iterator itr = Refs.begin(), end = Refs.end(); itr != end; ++itr)
+ {
+ m_LuaState.Call((int)(**itr), &a_Victim, &a_TDI, a_DeathMessage, cLuaState::Return, res, a_DeathMessage);
+ if (res)
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+
+
+
+
bool cPluginLua::OnKilling(cEntity & a_Victim, cEntity * a_Killer, TakeDamageInfo & a_TDI)
{
cCSLock Lock(m_CriticalSection);
diff --git a/src/Bindings/PluginLua.h b/src/Bindings/PluginLua.h
index a763cdfdf..7de70ef1f 100644
--- a/src/Bindings/PluginLua.h
+++ b/src/Bindings/PluginLua.h
@@ -123,6 +123,7 @@ public:
virtual bool OnHandshake (cClientHandle & a_Client, const AString & a_Username) override;
virtual bool OnHopperPullingItem (cWorld & a_World, cHopperEntity & a_Hopper, int a_DstSlotNum, cBlockEntityWithItems & a_SrcEntity, int a_SrcSlotNum) override;
virtual bool OnHopperPushingItem (cWorld & a_World, cHopperEntity & a_Hopper, int a_SrcSlotNum, cBlockEntityWithItems & a_DstEntity, int a_DstSlotNum) override;
+ virtual bool OnKilled (cEntity & a_Victim, TakeDamageInfo & a_TDI, AString & a_DeathMessage) override;
virtual bool OnKilling (cEntity & a_Victim, cEntity * a_Killer, TakeDamageInfo & a_TDI) override;
virtual bool OnLogin (cClientHandle & a_Client, int a_ProtocolVersion, const AString & a_Username) override;
virtual bool OnPlayerAnimation (cPlayer & a_Player, int a_Animation) override;
diff --git a/src/Bindings/PluginManager.cpp b/src/Bindings/PluginManager.cpp
index 5b6bec728..712c385c7 100644
--- a/src/Bindings/PluginManager.cpp
+++ b/src/Bindings/PluginManager.cpp
@@ -675,6 +675,25 @@ bool cPluginManager::CallHookHopperPushingItem(cWorld & a_World, cHopperEntity &
+bool cPluginManager::CallHookKilled(cEntity & a_Victim, TakeDamageInfo & a_TDI, AString & a_DeathMessage)
+{
+ FIND_HOOK(HOOK_KILLED);
+ VERIFY_HOOK;
+
+ for (PluginList::iterator itr = Plugins->second.begin(); itr != Plugins->second.end(); ++itr)
+ {
+ if ((*itr)->OnKilled(a_Victim, a_TDI, a_DeathMessage))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+
+
+
+
bool cPluginManager::CallHookKilling(cEntity & a_Victim, cEntity * a_Killer, TakeDamageInfo & a_TDI)
{
FIND_HOOK(HOOK_KILLING);
diff --git a/src/Bindings/PluginManager.h b/src/Bindings/PluginManager.h
index 6bcef87bf..153f4996d 100644
--- a/src/Bindings/PluginManager.h
+++ b/src/Bindings/PluginManager.h
@@ -94,6 +94,7 @@ public:
HOOK_HANDSHAKE,
HOOK_HOPPER_PULLING_ITEM,
HOOK_HOPPER_PUSHING_ITEM,
+ HOOK_KILLED,
HOOK_KILLING,
HOOK_LOGIN,
HOOK_PLAYER_BREAKING_BLOCK,
@@ -211,6 +212,7 @@ public:
bool CallHookHandshake (cClientHandle & a_ClientHandle, const AString & a_Username);
bool CallHookHopperPullingItem (cWorld & a_World, cHopperEntity & a_Hopper, int a_DstSlotNum, cBlockEntityWithItems & a_SrcEntity, int a_SrcSlotNum);
bool CallHookHopperPushingItem (cWorld & a_World, cHopperEntity & a_Hopper, int a_SrcSlotNum, cBlockEntityWithItems & a_DstEntity, int a_DstSlotNum);
+ bool CallHookKilled (cEntity & a_Victim, TakeDamageInfo & a_TDI, AString & a_DeathMessage);
bool CallHookKilling (cEntity & a_Victim, cEntity * a_Killer, TakeDamageInfo & a_TDI);
bool CallHookLogin (cClientHandle & a_Client, int a_ProtocolVersion, const AString & a_Username);
bool CallHookPlayerAnimation (cPlayer & a_Player, int a_Animation);
diff --git a/src/BiomeDef.h b/src/BiomeDef.h
index cda12556a..32d3a5cfd 100644
--- a/src/BiomeDef.h
+++ b/src/BiomeDef.h
@@ -104,6 +104,28 @@ enum EMCSBiome
biMaxVariantBiome = biNumVariantBiomes - 1, // The maximum biome value
} ;
+// tolua_end
+
+
+
+
+
+/** Hash for EMCSBiome, so that it can be used in std::unordered_map etc. */
+struct BiomeHasher
+{
+public:
+ std::size_t operator() (const EMCSBiome a_Biome) const
+ {
+ return static_cast<std::size_t>(a_Biome);
+ }
+};
+
+
+
+
+
+// tolua_begin
+
/** Translates a biome string to biome enum. Takes either a number or a biome alias (built-in). Returns biInvalidBiome on failure. */
extern EMCSBiome StringToBiome(const AString & a_BiomeString);
diff --git a/src/BlockArea.cpp b/src/BlockArea.cpp
index 938351207..eb25d624d 100644
--- a/src/BlockArea.cpp
+++ b/src/BlockArea.cpp
@@ -336,6 +336,12 @@ void cBlockArea::Create(int a_SizeX, int a_SizeY, int a_SizeZ, int a_DataTypes)
);
return;
}
+
+ // Warn if the height is too much, but proceed with the creation:
+ if (a_SizeY > cChunkDef::Height)
+ {
+ LOGWARNING("Creating a cBlockArea with height larger than world height (%d). Continuing, but the area may misbehave.", a_SizeY);
+ }
Clear();
int BlockCount = a_SizeX * a_SizeY * a_SizeZ;
@@ -540,7 +546,7 @@ bool cBlockArea::Write(cForEachChunkProvider * a_ForEachChunkProvider, int a_Min
else if (a_MinBlockY > cChunkDef::Height - m_Size.y)
{
LOGWARNING("%s: MinBlockY + m_SizeY more than chunk height, adjusting to chunk height", __FUNCTION__);
- a_MinBlockY = cChunkDef::Height - m_Size.y;
+ a_MinBlockY = std::max(cChunkDef::Height - m_Size.y, 0);
}
return a_ForEachChunkProvider->WriteBlockArea(*this, a_MinBlockX, a_MinBlockY, a_MinBlockZ, a_DataTypes);
diff --git a/src/BlockEntities/ChestEntity.h b/src/BlockEntities/ChestEntity.h
index 8ead8bda0..6eb72fc77 100644
--- a/src/BlockEntities/ChestEntity.h
+++ b/src/BlockEntities/ChestEntity.h
@@ -55,7 +55,7 @@ private:
int m_NumActivePlayers;
/** cItemGrid::cListener overrides: */
- virtual void OnSlotChanged(cItemGrid * a_Grid, int a_SlotNum)
+ virtual void OnSlotChanged(cItemGrid * a_Grid, int a_SlotNum) override
{
UNUSED(a_SlotNum);
ASSERT(a_Grid == &m_Contents);
diff --git a/src/BlockEntities/HopperEntity.cpp b/src/BlockEntities/HopperEntity.cpp
index 203f47534..662212c4d 100644
--- a/src/BlockEntities/HopperEntity.cpp
+++ b/src/BlockEntities/HopperEntity.cpp
@@ -507,7 +507,7 @@ bool cHopperEntity::MoveItemsFromSlot(cBlockEntityWithItems & a_Entity, int a_Sl
auto PreviousCount = m_Contents.GetSlot(i).m_ItemCount;
m_Contents.ChangeSlotCount(i, 1);
- if (PreviousCount == m_Contents.GetSlot(i).m_ItemCount + 1)
+ if (PreviousCount + 1 == m_Contents.GetSlot(i).m_ItemCount)
{
// Successfully added a new item. (Failure condition consistutes: stack full)
return true;
diff --git a/src/BlockInfo.cpp b/src/BlockInfo.cpp
index 04d214b01..c0ae5e945 100644
--- a/src/BlockInfo.cpp
+++ b/src/BlockInfo.cpp
@@ -204,7 +204,6 @@ void cBlockInfo::Initialize(cBlockInfoArray & a_Info)
a_Info[E_BLOCK_ENDER_CHEST ].m_Transparent = true;
a_Info[E_BLOCK_END_PORTAL ].m_Transparent = true;
a_Info[E_BLOCK_END_PORTAL_FRAME ].m_Transparent = true;
- a_Info[E_BLOCK_FARMLAND ].m_Transparent = true;
a_Info[E_BLOCK_FENCE ].m_Transparent = true;
a_Info[E_BLOCK_FENCE_GATE ].m_Transparent = true;
a_Info[E_BLOCK_FIRE ].m_Transparent = true;
diff --git a/src/Blocks/BlockBed.h b/src/Blocks/BlockBed.h
index 57ffebfca..905c0ea76 100644
--- a/src/Blocks/BlockBed.h
+++ b/src/Blocks/BlockBed.h
@@ -36,11 +36,6 @@ public:
a_Pickups.push_back(cItem(E_ITEM_BED, 1, 0));
}
- virtual bool CanDirtGrowGrass(NIBBLETYPE a_Meta) override
- {
- return true;
- }
-
// Bed specific helper functions
static NIBBLETYPE RotationToMetaData(double a_Rotation)
diff --git a/src/Blocks/BlockButton.h b/src/Blocks/BlockButton.h
index 154cd610e..3558729bb 100644
--- a/src/Blocks/BlockButton.h
+++ b/src/Blocks/BlockButton.h
@@ -19,15 +19,35 @@ public:
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ) override
{
+ NIBBLETYPE Meta = a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ);
+
+ double x(a_BlockX);
+ double y(a_BlockY);
+ double z(a_BlockZ);
+
+ // If button is already on do nothing
+ if (Meta & 0x08)
+ {
+ return;
+ }
+
// Set p the ON bit to on
- NIBBLETYPE Meta = (a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) | 0x08);
+ Meta |= 0x08;
a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta);
a_WorldInterface.WakeUpSimulators(a_BlockX, a_BlockY, a_BlockZ);
- a_WorldInterface.GetBroadcastManager().BroadcastSoundEffect("random.click", (double)a_BlockX, (double)a_BlockY, (double)a_BlockZ, 0.5f, (Meta & 0x08) ? 0.6f : 0.5f);
+ a_WorldInterface.GetBroadcastManager().BroadcastSoundEffect("random.click", x, y, z, 0.5f, 0.6f);
// Queue a button reset (unpress)
- a_ChunkInterface.QueueSetBlock(a_BlockX, a_BlockY, a_BlockZ, m_BlockType, (a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) & 0x07), m_BlockType == E_BLOCK_STONE_BUTTON ? 20 : 30, m_BlockType, a_WorldInterface);
+ int delay = (m_BlockType == E_BLOCK_STONE_BUTTON) ? 20 : 30;
+
+ a_ChunkInterface.QueueSetBlock(a_BlockX, a_BlockY, a_BlockZ, m_BlockType, (a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) & 0x07), delay, m_BlockType, a_WorldInterface);
+
+ a_Player->GetWorld()->ScheduleTask(delay, [x, y, z](cWorld & a_World)
+ {
+ a_World.BroadcastSoundEffect("random.click", x, y, z, 0.5f, 0.5f);
+ });
+
}
diff --git a/src/Blocks/BlockDirt.h b/src/Blocks/BlockDirt.h
index 32512a2ef..3d671d218 100644
--- a/src/Blocks/BlockDirt.h
+++ b/src/Blocks/BlockDirt.h
@@ -3,6 +3,7 @@
#include "BlockHandler.h"
#include "../FastRandom.h"
+#include "../BlockInfo.h"
#include "Root.h"
#include "Bindings/PluginManager.h"
@@ -39,19 +40,6 @@ public:
{
return;
}
-
- // Grass becomes dirt if there is something on top of it:
- if (a_RelY < cChunkDef::Height - 1)
- {
- BLOCKTYPE Above;
- NIBBLETYPE AboveMeta;
- a_Chunk.GetBlockTypeMeta(a_RelX, a_RelY + 1, a_RelZ, Above, AboveMeta);
- if (!cBlockInfo::GetHandler(Above)->CanDirtGrowGrass(AboveMeta))
- {
- a_Chunk.FastSetBlock(a_RelX, a_RelY, a_RelZ, E_BLOCK_DIRT, E_META_DIRT_NORMAL);
- return;
- }
- }
// Make sure that there is enough light at the source block to spread
if (!a_Chunk.GetWorld()->IsChunkLighted(a_Chunk.GetPosX(), a_Chunk.GetPosZ()))
@@ -59,10 +47,24 @@ public:
a_Chunk.GetWorld()->QueueLightChunk(a_Chunk.GetPosX(), a_Chunk.GetPosZ());
return;
}
- else if ((a_RelY < cChunkDef::Height - 1) && std::max(a_Chunk.GetBlockLight(a_RelX, a_RelY + 1, a_RelZ), a_Chunk.GetTimeAlteredLight(a_Chunk.GetSkyLight(a_RelX, a_RelY + 1, a_RelZ))) < 9)
+ else if ((a_RelY < cChunkDef::Height - 1))
{
+ BLOCKTYPE above = a_Chunk.GetBlock(a_RelX, a_RelY + 1, a_RelZ);
+
+ // Grass turns back to dirt when the block above is not transparent
+ if (!cBlockInfo::IsTransparent(above))
+ {
+ a_Chunk.FastSetBlock(a_RelX, a_RelY, a_RelZ, E_BLOCK_DIRT, E_META_DIRT_NORMAL);
+ return;
+ }
+
+ NIBBLETYPE light = std::max(a_Chunk.GetBlockLight(a_RelX, a_RelY + 1, a_RelZ), a_Chunk.GetTimeAlteredLight(a_Chunk.GetSkyLight(a_RelX, a_RelY + 1, a_RelZ)));
// Source block is not bright enough to spread
- return;
+ if (light < 9)
+ {
+ return;
+ }
+
}
// Grass spreads to adjacent dirt blocks:
@@ -95,11 +97,10 @@ public:
// Not a regular dirt block
continue;
}
-
- BLOCKTYPE AboveDest;
- NIBBLETYPE AboveMeta;
- Chunk->GetBlockTypeMeta(BlockX, BlockY + 1, BlockZ, AboveDest, AboveMeta);
- if (cBlockInfo::GetHandler(AboveDest)->CanDirtGrowGrass(AboveMeta))
+ BLOCKTYPE above = a_Chunk.GetBlock(BlockX, BlockY + 1, BlockZ);
+ NIBBLETYPE light = std::max(a_Chunk.GetBlockLight(BlockX, BlockY + 1, BlockZ), a_Chunk.GetTimeAlteredLight(a_Chunk.GetSkyLight(BlockX, BlockY + 1, BlockZ)));
+ // Grass does not spread to blocks with a light level less than 5
+ if ((light > 4) && cBlockInfo::IsTransparent(above))
{
if (!cRoot::Get()->GetPluginManager()->CallHookBlockSpread(*Chunk->GetWorld(), Chunk->GetPosX() * cChunkDef::Width + BlockX, BlockY, Chunk->GetPosZ() * cChunkDef::Width + BlockZ, ssGrassSpread))
{
diff --git a/src/Blocks/BlockDoor.h b/src/Blocks/BlockDoor.h
index 9332e6728..4773e6f0a 100644
--- a/src/Blocks/BlockDoor.h
+++ b/src/Blocks/BlockDoor.h
@@ -242,7 +242,7 @@ public:
if ((Meta & 0x08) != 0)
{
// The coords are pointing at the top part of the door
- if (a_BlockX > 0)
+ if (a_BlockY > 0)
{
NIBBLETYPE DownMeta = a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY - 1, a_BlockZ);
return static_cast<NIBBLETYPE>((DownMeta & 0x07) | 0x08 | (Meta << 4));
diff --git a/src/Blocks/BlockFarmland.h b/src/Blocks/BlockFarmland.h
index 23a7392da..8d43632ff 100644
--- a/src/Blocks/BlockFarmland.h
+++ b/src/Blocks/BlockFarmland.h
@@ -65,13 +65,22 @@ public:
}
}
- virtual void OnNeighborChanged(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ) override
+
+ virtual void OnNeighborChanged(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_WhichNeighbor) override
{
+ // Don't care about any neighbor but the one above us (fix recursion loop in #2213):
+ if (a_WhichNeighbor != BLOCK_FACE_YP)
+ {
+ return;
+ }
+
+ // Don't care about anything if we're at the top of the world:
if (a_BlockY >= cChunkDef::Height)
{
return;
}
+ // Check whether we should revert to dirt:
BLOCKTYPE UpperBlock = a_ChunkInterface.GetBlock(a_BlockX, a_BlockY + 1, a_BlockZ);
if (cBlockInfo::FullyOccupiesVoxel(UpperBlock))
{
@@ -79,11 +88,13 @@ public:
}
}
+
virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override
{
a_Pickups.Add(E_BLOCK_DIRT, 1, 0); // Reset meta
}
+
bool IsWaterInNear(cChunk & a_Chunk, int a_RelX, int a_RelY, int a_RelZ)
{
if (a_Chunk.GetWorld()->IsWeatherWetAt(a_RelX, a_RelZ))
diff --git a/src/Blocks/BlockFire.h b/src/Blocks/BlockFire.h
index 2038df94b..3f75455da 100644
--- a/src/Blocks/BlockFire.h
+++ b/src/Blocks/BlockFire.h
@@ -121,6 +121,20 @@ public:
}
}
+ int PortalHeight = MaxY - Y - 1;
+ int PortalWidth = XZP - XZM + 1;
+ if ((PortalHeight < a_WorldInterface.GetMinNetherPortalHeight()) || (PortalHeight > a_WorldInterface.GetMaxNetherPortalHeight()))
+ {
+ // The portal isn't high enough, or is too high
+ return;
+ }
+
+ if ((PortalWidth < a_WorldInterface.GetMinNetherPortalWidth()) || (PortalWidth > a_WorldInterface.GetMaxNetherPortalWidth()))
+ {
+ // The portal isn't wide enough, or is too wide
+ return;
+ }
+
for (int Height = Y + 1; Height <= MaxY - 1; Height++) // Loop through boundary to set portal blocks
{
for (int Width = XZM; Width <= XZP; Width++)
@@ -217,6 +231,11 @@ public:
return (FoundFrameZP && FoundFrameZM);
}
+
+ virtual bool DoesIgnoreBuildCollision(cPlayer * a_Player, NIBBLETYPE a_Meta) override
+ {
+ return true;
+ }
};
diff --git a/src/Blocks/BlockFluid.h b/src/Blocks/BlockFluid.h
index 2823baedc..58b3ce042 100644
--- a/src/Blocks/BlockFluid.h
+++ b/src/Blocks/BlockFluid.h
@@ -49,12 +49,6 @@ public:
}
super::Check(a_ChunkInterface, a_PluginInterface, a_RelX, a_RelY, a_RelZ, a_Chunk);
}
-
-
- virtual bool CanDirtGrowGrass(NIBBLETYPE a_Meta) override
- {
- return false;
- }
} ;
diff --git a/src/Blocks/BlockHandler.cpp b/src/Blocks/BlockHandler.cpp
index 452cc94a5..412fc3aeb 100644
--- a/src/Blocks/BlockHandler.cpp
+++ b/src/Blocks/BlockHandler.cpp
@@ -389,12 +389,12 @@ void cBlockHandler::OnDestroyedByPlayer(cChunkInterface & a_ChunkInterface, cWor
void cBlockHandler::OnPlaced(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta)
{
// Notify the neighbors
- NeighborChanged(a_ChunkInterface, a_BlockX - 1, a_BlockY, a_BlockZ);
- NeighborChanged(a_ChunkInterface, a_BlockX + 1, a_BlockY, a_BlockZ);
- NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ);
- NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ);
- NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ - 1);
- NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ + 1);
+ NeighborChanged(a_ChunkInterface, a_BlockX - 1, a_BlockY, a_BlockZ, BLOCK_FACE_XP);
+ NeighborChanged(a_ChunkInterface, a_BlockX + 1, a_BlockY, a_BlockZ, BLOCK_FACE_XM);
+ NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ, BLOCK_FACE_YP);
+ NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ, BLOCK_FACE_YM);
+ NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ - 1, BLOCK_FACE_ZP);
+ NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ + 1, BLOCK_FACE_ZM);
}
@@ -404,29 +404,30 @@ void cBlockHandler::OnPlaced(cChunkInterface & a_ChunkInterface, cWorldInterface
void cBlockHandler::OnDestroyed(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, int a_BlockX, int a_BlockY, int a_BlockZ)
{
// Notify the neighbors
- NeighborChanged(a_ChunkInterface, a_BlockX - 1, a_BlockY, a_BlockZ);
- NeighborChanged(a_ChunkInterface, a_BlockX + 1, a_BlockY, a_BlockZ);
- NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ);
- NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ);
- NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ - 1);
- NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ + 1);
+ NeighborChanged(a_ChunkInterface, a_BlockX - 1, a_BlockY, a_BlockZ, BLOCK_FACE_XP);
+ NeighborChanged(a_ChunkInterface, a_BlockX + 1, a_BlockY, a_BlockZ, BLOCK_FACE_XM);
+ NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ, BLOCK_FACE_YP);
+ NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ, BLOCK_FACE_YM);
+ NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ - 1, BLOCK_FACE_ZP);
+ NeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ + 1, BLOCK_FACE_ZM);
}
-void cBlockHandler::NeighborChanged(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ)
+void cBlockHandler::NeighborChanged(cChunkInterface & a_ChunkInterface, int a_NeighborX, int a_NeighborY, int a_NeighborZ, eBlockFace a_WhichNeighbor)
{
- if ((a_BlockY >= 0) && (a_BlockY < cChunkDef::Height))
+ if ((a_NeighborY >= 0) && (a_NeighborY < cChunkDef::Height))
{
- cBlockInfo::GetHandler(a_ChunkInterface.GetBlock(a_BlockX, a_BlockY, a_BlockZ))->OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ);
+ cBlockInfo::GetHandler(a_ChunkInterface.GetBlock(a_NeighborX, a_NeighborY, a_NeighborZ))->OnNeighborChanged(a_ChunkInterface, a_NeighborX, a_NeighborY, a_NeighborZ, a_WhichNeighbor);
}
}
+
void cBlockHandler::ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta)
{
// Setting the meta to a_BlockMeta keeps most textures. The few other blocks have to override this.
@@ -512,15 +513,6 @@ bool cBlockHandler::CanBeAt(cChunkInterface & a_ChunkInterface, int a_BlockX, in
-bool cBlockHandler::CanDirtGrowGrass(NIBBLETYPE a_Meta)
-{
- return ((cBlockInfo::IsTransparent(m_BlockType)) || (cBlockInfo::IsOneHitDig(m_BlockType)));
-}
-
-
-
-
-
bool cBlockHandler::IsUseable()
{
return false;
diff --git a/src/Blocks/BlockHandler.h b/src/Blocks/BlockHandler.h
index 4dec0dc95..1b357c3f1 100644
--- a/src/Blocks/BlockHandler.h
+++ b/src/Blocks/BlockHandler.h
@@ -56,13 +56,19 @@ public:
/// Called before a block gets destroyed / replaced with air
virtual void OnDestroyed(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, int a_BlockX, int a_BlockY, int a_BlockZ);
- /// Called when a direct neighbor of this block has been changed (The position is the own position, not the neighbor position)
- virtual void OnNeighborChanged(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ) {}
-
- /// Notifies all neighbors of the given block about a change
- static void NeighborChanged(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ);
-
- /// Called while the player diggs the block.
+ /** Called when a direct neighbor of this block has been changed (The position is the block's own position, not the changing neighbor's position)
+ a_WhichNeighbor indicates which neighbor has changed. For example, BLOCK_FACE_YP meant the neighbor above has changed.
+ BLOCK_FACE_NONE means that it is a neighbor not directly adjacent (diagonal, etc.) */
+ virtual void OnNeighborChanged(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_WhichNeighbor) {}
+
+ /** Notifies the specified neighbor that the current block has changed.
+ a_NeighborXYZ coords are the coords of the neighbor
+ a_WhichNeighbor specifies which neighbor (relative to a_NeighborXYZ) has changed.
+ For example BLOCK_FACE_YP means that the block at {a_NeighborX, a_NeighborY + 1, a_NeighborZ} has changed.
+ BLOCK_FACE_NONE means that it is a neighbor not directly adjacent (diagonal, etc.) */
+ static void NeighborChanged(cChunkInterface & a_ChunkInterface, int a_NeighborX, int a_NeighborY, int a_NeighborZ, eBlockFace a_WhichNeighbor);
+
+ /** Called when the player starts digging the block. */
virtual void OnDigging(cChunkInterface & cChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ) {}
/// Called if the user right clicks the block and the block is useable
@@ -83,9 +89,6 @@ public:
/// Checks if the block can stay at the specified relative coords in the chunk
virtual bool CanBeAt(cChunkInterface & a_ChunkInterface, int a_RelX, int a_RelY, int a_RelZ, const cChunk & a_Chunk);
-
- /** Can the dirt under this block grow to grass? */
- virtual bool CanDirtGrowGrass(NIBBLETYPE a_Meta);
/** Checks if the block can be placed at this point.
Default: CanBeAt(...)
diff --git a/src/Blocks/BlockLeaves.h b/src/Blocks/BlockLeaves.h
index 5c9283979..2368eab7b 100644
--- a/src/Blocks/BlockLeaves.h
+++ b/src/Blocks/BlockLeaves.h
@@ -75,10 +75,14 @@ public:
}
- virtual void OnNeighborChanged(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ) override
+ virtual void OnNeighborChanged(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_WhichNeighbor) override
{
+ // Unset 0x8 bit so this block gets checked for decay:
NIBBLETYPE Meta = a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ);
- a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta & 0x7); // Unset 0x8 bit so it gets checked for decay
+ if ((Meta & 0x08) != 0)
+ {
+ a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta & 0x7);
+ }
}
diff --git a/src/Blocks/BlockPiston.cpp b/src/Blocks/BlockPiston.cpp
index d9f4913d8..75f8621a7 100644
--- a/src/Blocks/BlockPiston.cpp
+++ b/src/Blocks/BlockPiston.cpp
@@ -179,7 +179,7 @@ void cBlockPistonHandler::ExtendPiston(int a_BlockX, int a_BlockY, int a_BlockZ,
a_World->SetBlock(a_BlockX, a_BlockY, a_BlockZ, pistonBlock, pistonMeta | 0x8);
a_World->SetBlock(extx, exty, extz, E_BLOCK_PISTON_EXTENSION, pistonMeta | (IsSticky(pistonBlock) ? 8 : 0), false);
- a_World->ScheduleTask(PISTON_TICK_DELAY, std::make_shared<cWorld::cTaskSendBlockToAllPlayers>(ScheduledBlocks));
+ a_World->ScheduleTask(PISTON_TICK_DELAY, static_cast<cWorld::cTaskPtr>(std::make_shared<cWorld::cTaskSendBlockToAllPlayers>(ScheduledBlocks)));
}
@@ -229,7 +229,7 @@ void cBlockPistonHandler::RetractPiston(int a_BlockX, int a_BlockY, int a_BlockZ
std::vector<Vector3i> ScheduledBlocks;
ScheduledBlocks.push_back(Vector3i(a_BlockX, a_BlockY, a_BlockZ));
ScheduledBlocks.push_back(Vector3i(tempx, tempy, tempz));
- a_World->ScheduleTask(PISTON_TICK_DELAY + 1, std::make_shared<cWorld::cTaskSendBlockToAllPlayers>(ScheduledBlocks));
+ a_World->ScheduleTask(PISTON_TICK_DELAY + 1, static_cast<cWorld::cTaskPtr>(std::make_shared<cWorld::cTaskSendBlockToAllPlayers>(ScheduledBlocks)));
return;
}
}
@@ -239,7 +239,7 @@ void cBlockPistonHandler::RetractPiston(int a_BlockX, int a_BlockY, int a_BlockZ
std::vector<Vector3i> ScheduledBlocks;
ScheduledBlocks.push_back(Vector3i(a_BlockX, a_BlockY, a_BlockZ));
- a_World->ScheduleTask(PISTON_TICK_DELAY + 1, std::make_shared<cWorld::cTaskSendBlockToAllPlayers>(ScheduledBlocks));
+ a_World->ScheduleTask(PISTON_TICK_DELAY + 1, static_cast<cWorld::cTaskPtr>(std::make_shared<cWorld::cTaskSendBlockToAllPlayers>(ScheduledBlocks)));
}
diff --git a/src/Blocks/BlockRail.h b/src/Blocks/BlockRail.h
index eecd07006..7fb910e8c 100644
--- a/src/Blocks/BlockRail.h
+++ b/src/Blocks/BlockRail.h
@@ -47,15 +47,14 @@ public:
super::OnPlaced(a_ChunkInterface, a_WorldInterface, a_BlockX, a_BlockY, a_BlockZ, a_BlockType, a_BlockMeta);
// Alert diagonal rails
- OnNeighborChanged(a_ChunkInterface, a_BlockX + 1, a_BlockY + 1, a_BlockZ);
- OnNeighborChanged(a_ChunkInterface, a_BlockX - 1, a_BlockY + 1, a_BlockZ);
- OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ + 1);
- OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ - 1);
-
- OnNeighborChanged(a_ChunkInterface, a_BlockX + 1, a_BlockY - 1, a_BlockZ);
- OnNeighborChanged(a_ChunkInterface, a_BlockX - 1, a_BlockY - 1, a_BlockZ);
- OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ + 1);
- OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ - 1);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX + 1, a_BlockY + 1, a_BlockZ, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX - 1, a_BlockY + 1, a_BlockZ, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ + 1, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ - 1, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX + 1, a_BlockY - 1, a_BlockZ, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX - 1, a_BlockY - 1, a_BlockZ, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ + 1, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ - 1, BLOCK_FACE_NONE);
}
@@ -64,19 +63,18 @@ public:
super::OnDestroyed(a_ChunkInterface, a_WorldInterface, a_BlockX, a_BlockY, a_BlockZ);
// Alert diagonal rails
- OnNeighborChanged(a_ChunkInterface, a_BlockX + 1, a_BlockY + 1, a_BlockZ);
- OnNeighborChanged(a_ChunkInterface, a_BlockX - 1, a_BlockY + 1, a_BlockZ);
- OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ + 1);
- OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ - 1);
-
- OnNeighborChanged(a_ChunkInterface, a_BlockX + 1, a_BlockY - 1, a_BlockZ);
- OnNeighborChanged(a_ChunkInterface, a_BlockX - 1, a_BlockY - 1, a_BlockZ);
- OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ + 1);
- OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ - 1);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX + 1, a_BlockY + 1, a_BlockZ, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX - 1, a_BlockY + 1, a_BlockZ, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ + 1, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ - 1, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX + 1, a_BlockY - 1, a_BlockZ, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX - 1, a_BlockY - 1, a_BlockZ, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ + 1, BLOCK_FACE_NONE);
+ OnNeighborChanged(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ - 1, BLOCK_FACE_NONE);
}
- virtual void OnNeighborChanged(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ) override
+ virtual void OnNeighborChanged(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_WhichNeighbor) override
{
NIBBLETYPE Meta = a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ);
if (IsUnstable(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ) && (Meta != FindMeta(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ)))
diff --git a/src/Blocks/BlockSlab.h b/src/Blocks/BlockSlab.h
index 9b3fad72e..58e85013e 100644
--- a/src/Blocks/BlockSlab.h
+++ b/src/Blocks/BlockSlab.h
@@ -88,12 +88,6 @@ public:
return true;
}
-
- virtual bool CanDirtGrowGrass(NIBBLETYPE a_Meta) override
- {
- return ((a_Meta & 0x8) != 0);
- }
-
/// Returns true if the specified blocktype is one of the slabs handled by this handler
static bool IsAnySlabType(BLOCKTYPE a_BlockType)
diff --git a/src/Blocks/BlockStairs.h b/src/Blocks/BlockStairs.h
index d396204e0..7ef69d2ec 100644
--- a/src/Blocks/BlockStairs.h
+++ b/src/Blocks/BlockStairs.h
@@ -62,12 +62,6 @@ public:
}
- virtual bool CanDirtGrowGrass(NIBBLETYPE a_Meta) override
- {
- return true;
- }
-
-
static NIBBLETYPE RotationToMetaData(double a_Rotation)
{
a_Rotation += 90 + 45; // So its not aligned with axis
diff --git a/src/Blocks/WorldInterface.h b/src/Blocks/WorldInterface.h
index 44c118195..826df7034 100644
--- a/src/Blocks/WorldInterface.h
+++ b/src/Blocks/WorldInterface.h
@@ -55,6 +55,18 @@ public:
/** Returns true if it is raining, stormy or snowing at the specified location. This takes into account biomes. */
virtual bool IsWeatherWetAt(int a_BlockX, int a_BlockZ) = 0;
+ /** Returns or sets the minumim or maximum netherportal width */
+ virtual int GetMinNetherPortalWidth(void) const = 0;
+ virtual int GetMaxNetherPortalWidth(void) const = 0;
+ virtual void SetMinNetherPortalWidth(int a_NewMinWidth) = 0;
+ virtual void SetMaxNetherPortalWidth(int a_NewMaxWidth) = 0;
+
+ /** Returns or sets the minumim or maximum netherportal height */
+ virtual int GetMinNetherPortalHeight(void) const = 0;
+ virtual int GetMaxNetherPortalHeight(void) const = 0;
+ virtual void SetMinNetherPortalHeight(int a_NewMinHeight) = 0;
+ virtual void SetMaxNetherPortalHeight(int a_NewMaxHeight) = 0;
+
/** Returns the world height at the specified coords; waits for the chunk to get loaded / generated */
virtual int GetHeight(int a_BlockX, int a_BlockZ) = 0;
diff --git a/src/BoundingBox.cpp b/src/BoundingBox.cpp
index 6b163b01e..64e3c02d2 100644
--- a/src/BoundingBox.cpp
+++ b/src/BoundingBox.cpp
@@ -5,6 +5,7 @@
#include "Globals.h"
#include "BoundingBox.h"
#include "Defines.h"
+#include "SelfTests.h"
@@ -18,6 +19,11 @@ static class SelfTest_BoundingBox
public:
SelfTest_BoundingBox(void)
{
+ cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&Test), "Bounding box intersections");
+ }
+
+ static void Test(void)
+ {
Vector3d Min(1, 1, 1);
Vector3d Max(2, 2, 2);
Vector3d LineDefs[] =
@@ -41,7 +47,7 @@ public:
bool res = cBoundingBox::CalcLineIntersection(Min, Max, Line1, Line2, LineCoeff, Face);
if (res != Results[i])
{
- fprintf(stderr, "LineIntersection({%.02f, %.02f, %.02f}, {%.02f, %.02f, %.02f}) -> %d, %.05f, %d\n",
+ LOGERROR("LineIntersection({%.02f, %.02f, %.02f}, {%.02f, %.02f, %.02f}) -> %d, %.05f, %d",
Line1.x, Line1.y, Line1.z,
Line2.x, Line2.y, Line2.z,
res ? 1 : 0, LineCoeff, Face
@@ -52,7 +58,7 @@ public:
{
if (LineCoeff != LineCoeffs[i])
{
- fprintf(stderr, "LineIntersection({%.02f, %.02f, %.02f}, {%.02f, %.02f, %.02f}) -> %d, %.05f, %d\n",
+ LOGERROR("LineIntersection({%.02f, %.02f, %.02f}, {%.02f, %.02f, %.02f}) -> %d, %.05f, %d",
Line1.x, Line1.y, Line1.z,
Line2.x, Line2.y, Line2.z,
res ? 1 : 0, LineCoeff, Face
@@ -61,9 +67,8 @@ public:
}
}
} // for i - LineDefs[]
- fprintf(stderr, "BoundingBox selftest complete.\n");
}
-} gTest;
+} g_BoundingBoxTest;
#endif
diff --git a/src/ByteBuffer.cpp b/src/ByteBuffer.cpp
index dc757d8f6..f50e3845b 100644
--- a/src/ByteBuffer.cpp
+++ b/src/ByteBuffer.cpp
@@ -8,6 +8,7 @@
#include "ByteBuffer.h"
#include "Endianness.h"
#include "OSSupport/IsThread.h"
+#include "SelfTests.h"
@@ -55,18 +56,18 @@ Unfortunately it is very slow, so it is disabled even for regular DEBUG builds.
#ifdef SELF_TEST
-/// Self-test of the VarInt-reading and writing code
+/** Self-test of the VarInt-reading and writing code */
static class cByteBufferSelfTest
{
public:
cByteBufferSelfTest(void)
{
- TestRead();
- TestWrite();
- TestWrap();
+ cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&TestRead), "ByteBuffer read");
+ cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&TestWrite), "ByteBuffer write");
+ cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&TestWrap), "ByteBuffer wraparound");
}
- void TestRead(void)
+ static void TestRead(void)
{
cByteBuffer buf(50);
buf.Write("\x05\xac\x02\x00", 4);
@@ -78,7 +79,7 @@ public:
assert_test(buf.ReadVarInt(v3) && (v3 == 0));
}
- void TestWrite(void)
+ static void TestWrite(void)
{
cByteBuffer buf(50);
buf.WriteVarInt32(5);
@@ -90,7 +91,7 @@ public:
assert_test(memcmp(All.data(), "\x05\xac\x02\x00", All.size()) == 0);
}
- void TestWrap(void)
+ static void TestWrap(void)
{
cByteBuffer buf(3);
for (int i = 0; i < 1000; i++)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 429087ae2..fcafdbe87 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -61,6 +61,7 @@ SET (SRCS
RCONServer.cpp
Root.cpp
Scoreboard.cpp
+ SelfTests.cpp
Server.cpp
SetChunkData.cpp
SpawnPrepare.cpp
@@ -134,6 +135,7 @@ SET (HDRS
RCONServer.h
Root.h
Scoreboard.h
+ SelfTests.h
Server.h
SetChunkData.h
SettingsRepositoryInterface.h
diff --git a/src/Chunk.cpp b/src/Chunk.cpp
index 39d32d48e..b6ec39294 100644
--- a/src/Chunk.cpp
+++ b/src/Chunk.cpp
@@ -411,7 +411,7 @@ void cChunk::WriteBlockArea(cBlockArea & a_Area, int a_MinBlockX, int a_MinBlock
int OffZ = BlockStartZ - m_PosZ * cChunkDef::Width;
int BaseX = BlockStartX - a_MinBlockX;
int BaseZ = BlockStartZ - a_MinBlockZ;
- int SizeY = a_Area.GetSizeY();
+ int SizeY = std::min(a_Area.GetSizeY(), cChunkDef::Height - a_MinBlockY);
// TODO: Improve this by not calling FastSetBlock() and doing the processing here
// so that the heightmap is touched only once for each column.
@@ -1018,20 +1018,26 @@ void cChunk::GrowMelonPumpkin(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE a_Bl
// Check if there's soil under the neighbor. We already know the neighbors are valid. Place produce if ok
BLOCKTYPE Soil;
- UnboundedRelGetBlock(a_RelX + x, a_RelY - 1, a_RelZ + z, Soil, BlockMeta);
+ VERIFY(UnboundedRelGetBlock(a_RelX + x, a_RelY - 1, a_RelZ + z, Soil, BlockMeta));
switch (Soil)
{
case E_BLOCK_DIRT:
case E_BLOCK_GRASS:
case E_BLOCK_FARMLAND:
{
- // DEBUG: This is here to catch FS #349 - melons growing over other crops.
- LOG("Growing melon / pumpkin overwriting %s, growing on %s",
+ // Place a randomly-facing produce:
+ NIBBLETYPE Meta = (ProduceType == E_BLOCK_MELON) ? 0 : static_cast<NIBBLETYPE>(a_TickRandom.randInt(4) % 4);
+ LOGD("Growing melon / pumpkin at {%d, %d, %d} (<%d, %d> from stem), overwriting %s, growing on top of %s, meta %d",
+ a_RelX + x + m_PosX * cChunkDef::Width, a_RelY, a_RelZ + z + m_PosZ * cChunkDef::Width,
+ x, z,
ItemTypeToString(BlockType[CheckType]).c_str(),
- ItemTypeToString(Soil).c_str()
+ ItemTypeToString(Soil).c_str(),
+ Meta
);
- // Place a randomly-facing produce:
- UnboundedRelFastSetBlock(a_RelX + x, a_RelY, a_RelZ + z, ProduceType, (NIBBLETYPE)(a_TickRandom.randInt(4) % 4));
+ VERIFY(UnboundedRelFastSetBlock(a_RelX + x, a_RelY, a_RelZ + z, ProduceType, Meta));
+ auto Absolute = RelativeToAbsolute(Vector3i{a_RelX + x, a_RelY, a_RelZ + z}, m_PosX, m_PosZ);
+ cChunkInterface ChunkInterface(this->GetWorld()->GetChunkMap());
+ cBlockHandler::NeighborChanged(ChunkInterface, Absolute.x, Absolute.y - 1, Absolute.z, BLOCK_FACE_YP);
break;
}
}
diff --git a/src/ClientHandle.h b/src/ClientHandle.h
index 27acc4d37..302de5a77 100644
--- a/src/ClientHandle.h
+++ b/src/ClientHandle.h
@@ -23,7 +23,7 @@
#include <array>
-
+#include <atomic>
// fwd:
@@ -447,7 +447,7 @@ private:
// TODO: Add Kicking here as well
} ;
- eState m_State;
+ std::atomic<eState> m_State;
/** m_State needs to be locked in the Destroy() function so that the destruction code doesn't run twice on two different threads */
cCriticalSection m_CSDestroyingState;
diff --git a/src/CompositeChat.cpp b/src/CompositeChat.cpp
index 5d6c028ab..353835039 100644
--- a/src/CompositeChat.cpp
+++ b/src/CompositeChat.cpp
@@ -6,6 +6,7 @@
#include "Globals.h"
#include "CompositeChat.h"
#include "ClientHandle.h"
+#include "SelfTests.h"
@@ -19,16 +20,14 @@ class SelfTest_CompositeChat
public:
SelfTest_CompositeChat(void)
{
- fprintf(stderr, "cCompositeChat self test...\n");
- TestParser1();
- TestParser2();
- TestParser3();
- TestParser4();
- TestParser5();
- fprintf(stderr, "cCompositeChat self test finished.\n");
+ cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&TestParser1), "CompositeChat parser test 1");
+ cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&TestParser2), "CompositeChat parser test 2");
+ cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&TestParser3), "CompositeChat parser test 3");
+ cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&TestParser4), "CompositeChat parser test 4");
+ cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&TestParser5), "CompositeChat parser test 5");
}
- void TestParser1(void)
+ static void TestParser1(void)
{
cCompositeChat Msg;
Msg.ParseText("Testing @2color codes and http://links parser");
@@ -44,7 +43,7 @@ public:
assert_test(Parts[3]->m_Style == "@2");
}
- void TestParser2(void)
+ static void TestParser2(void)
{
cCompositeChat Msg;
Msg.ParseText("@3Advanced stuff: @5overriding color codes and http://links.with/@4color-in-them handling");
@@ -60,7 +59,7 @@ public:
assert_test(Parts[3]->m_Style == "@5");
}
- void TestParser3(void)
+ static void TestParser3(void)
{
cCompositeChat Msg;
Msg.ParseText("http://links.starting the text");
@@ -72,7 +71,7 @@ public:
assert_test(Parts[1]->m_Style == "");
}
- void TestParser4(void)
+ static void TestParser4(void)
{
cCompositeChat Msg;
Msg.ParseText("links finishing the text: http://some.server");
@@ -84,7 +83,7 @@ public:
assert_test(Parts[1]->m_Style == "");
}
- void TestParser5(void)
+ static void TestParser5(void)
{
cCompositeChat Msg;
Msg.ParseText("http://only.links");
diff --git a/src/Defines.h b/src/Defines.h
index b167f69e3..f3b742e09 100644
--- a/src/Defines.h
+++ b/src/Defines.h
@@ -29,16 +29,16 @@ enum
-/// Block face constants, used in PlayerDigging and PlayerBlockPlacement packets and bbox collision calc
+/** Block face constants, used in PlayerDigging and PlayerBlockPlacement packets and bbox collision calc */
enum eBlockFace
{
BLOCK_FACE_NONE = -1, // Interacting with no block face - swinging the item in the air
- BLOCK_FACE_XM = 4, // Interacting with the X- face of the block
- BLOCK_FACE_XP = 5, // Interacting with the X+ face of the block
- BLOCK_FACE_YM = 0, // Interacting with the Y- face of the block
- BLOCK_FACE_YP = 1, // Interacting with the Y+ face of the block
- BLOCK_FACE_ZM = 2, // Interacting with the Z- face of the block
- BLOCK_FACE_ZP = 3, // Interacting with the Z+ face of the block
+ BLOCK_FACE_XM = 4, // Interacting with the X- face of the block
+ BLOCK_FACE_XP = 5, // Interacting with the X+ face of the block
+ BLOCK_FACE_YM = 0, // Interacting with the Y- face of the block
+ BLOCK_FACE_YP = 1, // Interacting with the Y+ face of the block
+ BLOCK_FACE_ZM = 2, // Interacting with the Z- face of the block
+ BLOCK_FACE_ZP = 3, // Interacting with the Z+ face of the block
// Synonyms using the (deprecated) world directions:
BLOCK_FACE_BOTTOM = BLOCK_FACE_YM, // Interacting with the bottom face of the block
@@ -47,6 +47,10 @@ enum eBlockFace
BLOCK_FACE_SOUTH = BLOCK_FACE_ZP, // Interacting with the southern face of the block
BLOCK_FACE_WEST = BLOCK_FACE_XM, // Interacting with the western face of the block
BLOCK_FACE_EAST = BLOCK_FACE_XP, // Interacting with the eastern face of the block
+
+ // Bounds, used for range-checking:
+ BLOCK_FACE_MIN = -1,
+ BLOCK_FACE_MAX = 5,
} ;
diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp
index 108f79e82..bb9d3c44b 100644
--- a/src/Entities/Entity.cpp
+++ b/src/Entities/Entity.cpp
@@ -744,6 +744,13 @@ void cEntity::KilledBy(TakeDamageInfo & a_TDI)
return;
}
+ // If the victim is a player the hook is handled by the cPlayer class
+ if (!IsPlayer())
+ {
+ AString emptystring = AString("");
+ cRoot::Get()->GetPluginManager()->CallHookKilled(*this, a_TDI, emptystring);
+ }
+
// Drop loot:
cItems Drops;
GetDrops(Drops, a_TDI.Attacker);
@@ -1262,11 +1269,12 @@ void cEntity::DetectCacti(void)
-void cEntity::ScheduleMoveToWorld(cWorld * a_World, Vector3d a_NewPosition)
+void cEntity::ScheduleMoveToWorld(cWorld * a_World, Vector3d a_NewPosition, bool a_SetPortalCooldown)
{
m_NewWorld = a_World;
m_NewWorldPosition = a_NewPosition;
m_IsWorldChangeScheduled = true;
+ m_WorldChangeSetPortalCooldown = a_SetPortalCooldown;
}
@@ -1278,6 +1286,14 @@ bool cEntity::DetectPortal()
if (m_IsWorldChangeScheduled)
{
m_IsWorldChangeScheduled = false;
+
+ if (m_WorldChangeSetPortalCooldown)
+ {
+ // Delay the portal check.
+ m_PortalCooldownData.m_TicksDelayed = 0;
+ m_PortalCooldownData.m_ShouldPreventTeleportation = true;
+ }
+
MoveToWorld(m_NewWorld, false, m_NewWorldPosition);
return true;
}
@@ -1336,10 +1352,10 @@ bool cEntity::DetectPortal()
TargetPos.x *= 8.0;
TargetPos.z *= 8.0;
- cWorld * TargetWorld = cRoot::Get()->CreateAndInitializeWorld(GetWorld()->GetLinkedOverworldName(), dimNether, GetWorld()->GetName());
+ cWorld * TargetWorld = cRoot::Get()->CreateAndInitializeWorld(GetWorld()->GetLinkedOverworldName(), dimNether, GetWorld()->GetName(), false);
LOGD("Jumping nether -> overworld");
new cNetherPortalScanner(this, TargetWorld, TargetPos, 256);
- return false;
+ return true;
}
else
{
@@ -1360,10 +1376,10 @@ bool cEntity::DetectPortal()
TargetPos.x /= 8.0;
TargetPos.z /= 8.0;
- cWorld * TargetWorld = cRoot::Get()->CreateAndInitializeWorld(GetWorld()->GetLinkedNetherWorldName(), dimNether, GetWorld()->GetName());
+ cWorld * TargetWorld = cRoot::Get()->CreateAndInitializeWorld(GetWorld()->GetLinkedNetherWorldName(), dimNether, GetWorld()->GetName(), false);
LOGD("Jumping overworld -> nether");
new cNetherPortalScanner(this, TargetWorld, TargetPos, 128);
- return false;
+ return true;
}
}
case E_BLOCK_END_PORTAL:
diff --git a/src/Entities/Entity.h b/src/Entities/Entity.h
index 8d1d62ddf..f54e130eb 100644
--- a/src/Entities/Entity.h
+++ b/src/Entities/Entity.h
@@ -350,31 +350,31 @@ public:
*/
virtual bool DetectPortal(void);
- /// Handles when the entity is in the void
+ /** Handles when the entity is in the void */
virtual void TickInVoid(cChunk & a_Chunk);
- /// Called when the entity starts burning
+ /** Called when the entity starts burning */
virtual void OnStartedBurning(void);
- /// Called when the entity finishes burning
+ /** Called when the entity finishes burning */
virtual void OnFinishedBurning(void);
// tolua_begin
- /// Sets the maximum value for the health
+ /** Sets the maximum value for the health */
void SetMaxHealth(int a_MaxHealth);
int GetMaxHealth(void) const { return m_MaxHealth; }
- /// Sets whether the entity is fireproof
+ /** Sets whether the entity is fireproof */
void SetIsFireproof(bool a_IsFireproof);
bool IsFireproof(void) const { return m_IsFireproof; }
- /// Puts the entity on fire for the specified amount of ticks
+ /** Puts the entity on fire for the specified amount of ticks */
void StartBurning(int a_TicksLeftBurning);
- /// Stops the entity from burning, resets all burning timers
+ /** Stops the entity from burning, resets all burning timers */
void StopBurning(void);
// tolua_end
@@ -386,14 +386,14 @@ public:
// tolua_begin
- /// Teleports to the entity specified
+ /** Teleports to the entity specified */
virtual void TeleportToEntity(cEntity & a_Entity);
- /// Teleports to the coordinates specified
+ /** Teleports to the coordinates specified */
virtual void TeleportToCoords(double a_PosX, double a_PosY, double a_PosZ);
- /// Schedules a MoveToWorld call to occur on the next Tick of the entity
- void ScheduleMoveToWorld(cWorld * a_World, Vector3d a_NewPosition);
+ /** Schedules a MoveToWorld call to occur on the next Tick of the entity */
+ void ScheduleMoveToWorld(cWorld * a_World, Vector3d a_NewPosition, bool a_SetPortalCooldown = false);
bool MoveToWorld(cWorld * a_World, bool a_ShouldSendRespawn, Vector3d a_NewPosition) { return DoMoveToWorld(a_World, a_ShouldSendRespawn, a_NewPosition); }
@@ -538,6 +538,7 @@ protected:
/** State variables for ScheduleMoveToWorld. */
bool m_IsWorldChangeScheduled;
+ bool m_WorldChangeSetPortalCooldown;
cWorld * m_NewWorld;
Vector3d m_NewWorldPosition;
diff --git a/src/Entities/HangingEntity.h b/src/Entities/HangingEntity.h
index 5d0aa17b3..003c22082 100644
--- a/src/Entities/HangingEntity.h
+++ b/src/Entities/HangingEntity.h
@@ -103,6 +103,7 @@ protected:
// ASSERT(!"Tried to convert a bad facing!");
Dir = cHangingEntity::BlockFaceToProtocolFace(BLOCK_FACE_XP);
+ break;
}
#if !defined(__clang__)
default:
diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp
index 0ca560d75..97e2eca3a 100644
--- a/src/Entities/Player.cpp
+++ b/src/Entities/Player.cpp
@@ -920,11 +920,11 @@ void cPlayer::KilledBy(TakeDamageInfo & a_TDI)
{
Pickups.Add(cItem(E_ITEM_RED_APPLE));
}
-
m_Stats.AddValue(statItemsDropped, (StatValue)Pickups.Size());
m_World->SpawnItemPickups(Pickups, GetPosX(), GetPosY(), GetPosZ(), 10);
SaveToDisk(); // Save it, yeah the world is a tough place !
+ cPluginManager * PluginManager = cRoot::Get()->GetPluginManager();
if ((a_TDI.Attacker == nullptr) && m_World->ShouldBroadcastDeathMessages())
{
@@ -950,7 +950,12 @@ void cPlayer::KilledBy(TakeDamageInfo & a_TDI)
case dtExplosion: DamageText = "blew up"; break;
default: DamageText = "died, somehow; we've no idea how though"; break;
}
- GetWorld()->BroadcastChatDeath(Printf("%s %s", GetName().c_str(), DamageText.c_str()));
+ AString DeathMessage = Printf("%s %s", GetName().c_str(), DamageText.c_str());
+ PluginManager->CallHookKilled(*this, a_TDI, DeathMessage);
+ if (DeathMessage != AString(""))
+ {
+ GetWorld()->BroadcastChatDeath(DeathMessage);
+ }
}
else if (a_TDI.Attacker == nullptr) // && !m_World->ShouldBroadcastDeathMessages() by fallthrough
{
@@ -959,15 +964,23 @@ void cPlayer::KilledBy(TakeDamageInfo & a_TDI)
else if (a_TDI.Attacker->IsPlayer())
{
cPlayer * Killer = (cPlayer *)a_TDI.Attacker;
-
- GetWorld()->BroadcastChatDeath(Printf("%s was killed by %s", GetName().c_str(), Killer->GetName().c_str()));
+ AString DeathMessage = Printf("%s was killed by %s", GetName().c_str(), Killer->GetName().c_str());
+ PluginManager->CallHookKilled(*this, a_TDI, DeathMessage);
+ if (DeathMessage != AString(""))
+ {
+ GetWorld()->BroadcastChatDeath(DeathMessage);
+ }
}
else
{
AString KillerClass = a_TDI.Attacker->GetClass();
KillerClass.erase(KillerClass.begin()); // Erase the 'c' of the class (e.g. "cWitch" -> "Witch")
-
- GetWorld()->BroadcastChatDeath(Printf("%s was killed by a %s", GetName().c_str(), KillerClass.c_str()));
+ AString DeathMessage = Printf("%s was killed by a %s", GetName().c_str(), KillerClass.c_str());
+ PluginManager->CallHookKilled(*this, a_TDI, DeathMessage);
+ if (DeathMessage != AString(""))
+ {
+ GetWorld()->BroadcastChatDeath(DeathMessage);
+ }
}
m_Stats.AddValue(statDeaths);
diff --git a/src/Generating/CMakeLists.txt b/src/Generating/CMakeLists.txt
index ebba4cce8..f3fe5c55c 100644
--- a/src/Generating/CMakeLists.txt
+++ b/src/Generating/CMakeLists.txt
@@ -101,5 +101,5 @@ endif()
if(NOT MSVC)
add_library(Generating ${SRCS} ${HDRS})
- target_link_libraries(Generating OSSupport Blocks)
+ target_link_libraries(Generating OSSupport Blocks Bindings)
endif()
diff --git a/src/Generating/ComposableGenerator.cpp b/src/Generating/ComposableGenerator.cpp
index f9a4d7609..4eee8b707 100644
--- a/src/Generating/ComposableGenerator.cpp
+++ b/src/Generating/ComposableGenerator.cpp
@@ -274,7 +274,7 @@ void cComposableGenerator::InitCompositionGen(cIniFile & a_IniFile)
}
// Create a cache of the composited heightmaps, so that finishers may use it:
- m_CompositedHeightCache = std::make_shared<cHeiGenMultiCache>(std::make_shared<cCompositedHeiGen>(m_ShapeGen, m_CompositionGen), 16, 24);
+ m_CompositedHeightCache = std::make_shared<cHeiGenMultiCache>(std::make_shared<cCompositedHeiGen>(m_BiomeGen, m_ShapeGen, m_CompositionGen), 16, 24);
// 24 subcaches of depth 16 each = 96 KiB of RAM. Acceptable, for the amount of work this saves.
}
@@ -618,7 +618,9 @@ void cComposableGenerator::InitFinishGens(cIniFile & a_IniFile)
int MaxSize = a_IniFile.GetValueSetI("Generator", "VillageMaxSize", 128);
int MinDensity = a_IniFile.GetValueSetI("Generator", "VillageMinDensity", 50);
int MaxDensity = a_IniFile.GetValueSetI("Generator", "VillageMaxDensity", 80);
- m_FinishGens.push_back(std::make_shared<cVillageGen>(Seed, GridSize, MaxOffset, MaxDepth, MaxSize, MinDensity, MaxDensity, m_BiomeGen, m_CompositedHeightCache));
+ AString PrefabList = a_IniFile.GetValueSet("Generator", "VillagePrefabs", "PlainsVillage, SandVillage");
+ auto Prefabs = StringSplitAndTrim(PrefabList, ",");
+ m_FinishGens.push_back(std::make_shared<cVillageGen>(Seed, GridSize, MaxOffset, MaxDepth, MaxSize, MinDensity, MaxDensity, m_BiomeGen, m_CompositedHeightCache, Prefabs));
}
else if (NoCaseCompare(*itr, "Vines") == 0)
{
diff --git a/src/Generating/CompositedHeiGen.h b/src/Generating/CompositedHeiGen.h
index fa33a7861..c4e6ce77d 100644
--- a/src/Generating/CompositedHeiGen.h
+++ b/src/Generating/CompositedHeiGen.h
@@ -20,7 +20,8 @@ class cCompositedHeiGen:
public cTerrainHeightGen
{
public:
- cCompositedHeiGen(cTerrainShapeGenPtr a_ShapeGen, cTerrainCompositionGenPtr a_CompositionGen):
+ cCompositedHeiGen(cBiomeGenPtr a_BiomeGen, cTerrainShapeGenPtr a_ShapeGen, cTerrainCompositionGenPtr a_CompositionGen):
+ m_BiomeGen(a_BiomeGen),
m_ShapeGen(a_ShapeGen),
m_CompositionGen(a_CompositionGen)
{
@@ -28,18 +29,20 @@ public:
- // cTerrainheightGen overrides:
+ // cTerrainHeightGen overrides:
virtual void GenHeightMap(int a_ChunkX, int a_ChunkZ, cChunkDef::HeightMap & a_HeightMap) override
{
cChunkDesc::Shape shape;
m_ShapeGen->GenShape(a_ChunkX, a_ChunkZ, shape);
cChunkDesc desc(a_ChunkX, a_ChunkZ);
+ m_BiomeGen->GenBiomes(a_ChunkX, a_ChunkZ, desc.GetBiomeMap()); // Need to initialize biomes for the composition gen
desc.SetHeightFromShape(shape);
m_CompositionGen->ComposeTerrain(desc, shape);
memcpy(a_HeightMap, desc.GetHeightMap(), sizeof(a_HeightMap));
}
protected:
+ cBiomeGenPtr m_BiomeGen;
cTerrainShapeGenPtr m_ShapeGen;
cTerrainCompositionGenPtr m_CompositionGen;
};
diff --git a/src/Generating/PieceGenerator.cpp b/src/Generating/PieceGenerator.cpp
index 14a9da39d..93e7179e2 100644
--- a/src/Generating/PieceGenerator.cpp
+++ b/src/Generating/PieceGenerator.cpp
@@ -6,6 +6,7 @@
#include "Globals.h"
#include "PieceGenerator.h"
+#include "../SelfTests.h"
@@ -22,6 +23,11 @@ static class cPieceGeneratorSelfTest :
public:
cPieceGeneratorSelfTest(void)
{
+ cSelfTests::Get().Register(std::bind(&cPieceGeneratorSelfTest::Test, this), "PieceGenerator");
+ }
+
+ void Test(void)
+ {
// Prepare the internal state:
InitializePieces();
@@ -31,14 +37,14 @@ public:
Gen.PlacePieces(500, 50, 500, 3, OutPieces);
// Print out the pieces:
- printf("OutPieces.size() = " SIZE_T_FMT "\n", OutPieces.size());
+ LOG("OutPieces.size() = " SIZE_T_FMT, OutPieces.size());
size_t idx = 0;
for (cPlacedPieces::const_iterator itr = OutPieces.begin(), end = OutPieces.end(); itr != end; ++itr, ++idx)
{
const Vector3i & Coords = (*itr)->GetCoords();
cCuboid Hitbox = (*itr)->GetHitBox();
Hitbox.Sort();
- printf(SIZE_T_FMT ": {%d, %d, %d}, rot %d, hitbox {%d, %d, %d} - {%d, %d, %d} (%d * %d * %d)\n", idx,
+ LOG(SIZE_T_FMT ": {%d, %d, %d}, rot %d, hitbox {%d, %d, %d} - {%d, %d, %d} (%d * %d * %d)", idx,
Coords.x, Coords.y, Coords.z,
(*itr)->GetNumCCWRotations(),
Hitbox.p1.x, Hitbox.p1.y, Hitbox.p1.z,
@@ -46,7 +52,7 @@ public:
Hitbox.DifX() + 1, Hitbox.DifY() + 1, Hitbox.DifZ() + 1
);
} // itr - OutPieces[]
- printf("Done.\n");
+ LOG("Done.");
// Free the placed pieces properly:
Gen.FreePieces(OutPieces);
diff --git a/src/Generating/Prefab.cpp b/src/Generating/Prefab.cpp
index 1de0346bd..e5e6a1e06 100644
--- a/src/Generating/Prefab.cpp
+++ b/src/Generating/Prefab.cpp
@@ -166,6 +166,45 @@ cPrefab::cPrefab(const cBlockArea & a_Image, int a_AllowedRotations) :
+cPrefab::cPrefab(const cBlockArea & a_Image) :
+ m_Size(a_Image.GetSize()),
+ m_AllowedRotations(0),
+ m_MergeStrategy(cBlockArea::msOverwrite),
+ m_ShouldExtendFloor(false),
+ m_DefaultWeight(1),
+ m_AddWeightIfSame(0),
+ m_MoveToGround(false)
+{
+ m_HitBox.p1.Set(0, 0, 0);
+ m_HitBox.p2.Set(m_Size.x - 1, m_Size.y - 1, m_Size.z - 1);
+ m_BlockArea[0].CopyFrom(a_Image);
+}
+
+
+
+
+
+cPrefab::cPrefab(const AString & a_BlockDefinitions, const AString & a_BlockData, int a_SizeX, int a_SizeY, int a_SizeZ) :
+ m_Size(a_SizeX, a_SizeY, a_SizeZ),
+ m_AllowedRotations(0),
+ m_MergeStrategy(cBlockArea::msOverwrite),
+ m_ShouldExtendFloor(false),
+ m_DefaultWeight(1),
+ m_AddWeightIfSame(0),
+ m_MoveToGround(false)
+{
+ m_HitBox.p1.Set(0, 0, 0);
+ m_HitBox.p2.Set(m_Size.x - 1, m_Size.y - 1, m_Size.z - 1);
+ m_BlockArea[0].Create(m_Size);
+ CharMap cm;
+ ParseCharMap(cm, a_BlockDefinitions.c_str());
+ ParseBlockImage(cm, a_BlockData.c_str());
+}
+
+
+
+
+
void cPrefab::AddRotatedBlockAreas(void)
{
// 1 CCW rotation:
@@ -326,6 +365,16 @@ void cPrefab::AddConnector(int a_RelX, int a_RelY, int a_RelZ, eBlockFace a_Dire
+void cPrefab::SetAllowedRotations(int a_AllowedRotations)
+{
+ m_AllowedRotations = a_AllowedRotations;
+ AddRotatedBlockAreas();
+}
+
+
+
+
+
void cPrefab::ParseCharMap(CharMap & a_CharMapOut, const char * a_CharMapDef)
{
ASSERT(a_CharMapDef != nullptr);
diff --git a/src/Generating/Prefab.h b/src/Generating/Prefab.h
index eb905e78e..45af4b282 100644
--- a/src/Generating/Prefab.h
+++ b/src/Generating/Prefab.h
@@ -95,6 +95,13 @@ public:
/** Creates a prefab based on the given BlockArea and allowed rotations. */
cPrefab(const cBlockArea & a_Image, int a_AllowedRotations);
+ /** Creates a prefab based on the given BlockArea. Allowed rotations can be added later on using SetAllowedRotations(). */
+ cPrefab(const cBlockArea & a_Image);
+
+ /** Creates a prefab based on the specified block data, using the char-to-block map in a_BlockDefinitions.
+ Allowed rotations can be added later on using SetAllowedRotations(). */
+ cPrefab(const AString & a_BlockDefinitions, const AString & a_BlockData, int a_SizeX, int a_SizeY, int a_SizeZ);
+
/** Draws the prefab into the specified chunk, according to the placement stored in the PlacedPiece. */
void Draw(cChunkDesc & a_Dest, const cPlacedPiece * a_Placement) const;
@@ -124,6 +131,21 @@ public:
at the coords governed by the connectors. */
bool ShouldMoveToGround(void) const { return m_MoveToGround; }
+ /** Sets the m_AllowedRotations bitmask and fills the m_BlockArea[] with rotated versions of m_BlockArea[0]. */
+ void SetAllowedRotations(int a_AllowedRotations);
+
+ /** Parses the per-depth weight into m_DepthWeight member. */
+ void ParseDepthWeight(const char * a_DepthWeightDef);
+
+ /** Sets the merge strategy to be used when drawing the piece. */
+ void SetMergeStrategy(cBlockArea::eMergeStrategy a_MergeStrategy) { m_MergeStrategy = a_MergeStrategy; }
+
+ /** Sets the flag whether the prefab should be moved to ground level before being drawn. */
+ void SetMoveToGround(bool a_MoveToGround) { m_MoveToGround = a_MoveToGround; }
+
+ /** Sets the flag whether the lowest layer of the prefab should be repeated downwards until it hits a solid block. */
+ void SetExtendFloor(bool a_ShouldExtendFloor) { m_ShouldExtendFloor = a_ShouldExtendFloor; }
+
protected:
/** Packs complete definition of a single block, for per-letter assignment. */
struct sBlockTypeDef
@@ -201,9 +223,6 @@ protected:
/** Parses the connectors definition text into m_Connectors member. */
void ParseConnectors(const char * a_ConnectorsDef);
-
- /** Parses the per-depth weight into m_DepthWeight member. */
- void ParseDepthWeight(const char * a_DepthWeightDef);
};
diff --git a/src/Generating/PrefabPiecePool.cpp b/src/Generating/PrefabPiecePool.cpp
index e4df8efa8..e2273aed3 100644
--- a/src/Generating/PrefabPiecePool.cpp
+++ b/src/Generating/PrefabPiecePool.cpp
@@ -5,6 +5,54 @@
#include "Globals.h"
#include "PrefabPiecePool.h"
+#include "../Bindings/LuaState.h"
+#include "SelfTests.h"
+#include "WorldStorage/SchematicFileSerializer.h"
+
+
+
+
+
+// Conditionally log a warning
+#define CONDWARNING(ShouldLog, ...) \
+ if (ShouldLog) \
+ { \
+ LOGWARNING(__VA_ARGS__); \
+ }
+
+
+
+
+
+/** Returns the map of string => eMergeStrategy used when translating cubeset file merge strategies. */
+static std::map<AString, cBlockArea::eMergeStrategy> & GetMergeStrategyMap(void)
+{
+ static std::map<AString, cBlockArea::eMergeStrategy> msmap;
+ if (msmap.empty())
+ {
+ // This is the first use, initialize the map:
+ msmap["msOverwrite"] = cBlockArea::msOverwrite;
+ msmap["msFillAir"] = cBlockArea::msFillAir;
+ msmap["msImprint"] = cBlockArea::msImprint;
+ msmap["msLake"] = cBlockArea::msLake;
+ msmap["msSpongePrint"] = cBlockArea::msSpongePrint;
+ msmap["msDifference"] = cBlockArea::msDifference;
+ msmap["msSimpleCompare"] = cBlockArea::msSimpleCompare;
+ msmap["msMask"] = cBlockArea::msMask;
+ }
+ return msmap;
+}
+
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+// cPrefabPiecePool:
+
+cPrefabPiecePool::cPrefabPiecePool(void)
+{
+}
@@ -26,6 +74,15 @@ cPrefabPiecePool::cPrefabPiecePool(
+cPrefabPiecePool::cPrefabPiecePool(const AString & a_FileName, bool a_LogWarnings)
+{
+ LoadFromFile(a_FileName, a_LogWarnings);
+}
+
+
+
+
+
cPrefabPiecePool::~cPrefabPiecePool()
{
Clear();
@@ -83,6 +140,66 @@ void cPrefabPiecePool::AddStartingPieceDefs(const cPrefab::sDef * a_StartingPiec
+bool cPrefabPiecePool::LoadFromFile(const AString & a_FileName, bool a_LogWarnings)
+{
+ // Read the first 4 KiB of the file in order to auto-detect format:
+ cFile f;
+ if (!f.Open(a_FileName, cFile::fmRead))
+ {
+ CONDWARNING(a_LogWarnings, "Cannot open file %s for reading", a_FileName.c_str());
+ return false;
+ }
+ char buf[4096];
+ auto len = f.Read(buf, sizeof(buf));
+ f.Close();
+ AString Header(buf, static_cast<size_t>(len));
+
+ if (Header.find("CubesetFormatVersion =") != AString::npos)
+ {
+ return LoadFromCubesetFile(a_FileName, a_LogWarnings);
+ }
+ CONDWARNING(a_LogWarnings, "Cannot load prefabs from file %s, unknown file format", a_FileName.c_str());
+ return false;
+}
+
+
+
+
+
+bool cPrefabPiecePool::LoadFromCubesetFile(const AString & a_FileName, bool a_LogWarnings)
+{
+ // Load the file in the Lua interpreter:
+ cLuaState Lua(Printf("LoadablePiecePool %s", a_FileName.c_str()));
+ Lua.Create();
+ if (!Lua.LoadFile(a_FileName, a_LogWarnings))
+ {
+ // Reason for failure has already been logged in LoadFile()
+ return false;
+ }
+
+ // Check the version:
+ int Version = 0;
+ if (!Lua.GetNamedGlobal("Cubeset.Metadata.CubesetFormatVersion", Version))
+ {
+ CONDWARNING(a_LogWarnings, "Cannot load cubeset %s, it doesn't contain version information.", a_FileName.c_str());
+ return false;
+ }
+
+ // Load the data, using the correct version loader:
+ if (Version == 1)
+ {
+ return LoadFromCubesetFileVer1(a_FileName, Lua, a_LogWarnings);
+ }
+
+ // Unknown version:
+ CONDWARNING(a_LogWarnings, "Cannot load cubeset %s, version (%d) not supported.", a_FileName.c_str(), Version);
+ return false;
+}
+
+
+
+
+
void cPrefabPiecePool::AddToPerConnectorMap(cPrefab * a_Prefab)
{
cPiece::cConnectors Connectors = (static_cast<const cPiece *>(a_Prefab))->GetConnectors();
@@ -95,6 +212,377 @@ void cPrefabPiecePool::AddToPerConnectorMap(cPrefab * a_Prefab)
+
+bool cPrefabPiecePool::LoadFromCubesetFileVer1(const AString & a_FileName, cLuaState & a_LuaState, bool a_LogWarnings)
+{
+ // Load the metadata:
+ ApplyPoolMetadataCubesetVer1(a_FileName, a_LuaState, a_LogWarnings);
+
+ // Push the Cubeset.Pieces global value on the stack:
+ lua_getglobal(a_LuaState, "_G");
+ cLuaState::cStackValue stk(a_LuaState);
+ auto pieces = a_LuaState.WalkToValue("Cubeset.Pieces");
+ if (!pieces.IsValid() || !lua_istable(a_LuaState, -1))
+ {
+ CONDWARNING(a_LogWarnings, "The cubeset file %s doesn't contain any pieces", a_FileName.c_str());
+ return false;
+ }
+
+ // Iterate over all items in the Cubeset.Pieces value:
+ int idx = 1;
+ bool res = true;
+ while (true)
+ {
+ lua_pushinteger(a_LuaState, idx); // stk: [Pieces] [idx]
+ lua_gettable(a_LuaState, -2); // stk: [Pieces] [PieceItem]
+ if (!lua_istable(a_LuaState, -1))
+ {
+ // The PieceItem is not present, we've iterated over all items
+ lua_pop(a_LuaState, 1); // stk: [Pieces]
+ break;
+ }
+ if (!LoadCubesetPieceVer1(a_FileName, a_LuaState, idx, a_LogWarnings))
+ {
+ res = false;
+ }
+ lua_pop(a_LuaState, 1); // stk: [Pieces]
+ idx += 1;
+ }
+ return res;
+}
+
+
+
+
+
+bool cPrefabPiecePool::LoadCubesetPieceVer1(const AString & a_FileName, cLuaState & a_LuaState, int a_PieceIndex, bool a_LogWarnings)
+{
+ ASSERT(lua_istable(a_LuaState, -1));
+
+ // The piece name is optional, but useful for debugging messages:
+ AString PieceName;
+ if (!a_LuaState.GetNamedValue("OriginData.ExportName", PieceName))
+ {
+ Printf(PieceName, "Piece #%d", a_PieceIndex);
+ }
+
+ // Read the hitbox dimensions:
+ cCuboid Hitbox;
+ if (
+ !a_LuaState.GetNamedValue("Hitbox.MinX", Hitbox.p1.x) ||
+ !a_LuaState.GetNamedValue("Hitbox.MinY", Hitbox.p1.y) ||
+ !a_LuaState.GetNamedValue("Hitbox.MinZ", Hitbox.p1.z) ||
+ !a_LuaState.GetNamedValue("Hitbox.MaxX", Hitbox.p2.x) ||
+ !a_LuaState.GetNamedValue("Hitbox.MaxY", Hitbox.p2.y) ||
+ !a_LuaState.GetNamedValue("Hitbox.MaxZ", Hitbox.p2.z)
+ )
+ {
+ CONDWARNING(a_LogWarnings, "Cannot load piece %s from file %s, it's missing hitbox information", PieceName.c_str(), a_FileName.c_str());
+ return false;
+ }
+
+ // Load the prefab data:
+ auto prefab = LoadPrefabFromCubesetVer1(a_FileName, a_LuaState, PieceName, a_LogWarnings);
+ if (prefab == nullptr)
+ {
+ return false;
+ }
+
+ // Read the connectors
+ if (!ReadConnectorsCubesetVer1(a_FileName, a_LuaState, PieceName, prefab.get(), a_LogWarnings))
+ {
+ return false;
+ }
+
+ // Read the allowed rotations. It is an optional metadata value, default to 0:
+ int AllowedRotations = 0;
+ a_LuaState.GetNamedValue("Metadata.AllowedRotations", AllowedRotations);
+ prefab->SetAllowedRotations(AllowedRotations);
+
+ // Apply the relevant metadata:
+ if (!ApplyPieceMetadataCubesetVer1(a_FileName, a_LuaState, PieceName, prefab.get(), a_LogWarnings))
+ {
+ return false;
+ }
+
+ // Add the prefab into the list of pieces:
+ int IsStartingPiece = 0;
+ a_LuaState.GetNamedValue("Metadata.IsStarting", IsStartingPiece);
+ if (IsStartingPiece != 0)
+ {
+ m_StartingPieces.push_back(prefab.release());
+ }
+ else
+ {
+ auto p = prefab.release();
+ m_AllPieces.push_back(p);
+ AddToPerConnectorMap(p);
+ }
+ return true;
+}
+
+
+
+
+
+UniquePtr<cPrefab> cPrefabPiecePool::LoadPrefabFromCubesetVer1(
+ const AString & a_FileName,
+ cLuaState & a_LuaState,
+ const AString & a_PieceName,
+ bool a_LogWarnings
+)
+{
+ // First try loading a referenced schematic file, if any:
+ AString SchematicFileName;
+ if (a_LuaState.GetNamedValue("SchematicFileName", SchematicFileName))
+ {
+ auto PathEnd = a_FileName.find_last_of("/\\"); // Find the last path separator
+ if (PathEnd != AString::npos)
+ {
+ SchematicFileName = a_FileName.substr(0, PathEnd) + SchematicFileName;
+ }
+ cBlockArea area;
+ if (!cSchematicFileSerializer::LoadFromSchematicFile(area, SchematicFileName))
+ {
+ CONDWARNING(a_LogWarnings, "Cannot load schematic file \"%s\" for piece %s in cubeset %s.",
+ SchematicFileName.c_str(), a_PieceName.c_str(), a_FileName.c_str()
+ );
+ return nullptr;
+ }
+ return cpp14::make_unique<cPrefab>(area);
+ } // if (SchematicFileName)
+
+ // There's no referenced schematic file, load from BlockDefinitions / BlockData.
+ // Get references to the data and the table.concat function:
+ cLuaState::cRef TableConcat, BlockDefinitions, BlockData;
+ if (
+ !a_LuaState.GetNamedGlobal("table.concat", TableConcat) ||
+ !a_LuaState.GetNamedValue("BlockDefinitions", BlockDefinitions) ||
+ !a_LuaState.GetNamedValue("BlockData", BlockData)
+ )
+ {
+ CONDWARNING(a_LogWarnings, "Cannot parse block data for piece %s in cubeset %s", a_PieceName.c_str(), a_FileName.c_str());
+ return nullptr;
+ }
+
+ // Call table.concat() on the BlockDefinitions:
+ AString BlockDefStr;
+ if (!a_LuaState.Call(TableConcat, BlockDefinitions, "\n", cLuaState::Return, BlockDefStr))
+ {
+ CONDWARNING(a_LogWarnings, "Cannot concat block definitions for piece %s in cubeset %s", a_PieceName.c_str(), a_FileName.c_str());
+ return nullptr;
+ }
+
+ // Call table.concat() on the BlockData:
+ AString BlockDataStr;
+ if (!a_LuaState.Call(TableConcat, BlockData, "", cLuaState::Return, BlockDataStr))
+ {
+ CONDWARNING(a_LogWarnings, "Cannot concat block data for piece %s in cubeset %s", a_PieceName.c_str(), a_FileName.c_str());
+ return nullptr;
+ }
+
+ // Read the size:
+ int SizeX = 0, SizeY = 0, SizeZ = 0;
+ if (
+ !a_LuaState.GetNamedValue("Size.x", SizeX) ||
+ !a_LuaState.GetNamedValue("Size.y", SizeY) ||
+ !a_LuaState.GetNamedValue("Size.z", SizeZ)
+ )
+ {
+ CONDWARNING(a_LogWarnings, "Cannot load piece %s from file %s, its size information is missing", a_PieceName.c_str(), a_FileName.c_str());
+ return nullptr;
+ }
+
+ // Check that the size matches the data length:
+ if (static_cast<size_t>(SizeX * SizeY * SizeZ) != BlockDataStr.size())
+ {
+ CONDWARNING(a_LogWarnings, "Cannot create piece %s from file %s, its size (%d) doesn't match the blockdata length (%u)",
+ a_PieceName.c_str(), a_FileName.c_str(),
+ SizeX * SizeY * SizeZ, static_cast<unsigned>(BlockDataStr.size())
+ );
+ return nullptr;
+ }
+
+ return cpp14::make_unique<cPrefab>(BlockDefStr, BlockDataStr, SizeX, SizeY, SizeZ);
+}
+
+
+
+
+
+bool cPrefabPiecePool::ReadConnectorsCubesetVer1(
+ const AString & a_FileName,
+ cLuaState & a_LuaState,
+ const AString & a_PieceName,
+ cPrefab * a_Prefab,
+ bool a_LogWarnings
+)
+{
+ // Get the Connectors subtable:
+ auto conns = a_LuaState.WalkToValue("Connectors");
+ if (!conns.IsValid())
+ {
+ CONDWARNING(a_LogWarnings, "Cannot load piece %s from file %s, it has no connectors definition.", a_PieceName.c_str(), a_FileName.c_str());
+ return false;
+ }
+
+ // Iterate over all items in the Connectors table:
+ int idx = 1;
+ bool res = true;
+ while (true)
+ {
+ lua_pushinteger(a_LuaState, idx); // stk: [Connectors] [idx]
+ lua_gettable(a_LuaState, -2); // stk: [Connectors] [conn]
+ if (!lua_istable(a_LuaState, -1))
+ {
+ // The connector is not present, we've iterated over all items
+ lua_pop(a_LuaState, 1); // stk: [Connectors]
+ break;
+ }
+ int Type = 0, RelX = 0, RelY = 0, RelZ = 0;
+ eBlockFace Direction = BLOCK_FACE_NONE;
+ if (
+ !a_LuaState.GetNamedValue("Type", Type) ||
+ !a_LuaState.GetNamedValue("RelX", RelX) ||
+ !a_LuaState.GetNamedValue("RelY", RelY) ||
+ !a_LuaState.GetNamedValue("RelZ", RelZ) ||
+ !a_LuaState.GetNamedValue("Direction", Direction)
+ )
+ {
+ CONDWARNING(a_LogWarnings, "Piece %s in file %s has a malformed Connector at index %d. Skipping the connector.", a_PieceName.c_str(), a_FileName.c_str(), idx);
+ res = false;
+ continue;
+ }
+ a_Prefab->AddConnector(RelX, RelY, RelZ, Direction, Type);
+ lua_pop(a_LuaState, 1); // stk: [Connectors]
+ idx += 1;
+ }
+ return res;
+}
+
+
+
+
+
+bool cPrefabPiecePool::ApplyPieceMetadataCubesetVer1(
+ const AString & a_FileName,
+ cLuaState & a_LuaState,
+ const AString & a_PieceName,
+ cPrefab * a_Prefab,
+ bool a_LogWarnings
+)
+{
+ // Push the Metadata table on top of the Lua stack:
+ auto md = a_LuaState.WalkToValue("Metadata");
+ if (!md.IsValid())
+ {
+ return false;
+ }
+
+ // Get the values:
+ int AddWeightIfSame = 0, DefaultWeight = 100, MoveToGround = 0, ShouldExpandFloor = 0;
+ AString DepthWeight, MergeStrategy;
+ a_LuaState.GetNamedValue("AddWeightIfSame", AddWeightIfSame);
+ a_LuaState.GetNamedValue("DefaultWeight", DefaultWeight);
+ a_LuaState.GetNamedValue("DepthWeight", DepthWeight);
+ a_LuaState.GetNamedValue("MergeStrategy", MergeStrategy);
+ a_LuaState.GetNamedValue("MoveToGround", MoveToGround);
+ a_LuaState.GetNamedValue("ShouldExpandFloor", ShouldExpandFloor);
+
+ // Apply the values:
+ a_Prefab->SetAddWeightIfSame(AddWeightIfSame);
+ a_Prefab->SetDefaultWeight(DefaultWeight);
+ a_Prefab->ParseDepthWeight(DepthWeight.c_str());
+ auto msmap = GetMergeStrategyMap();
+ auto strategy = msmap.find(MergeStrategy);
+ if (strategy == msmap.end())
+ {
+ CONDWARNING(a_LogWarnings, "Unknown merge strategy (\"%s\") specified for piece %s in file %s. Using msSpongePrint instead.",
+ MergeStrategy.c_str(), a_PieceName.c_str(), a_FileName.c_str()
+ );
+ a_Prefab->SetMergeStrategy(cBlockArea::msSpongePrint);
+ }
+ else
+ {
+ a_Prefab->SetMergeStrategy(strategy->second);
+ }
+ a_Prefab->SetMoveToGround(MoveToGround != 0);
+ a_Prefab->SetExtendFloor(ShouldExpandFloor != 0);
+
+ return true;
+}
+
+
+
+
+
+bool cPrefabPiecePool::ApplyPoolMetadataCubesetVer1(
+ const AString & a_FileName,
+ cLuaState & a_LuaState,
+ bool a_LogWarnings
+)
+{
+ // Push the Cubeset.Metadata table on top of the Lua stack:
+ lua_getglobal(a_LuaState, "_G");
+ auto md = a_LuaState.WalkToValue("Cubeset.Metadata");
+ if (!md.IsValid())
+ {
+ CONDWARNING(a_LogWarnings, "Cannot load cubeset from file %s: Cubeset.Metadata table is missing", a_FileName.c_str());
+ return false;
+ }
+
+ // Set the metadata values to defaults:
+ m_MinDensity = 100;
+ m_MaxDensity = 100;
+ m_VillageRoadBlockType = E_BLOCK_GRAVEL;
+ m_VillageRoadBlockMeta = 0;
+ m_VillageWaterRoadBlockType = E_BLOCK_PLANKS;
+ m_VillageWaterRoadBlockMeta = 0;
+
+ // Read the metadata values:
+ a_LuaState.GetNamedValue("IntendedUse", m_IntendedUse);
+ a_LuaState.GetNamedValue("MaxDensity", m_MaxDensity);
+ a_LuaState.GetNamedValue("MinDensity", m_MinDensity);
+ a_LuaState.GetNamedValue("VillageRoadBlockType", m_VillageRoadBlockType);
+ a_LuaState.GetNamedValue("VillageRoadBlockMeta", m_VillageRoadBlockMeta);
+ a_LuaState.GetNamedValue("VillageWaterRoadBlockType", m_VillageWaterRoadBlockType);
+ a_LuaState.GetNamedValue("VillageWaterRoadBlockMeta", m_VillageWaterRoadBlockMeta);
+ AString allowedBiomes;
+ if (a_LuaState.GetNamedValue("AllowedBiomes", allowedBiomes))
+ {
+ auto biomes = StringSplitAndTrim(allowedBiomes, ",");
+ for (const auto & biome: biomes)
+ {
+ EMCSBiome b = StringToBiome(biome);
+ if (b == biInvalidBiome)
+ {
+ CONDWARNING(a_LogWarnings, "Invalid biome (\"%s\") specified in AllowedBiomes in cubeset file %s. Skipping the biome.",
+ biome.c_str(), a_FileName.c_str()
+ );
+ continue;
+ }
+ m_AllowedBiomes.insert(b);
+ }
+ }
+ else
+ {
+ // All biomes are allowed:
+ for (int b = biFirstBiome; b <= biMaxBiome; b++)
+ {
+ m_AllowedBiomes.insert(static_cast<EMCSBiome>(b));
+ }
+ for (int b = biFirstVariantBiome; b <= biMaxVariantBiome; b++)
+ {
+ m_AllowedBiomes.insert(static_cast<EMCSBiome>(b));
+ }
+ }
+ return true;
+}
+
+
+
+
+
cPieces cPrefabPiecePool::GetPiecesWithConnector(int a_ConnectorType)
{
return m_PiecesByConnector[a_ConnectorType];
diff --git a/src/Generating/PrefabPiecePool.h b/src/Generating/PrefabPiecePool.h
index b9c1f0483..f7bf41994 100644
--- a/src/Generating/PrefabPiecePool.h
+++ b/src/Generating/PrefabPiecePool.h
@@ -9,6 +9,7 @@
#pragma once
+#include <unordered_set>
#include "PieceGenerator.h"
#include "Prefab.h"
@@ -16,6 +17,13 @@
+// fwd:
+class cLuaState;
+
+
+
+
+
class cPrefabPiecePool :
public cPiecePool
{
@@ -34,6 +42,10 @@ public:
const cPrefab::sDef * a_StartingPieceDefs, size_t a_NumStartingPieceDefs
);
+ /** Creates a pool and loads the contents of the specified file into it.
+ If a_LogWarnings is true, logs a warning to console when loading fails. */
+ cPrefabPiecePool(const AString & a_FileName, bool a_LogWarnings);
+
/** Destroys the pool, freeing all pieces. */
~cPrefabPiecePool();
@@ -50,6 +62,40 @@ public:
May be called multiple times with different PieceDefs, will add all such pieces. */
void AddStartingPieceDefs(const cPrefab::sDef * a_StartingPieceDefs, size_t a_NumStartingPieceDefs);
+ /** Loads the pieces from the specified file. Returns true if successful, false on error.
+ If a_LogWarnings is true, logs a warning to console when loading fails. */
+ bool LoadFromFile(const AString & a_FileName, bool a_LogWarnings);
+
+ /** Loads the pieces from the specified Cubeset file. Returns true if successful, false on error.
+ If a_LogWarnings is true, logs a warning to console when loading fails. */
+ bool LoadFromCubesetFile(const AString & a_FileName, bool a_LogWarnings);
+
+ /** Returns the number of regular (non-starting) pieces. */
+ size_t GetAllPiecesCount(void) const { return m_AllPieces.size(); }
+
+ /** Returns the number of starting pieces. */
+ size_t GetStartingPiecesCount(void) const { return m_StartingPieces.size(); }
+
+ // Metadata accessors:
+ const AString & GetIntendedUse(void) const { return m_IntendedUse; }
+ int GetMinDensity(void) const { return m_MinDensity; }
+ int GetMaxDensity(void) const { return m_MaxDensity; }
+ BLOCKTYPE GetVillageRoadBlockType (void) const { return m_VillageRoadBlockType; }
+ NIBBLETYPE GetVillageRoadBlockMeta (void) const { return m_VillageRoadBlockMeta; }
+ BLOCKTYPE GetVillageWaterRoadBlockType(void) const { return m_VillageWaterRoadBlockType; }
+ NIBBLETYPE GetVillageWaterRoadBlockMeta(void) const { return m_VillageWaterRoadBlockMeta; }
+
+ /** Returns true if a_Biome is among the accepted biomes in the m_AcceptedBiomes metadata member. */
+ bool IsBiomeAllowed(EMCSBiome a_Biome) const { return (m_AllowedBiomes.find(a_Biome) != m_AllowedBiomes.end()); }
+
+ // cPiecePool overrides:
+ virtual cPieces GetPiecesWithConnector(int a_ConnectorType) override;
+ virtual cPieces GetStartingPieces(void) override;
+ virtual int GetPieceWeight(const cPlacedPiece & a_PlacedPiece, const cPiece::cConnector & a_ExistingConnector, const cPiece & a_NewPiece) override;
+ virtual int GetStartingPieceWeight(const cPiece & a_NewPiece) override;
+ virtual void PiecePlaced(const cPiece & a_Piece) override;
+ virtual void Reset(void) override;
+
protected:
/** The type used to map a connector type to the list of pieces with that connector */
@@ -67,17 +113,97 @@ protected:
The pieces are copies out of m_AllPieces and shouldn't be ever delete-d. */
cPiecesMap m_PiecesByConnector;
+ /** The intended use of this piece pool, as specified by the pool's metadata. */
+ AString m_IntendedUse;
+
+ /** The minimum density, as read from the metadata. */
+ int m_MinDensity;
+
+ /** The maximum density, as read from the metadata. */
+ int m_MaxDensity;
+
+ /** The block type to use for the village roads. */
+ BLOCKTYPE m_VillageRoadBlockType;
+
+ /** The block meta to use for the village roads. */
+ NIBBLETYPE m_VillageRoadBlockMeta;
+
+ /** The block type used for the village roads if the road is on water. */
+ BLOCKTYPE m_VillageWaterRoadBlockType;
+
+ /** The block meta used for the village roads if the road is on water. */
+ NIBBLETYPE m_VillageWaterRoadBlockMeta;
+
+ /** A set of allowed biomes for the pool. The pool will only be used within the specified biomes. */
+ std::unordered_set<EMCSBiome, BiomeHasher> m_AllowedBiomes;
+
/** Adds the prefab to the m_PiecesByConnector map for all its connectors. */
void AddToPerConnectorMap(cPrefab * a_Prefab);
+
+ /** Loads the pieces from the cubeset file parsed into the specified Lua state.
+ Returns true on success, false on error.
+ If a_LogWarnings is true, logs a warning to console when loading fails. */
+ bool LoadFromCubesetFileVer1(const AString & a_FileName, cLuaState & a_LuaState, bool a_LogWarnings);
+
+ /** Loads a single piece from the cubeset file parsed into the specified Lua state.
+ The piece's definition table is expected to be at the top of the Lua stack.
+ Returns true on success, false on error.
+ a_PieceIndex is the index of the piece, in the Pieces table. It is used for logging only.
+ If a_LogWarnings is true, logs a warning to console when loading fails. */
+ bool LoadCubesetPieceVer1(const AString & a_FileName, cLuaState & a_LuaState, int a_PieceIndex, bool a_LogWarnings);
+
+ /** Loads a single piece's prefab from the cubeset file parsed into the specified Lua state.
+ The piece's definition table is expected to be at the top of the Lua stack.
+ Returns the prefab on success, nullptr on failure.
+ a_PieceName is the identification of the piece, used for logging only.
+ If a_LogWarnings is true, logs a warning to console when loading fails. */
+ UniquePtr<cPrefab> LoadPrefabFromCubesetVer1(
+ const AString & a_FileName,
+ cLuaState & a_LuaState,
+ const AString & a_PieceName,
+ bool a_LogWarnings
+ );
- // cPiecePool overrides:
- virtual cPieces GetPiecesWithConnector(int a_ConnectorType) override;
- virtual cPieces GetStartingPieces(void) override;
- virtual int GetPieceWeight(const cPlacedPiece & a_PlacedPiece, const cPiece::cConnector & a_ExistingConnector, const cPiece & a_NewPiece) override;
- virtual int GetStartingPieceWeight(const cPiece & a_NewPiece) override;
- virtual void PiecePlaced(const cPiece & a_Piece) override;
- virtual void Reset(void) override;
+ /** Reads a single piece's connectors from the cubeset file parsed into the specified Lua state.
+ The piece's definition table is expected to be at the top of the Lua stack.
+ Returns true on success, false on failure.
+ The connectors are added into the a_Prefab object.
+ No Connectors table is considered a failure, empty Connectors table is considered a success.
+ If any of the connectors are malformed, it is considered a failure, although the rest of the connectors will still load.
+ a_PieceName is the identification of the piece, used for logging only.
+ If a_LogWarnings is true, logs a warning to console when loading fails. */
+ bool ReadConnectorsCubesetVer1(
+ const AString & a_FileName,
+ cLuaState & a_LuaState,
+ const AString & a_PieceName,
+ cPrefab * a_Prefab,
+ bool a_LogWarnings
+ );
+
+ /** Reads a single piece's metadata from the cubeset file parsed into the specified Lua state.
+ The piece's definition table is expected to be at the top of the Lua stack.
+ Returns true on success, false on failure.
+ The metadata is applied into the a_Prefab object.
+ a_PieceName is the identification of the piece, used for logging only.
+ If a_LogWarnings is true, logs a warning to console when loading fails. */
+ bool ApplyPieceMetadataCubesetVer1(
+ const AString & a_FileName,
+ cLuaState & a_LuaState,
+ const AString & a_PieceName,
+ cPrefab * a_Prefab,
+ bool a_LogWarnings
+ );
+
+ /** Reads the metadata for the entire pool from the cubeset file parsed into the specified Lua state.
+ Returns true on success, false on failure.
+ The metadata is applied into "this".
+ If a_LogWarnings is true, logs a warning to console when loading fails. */
+ bool ApplyPoolMetadataCubesetVer1(
+ const AString & a_FileName,
+ cLuaState & a_LuaState,
+ bool a_LogWarnings
+ );
} ;
diff --git a/src/Generating/Prefabs/AlchemistVillagePrefabs.cpp b/src/Generating/Prefabs/AlchemistVillagePrefabs.cpp
deleted file mode 100644
index c08e53ef6..000000000
--- a/src/Generating/Prefabs/AlchemistVillagePrefabs.cpp
+++ /dev/null
@@ -1,3590 +0,0 @@
-
-// AlchemistVillagePrefabs.cpp
-
-// Defines the prefabs in the group AlchemistVillage
-
-// NOTE: This file has been generated automatically by GalExport!
-// Any manual changes will be overwritten by the next automatic export!
-
-#include "Globals.h"
-#include "AlchemistVillagePrefabs.h"
-
-
-
-
-
-const cPrefab::sDef g_AlchemistVillagePrefabs[] =
-{
- ////////////////////////////////////////////////////////////////////////////////
- // BarWithBasement:
- // The data has been exported from the gallery Desert, area index 82, ID 598, created by STR_Warrior
- {
- // Size:
- 11, 12, 10, // SizeX = 11, SizeY = 12, SizeZ = 10
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 11, 11, 10, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "A: 65: 3\n" /* ladder */
- "B: 50: 3\n" /* torch */
- "C:171: 8\n" /* carpet */
- "D:101: 0\n" /* ironbars */
- "E: 64: 8\n" /* wooddoorblock */
- "F:128: 2\n" /* sandstonestairs */
- "G: 24: 1\n" /* sandstone */
- "H: 44: 9\n" /* step */
- "I:126: 8\n" /* woodenslab */
- "J:128: 7\n" /* sandstonestairs */
- "K: 44: 1\n" /* step */
- "L: 64: 3\n" /* wooddoorblock */
- "M:128: 6\n" /* sandstonestairs */
- "a: 24: 2\n" /* sandstone */
- "b: 1: 0\n" /* stone */
- "c: 24: 0\n" /* sandstone */
- "d: 12: 0\n" /* sand */
- "e:134: 4\n" /* 134 */
- "f: 5: 1\n" /* wood */
- "g:134: 5\n" /* 134 */
- "h: 65: 5\n" /* ladder */
- "i: 17: 3\n" /* tree */
- "j: 69:11\n" /* lever */
- "k: 4: 0\n" /* cobblestone */
- "l:134: 0\n" /* 134 */
- "m: 19: 0\n" /* sponge */
- "n:134: 1\n" /* 134 */
- "o: 50: 4\n" /* torch */
- "p: 13: 0\n" /* gravel */
- "q: 5: 0\n" /* wood */
- "r: 96: 8\n" /* trapdoor */
- "s:128: 5\n" /* sandstonestairs */
- "t:107: 2\n" /* fencegate */
- "u:128: 4\n" /* sandstonestairs */
- "v:134: 3\n" /* 134 */
- "w: 85: 0\n" /* fence */
- "x:134: 7\n" /* 134 */
- "y:107: 5\n" /* fencegate */
- "z: 64: 1\n" /* wooddoorblock */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmabbbammm"
- /* 1 */ "mcccccccccm"
- /* 2 */ "abcccccccba"
- /* 3 */ "cbcccccccbc"
- /* 4 */ "cbcccccccbc"
- /* 5 */ "cbcccccccbc"
- /* 6 */ "cbcccccccbc"
- /* 7 */ "cbcccccccbc"
- /* 8 */ "abbbbbbbbba"
- /* 9 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmadddammm"
- /* 1 */ "mcccccccccm"
- /* 2 */ "acefg.efgca"
- /* 3 */ "ccefg.efgcc"
- /* 4 */ "ccefg.efgcc"
- /* 5 */ "cc.......cc"
- /* 6 */ "cc.......cc"
- /* 7 */ "cch......cc"
- /* 8 */ "accccccccca"
- /* 9 */ "mmmmmmmmmmm"
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmadddammm"
- /* 1 */ "mcccccccccm"
- /* 2 */ "acfff.fffca"
- /* 3 */ "ccfff.fffcc"
- /* 4 */ "ccfif.fifcc"
- /* 5 */ "cc.j...j.cc"
- /* 6 */ "cc.......cc"
- /* 7 */ "cch......cc"
- /* 8 */ "accccccccca"
- /* 9 */ "mmmmmmmmmmm"
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmakkkammm"
- /* 1 */ "mcccccccccm"
- /* 2 */ "aclfn.lfnca"
- /* 3 */ "cclfn.lfncc"
- /* 4 */ "cclfn.lfncc"
- /* 5 */ "cc.......cc"
- /* 6 */ "cc.......cc"
- /* 7 */ "cch..o...cc"
- /* 8 */ "accccccccca"
- /* 9 */ "mmmmmmmmmmm"
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmapppammm"
- /* 1 */ "mmmmpppmmmm"
- /* 2 */ "acccqqqccca"
- /* 3 */ "cqqqqqqqqqc"
- /* 4 */ "cqqqqqqqqqc"
- /* 5 */ "cqqqqqqqqqc"
- /* 6 */ "cqqqqqqqqqc"
- /* 7 */ "cqrqqqqqqqc"
- /* 8 */ "aqcccccccca"
- /* 9 */ "mmmmmmmmmmm"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmma...ammm"
- /* 1 */ "mmm.....mmm"
- /* 2 */ "acccstuccca"
- /* 3 */ "cnv.....vvc"
- /* 4 */ "cnw.....wlc"
- /* 5 */ "c.........c"
- /* 6 */ "cgxxe.....c"
- /* 7 */ "c...y..nwlc"
- /* 8 */ "azcccccccca"
- /* 9 */ "mmAmmmmmmmm"
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmma...ammm"
- /* 1 */ "mmm.....mmm"
- /* 2 */ "accc...ccca"
- /* 3 */ "c..B...B..c"
- /* 4 */ "c.C.....C.c"
- /* 5 */ "D.........D"
- /* 6 */ "c.........c"
- /* 7 */ "c.......C.c"
- /* 8 */ "aEccDDDccca"
- /* 9 */ "mmAmmmmmmmm"
-
- // Level 7
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmF...Fmmm"
- /* 1 */ "mmmG...cmmm"
- /* 2 */ "acccsHuccca"
- /* 3 */ "cIIIIIIIIIc"
- /* 4 */ "cIIIIIIIIIc"
- /* 5 */ "uIIIIIIIIIs"
- /* 6 */ "cIIIIIIIIIc"
- /* 7 */ "cIIIIIIIIIc"
- /* 8 */ "acccJJJccca"
- /* 9 */ "mmAmmmmmmmm"
-
- // Level 8
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmm.....mmm"
- /* 1 */ "mmm.....mmm"
- /* 2 */ "cKKKKcKKKKc"
- /* 3 */ "KacccccccaK"
- /* 4 */ "Kc.......cK"
- /* 5 */ "cc.......cc"
- /* 6 */ "Kc.......cK"
- /* 7 */ "KaLccccccaK"
- /* 8 */ "cK.KKcKKKKc"
- /* 9 */ "mmmmmmmmmmm"
-
- // Level 9
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ ".accDDDcca."
- /* 4 */ ".c.......c."
- /* 5 */ ".D.......D."
- /* 6 */ ".c.......c."
- /* 7 */ ".aEcDDDcca."
- /* 8 */ "..........."
- /* 9 */ "..........."
-
- // Level 10
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ ".accMMMcca."
- /* 4 */ ".cIIIIIIIc."
- /* 5 */ ".uIIIIIIIs."
- /* 6 */ ".cIIIIIIIc."
- /* 7 */ ".accJJJcca."
- /* 8 */ "..........."
- /* 9 */ "..........."
-
- // Level 11
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ ".cKKKcKKKc."
- /* 4 */ ".K.......K."
- /* 5 */ ".c.......c."
- /* 6 */ ".K.......K."
- /* 7 */ ".cKKKcKKKc."
- /* 8 */ "..........."
- /* 9 */ "...........",
-
- // Connectors:
- "-1: 5, 5, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 70,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // BarWithBasement
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // BarWithoutBasement:
- // The data has been exported from the gallery Desert, area index 81, ID 597, created by STR_Warrior
- {
- // Size:
- 11, 9, 10, // SizeX = 11, SizeY = 9, SizeZ = 10
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 11, 8, 10, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "A:126: 8\n" /* woodenslab */
- "B:128: 7\n" /* sandstonestairs */
- "C: 44: 1\n" /* step */
- "D: 64: 3\n" /* wooddoorblock */
- "E:128: 6\n" /* sandstonestairs */
- "a: 24: 2\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 24: 0\n" /* sandstone */
- "d: 13: 0\n" /* gravel */
- "e: 5: 0\n" /* wood */
- "f:128: 5\n" /* sandstonestairs */
- "g:107: 2\n" /* fencegate */
- "h:128: 4\n" /* sandstonestairs */
- "i:134: 1\n" /* 134 */
- "j:134: 3\n" /* 134 */
- "k: 85: 0\n" /* fence */
- "l:134: 0\n" /* 134 */
- "m: 19: 0\n" /* sponge */
- "n:134: 5\n" /* 134 */
- "o:134: 7\n" /* 134 */
- "p:134: 4\n" /* 134 */
- "q:107: 1\n" /* fencegate */
- "r: 64: 1\n" /* wooddoorblock */
- "s: 65: 3\n" /* ladder */
- "t: 50: 3\n" /* torch */
- "u:171: 8\n" /* carpet */
- "v:101: 0\n" /* ironbars */
- "w: 64: 8\n" /* wooddoorblock */
- "x:128: 2\n" /* sandstonestairs */
- "y: 24: 1\n" /* sandstone */
- "z: 44: 9\n" /* step */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmabbbammm"
- /* 1 */ "mmmmbbbmmmm"
- /* 2 */ "accccccccca"
- /* 3 */ "ccccccccccc"
- /* 4 */ "ccccccccccc"
- /* 5 */ "ccccccccccc"
- /* 6 */ "ccccccccccc"
- /* 7 */ "ccccccccccc"
- /* 8 */ "accccccccca"
- /* 9 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmadddammm"
- /* 1 */ "mmmmdddmmmm"
- /* 2 */ "accceeeccca"
- /* 3 */ "ceeeeeeeeec"
- /* 4 */ "ceeeeeeeeec"
- /* 5 */ "ceeeeeeeeec"
- /* 6 */ "ceeeeeeeeec"
- /* 7 */ "ceeeeeeeeec"
- /* 8 */ "aecccccccca"
- /* 9 */ "mmmmmmmmmmm"
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmma...ammm"
- /* 1 */ "mmm.....mmm"
- /* 2 */ "acccfghccca"
- /* 3 */ "cij.....jjc"
- /* 4 */ "cik.....klc"
- /* 5 */ "c.........c"
- /* 6 */ "cnoop.....c"
- /* 7 */ "c...q..iklc"
- /* 8 */ "arcccccccca"
- /* 9 */ "mmsmmmmmmmm"
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmma...ammm"
- /* 1 */ "mmm.....mmm"
- /* 2 */ "accc...ccca"
- /* 3 */ "c..t...t..c"
- /* 4 */ "c.u.....u.c"
- /* 5 */ "v.........v"
- /* 6 */ "c.........c"
- /* 7 */ "c.......u.c"
- /* 8 */ "awccvvvccca"
- /* 9 */ "mmsmmmmmmmm"
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmx...xmmm"
- /* 1 */ "mmmy...cmmm"
- /* 2 */ "acccfzhccca"
- /* 3 */ "cAAAAAAAAAc"
- /* 4 */ "cAAAAAAAAAc"
- /* 5 */ "hAAAAAAAAAf"
- /* 6 */ "cAAAAAAAAAc"
- /* 7 */ "cAAAAAAAAAc"
- /* 8 */ "acccBBBccca"
- /* 9 */ "mmsmmmmmmmm"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmm.....mmm"
- /* 1 */ "mmm.....mmm"
- /* 2 */ "cCCCCcCCCCc"
- /* 3 */ "CacccccccaC"
- /* 4 */ "Cc.......cC"
- /* 5 */ "cc.......cc"
- /* 6 */ "Cc.......cC"
- /* 7 */ "CaDccccccaC"
- /* 8 */ "cC.CCcCCCCc"
- /* 9 */ "mmmmmmmmmmm"
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ ".accvvvcca."
- /* 4 */ ".c.......c."
- /* 5 */ ".v.......v."
- /* 6 */ ".c.......c."
- /* 7 */ ".awcvvvcca."
- /* 8 */ "..........."
- /* 9 */ "..........."
-
- // Level 7
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ ".accEEEcca."
- /* 4 */ ".cAAAAAAAc."
- /* 5 */ ".hAAAAAAAf."
- /* 6 */ ".cAAAAAAAc."
- /* 7 */ ".accBBBcca."
- /* 8 */ "..........."
- /* 9 */ "..........."
-
- // Level 8
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ ".cCCCcCCCc."
- /* 4 */ ".C.......C."
- /* 5 */ ".c.......c."
- /* 6 */ ".C.......C."
- /* 7 */ ".cCCCcCCCc."
- /* 8 */ "..........."
- /* 9 */ "...........",
-
- // Connectors:
- "-1: 5, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 80,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // BarWithoutBasement
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // BlackSmith:
- // The data has been exported from the gallery Desert, area index 97, ID 642, created by STR_Warrior
- {
- // Size:
- 11, 6, 13, // SizeX = 11, SizeY = 6, SizeZ = 13
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 11, 5, 13, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 2\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 24: 0\n" /* sandstone */
- "d: 13: 0\n" /* gravel */
- "e: 5: 0\n" /* wood */
- "f: 12: 0\n" /* sand */
- "g: 64: 3\n" /* wooddoorblock */
- "h: 43: 0\n" /* doubleslab */
- "i: 53: 5\n" /* woodstairs */
- "j: 53: 4\n" /* woodstairs */
- "k: 10: 0\n" /* lava */
- "l: 54: 5\n" /* chest */
- "m: 19: 0\n" /* sponge */
- "n: 64: 8\n" /* wooddoorblock */
- "o: 50: 3\n" /* torch */
- "p:101: 0\n" /* ironbars */
- "q: 50: 1\n" /* torch */
- "r: 50: 2\n" /* torch */
- "s:128: 2\n" /* sandstonestairs */
- "t: 44: 9\n" /* step */
- "u:126: 8\n" /* woodenslab */
- "v:128: 4\n" /* sandstonestairs */
- "w:128: 5\n" /* sandstonestairs */
- "x:128: 7\n" /* sandstonestairs */
- "y: 44: 1\n" /* step */
- "z: 43: 1\n" /* doubleslab */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmabbba"
- /* 1 */ "mmmmmmbbbbm"
- /* 2 */ "mmmmmmaccca"
- /* 3 */ "maccccccccc"
- /* 4 */ "mcccccccccc"
- /* 5 */ "mcccccccccc"
- /* 6 */ "mcccccacccc"
- /* 7 */ "mcccccacccc"
- /* 8 */ "acccaaacccc"
- /* 9 */ "ccccccccccc"
- /* 10 */ "ccccccccccc"
- /* 11 */ "ccccccccccc"
- /* 12 */ "accccccccca"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmaddda"
- /* 1 */ "mmmmmmddddm"
- /* 2 */ "mmmmmmaceca"
- /* 3 */ "mafcfcceeec"
- /* 4 */ "mcfccfceeec"
- /* 5 */ "mcccccceeec"
- /* 6 */ "mcffaaaeeec"
- /* 7 */ "mffcaaaeeec"
- /* 8 */ "acccaaaeeec"
- /* 9 */ "ceeeeeeeeec"
- /* 10 */ "ceeeeeeeeec"
- /* 11 */ "ceeeeeeeeec"
- /* 12 */ "accccccccca"
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmma...a"
- /* 1 */ "mmmmmm....."
- /* 2 */ "mmmmmmacgca"
- /* 3 */ "ma....c...c"
- /* 4 */ "m.h...c...c"
- /* 5 */ "m.....c...c"
- /* 6 */ "m...aac...c"
- /* 7 */ "mij.akc...c"
- /* 8 */ "accccca...c"
- /* 9 */ "cl........c"
- /* 10 */ "c.........c"
- /* 11 */ "c.........c"
- /* 12 */ "accccccccca"
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmma...a"
- /* 1 */ "mmmmmm....."
- /* 2 */ "mmmmmmacnca"
- /* 3 */ "ma....c..oc"
- /* 4 */ "m.....p...c"
- /* 5 */ "m.....c...c"
- /* 6 */ "m...ppc...p"
- /* 7 */ "m...p.c...p"
- /* 8 */ "accccca...p"
- /* 9 */ "cq........c"
- /* 10 */ "p.........c"
- /* 11 */ "c........rc"
- /* 12 */ "acccpppccca"
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmms...s"
- /* 1 */ "mmmmmmc...c"
- /* 2 */ "mmmmmmaccca"
- /* 3 */ "mattttcuuuc"
- /* 4 */ "mtuuuuvuuuc"
- /* 5 */ "mtuuuucuuuc"
- /* 6 */ "mtuuaacuuuw"
- /* 7 */ "mtuua.cuuuw"
- /* 8 */ "acccccauuuw"
- /* 9 */ "cuuuuuuuuuc"
- /* 10 */ "vuuuuuuuuuc"
- /* 11 */ "cuuuuuuuuuc"
- /* 12 */ "acccxxxccca"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmm....."
- /* 1 */ "mmmmmm....."
- /* 2 */ "mmmmmmcyyyc"
- /* 3 */ "my.y.yy...y"
- /* 4 */ "m.....y...y"
- /* 5 */ "my....y...y"
- /* 6 */ "m...zyz...y"
- /* 7 */ "my..y.y...c"
- /* 8 */ "cyyyzyc...y"
- /* 9 */ "y.........y"
- /* 10 */ "y.........y"
- /* 11 */ "y.........y"
- /* 12 */ "cyyyycyyyyc",
-
- // Connectors:
- "-1: 8, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 50,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- false,
- }, // BlackSmith
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // LargeHouse1:
- // The data has been exported from the gallery Desert, area index 77, ID 577, created by STR_Warrior
- {
- // Size:
- 15, 14, 11, // SizeX = 15, SizeY = 14, SizeZ = 11
-
- // Hitbox (relative to bounding box):
- -1, 0, -1, // MinX, MinY, MinZ
- 14, 13, 11, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "A: 96:10\n" /* trapdoor */
- "B:128: 4\n" /* sandstonestairs */
- "C:128: 5\n" /* sandstonestairs */
- "D:128: 7\n" /* sandstonestairs */
- "E: 44: 1\n" /* step */
- "F:128: 2\n" /* sandstonestairs */
- "G:128: 0\n" /* sandstonestairs */
- "H: 87: 0\n" /* netherstone */
- "I:128: 3\n" /* sandstonestairs */
- "J: 51: 0\n" /* fire */
- "K: 44: 9\n" /* step */
- "a: 24: 2\n" /* sandstone */
- "b: 24: 0\n" /* sandstone */
- "c: 12: 0\n" /* sand */
- "d: 4: 0\n" /* cobblestone */
- "e: 5: 0\n" /* wood */
- "f: 13: 0\n" /* gravel */
- "g: 85: 0\n" /* fence */
- "h: 5: 1\n" /* wood */
- "i: 64: 2\n" /* wooddoorblock */
- "j: 64: 0\n" /* wooddoorblock */
- "k: 61: 2\n" /* furnace */
- "l:118: 0\n" /* cauldronblock */
- "m: 19: 0\n" /* sponge */
- "n:134: 4\n" /* 134 */
- "o: 65: 2\n" /* ladder */
- "p:101: 0\n" /* ironbars */
- "q: 50: 1\n" /* torch */
- "r:140: 0\n" /* flowerpotblock */
- "s: 64: 8\n" /* wooddoorblock */
- "t: 50: 3\n" /* torch */
- "u: 69:12\n" /* lever */
- "v: 50: 4\n" /* torch */
- "w:128: 6\n" /* sandstonestairs */
- "x: 44:10\n" /* step */
- "y:128: 1\n" /* sandstonestairs */
- "z: 47: 0\n" /* bookshelf */,
-
- // Block data:
- // Level 0
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmmabbbbbbbamm"
- /* 1 */ "ccccbbbbbbbbbma"
- /* 2 */ "ccccbbbbbbbbbdd"
- /* 3 */ "ccccbbbbbbbbbdd"
- /* 4 */ "ccccbbbbbbbbbdd"
- /* 5 */ "ccccbbbbbbbbbma"
- /* 6 */ "ccccbbbbbbbbbmm"
- /* 7 */ "mmmmbbbbbbbbbmm"
- /* 8 */ "mmmmbbbbbbbbbmm"
- /* 9 */ "mmmmbbbbbbbbbmm"
- /* 10 */ "mmmmabbbbbbbamm"
-
- // Level 1
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmmabbbbbbbamm"
- /* 1 */ "ccccbeeeeeeebma"
- /* 2 */ "cccceeeeeeeebff"
- /* 3 */ "ccccbeeeeeeeeff"
- /* 4 */ "ccccbeeeeeeebff"
- /* 5 */ "ccccbeeeeeeebma"
- /* 6 */ "ccccbeeeeeeebmm"
- /* 7 */ "mmmmbeeeeeeebmm"
- /* 8 */ "mmmmbeeeeeeebmm"
- /* 9 */ "mmmmbeeeeeeebmm"
- /* 10 */ "mmmmabbbbbbbamm"
-
- // Level 2
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmmabbbbbbbamm"
- /* 1 */ "ggggb......hb.a"
- /* 2 */ "g...i.......b.."
- /* 3 */ "g...b.......j.."
- /* 4 */ "g...bkln..o.b.."
- /* 5 */ "g...bbbb.bbbb.a"
- /* 6 */ "ggggb.......bmm"
- /* 7 */ "mmmmb.......bmm"
- /* 8 */ "mmmmb.......bmm"
- /* 9 */ "mmmmb.......bmm"
- /* 10 */ "mmmmabbbbbbbamm"
-
- // Level 3
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmmabbpppbbamm"
- /* 1 */ "....bq.....rb.a"
- /* 2 */ "....s.......b.t"
- /* 3 */ "....b.......s.."
- /* 4 */ "....b.u...o.b.v"
- /* 5 */ "....bbbb.bbbb.a"
- /* 6 */ "....p..t.t..pmm"
- /* 7 */ "mmmmp.......pmm"
- /* 8 */ "mmmmp.......pmm"
- /* 9 */ "mmmmb.......bmm"
- /* 10 */ "mmmmabbpppbbamm"
-
- // Level 4
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmmabbwwwbbamm"
- /* 1 */ "....bxxxxxxxbby"
- /* 2 */ "....bxxxxxxxb.."
- /* 3 */ "....bxxxxxxxb.."
- /* 4 */ "....bzzzxxAxb.."
- /* 5 */ "....bbbbbbbbbby"
- /* 6 */ "....BxxxxxxxCmm"
- /* 7 */ "mmmmBxxxxxxxCmm"
- /* 8 */ "mmmmBxxxxxxxCmm"
- /* 9 */ "mmmmbxxxxxxxbmm"
- /* 10 */ "mmmmabbDDDbbamm"
-
- // Level 5
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmmbEEEbEEEbmm"
- /* 1 */ "....EabbbbbaE.."
- /* 2 */ "....Eb.....bE.."
- /* 3 */ "....Eb.....bE.."
- /* 4 */ "....Eb.....bE.."
- /* 5 */ "....babb.bbab.."
- /* 6 */ "....E.......Emm"
- /* 7 */ "mmmmE.......Emm"
- /* 8 */ "mmmmE.......Emm"
- /* 9 */ "mmmmE.......Emm"
- /* 10 */ "mmmmbEEEbEEEbmm"
-
- // Level 6
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".....abbpbba..."
- /* 2 */ ".....p.....p..."
- /* 3 */ ".....p.....p..."
- /* 4 */ ".....p.....p..."
- /* 5 */ ".....abb.bba..."
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "..............."
- /* 9 */ "..............."
- /* 10 */ "..............."
-
- // Level 7
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".....abbwbba..."
- /* 2 */ ".....BxxxxxC..."
- /* 3 */ ".....BxxxxxC..."
- /* 4 */ ".....BxxxxxC..."
- /* 5 */ ".....abbbbba..."
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "..............."
- /* 9 */ "..............."
- /* 10 */ "..............."
-
- // Level 8
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".....bEEbEEb..."
- /* 2 */ ".....E.bbb.E..."
- /* 3 */ ".....b.bbb.b..."
- /* 4 */ ".....E.bbb.E..."
- /* 5 */ ".....bEEbEEb..."
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "..............."
- /* 9 */ "..............."
- /* 10 */ "..............."
-
- // Level 9
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ ".......aFa....."
- /* 3 */ ".......GHy....."
- /* 4 */ ".......aIa....."
- /* 5 */ "..............."
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "..............."
- /* 9 */ "..............."
- /* 10 */ "..............."
-
- // Level 10
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ ".......a.a....."
- /* 3 */ "........J......"
- /* 4 */ ".......a.a....."
- /* 5 */ "..............."
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "..............."
- /* 9 */ "..............."
- /* 10 */ "..............."
-
- // Level 11
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ ".......awa....."
- /* 3 */ ".......B.C....."
- /* 4 */ ".......aDa....."
- /* 5 */ "..............."
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "..............."
- /* 9 */ "..............."
- /* 10 */ "..............."
-
- // Level 12
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ ".......bbb....."
- /* 3 */ ".......bKb....."
- /* 4 */ ".......bbb....."
- /* 5 */ "..............."
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "..............."
- /* 9 */ "..............."
- /* 10 */ "..............."
-
- // Level 13
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ ".......E.E....."
- /* 3 */ "..............."
- /* 4 */ ".......E.E....."
- /* 5 */ "..............."
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "..............."
- /* 9 */ "..............."
- /* 10 */ "...............",
-
- // Connectors:
- "-1: 14, 2, 3: 5\n" /* Type -1, direction X+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 60,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // LargeHouse1
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // LargeTower:
- // The data has been exported from the gallery Desert, area index 80, ID 596, created by STR_Warrior
- {
- // Size:
- 7, 12, 7, // SizeX = 7, SizeY = 12, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 7, 11, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 12: 0\n" /* sand */
- "d: 5: 0\n" /* wood */
- "e: 13: 0\n" /* gravel */
- "f:128: 2\n" /* sandstonestairs */
- "g:128: 0\n" /* sandstonestairs */
- "h: 24: 2\n" /* sandstone */
- "i: 71: 3\n" /* irondoorblock */
- "j:128: 1\n" /* sandstonestairs */
- "k:128: 3\n" /* sandstonestairs */
- "l: 77: 4\n" /* stonebutton */
- "m: 19: 0\n" /* sponge */
- "n: 71: 8\n" /* irondoorblock */
- "o: 77: 3\n" /* stonebutton */
- "p:128: 6\n" /* sandstonestairs */
- "q:128: 4\n" /* sandstonestairs */
- "r:128: 5\n" /* sandstonestairs */
- "s: 50: 4\n" /* torch */
- "t:128: 7\n" /* sandstonestairs */
- "u: 85: 0\n" /* fence */
- "v: 24: 1\n" /* sandstone */
- "w: 44: 1\n" /* step */
- "x: 89: 0\n" /* lightstone */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "mabbbam"
- /* 1 */ "aacdcaa"
- /* 2 */ "madddam"
- /* 3 */ "madddam"
- /* 4 */ "madddam"
- /* 5 */ "aaaaaaa"
- /* 6 */ "mammmam"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "maeeeam"
- /* 1 */ "aacdcaa"
- /* 2 */ "madddam"
- /* 3 */ "madddam"
- /* 4 */ "madddam"
- /* 5 */ "aaaaaaa"
- /* 6 */ "mammmam"
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "mf...fm"
- /* 1 */ "ghaiahj"
- /* 2 */ "ma...am"
- /* 3 */ "ma...am"
- /* 4 */ "ma...am"
- /* 5 */ "ghaaahj"
- /* 6 */ "mkmmmkm"
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "m.l...m"
- /* 1 */ ".hanah."
- /* 2 */ ".ao..a."
- /* 3 */ ".a...a."
- /* 4 */ ".a...a."
- /* 5 */ ".haaah."
- /* 6 */ "m.....m"
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "..pap.."
- /* 2 */ ".q...r."
- /* 3 */ ".a...a."
- /* 4 */ ".q.s.r."
- /* 5 */ "..tat.."
- /* 6 */ "......."
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "..aua.."
- /* 2 */ ".a...a."
- /* 3 */ ".u...u."
- /* 4 */ ".a...a."
- /* 5 */ "..aua.."
- /* 6 */ "......."
-
- // Level 6
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "..aua.."
- /* 2 */ ".a...a."
- /* 3 */ ".u...u."
- /* 4 */ ".a...a."
- /* 5 */ "..aua.."
- /* 6 */ "......."
-
- // Level 7
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "..aua.."
- /* 2 */ ".a...a."
- /* 3 */ ".u...u."
- /* 4 */ ".a...a."
- /* 5 */ "..aua.."
- /* 6 */ "......."
-
- // Level 8
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "..faf.."
- /* 2 */ ".g...j."
- /* 3 */ ".a...a."
- /* 4 */ ".g...j."
- /* 5 */ "..kak.."
- /* 6 */ "......."
-
- // Level 9
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".aavaa."
- /* 2 */ ".a...a."
- /* 3 */ ".v...v."
- /* 4 */ ".a...a."
- /* 5 */ ".aavaa."
- /* 6 */ "......."
-
- // Level 10
- /* z\x* 0123456 */
- /* 0 */ "...p..."
- /* 1 */ ".haaah."
- /* 2 */ ".awwwa."
- /* 3 */ "qawawar"
- /* 4 */ ".awwwa."
- /* 5 */ ".haaah."
- /* 6 */ "...t..."
-
- // Level 11
- /* z\x* 0123456 */
- /* 0 */ "...w..."
- /* 1 */ ".w...w."
- /* 2 */ "......."
- /* 3 */ "w..x..w"
- /* 4 */ "......."
- /* 5 */ ".w...w."
- /* 6 */ "...w...",
-
- // Connectors:
- "-1: 3, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // LargeTower
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // LittleHouse:
- // The data has been exported from the gallery Desert, area index 65, ID 551, created by STR_Warrior
- {
- // Size:
- 5, 6, 7, // SizeX = 5, SizeY = 6, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 5, 5, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 2\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 24: 0\n" /* sandstone */
- "d: 13: 0\n" /* gravel */
- "e: 5: 0\n" /* wood */
- "f: 64: 3\n" /* wooddoorblock */
- "g: 61: 2\n" /* furnace */
- "h: 65: 2\n" /* ladder */
- "i: 64: 8\n" /* wooddoorblock */
- "j:101: 0\n" /* ironbars */
- "k: 50: 4\n" /* torch */
- "l:128: 2\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */
- "n:126: 8\n" /* woodenslab */
- "o:128: 4\n" /* sandstonestairs */
- "p:128: 5\n" /* sandstonestairs */
- "q:128: 7\n" /* sandstonestairs */
- "r: 44: 1\n" /* step */
- "s: 96: 2\n" /* trapdoor */,
-
- // Block data:
- // Level 0
- /* z\x* 01234 */
- /* 0 */ "abbba"
- /* 1 */ "mbbbm"
- /* 2 */ "accca"
- /* 3 */ "ccccc"
- /* 4 */ "ccccc"
- /* 5 */ "ccccc"
- /* 6 */ "accca"
-
- // Level 1
- /* z\x* 01234 */
- /* 0 */ "addda"
- /* 1 */ "mdddm"
- /* 2 */ "aceca"
- /* 3 */ "ceeec"
- /* 4 */ "ceeec"
- /* 5 */ "ceeec"
- /* 6 */ "accca"
-
- // Level 2
- /* z\x* 01234 */
- /* 0 */ "a...a"
- /* 1 */ "....."
- /* 2 */ "acfca"
- /* 3 */ "c...c"
- /* 4 */ "c...c"
- /* 5 */ "cg.hc"
- /* 6 */ "accca"
-
- // Level 3
- /* z\x* 01234 */
- /* 0 */ "a...a"
- /* 1 */ "....."
- /* 2 */ "acica"
- /* 3 */ "c...c"
- /* 4 */ "j...j"
- /* 5 */ "ck.hc"
- /* 6 */ "acjca"
-
- // Level 4
- /* z\x* 01234 */
- /* 0 */ "l...l"
- /* 1 */ "c...c"
- /* 2 */ "accca"
- /* 3 */ "cnnnc"
- /* 4 */ "onnnp"
- /* 5 */ "cnnhc"
- /* 6 */ "acqca"
-
- // Level 5
- /* z\x* 01234 */
- /* 0 */ "....."
- /* 1 */ "....."
- /* 2 */ "crcrc"
- /* 3 */ "r...r"
- /* 4 */ "c...c"
- /* 5 */ "r..sr"
- /* 6 */ "crcrc",
-
- // Connectors:
- "-1: 2, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // LittleHouse
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // LittleHouse2:
- // The data has been exported from the gallery Desert, area index 72, ID 562, created by STR_Warrior
- {
- // Size:
- 7, 6, 11, // SizeX = 7, SizeY = 6, SizeZ = 11
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 7, 5, 11, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 2\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 24: 0\n" /* sandstone */
- "d: 12: 0\n" /* sand */
- "e: 13: 0\n" /* gravel */
- "f: 5: 0\n" /* wood */
- "g: 64: 3\n" /* wooddoorblock */
- "h: 65: 5\n" /* ladder */
- "i: 85: 0\n" /* fence */
- "j:101: 0\n" /* ironbars */
- "k: 64: 8\n" /* wooddoorblock */
- "l: 50: 3\n" /* torch */
- "m: 19: 0\n" /* sponge */
- "n:128: 2\n" /* sandstonestairs */
- "o:128: 6\n" /* sandstonestairs */
- "p:126: 8\n" /* woodenslab */
- "q:128: 4\n" /* sandstonestairs */
- "r:128: 5\n" /* sandstonestairs */
- "s:128: 7\n" /* sandstonestairs */
- "t: 44: 1\n" /* step */
- "u: 96: 0\n" /* trapdoor */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "mabbbam"
- /* 1 */ "mmbbbmm"
- /* 2 */ "accccca"
- /* 3 */ "ccccccc"
- /* 4 */ "ccccccc"
- /* 5 */ "ccccccc"
- /* 6 */ "accccca"
- /* 7 */ "ddddddd"
- /* 8 */ "ddddddd"
- /* 9 */ "ddddddd"
- /* 10 */ "ddddddd"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "maeeeam"
- /* 1 */ "mmeeemm"
- /* 2 */ "acccfca"
- /* 3 */ "cfffffc"
- /* 4 */ "cfffffc"
- /* 5 */ "cfffffc"
- /* 6 */ "acfccca"
- /* 7 */ "ddddddd"
- /* 8 */ "ddddddd"
- /* 9 */ "ddddddd"
- /* 10 */ "ddddddd"
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "ma...am"
- /* 1 */ "m.....m"
- /* 2 */ "acccgca"
- /* 3 */ "c.....c"
- /* 4 */ "c.....c"
- /* 5 */ "ch....c"
- /* 6 */ "ac.ccca"
- /* 7 */ "i.....i"
- /* 8 */ "i.....i"
- /* 9 */ "i.....i"
- /* 10 */ "iiiiiii"
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "ma...am"
- /* 1 */ "m.....m"
- /* 2 */ "acjckca"
- /* 3 */ "c..l..c"
- /* 4 */ "j.....j"
- /* 5 */ "ch....c"
- /* 6 */ "ac.cjca"
- /* 7 */ "......."
- /* 8 */ "......."
- /* 9 */ "......."
- /* 10 */ "......."
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "mn...nm"
- /* 1 */ "mc...cm"
- /* 2 */ "acoccca"
- /* 3 */ "cpppppc"
- /* 4 */ "qpppppr"
- /* 5 */ "chppppc"
- /* 6 */ "acccsca"
- /* 7 */ "......."
- /* 8 */ "......."
- /* 9 */ "......."
- /* 10 */ "......."
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "m.....m"
- /* 1 */ "m.....m"
- /* 2 */ "cttcttc"
- /* 3 */ "t.....t"
- /* 4 */ "c.....c"
- /* 5 */ "tu....t"
- /* 6 */ "cttcttc"
- /* 7 */ "......."
- /* 8 */ "......."
- /* 9 */ "......."
- /* 10 */ ".......",
-
- // Connectors:
- "-1: 3, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // LittleHouse2
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // LittleHouse3:
- // The data has been exported from the gallery Desert, area index 66, ID 553, created by STR_Warrior
- {
- // Size:
- 9, 6, 7, // SizeX = 9, SizeY = 6, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 9, 5, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 2\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 24: 0\n" /* sandstone */
- "d: 13: 0\n" /* gravel */
- "e: 5: 0\n" /* wood */
- "f: 64: 3\n" /* wooddoorblock */
- "g: 65: 2\n" /* ladder */
- "h: 64: 8\n" /* wooddoorblock */
- "i:101: 0\n" /* ironbars */
- "j: 50: 4\n" /* torch */
- "k:128: 2\n" /* sandstonestairs */
- "l:126: 8\n" /* woodenslab */
- "m: 19: 0\n" /* sponge */
- "n:128: 4\n" /* sandstonestairs */
- "o:128: 5\n" /* sandstonestairs */
- "p:128: 7\n" /* sandstonestairs */
- "q: 44: 1\n" /* step */
- "r: 96: 2\n" /* trapdoor */,
-
- // Block data:
- // Level 0
- /* z\x* 012345678 */
- /* 0 */ "mmabbbamm"
- /* 1 */ "mmmbbbmmm"
- /* 2 */ "accccccca"
- /* 3 */ "ccccccccc"
- /* 4 */ "ccccccccc"
- /* 5 */ "ccccccccc"
- /* 6 */ "accccccca"
-
- // Level 1
- /* z\x* 012345678 */
- /* 0 */ "mmadddamm"
- /* 1 */ "mmmdddmmm"
- /* 2 */ "accceccca"
- /* 3 */ "ceeeeeeec"
- /* 4 */ "ceeeeeeec"
- /* 5 */ "ceeeeeeec"
- /* 6 */ "accccccca"
-
- // Level 2
- /* z\x* 012345678 */
- /* 0 */ "mma...amm"
- /* 1 */ "mm.....mm"
- /* 2 */ "acccfccca"
- /* 3 */ "c.......c"
- /* 4 */ "c.......c"
- /* 5 */ "c......gc"
- /* 6 */ "accccccca"
-
- // Level 3
- /* z\x* 012345678 */
- /* 0 */ "mma...amm"
- /* 1 */ "mm.....mm"
- /* 2 */ "accchccca"
- /* 3 */ "c.......c"
- /* 4 */ "i.......i"
- /* 5 */ "c.j....gc"
- /* 6 */ "acciiicca"
-
- // Level 4
- /* z\x* 012345678 */
- /* 0 */ "mmk...kmm"
- /* 1 */ "mmc...cmm"
- /* 2 */ "accccccca"
- /* 3 */ "clllllllc"
- /* 4 */ "nlllllllo"
- /* 5 */ "cllllllgc"
- /* 6 */ "accpppcca"
-
- // Level 5
- /* z\x* 012345678 */
- /* 0 */ "mm.....mm"
- /* 1 */ "mm.....mm"
- /* 2 */ "cqqqcqqqc"
- /* 3 */ "q.......q"
- /* 4 */ "c.......c"
- /* 5 */ "q......rq"
- /* 6 */ "cqqqcqqqc",
-
- // Connectors:
- "-1: 4, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // LittleHouse3
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // LittleHouse4:
- // The data has been exported from the gallery Desert, area index 70, ID 560, created by STR_Warrior
- {
- // Size:
- 5, 6, 11, // SizeX = 5, SizeY = 6, SizeZ = 11
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 5, 5, 11, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 2\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 24: 0\n" /* sandstone */
- "d: 13: 0\n" /* gravel */
- "e: 5: 0\n" /* wood */
- "f: 64: 3\n" /* wooddoorblock */
- "g: 65: 5\n" /* ladder */
- "h:134: 3\n" /* 134 */
- "i: 85: 0\n" /* fence */
- "j:134: 2\n" /* 134 */
- "k: 61: 2\n" /* furnace */
- "l:134: 6\n" /* 134 */
- "m: 19: 0\n" /* sponge */
- "n:134: 4\n" /* 134 */
- "o: 64: 8\n" /* wooddoorblock */
- "p: 50: 2\n" /* torch */
- "q:101: 0\n" /* ironbars */
- "r:171: 8\n" /* carpet */
- "s:128: 2\n" /* sandstonestairs */
- "t:126: 8\n" /* woodenslab */
- "u:128: 4\n" /* sandstonestairs */
- "v:128: 5\n" /* sandstonestairs */
- "w:128: 7\n" /* sandstonestairs */
- "x: 44: 1\n" /* step */
- "y: 96: 1\n" /* trapdoor */,
-
- // Block data:
- // Level 0
- /* z\x* 01234 */
- /* 0 */ "abbba"
- /* 1 */ "mbbbm"
- /* 2 */ "accca"
- /* 3 */ "ccccc"
- /* 4 */ "ccccc"
- /* 5 */ "ccccc"
- /* 6 */ "ccccc"
- /* 7 */ "ccccc"
- /* 8 */ "ccccc"
- /* 9 */ "ccccc"
- /* 10 */ "accca"
-
- // Level 1
- /* z\x* 01234 */
- /* 0 */ "addda"
- /* 1 */ "mdddm"
- /* 2 */ "aceca"
- /* 3 */ "ceeec"
- /* 4 */ "ceeec"
- /* 5 */ "ceeec"
- /* 6 */ "ceeec"
- /* 7 */ "ceeec"
- /* 8 */ "ceeec"
- /* 9 */ "ceeec"
- /* 10 */ "accca"
-
- // Level 2
- /* z\x* 01234 */
- /* 0 */ "a...a"
- /* 1 */ "....."
- /* 2 */ "acfca"
- /* 3 */ "cg..c"
- /* 4 */ "c...c"
- /* 5 */ "c..hc"
- /* 6 */ "c..ic"
- /* 7 */ "c..jc"
- /* 8 */ "c...c"
- /* 9 */ "cklnc"
- /* 10 */ "accca"
-
- // Level 3
- /* z\x* 01234 */
- /* 0 */ "a...a"
- /* 1 */ "....."
- /* 2 */ "acoca"
- /* 3 */ "cg..c"
- /* 4 */ "c..pc"
- /* 5 */ "q...q"
- /* 6 */ "q..rq"
- /* 7 */ "q...q"
- /* 8 */ "c...c"
- /* 9 */ "c...c"
- /* 10 */ "acqca"
-
- // Level 4
- /* z\x* 01234 */
- /* 0 */ "s...s"
- /* 1 */ "c...c"
- /* 2 */ "accca"
- /* 3 */ "cgttc"
- /* 4 */ "ctttc"
- /* 5 */ "utttv"
- /* 6 */ "utttv"
- /* 7 */ "utttv"
- /* 8 */ "ctttc"
- /* 9 */ "ctttc"
- /* 10 */ "acwca"
-
- // Level 5
- /* z\x* 01234 */
- /* 0 */ "....."
- /* 1 */ "....."
- /* 2 */ "cxcxc"
- /* 3 */ "xy..x"
- /* 4 */ "x...x"
- /* 5 */ "x...x"
- /* 6 */ "c...c"
- /* 7 */ "x...x"
- /* 8 */ "x...x"
- /* 9 */ "x...x"
- /* 10 */ "cxcxc",
-
- // Connectors:
- "-1: 2, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // LittleHouse4
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // LittleHouse5:
- // The data has been exported from the gallery Desert, area index 68, ID 558, created by STR_Warrior
- {
- // Size:
- 9, 6, 9, // SizeX = 9, SizeY = 6, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 9, 5, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 2\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 24: 0\n" /* sandstone */
- "d: 13: 0\n" /* gravel */
- "e: 5: 0\n" /* wood */
- "f: 64: 3\n" /* wooddoorblock */
- "g: 65: 2\n" /* ladder */
- "h: 64: 8\n" /* wooddoorblock */
- "i:101: 0\n" /* ironbars */
- "j: 50: 1\n" /* torch */
- "k: 50: 4\n" /* torch */
- "l:128: 2\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */
- "n:126: 8\n" /* woodenslab */
- "o:128: 6\n" /* sandstonestairs */
- "p:128: 5\n" /* sandstonestairs */
- "q:128: 4\n" /* sandstonestairs */
- "r:128: 7\n" /* sandstonestairs */
- "s: 44: 1\n" /* step */
- "t: 96: 2\n" /* trapdoor */,
-
- // Block data:
- // Level 0
- /* z\x* 012345678 */
- /* 0 */ "mmmmabbba"
- /* 1 */ "mmmmmbbbm"
- /* 2 */ "mmmmaccca"
- /* 3 */ "mmmmccccc"
- /* 4 */ "acccacccc"
- /* 5 */ "ccccccccc"
- /* 6 */ "ccccccccc"
- /* 7 */ "ccccccccc"
- /* 8 */ "accccccca"
-
- // Level 1
- /* z\x* 012345678 */
- /* 0 */ "mmmmaddda"
- /* 1 */ "mmmmmdddm"
- /* 2 */ "mmmmaceca"
- /* 3 */ "mmmmceeec"
- /* 4 */ "acccaeeec"
- /* 5 */ "ceeeeeeec"
- /* 6 */ "ceeeeeeec"
- /* 7 */ "ceeeeeeec"
- /* 8 */ "accccccca"
-
- // Level 2
- /* z\x* 012345678 */
- /* 0 */ "mmmma...a"
- /* 1 */ "mmmm....."
- /* 2 */ "mmmmacfca"
- /* 3 */ "mmmmc...c"
- /* 4 */ "accca...c"
- /* 5 */ "c.......c"
- /* 6 */ "c.......c"
- /* 7 */ "c......gc"
- /* 8 */ "accccccca"
-
- // Level 3
- /* z\x* 012345678 */
- /* 0 */ "mmmma...a"
- /* 1 */ "mmmm....."
- /* 2 */ "mmmmachca"
- /* 3 */ "mmmmc...c"
- /* 4 */ "acica...i"
- /* 5 */ "c.......i"
- /* 6 */ "i.......i"
- /* 7 */ "cj....kgc"
- /* 8 */ "acciiicca"
-
- // Level 4
- /* z\x* 012345678 */
- /* 0 */ "mmmml...l"
- /* 1 */ "mmmmc...c"
- /* 2 */ "mmmmaccca"
- /* 3 */ "mmmmcnnnc"
- /* 4 */ "acocannnp"
- /* 5 */ "cnnnnnnnp"
- /* 6 */ "qnnnnnnnp"
- /* 7 */ "cnnnnnngc"
- /* 8 */ "accrrrcca"
-
- // Level 5
- /* z\x* 012345678 */
- /* 0 */ "mmmm....."
- /* 1 */ "mmmm....."
- /* 2 */ "mmmmcscsc"
- /* 3 */ "mmmms...s"
- /* 4 */ "csssc...c"
- /* 5 */ "s.......s"
- /* 6 */ "s.......s"
- /* 7 */ "s......ts"
- /* 8 */ "cssscsssc",
-
- // Connectors:
- "-1: 6, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // LittleHouse5
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // LittleHouse6:
- // The data has been exported from the gallery Desert, area index 69, ID 559, created by STR_Warrior
- {
- // Size:
- 9, 6, 9, // SizeX = 9, SizeY = 6, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 9, 5, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "A: 96: 2\n" /* trapdoor */
- "a: 12: 0\n" /* sand */
- "b: 24: 2\n" /* sandstone */
- "c: 4: 0\n" /* cobblestone */
- "d: 3: 0\n" /* dirt */
- "e: 24: 0\n" /* sandstone */
- "f: 13: 0\n" /* gravel */
- "g: 2: 0\n" /* grass */
- "h: 5: 0\n" /* wood */
- "i: 85: 0\n" /* fence */
- "j: 64: 3\n" /* wooddoorblock */
- "k: 38: 1\n" /* rose */
- "l: 38: 2\n" /* rose */
- "m: 19: 0\n" /* sponge */
- "n: 38: 5\n" /* rose */
- "o: 65: 2\n" /* ladder */
- "p: 64: 8\n" /* wooddoorblock */
- "q:101: 0\n" /* ironbars */
- "r: 50: 1\n" /* torch */
- "s: 50: 4\n" /* torch */
- "t:128: 2\n" /* sandstonestairs */
- "u:126: 8\n" /* woodenslab */
- "v:128: 6\n" /* sandstonestairs */
- "w:128: 5\n" /* sandstonestairs */
- "x:128: 4\n" /* sandstonestairs */
- "y:128: 7\n" /* sandstonestairs */
- "z: 44: 1\n" /* step */,
-
- // Block data:
- // Level 0
- /* z\x* 012345678 */
- /* 0 */ "aaaabcccb"
- /* 1 */ "adddccccm"
- /* 2 */ "adddbeeeb"
- /* 3 */ "adddeeeee"
- /* 4 */ "beeebeeee"
- /* 5 */ "eeeeeeeee"
- /* 6 */ "eeeeeeeee"
- /* 7 */ "eeeeeeeee"
- /* 8 */ "beeeeeeeb"
-
- // Level 1
- /* z\x* 012345678 */
- /* 0 */ "aaaabfffb"
- /* 1 */ "agggffffm"
- /* 2 */ "agggbeheb"
- /* 3 */ "agggehhhe"
- /* 4 */ "beeebhhhe"
- /* 5 */ "ehhhhhhhe"
- /* 6 */ "ehhhhhhhe"
- /* 7 */ "ehhhhhhhe"
- /* 8 */ "beeeeeeeb"
-
- // Level 2
- /* z\x* 012345678 */
- /* 0 */ "iiiib...b"
- /* 1 */ "i........"
- /* 2 */ "i...bejeb"
- /* 3 */ "iklne...e"
- /* 4 */ "beeeb...e"
- /* 5 */ "e.......e"
- /* 6 */ "e.......e"
- /* 7 */ "e......oe"
- /* 8 */ "beeeeeeeb"
-
- // Level 3
- /* z\x* 012345678 */
- /* 0 */ "....b...b"
- /* 1 */ "........."
- /* 2 */ "....bepeb"
- /* 3 */ "....e...e"
- /* 4 */ "beqeb...q"
- /* 5 */ "e.......q"
- /* 6 */ "q.......q"
- /* 7 */ "er....soe"
- /* 8 */ "beeqqqeeb"
-
- // Level 4
- /* z\x* 012345678 */
- /* 0 */ "....t...t"
- /* 1 */ "....e...e"
- /* 2 */ "....beeeb"
- /* 3 */ "....euuue"
- /* 4 */ "bevebuuuw"
- /* 5 */ "euuuuuuuw"
- /* 6 */ "xuuuuuuuw"
- /* 7 */ "euuuuuuoe"
- /* 8 */ "beeyyyeeb"
-
- // Level 5
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ "........."
- /* 2 */ "....ezeze"
- /* 3 */ "....z...z"
- /* 4 */ "ezzze...e"
- /* 5 */ "z.......z"
- /* 6 */ "z.......z"
- /* 7 */ "z......Az"
- /* 8 */ "ezzzezzze",
-
- // Connectors:
- "-1: 6, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // LittleHouse6
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // LittleHouse7:
- // The data has been exported from the gallery Desert, area index 73, ID 563, created by xoft
- {
- // Size:
- 9, 6, 11, // SizeX = 9, SizeY = 6, SizeZ = 11
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 9, 5, 11, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 2\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 24: 0\n" /* sandstone */
- "d: 13: 0\n" /* gravel */
- "e: 5: 0\n" /* wood */
- "f: 64: 3\n" /* wooddoorblock */
- "g: 65: 2\n" /* ladder */
- "h:101: 0\n" /* ironbars */
- "i: 64: 8\n" /* wooddoorblock */
- "j: 50: 1\n" /* torch */
- "k: 50: 2\n" /* torch */
- "l:128: 2\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */
- "n:128: 6\n" /* sandstonestairs */
- "o:126: 8\n" /* woodenslab */
- "p:128: 4\n" /* sandstonestairs */
- "q:128: 5\n" /* sandstonestairs */
- "r:128: 7\n" /* sandstonestairs */
- "s: 44: 1\n" /* step */
- "t: 96: 2\n" /* trapdoor */,
-
- // Block data:
- // Level 0
- /* z\x* 012345678 */
- /* 0 */ "mmmmabbba"
- /* 1 */ "mmmmmbbbm"
- /* 2 */ "accccccca"
- /* 3 */ "ccccccccc"
- /* 4 */ "ccccccccc"
- /* 5 */ "ccccccccc"
- /* 6 */ "acccacccc"
- /* 7 */ "mmmmccccc"
- /* 8 */ "mmmmccccc"
- /* 9 */ "mmmmccccc"
- /* 10 */ "mmmmaccca"
-
- // Level 1
- /* z\x* 012345678 */
- /* 0 */ "mmmmaddda"
- /* 1 */ "mmmmmdddm"
- /* 2 */ "accccceca"
- /* 3 */ "ceeeeeeec"
- /* 4 */ "ceeeeeeec"
- /* 5 */ "ceeeeeeec"
- /* 6 */ "acccaeeec"
- /* 7 */ "mmmmceeec"
- /* 8 */ "mmmmceeec"
- /* 9 */ "mmmmceeec"
- /* 10 */ "mmmmaccca"
-
- // Level 2
- /* z\x* 012345678 */
- /* 0 */ "mmmma...a"
- /* 1 */ "mmmm....."
- /* 2 */ "acccccfca"
- /* 3 */ "c.......c"
- /* 4 */ "c.......c"
- /* 5 */ "c.......c"
- /* 6 */ "accca...c"
- /* 7 */ "mmmmc...c"
- /* 8 */ "mmmmc...c"
- /* 9 */ "mmmmc..gc"
- /* 10 */ "mmmmaccca"
-
- // Level 3
- /* z\x* 012345678 */
- /* 0 */ "mmmma...a"
- /* 1 */ "mmmm....."
- /* 2 */ "achcccica"
- /* 3 */ "c.......c"
- /* 4 */ "h.......c"
- /* 5 */ "cj......h"
- /* 6 */ "achca...h"
- /* 7 */ "mmmmc...h"
- /* 8 */ "mmmmh..kc"
- /* 9 */ "mmmmc..gc"
- /* 10 */ "mmmmachca"
-
- // Level 4
- /* z\x* 012345678 */
- /* 0 */ "mmmml...l"
- /* 1 */ "mmmmc...c"
- /* 2 */ "acnccccca"
- /* 3 */ "coooooooc"
- /* 4 */ "poooooooc"
- /* 5 */ "coooooooq"
- /* 6 */ "acrcaoooq"
- /* 7 */ "mmmmcoooq"
- /* 8 */ "mmmmpoooc"
- /* 9 */ "mmmmcoogc"
- /* 10 */ "mmmmacrca"
-
- // Level 5
- /* z\x* 012345678 */
- /* 0 */ "mmmm....."
- /* 1 */ "mmmm....."
- /* 2 */ "cssscscsc"
- /* 3 */ "s.......s"
- /* 4 */ "s.......s"
- /* 5 */ "s.......s"
- /* 6 */ "csssc...c"
- /* 7 */ "mmmms...s"
- /* 8 */ "mmmms...s"
- /* 9 */ "mmmms..ts"
- /* 10 */ "mmmmcsssc",
-
- // Connectors:
- "-1: 6, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // LittleHouse7
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // LittleHouse8:
- // The data has been exported from the gallery Desert, area index 99, ID 739, created by STR_Warrior
- {
- // Size:
- 9, 6, 9, // SizeX = 9, SizeY = 6, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- 0, 0, -1, // MinX, MinY, MinZ
- 9, 5, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 2\n" /* sandstone */
- "b: 24: 0\n" /* sandstone */
- "c: 4: 0\n" /* cobblestone */
- "d: 13: 0\n" /* gravel */
- "e: 5: 0\n" /* wood */
- "f: 64: 2\n" /* wooddoorblock */
- "g: 65: 2\n" /* ladder */
- "h:101: 0\n" /* ironbars */
- "i: 64: 8\n" /* wooddoorblock */
- "j: 50: 1\n" /* torch */
- "k:128: 6\n" /* sandstonestairs */
- "l:126: 8\n" /* woodenslab */
- "m: 19: 0\n" /* sponge */
- "n:128: 5\n" /* sandstonestairs */
- "o:128: 4\n" /* sandstonestairs */
- "p:128: 7\n" /* sandstonestairs */
- "q: 44: 1\n" /* step */
- "r: 96: 2\n" /* trapdoor */,
-
- // Block data:
- // Level 0
- /* z\x* 012345678 */
- /* 0 */ "mmmmabbba"
- /* 1 */ "ccccbbbbb"
- /* 2 */ "ccccbbbbb"
- /* 3 */ "ccccbbbbb"
- /* 4 */ "abbbabbbb"
- /* 5 */ "bbbbbbbbb"
- /* 6 */ "bbbbbbbbb"
- /* 7 */ "bbbbbbbbb"
- /* 8 */ "abbbbbbba"
-
- // Level 1
- /* z\x* 012345678 */
- /* 0 */ "mmmmabbba"
- /* 1 */ "ddddbeeeb"
- /* 2 */ "ddddeeeeb"
- /* 3 */ "ddddbeeeb"
- /* 4 */ "abbbaeeeb"
- /* 5 */ "beeeeeeeb"
- /* 6 */ "beeeeeeeb"
- /* 7 */ "beeeeeeeb"
- /* 8 */ "abbbbbbba"
-
- // Level 2
- /* z\x* 012345678 */
- /* 0 */ "mmmmabbba"
- /* 1 */ "....b...b"
- /* 2 */ "....f...b"
- /* 3 */ "....b...b"
- /* 4 */ "abbba...b"
- /* 5 */ "b.......b"
- /* 6 */ "b.......b"
- /* 7 */ "b......gb"
- /* 8 */ "abbbbbbba"
-
- // Level 3
- /* z\x* 012345678 */
- /* 0 */ "mmmmabhba"
- /* 1 */ "....b...b"
- /* 2 */ "....i...b"
- /* 3 */ "....b...h"
- /* 4 */ "abhbaj..h"
- /* 5 */ "b.......h"
- /* 6 */ "h.......b"
- /* 7 */ "b......gb"
- /* 8 */ "abbhhhbba"
-
- // Level 4
- /* z\x* 012345678 */
- /* 0 */ "mmmmabkba"
- /* 1 */ "....blllb"
- /* 2 */ "....blllb"
- /* 3 */ "....bllln"
- /* 4 */ "abkballln"
- /* 5 */ "bllllllln"
- /* 6 */ "olllllllb"
- /* 7 */ "bllllllgb"
- /* 8 */ "abbpppbba"
-
- // Level 5
- /* z\x* 012345678 */
- /* 0 */ "mmmmbqbqb"
- /* 1 */ "....q...q"
- /* 2 */ "....q...q"
- /* 3 */ "....q...q"
- /* 4 */ "bqqqb...b"
- /* 5 */ "q.......q"
- /* 6 */ "b.......q"
- /* 7 */ "q......rq"
- /* 8 */ "bqqqbqqqb",
-
- // Connectors:
- "-1: 0, 2, 2: 4\n" /* Type -1, direction X- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // LittleHouse8
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // LittleTower:
- // The data has been exported from the gallery Desert, area index 79, ID 595, created by STR_Warrior
- {
- // Size:
- 5, 9, 7, // SizeX = 5, SizeY = 9, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 5, 8, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 2\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 24: 0\n" /* sandstone */
- "d: 13: 0\n" /* gravel */
- "e: 5: 0\n" /* wood */
- "f: 64: 3\n" /* wooddoorblock */
- "g: 65: 5\n" /* ladder */
- "h: 64: 8\n" /* wooddoorblock */
- "i:101: 0\n" /* ironbars */
- "j: 50: 4\n" /* torch */
- "k:128: 2\n" /* sandstonestairs */
- "l:126: 8\n" /* woodenslab */
- "m: 19: 0\n" /* sponge */
- "n:128: 4\n" /* sandstonestairs */
- "o:128: 5\n" /* sandstonestairs */
- "p:128: 7\n" /* sandstonestairs */
- "q:128: 6\n" /* sandstonestairs */
- "r: 44: 1\n" /* step */
- "s: 96: 1\n" /* trapdoor */,
-
- // Block data:
- // Level 0
- /* z\x* 01234 */
- /* 0 */ "abbba"
- /* 1 */ "mbbbm"
- /* 2 */ "accca"
- /* 3 */ "ccccc"
- /* 4 */ "ccccc"
- /* 5 */ "ccccc"
- /* 6 */ "accca"
-
- // Level 1
- /* z\x* 01234 */
- /* 0 */ "addda"
- /* 1 */ "mdddm"
- /* 2 */ "aceca"
- /* 3 */ "ceeec"
- /* 4 */ "ceeec"
- /* 5 */ "ceeec"
- /* 6 */ "accca"
-
- // Level 2
- /* z\x* 01234 */
- /* 0 */ "a...a"
- /* 1 */ "....."
- /* 2 */ "acfca"
- /* 3 */ "cg..c"
- /* 4 */ "c...c"
- /* 5 */ "c...c"
- /* 6 */ "accca"
-
- // Level 3
- /* z\x* 01234 */
- /* 0 */ "a...a"
- /* 1 */ "....."
- /* 2 */ "achca"
- /* 3 */ "cg..c"
- /* 4 */ "i...i"
- /* 5 */ "c..jc"
- /* 6 */ "acica"
-
- // Level 4
- /* z\x* 01234 */
- /* 0 */ "k...k"
- /* 1 */ "c...c"
- /* 2 */ "accca"
- /* 3 */ "cgllc"
- /* 4 */ "nlllo"
- /* 5 */ "clllc"
- /* 6 */ "acpca"
-
- // Level 5
- /* z\x* 01234 */
- /* 0 */ "....."
- /* 1 */ "....."
- /* 2 */ "accca"
- /* 3 */ "cg..c"
- /* 4 */ "c...c"
- /* 5 */ "c...c"
- /* 6 */ "accca"
-
- // Level 6
- /* z\x* 01234 */
- /* 0 */ "....."
- /* 1 */ "....."
- /* 2 */ "acica"
- /* 3 */ "cg..c"
- /* 4 */ "i...i"
- /* 5 */ "c..jc"
- /* 6 */ "acica"
-
- // Level 7
- /* z\x* 01234 */
- /* 0 */ "....."
- /* 1 */ "....."
- /* 2 */ "acqca"
- /* 3 */ "cgllc"
- /* 4 */ "nlllo"
- /* 5 */ "clllc"
- /* 6 */ "acpca"
-
- // Level 8
- /* z\x* 01234 */
- /* 0 */ "....."
- /* 1 */ "....."
- /* 2 */ "crcrc"
- /* 3 */ "rs..r"
- /* 4 */ "c...c"
- /* 5 */ "r...r"
- /* 6 */ "crcrc",
-
- // Connectors:
- "-1: 2, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // LittleTower
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MediumHouse1:
- // The data has been exported from the gallery Desert, area index 71, ID 561, created by STR_Warrior
- {
- // Size:
- 15, 9, 9, // SizeX = 15, SizeY = 9, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 15, 8, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 2\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 24: 0\n" /* sandstone */
- "d: 13: 0\n" /* gravel */
- "e: 5: 0\n" /* wood */
- "f: 12: 0\n" /* sand */
- "g: 64: 3\n" /* wooddoorblock */
- "h: 85: 0\n" /* fence */
- "i: 64: 0\n" /* wooddoorblock */
- "j: 65: 5\n" /* ladder */
- "k: 64: 8\n" /* wooddoorblock */
- "l:101: 0\n" /* ironbars */
- "m: 19: 0\n" /* sponge */
- "n: 50: 4\n" /* torch */
- "o:128: 2\n" /* sandstonestairs */
- "p:126: 8\n" /* woodenslab */
- "q:128: 4\n" /* sandstonestairs */
- "r:128: 7\n" /* sandstonestairs */
- "s: 44: 1\n" /* step */
- "t: 50: 3\n" /* torch */
- "u:128: 6\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmabbbammmmmmm"
- /* 1 */ "mmmmbbbmmmmmmmm"
- /* 2 */ "acccccccccacccc"
- /* 3 */ "ccccccccccccccc"
- /* 4 */ "ccccccccccccccc"
- /* 5 */ "ccccccccccccccc"
- /* 6 */ "ccccccccccccccc"
- /* 7 */ "ccccccccccccccc"
- /* 8 */ "acccccccccacccc"
-
- // Level 1
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmadddammmmmmm"
- /* 1 */ "mmmmdddmmmmmmmm"
- /* 2 */ "acccceccccaffff"
- /* 3 */ "ceeeeeeeeecffff"
- /* 4 */ "ceeeeeeeeecffff"
- /* 5 */ "ceeeeeeeeeeffff"
- /* 6 */ "ceeeeeeeeecffff"
- /* 7 */ "ceeeeeeeeecffff"
- /* 8 */ "acccccccccaffff"
-
- // Level 2
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmma...ammmmmmm"
- /* 1 */ "mmm.....mmmmmmm"
- /* 2 */ "accccgccccahhhh"
- /* 3 */ "c.........c...h"
- /* 4 */ "c.........c...h"
- /* 5 */ "c.........i...h"
- /* 6 */ "c.........c...h"
- /* 7 */ "c.........cj..h"
- /* 8 */ "acccccccccahhhh"
-
- // Level 3
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmma...ammmmmmm"
- /* 1 */ "mmm.....mmmmmmm"
- /* 2 */ "acccckcccca...."
- /* 3 */ "c.........c...."
- /* 4 */ "l.........c...."
- /* 5 */ "l.........k...."
- /* 6 */ "l.........c...."
- /* 7 */ "c..n...n..cj..."
- /* 8 */ "accclllccca...."
-
- // Level 4
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmo...ommmmmmm"
- /* 1 */ "mmmc...cmmmmmmm"
- /* 2 */ "accccccccca...."
- /* 3 */ "cpppppppppc...."
- /* 4 */ "qpppppppppc...."
- /* 5 */ "qpppppppppc...."
- /* 6 */ "qpppppppppc...."
- /* 7 */ "cpppppppppcj..."
- /* 8 */ "acccrrrccca...."
-
- // Level 5
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmm.....mmmmmmm"
- /* 1 */ "mmm.....mmmmmmm"
- /* 2 */ "csssscssssc...."
- /* 3 */ "s..accca..s...."
- /* 4 */ "s..c...c..s...."
- /* 5 */ "c.........c...."
- /* 6 */ "s..c...c..s...."
- /* 7 */ "s..accca..s...."
- /* 8 */ "csssscssssc...."
-
- // Level 6
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "..............."
- /* 3 */ "...aclca......."
- /* 4 */ "...ct..c......."
- /* 5 */ "..............."
- /* 6 */ "...c...c......."
- /* 7 */ "...aclca......."
- /* 8 */ "..............."
-
- // Level 7
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "..............."
- /* 3 */ "...acuca......."
- /* 4 */ "...cpppc......."
- /* 5 */ "...cpppc......."
- /* 6 */ "...cpppc......."
- /* 7 */ "...acrca......."
- /* 8 */ "..............."
-
- // Level 8
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "..............."
- /* 3 */ "...cscsc......."
- /* 4 */ "...s...s......."
- /* 5 */ "...c...c......."
- /* 6 */ "...s...s......."
- /* 7 */ "...cscsc......."
- /* 8 */ "...............",
-
- // Connectors:
- "-1: 5, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 80,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // MediumHouse1
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MediumHouse2:
- // The data has been exported from the gallery Desert, area index 74, ID 573, created by STR_Warrior
- {
- // Size:
- 11, 10, 9, // SizeX = 11, SizeY = 10, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 11, 9, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "A:128: 7\n" /* sandstonestairs */
- "B: 44: 1\n" /* step */
- "C: 96: 3\n" /* trapdoor */
- "D: 96: 2\n" /* trapdoor */
- "E:128: 2\n" /* sandstonestairs */
- "F:128: 0\n" /* sandstonestairs */
- "G: 87: 0\n" /* netherstone */
- "H:128: 1\n" /* sandstonestairs */
- "I:128: 3\n" /* sandstonestairs */
- "J: 51: 0\n" /* fire */
- "K: 44: 9\n" /* step */
- "a: 24: 2\n" /* sandstone */
- "b: 24: 0\n" /* sandstone */
- "c: 4: 0\n" /* cobblestone */
- "d: 12: 0\n" /* sand */
- "e: 13: 0\n" /* gravel */
- "f: 5: 0\n" /* wood */
- "g: 65: 3\n" /* ladder */
- "h: 85: 0\n" /* fence */
- "i: 64: 3\n" /* wooddoorblock */
- "j:134: 1\n" /* 134 */
- "k:134: 2\n" /* 134 */
- "l: 61: 2\n" /* furnace */
- "m: 19: 0\n" /* sponge */
- "n:134: 6\n" /* 134 */
- "o:134: 4\n" /* 134 */
- "p: 65: 2\n" /* ladder */
- "q:101: 0\n" /* ironbars */
- "r: 50: 2\n" /* torch */
- "s: 47: 0\n" /* bookshelf */
- "t: 64: 8\n" /* wooddoorblock */
- "u: 50: 3\n" /* torch */
- "v:171: 8\n" /* carpet */
- "w:128: 6\n" /* sandstonestairs */
- "x:126: 8\n" /* woodenslab */
- "y:128: 5\n" /* sandstonestairs */
- "z:128: 4\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "abbbammmcmm"
- /* 1 */ "bbbbbdddcdm"
- /* 2 */ "bbbbbmmmcdm"
- /* 3 */ "bbbbbmmmcdm"
- /* 4 */ "bbbbabbbbba"
- /* 5 */ "bbbbbbbbbbb"
- /* 6 */ "bbbbbbbbbbb"
- /* 7 */ "bbbbbbbbbbb"
- /* 8 */ "abbbbbbbbba"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "abbbammmemm"
- /* 1 */ "bfffbdddedm"
- /* 2 */ "bfffbmmmedm"
- /* 3 */ "bfffbmmmedm"
- /* 4 */ "bfffabbbfba"
- /* 5 */ "bfffffffffb"
- /* 6 */ "bfffffffffb"
- /* 7 */ "bfffffffffb"
- /* 8 */ "abbbbbbbbba"
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "abbba......"
- /* 1 */ "bg..bhhh.h."
- /* 2 */ "b...b....h."
- /* 3 */ "b...b....h."
- /* 4 */ "b...abbbiba"
- /* 5 */ "b.........b"
- /* 6 */ "bjh.......b"
- /* 7 */ "bjk.lno..pb"
- /* 8 */ "abbbbbbbbba"
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "abqba......"
- /* 1 */ "bg..q......"
- /* 2 */ "b...q......"
- /* 3 */ "q..rb......"
- /* 4 */ "q...sbqbtba"
- /* 5 */ "q......u..b"
- /* 6 */ "b.v.......q"
- /* 7 */ "b........pb"
- /* 8 */ "abbbqqqbbba"
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "abwba......"
- /* 1 */ "bgxxy......"
- /* 2 */ "bxxxy......"
- /* 3 */ "zxxxb......"
- /* 4 */ "zxxxabwbbba"
- /* 5 */ "zxxxxxxxxxb"
- /* 6 */ "bxxxxxxxxxy"
- /* 7 */ "bxxxsssxxpb"
- /* 8 */ "abbbAAAbbba"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "bBBBb......"
- /* 1 */ "BC..B......"
- /* 2 */ "B...B......"
- /* 3 */ "B...B......"
- /* 4 */ "b...bBBBBBb"
- /* 5 */ "Bbbb......B"
- /* 6 */ "Bbbb......B"
- /* 7 */ "Bbbb.....DB"
- /* 8 */ "bBBBBbBBBBb"
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "..........."
- /* 4 */ "..........."
- /* 5 */ ".aEa......."
- /* 6 */ ".FGH......."
- /* 7 */ ".aIa......."
- /* 8 */ "..........."
-
- // Level 7
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "..........."
- /* 4 */ "..........."
- /* 5 */ ".a.a......."
- /* 6 */ "..J........"
- /* 7 */ ".a.a......."
- /* 8 */ "..........."
-
- // Level 8
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "..........."
- /* 4 */ "..........."
- /* 5 */ ".bbb......."
- /* 6 */ ".bKb......."
- /* 7 */ ".bbb......."
- /* 8 */ "..........."
-
- // Level 9
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "..........."
- /* 4 */ "..........."
- /* 5 */ ".B.B......."
- /* 6 */ "..........."
- /* 7 */ ".B.B......."
- /* 8 */ "...........",
-
- // Connectors:
- "-1: 8, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 80,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // MediumHouse2
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MediumHouse3:
- // The data has been exported from the gallery Desert, area index 76, ID 575, created by STR_Warrior
- {
- // Size:
- 12, 10, 11, // SizeX = 12, SizeY = 10, SizeZ = 11
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 12, 9, 11, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 2\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 3: 0\n" /* dirt */
- "d: 24: 0\n" /* sandstone */
- "e: 13: 0\n" /* gravel */
- "f: 2: 0\n" /* grass */
- "g: 5: 0\n" /* wood */
- "h: 85: 0\n" /* fence */
- "i: 64: 3\n" /* wooddoorblock */
- "j: 64: 2\n" /* wooddoorblock */
- "k: 65: 4\n" /* ladder */
- "l: 65: 2\n" /* ladder */
- "m: 19: 0\n" /* sponge */
- "n: 50: 1\n" /* torch */
- "o: 50: 2\n" /* torch */
- "p:101: 0\n" /* ironbars */
- "q: 64: 8\n" /* wooddoorblock */
- "r:128: 2\n" /* sandstonestairs */
- "s:128: 6\n" /* sandstonestairs */
- "t:126: 8\n" /* woodenslab */
- "u:128: 5\n" /* sandstonestairs */
- "v:128: 7\n" /* sandstonestairs */
- "w: 44: 1\n" /* step */
- "x: 96: 0\n" /* trapdoor */
- "y:126: 0\n" /* woodenslab */
- "z:128: 4\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "mmmmmammbbba"
- /* 1 */ "mmmmmmmmbbbm"
- /* 2 */ "cccccaddddda"
- /* 3 */ "cccccddddddd"
- /* 4 */ "cccccddddddd"
- /* 5 */ "cccccddddddd"
- /* 6 */ "cccddddddddd"
- /* 7 */ "mmmddddddddd"
- /* 8 */ "mmmdddddddda"
- /* 9 */ "mmmdddddmmmm"
- /* 10 */ "mmmadddammmm"
-
- // Level 1
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "mmmmmammeeea"
- /* 1 */ "mmmmmmmmeeem"
- /* 2 */ "fffffadddgda"
- /* 3 */ "fffffdgggggd"
- /* 4 */ "fffffggggggd"
- /* 5 */ "fffffdgggggd"
- /* 6 */ "fffddggggggd"
- /* 7 */ "mmmdgggggggd"
- /* 8 */ "mmmdggggddda"
- /* 9 */ "mmmdgggdmmmm"
- /* 10 */ "mmmadddammmm"
-
- // Level 2
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "mmmmma.....a"
- /* 1 */ "mmmmm......."
- /* 2 */ "hhhhhadddida"
- /* 3 */ "h....d.....d"
- /* 4 */ "h....j.....d"
- /* 5 */ "h....d.....d"
- /* 6 */ "hhhad......d"
- /* 7 */ "mmmd......kd"
- /* 8 */ "mmmd....ddda"
- /* 9 */ "mmmd..ldmmmm"
- /* 10 */ "mmmadddammmm"
-
- // Level 3
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "mmmmman...oa"
- /* 1 */ "mmmmm......."
- /* 2 */ ".....appdqda"
- /* 3 */ ".....d.....d"
- /* 4 */ ".....q.....d"
- /* 5 */ ".....d.....p"
- /* 6 */ "...hd......d"
- /* 7 */ "mmmd......kd"
- /* 8 */ "mmmd....dppa"
- /* 9 */ "mmmd..ldmmmm"
- /* 10 */ "mmmhdddhmmmm"
-
- // Level 4
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "mmmmmr.....r"
- /* 1 */ "mmmmmd.....d"
- /* 2 */ ".....assddda"
- /* 3 */ ".....dtttttd"
- /* 4 */ ".....dtttttd"
- /* 5 */ ".....dtttttu"
- /* 6 */ "...hdatttttd"
- /* 7 */ "mmmdttttttkd"
- /* 8 */ "mmmdtttadvva"
- /* 9 */ "mmmdttldmmmm"
- /* 10 */ "mmmhdddhmmmm"
-
- // Level 5
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ ".....dwwdwwd"
- /* 3 */ ".....w.....w"
- /* 4 */ ".....w.....w"
- /* 5 */ ".....w.....d"
- /* 6 */ "...hdadh...w"
- /* 7 */ "mmmd...d..xw"
- /* 8 */ "mmmd...awwwd"
- /* 9 */ "mmmd..ldmmmm"
- /* 10 */ "mmmhdddhmmmm"
-
- // Level 6
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ "............"
- /* 3 */ "............"
- /* 4 */ "............"
- /* 5 */ "............"
- /* 6 */ "...hd.dh...."
- /* 7 */ "mmmd...d...."
- /* 8 */ "mmmp........"
- /* 9 */ "mmmd..ldmmmm"
- /* 10 */ "mmmhdpdhmmmm"
-
- // Level 7
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ "............"
- /* 3 */ "............"
- /* 4 */ "............"
- /* 5 */ "............"
- /* 6 */ "...hd.dh...."
- /* 7 */ "mmmd...d...."
- /* 8 */ "mmmp........"
- /* 9 */ "mmmdn.ldmmmm"
- /* 10 */ "mmmhdpdhmmmm"
-
- // Level 8
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ "............"
- /* 3 */ "............"
- /* 4 */ "............"
- /* 5 */ "............"
- /* 6 */ "...adsda...."
- /* 7 */ "mmmdyyyd...."
- /* 8 */ "mmmzyyyu...."
- /* 9 */ "mmmdyyldmmmm"
- /* 10 */ "mmmadvdammmm"
-
- // Level 9
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ "............"
- /* 3 */ "............"
- /* 4 */ "............"
- /* 5 */ "............"
- /* 6 */ "...w.w.w...."
- /* 7 */ "mmm........."
- /* 8 */ "mmmw...w...."
- /* 9 */ "mmm.....mmmm"
- /* 10 */ "mmmw.w.wmmmm",
-
- // Connectors:
- "-1: 9, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 80,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // MediumHouse3
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // SmallHouse9:
- // The data has been exported from the gallery Desert, area index 67, ID 556, created by STR_Warrior
- {
- // Size:
- 9, 6, 11, // SizeX = 9, SizeY = 6, SizeZ = 11
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 9, 5, 11, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 2\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 24: 0\n" /* sandstone */
- "d: 13: 0\n" /* gravel */
- "e: 5: 0\n" /* wood */
- "f: 64: 3\n" /* wooddoorblock */
- "g: 65: 2\n" /* ladder */
- "h: 64: 8\n" /* wooddoorblock */
- "i:101: 0\n" /* ironbars */
- "j: 50: 2\n" /* torch */
- "k: 50: 1\n" /* torch */
- "l:128: 2\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */
- "n:126: 8\n" /* woodenslab */
- "o:128: 5\n" /* sandstonestairs */
- "p:128: 6\n" /* sandstonestairs */
- "q:128: 4\n" /* sandstonestairs */
- "r:128: 7\n" /* sandstonestairs */
- "s: 44: 1\n" /* step */
- "t: 96: 2\n" /* trapdoor */,
-
- // Block data:
- // Level 0
- /* z\x* 012345678 */
- /* 0 */ "mmmmabbba"
- /* 1 */ "mmmmmbbbm"
- /* 2 */ "mmmmaccca"
- /* 3 */ "mmmmccccc"
- /* 4 */ "mmmmccccc"
- /* 5 */ "mmmmccccc"
- /* 6 */ "acccacccc"
- /* 7 */ "ccccccccc"
- /* 8 */ "ccccccccc"
- /* 9 */ "ccccccccc"
- /* 10 */ "accccccca"
-
- // Level 1
- /* z\x* 012345678 */
- /* 0 */ "mmmmaddda"
- /* 1 */ "mmmmmdddm"
- /* 2 */ "mmmmaceca"
- /* 3 */ "mmmmceeec"
- /* 4 */ "mmmmceeec"
- /* 5 */ "mmmmceeec"
- /* 6 */ "acccaeeec"
- /* 7 */ "ceeeeeeec"
- /* 8 */ "ceeeeeeec"
- /* 9 */ "ceeeeeeec"
- /* 10 */ "accccccca"
-
- // Level 2
- /* z\x* 012345678 */
- /* 0 */ "mmmma...a"
- /* 1 */ "mmmm....."
- /* 2 */ "mmmmacfca"
- /* 3 */ "mmmmc...c"
- /* 4 */ "mmmmc...c"
- /* 5 */ "mmmmc...c"
- /* 6 */ "accca...c"
- /* 7 */ "c.......c"
- /* 8 */ "c.......c"
- /* 9 */ "c......gc"
- /* 10 */ "accccccca"
-
- // Level 3
- /* z\x* 012345678 */
- /* 0 */ "mmmma...a"
- /* 1 */ "mmmm....."
- /* 2 */ "mmmmachca"
- /* 3 */ "mmmmc...c"
- /* 4 */ "mmmmc...c"
- /* 5 */ "mmmmc...i"
- /* 6 */ "acica...i"
- /* 7 */ "c.......i"
- /* 8 */ "i......jc"
- /* 9 */ "ck.....gc"
- /* 10 */ "acciiicca"
-
- // Level 4
- /* z\x* 012345678 */
- /* 0 */ "mmmml...l"
- /* 1 */ "mmmmc...c"
- /* 2 */ "mmmmaccca"
- /* 3 */ "mmmmcnnnc"
- /* 4 */ "mmmmcnnnc"
- /* 5 */ "mmmmcnnno"
- /* 6 */ "acpcannno"
- /* 7 */ "cnnnnnnno"
- /* 8 */ "qnnnnnnnc"
- /* 9 */ "cnnnnnngc"
- /* 10 */ "accrrrcca"
-
- // Level 5
- /* z\x* 012345678 */
- /* 0 */ "mmmm....."
- /* 1 */ "mmmm....."
- /* 2 */ "mmmmcscsc"
- /* 3 */ "mmmms...s"
- /* 4 */ "mmmms...s"
- /* 5 */ "mmmms...s"
- /* 6 */ "csssc...c"
- /* 7 */ "s.......s"
- /* 8 */ "s.......s"
- /* 9 */ "s......ts"
- /* 10 */ "cssscsssc",
-
- // Connectors:
- "-1: 6, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // SmallHouse9
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // Temple:
- // The data has been exported from the gallery Desert, area index 83, ID 599, created by STR_Warrior
- {
- // Size:
- 13, 10, 9, // SizeX = 13, SizeY = 10, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 13, 9, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "A: 51: 0\n" /* fire */
- "B: 44: 9\n" /* step */
- "a: 24: 2\n" /* sandstone */
- "b: 4: 0\n" /* cobblestone */
- "c: 24: 0\n" /* sandstone */
- "d: 13: 0\n" /* gravel */
- "e: 5: 0\n" /* wood */
- "f: 64: 3\n" /* wooddoorblock */
- "g: 17: 0\n" /* tree */
- "h:128: 5\n" /* sandstonestairs */
- "i:128: 4\n" /* sandstonestairs */
- "j:128: 7\n" /* sandstonestairs */
- "k:128: 6\n" /* sandstonestairs */
- "l:118: 3\n" /* cauldronblock */
- "m: 19: 0\n" /* sponge */
- "n:155: 1\n" /* quartzblock */
- "o: 64: 8\n" /* wooddoorblock */
- "p: 50: 3\n" /* torch */
- "q:101: 0\n" /* ironbars */
- "r:140: 0\n" /* flowerpotblock */
- "s: 24: 1\n" /* sandstone */
- "t:128: 2\n" /* sandstonestairs */
- "u:126: 8\n" /* woodenslab */
- "v: 44: 1\n" /* step */
- "w:128: 0\n" /* sandstonestairs */
- "x: 87: 0\n" /* netherstone */
- "y:128: 1\n" /* sandstonestairs */
- "z:128: 3\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "mmmmabbbammmm"
- /* 1 */ "mmmmmbbbmmmmm"
- /* 2 */ "accccccccccca"
- /* 3 */ "ccccccccccccc"
- /* 4 */ "ccccccccccccc"
- /* 5 */ "ccccccccccccc"
- /* 6 */ "ccccccccccccc"
- /* 7 */ "ccccccccccccc"
- /* 8 */ "accccccccccca"
-
- // Level 1
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "mmmmadddammmm"
- /* 1 */ "mmmmmdddmmmmm"
- /* 2 */ "accccceccccca"
- /* 3 */ "ceeeeeeeeeeec"
- /* 4 */ "ceeeeeeeeeeec"
- /* 5 */ "ceeeeeeeeeeec"
- /* 6 */ "ceeeeeeeeeeec"
- /* 7 */ "ceeeeeeeeeeec"
- /* 8 */ "accccccccccca"
-
- // Level 2
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "mmmma...ammmm"
- /* 1 */ "mmmm.....mmmm"
- /* 2 */ "acccccfccccca"
- /* 3 */ "cgh.......igc"
- /* 4 */ "cj.........jc"
- /* 5 */ "c...........c"
- /* 6 */ "ck.........kc"
- /* 7 */ "cgh.linhl.igc"
- /* 8 */ "accccccccccca"
-
- // Level 3
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "mmmma...ammmm"
- /* 1 */ "mmmm.....mmmm"
- /* 2 */ "acccccoccccca"
- /* 3 */ "cg...p.p...gc"
- /* 4 */ "c...........c"
- /* 5 */ "q...........q"
- /* 6 */ "c...........c"
- /* 7 */ "cg...rsr...gc"
- /* 8 */ "acqqqcccqqqca"
-
- // Level 4
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "mmmmt...tmmmm"
- /* 1 */ "mmmms...cmmmm"
- /* 2 */ "accccccccccca"
- /* 3 */ "cguuuuuuuuugc"
- /* 4 */ "cuuuuuuuuuuuc"
- /* 5 */ "iuuuuuuuuuuuh"
- /* 6 */ "cuuuuuuuuuuuc"
- /* 7 */ "cguuuuuuuuugc"
- /* 8 */ "acjjjcccjjjca"
-
- // Level 5
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "mmmm.....mmmm"
- /* 1 */ "mmmm.....mmmm"
- /* 2 */ "cvvvvvcvvvvvc"
- /* 3 */ "v...........v"
- /* 4 */ "v.ccc...ccc.v"
- /* 5 */ "c.ccc...ccc.c"
- /* 6 */ "v.ccc...ccc.v"
- /* 7 */ "v...........v"
- /* 8 */ "cvvvvvcvvvvvc"
-
- // Level 6
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "............."
- /* 2 */ "............."
- /* 3 */ "............."
- /* 4 */ "..ata...ata.."
- /* 5 */ "..wxy...wxy.."
- /* 6 */ "..aza...aza.."
- /* 7 */ "............."
- /* 8 */ "............."
-
- // Level 7
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "............."
- /* 2 */ "............."
- /* 3 */ "............."
- /* 4 */ "..a.a...a.a.."
- /* 5 */ "...A.....A..."
- /* 6 */ "..a.a...a.a.."
- /* 7 */ "............."
- /* 8 */ "............."
-
- // Level 8
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "............."
- /* 2 */ "............."
- /* 3 */ "............."
- /* 4 */ "..ccc...ccc.."
- /* 5 */ "..cBc...cBc.."
- /* 6 */ "..ccc...ccc.."
- /* 7 */ "............."
- /* 8 */ "............."
-
- // Level 9
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "............."
- /* 2 */ "............."
- /* 3 */ "............."
- /* 4 */ "..v.v...v.v.."
- /* 5 */ "............."
- /* 6 */ "..v.v...v.v.."
- /* 7 */ "............."
- /* 8 */ ".............",
-
- // Connectors:
- "-1: 6, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 50,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Temple
-}; // g_AlchemistVillagePrefabs
-
-
-
-
-
-
-const cPrefab::sDef g_AlchemistVillageStartingPrefabs[] =
-{
- ////////////////////////////////////////////////////////////////////////////////
- // Well:
- // The data has been exported from the gallery Desert, area index 90, ID 631, created by STR_Warrior
- {
- // Size:
- 7, 21, 7, // SizeX = 7, SizeY = 21, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 6, 20, 6, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 1: 0\n" /* stone */
- "b: 24: 2\n" /* sandstone */
- "c: 24: 0\n" /* sandstone */
- "d: 8: 0\n" /* water */
- "e: 4: 0\n" /* cobblestone */
- "f: 13: 0\n" /* gravel */
- "g:128: 1\n" /* sandstonestairs */
- "h: 44: 1\n" /* step */
- "i:128: 0\n" /* sandstonestairs */
- "j:128: 3\n" /* sandstonestairs */
- "k:128: 2\n" /* sandstonestairs */
- "l: 44: 9\n" /* step */
- "m: 19: 0\n" /* sponge */
- "n:126: 0\n" /* woodenslab */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "maaaaam"
- /* 2 */ "maaaaam"
- /* 3 */ "maaaaam"
- /* 4 */ "maaaaam"
- /* 5 */ "maaaaam"
- /* 6 */ "mmmmmmm"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "mcdddcm"
- /* 3 */ "mcdddcm"
- /* 4 */ "mcdddcm"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmmmmmm"
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "mcdddcm"
- /* 3 */ "mcdddcm"
- /* 4 */ "mcdddcm"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmmmmmm"
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "mcdddcm"
- /* 3 */ "mcdddcm"
- /* 4 */ "mcdddcm"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmmmmmm"
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "mcdddcm"
- /* 3 */ "mcdddcm"
- /* 4 */ "mcdddcm"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmmmmmm"
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "mcdddcm"
- /* 3 */ "mcdddcm"
- /* 4 */ "mcdddcm"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmmmmmm"
-
- // Level 6
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "mcdddcm"
- /* 3 */ "mcdddcm"
- /* 4 */ "mcdddcm"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmmmmmm"
-
- // Level 7
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "mcdddcm"
- /* 3 */ "mcdddcm"
- /* 4 */ "mcdddcm"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmmmmmm"
-
- // Level 8
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "mcdddcm"
- /* 3 */ "mcdddcm"
- /* 4 */ "mcdddcm"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmmmmmm"
-
- // Level 9
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "mcdddcm"
- /* 3 */ "mcdddcm"
- /* 4 */ "mcdddcm"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmmmmmm"
-
- // Level 10
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "mcdddcm"
- /* 3 */ "mcdddcm"
- /* 4 */ "mcdddcm"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmmmmmm"
-
- // Level 11
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "mcdddcm"
- /* 3 */ "mcdddcm"
- /* 4 */ "mcdddcm"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmmmmmm"
-
- // Level 12
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "mcdddcm"
- /* 3 */ "mcdddcm"
- /* 4 */ "mcdddcm"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmmmmmm"
-
- // Level 13
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "mcdddcm"
- /* 3 */ "mcdddcm"
- /* 4 */ "mcdddcm"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmmmmmm"
-
- // Level 14
- /* z\x* 0123456 */
- /* 0 */ "mmeeemm"
- /* 1 */ "mbcccbm"
- /* 2 */ "ecdddce"
- /* 3 */ "ecdddce"
- /* 4 */ "ecdddce"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmeeemm"
-
- // Level 15
- /* z\x* 0123456 */
- /* 0 */ "mmfffmm"
- /* 1 */ "mbcccbm"
- /* 2 */ "fcdddcf"
- /* 3 */ "fcdddcf"
- /* 4 */ "fcdddcf"
- /* 5 */ "mbcccbm"
- /* 6 */ "mmfffmm"
-
- // Level 16
- /* z\x* 0123456 */
- /* 0 */ "mm...mm"
- /* 1 */ "mbghibm"
- /* 2 */ ".j...j."
- /* 3 */ ".h...h."
- /* 4 */ ".k...k."
- /* 5 */ "mbghibm"
- /* 6 */ "mm...mm"
-
- // Level 17
- /* z\x* 0123456 */
- /* 0 */ "mm...mm"
- /* 1 */ "mb...bm"
- /* 2 */ "......."
- /* 3 */ "......."
- /* 4 */ "......."
- /* 5 */ "mb...bm"
- /* 6 */ "mm...mm"
-
- // Level 18
- /* z\x* 0123456 */
- /* 0 */ "mm...mm"
- /* 1 */ "mblllbm"
- /* 2 */ ".l...l."
- /* 3 */ ".l...l."
- /* 4 */ ".l...l."
- /* 5 */ "mblllbm"
- /* 6 */ "mm...mm"
-
- // Level 19
- /* z\x* 0123456 */
- /* 0 */ "mm...mm"
- /* 1 */ "mcccccm"
- /* 2 */ ".cnnnc."
- /* 3 */ ".cnnnc."
- /* 4 */ ".cnnnc."
- /* 5 */ "mcccccm"
- /* 6 */ "mm...mm"
-
- // Level 20
- /* z\x* 0123456 */
- /* 0 */ "mm...mm"
- /* 1 */ "mh.h.hm"
- /* 2 */ "......."
- /* 3 */ ".h...h."
- /* 4 */ "......."
- /* 5 */ "mh.h.hm"
- /* 6 */ "mm...mm",
-
- // Connectors:
- "2: 3, 16, 6: 3\n" /* Type 2, direction Z+ */
- "2: 0, 16, 3: 4\n" /* Type 2, direction X- */
- "2: 3, 16, 0: 2\n" /* Type 2, direction Z- */
- "2: 6, 16, 3: 5\n" /* Type 2, direction X+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Well
-};
-
-
-
-
-
-// The prefab counts:
-
-const size_t g_AlchemistVillagePrefabsCount = ARRAYCOUNT(g_AlchemistVillagePrefabs);
-
-const size_t g_AlchemistVillageStartingPrefabsCount = ARRAYCOUNT(g_AlchemistVillageStartingPrefabs);
-
diff --git a/src/Generating/Prefabs/AlchemistVillagePrefabs.h b/src/Generating/Prefabs/AlchemistVillagePrefabs.h
deleted file mode 100644
index dddc5530a..000000000
--- a/src/Generating/Prefabs/AlchemistVillagePrefabs.h
+++ /dev/null
@@ -1,15 +0,0 @@
-
-// AlchemistVillagePrefabs.h
-
-// Declares the prefabs in the group AlchemistVillage
-
-#include "../Prefab.h"
-
-
-
-
-
-extern const cPrefab::sDef g_AlchemistVillagePrefabs[];
-extern const cPrefab::sDef g_AlchemistVillageStartingPrefabs[];
-extern const size_t g_AlchemistVillagePrefabsCount;
-extern const size_t g_AlchemistVillageStartingPrefabsCount;
diff --git a/src/Generating/Prefabs/CMakeLists.txt b/src/Generating/Prefabs/CMakeLists.txt
index 68f6491c4..1b130636f 100644
--- a/src/Generating/Prefabs/CMakeLists.txt
+++ b/src/Generating/Prefabs/CMakeLists.txt
@@ -5,26 +5,18 @@ project (MCServer)
include_directories ("${PROJECT_SOURCE_DIR}/../../")
SET (SRCS
- AlchemistVillagePrefabs.cpp
- JapaneseVillagePrefabs.cpp
NetherFortPrefabs.cpp
- PlainsVillagePrefabs.cpp
RainbowRoadPrefabs.cpp
- SandFlatRoofVillagePrefabs.cpp
- SandVillagePrefabs.cpp
TestRailsPrefabs.cpp
- UnderwaterBasePrefabs.cpp)
+ UnderwaterBasePrefabs.cpp
+)
SET (HDRS
- AlchemistVillagePrefabs.h
- JapaneseVillagePrefabs.h
NetherFortPrefabs.h
- PlainsVillagePrefabs.h
RainbowRoadPrefabs.h
- SandFlatRoofVillagePrefabs.h
- SandVillagePrefabs.h
TestRailsPrefabs.h
- UnderwaterBasePrefabs.h)
+ UnderwaterBasePrefabs.h
+)
if(NOT MSVC)
add_library(Generating_Prefabs ${SRCS} ${HDRS})
diff --git a/src/Generating/Prefabs/JapaneseVillagePrefabs.cpp b/src/Generating/Prefabs/JapaneseVillagePrefabs.cpp
deleted file mode 100644
index 0362c9406..000000000
--- a/src/Generating/Prefabs/JapaneseVillagePrefabs.cpp
+++ /dev/null
@@ -1,3386 +0,0 @@
-
-// JapaneseVillagePrefabs.cpp
-
-// Defines the prefabs in the group JapaneseVillage
-
-// NOTE: This file has been generated automatically by GalExport!
-// Any manual changes will be overwritten by the next automatic export!
-
-#include "Globals.h"
-#include "JapaneseVillagePrefabs.h"
-
-
-
-
-
-const cPrefab::sDef g_JapaneseVillagePrefabs[] =
-{
- ////////////////////////////////////////////////////////////////////////////////
- // Arch:
- // The data has been exported from the gallery Plains, area index 144, ID 488, created by Aloe_vera
- {
- // Size:
- 11, 7, 5, // SizeX = 11, SizeY = 7, SizeZ = 5
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 11, 6, 4, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 2: 0\n" /* grass */
- "b: 13: 0\n" /* gravel */
- "c:113: 0\n" /* netherbrickfence */
- "d: 50: 5\n" /* torch */
- "e: 44: 8\n" /* step */
- "f: 44: 0\n" /* step */
- "g: 43: 0\n" /* doubleslab */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "aaaabbbaaaa"
- /* 1 */ "aaaabbbaaaa"
- /* 2 */ "aaaabbbaaaa"
- /* 3 */ "aaaabbbaaaa"
- /* 4 */ "aaaabbbaaaa"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..c.....c.."
- /* 1 */ "..c.....c.."
- /* 2 */ "..c.....c.."
- /* 3 */ "..c.....c.."
- /* 4 */ "..c.....c.."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..c.....c.."
- /* 1 */ "..........."
- /* 2 */ "..c.....c.."
- /* 3 */ "..........."
- /* 4 */ "..c.....c.."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..d.....d.."
- /* 1 */ "..........."
- /* 2 */ "..c.....c.."
- /* 3 */ "..........."
- /* 4 */ "..d.....d.."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "...eeeee..."
- /* 1 */ "..........."
- /* 2 */ "..c.....c.."
- /* 3 */ "..........."
- /* 4 */ "...eeeee..."
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..f.....f.."
- /* 1 */ ".egfffffge."
- /* 2 */ ".egeeeeege."
- /* 3 */ ".egfffffge."
- /* 4 */ "..f.....f.."
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "gf.......fg"
- /* 3 */ "..........."
- /* 4 */ "...........",
-
- // Connectors:
- "2: 5, 1, 4: 3\n" /* Type 2, direction Z+ */
- "2: 5, 1, 0: 2\n" /* Type 2, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Arch
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // Farm:
- // The data has been exported from the gallery Plains, area index 166, ID 554, created by Aloe_vera
- {
- // Size:
- 11, 8, 13, // SizeX = 11, SizeY = 8, SizeZ = 13
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 10, 7, 12, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 3: 0\n" /* dirt */
- "b: 60: 7\n" /* tilleddirt */
- "c: 8: 0\n" /* water */
- "d: 43: 0\n" /* doubleslab */
- "e: 44: 0\n" /* step */
- "f: 59: 7\n" /* crops */
- "g: 83: 0\n" /* reedblock */
- "h:113: 0\n" /* netherbrickfence */
- "i: 50: 5\n" /* torch */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmmmmmm"
- /* 1 */ "maaaaaaaaam"
- /* 2 */ "maaaaaaaaam"
- /* 3 */ "maaaaaaaaam"
- /* 4 */ "maaaaaaaaam"
- /* 5 */ "maaaaaaaaam"
- /* 6 */ "maaaaaaaaam"
- /* 7 */ "maaaaaaaaam"
- /* 8 */ "maaaaaaaaam"
- /* 9 */ "maaaaaaaaam"
- /* 10 */ "maaaaaaaaam"
- /* 11 */ "maaaaaaaaam"
- /* 12 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmmmmmm"
- /* 1 */ "maaaaaaaaam"
- /* 2 */ "mabbbbbbbam"
- /* 3 */ "mabbbbbbbam"
- /* 4 */ "mabbbbbbbam"
- /* 5 */ "mabbbbbbbam"
- /* 6 */ "mabcccccaam"
- /* 7 */ "mabbbbbbbam"
- /* 8 */ "mabbbbbbbam"
- /* 9 */ "mabbbbbbbam"
- /* 10 */ "mabbbbbbbam"
- /* 11 */ "maaaaaaaaam"
- /* 12 */ "mmmmmmmmmmm"
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".deeeeeeed."
- /* 2 */ ".efffffffe."
- /* 3 */ ".efffffffe."
- /* 4 */ ".efffffffe."
- /* 5 */ ".efgggggfe."
- /* 6 */ ".eg.....ge."
- /* 7 */ ".efgggggfe."
- /* 8 */ ".efffffffe."
- /* 9 */ ".efffffffe."
- /* 10 */ ".efffffffe."
- /* 11 */ ".deeeeeeed."
- /* 12 */ "..........."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".h.......h."
- /* 2 */ "..........."
- /* 3 */ "..........."
- /* 4 */ "..........."
- /* 5 */ "...ggggg..."
- /* 6 */ "..g.....g.."
- /* 7 */ "...ggggg..."
- /* 8 */ "..........."
- /* 9 */ "..........."
- /* 10 */ "..........."
- /* 11 */ ".h.......h."
- /* 12 */ "..........."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".h.......h."
- /* 2 */ "..........."
- /* 3 */ "..........."
- /* 4 */ "..........."
- /* 5 */ "...ggggg..."
- /* 6 */ "..g.....g.."
- /* 7 */ "...ggggg..."
- /* 8 */ "..........."
- /* 9 */ "..........."
- /* 10 */ "..........."
- /* 11 */ ".h.......h."
- /* 12 */ "..........."
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".h.......h."
- /* 2 */ "..........."
- /* 3 */ "..........."
- /* 4 */ "..........."
- /* 5 */ "..........."
- /* 6 */ "..........."
- /* 7 */ "..........."
- /* 8 */ "..........."
- /* 9 */ "..........."
- /* 10 */ "..........."
- /* 11 */ ".h.......h."
- /* 12 */ "..........."
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ ".h.......h."
- /* 1 */ "hhh.....hhh"
- /* 2 */ ".h.......h."
- /* 3 */ "..........."
- /* 4 */ "..........."
- /* 5 */ "..........."
- /* 6 */ "..........."
- /* 7 */ "..........."
- /* 8 */ "..........."
- /* 9 */ "..........."
- /* 10 */ ".h.......h."
- /* 11 */ "hhh.....hhh"
- /* 12 */ ".h.......h."
-
- // Level 7
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ ".i.......i."
- /* 1 */ "i.i.....i.i"
- /* 2 */ ".i.......i."
- /* 3 */ "..........."
- /* 4 */ "..........."
- /* 5 */ "..........."
- /* 6 */ "..........."
- /* 7 */ "..........."
- /* 8 */ "..........."
- /* 9 */ "..........."
- /* 10 */ ".i.......i."
- /* 11 */ "i.i.....i.i"
- /* 12 */ ".i.......i.",
-
- // Connectors:
- "-1: 10, 2, 6: 5\n" /* Type -1, direction X+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Farm
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // Forge:
- // The data has been exported from the gallery Plains, area index 79, ID 145, created by Aloe_vera
- {
- // Size:
- 16, 11, 14, // SizeX = 16, SizeY = 11, SizeZ = 14
-
- // Hitbox (relative to bounding box):
- 0, 0, -1, // MinX, MinY, MinZ
- 16, 10, 14, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 17: 1\n" /* tree */
- "c: 67: 0\n" /* stairs */
- "d: 5: 2\n" /* wood */
- "e: 67: 2\n" /* stairs */
- "f:113: 0\n" /* netherbrickfence */
- "g:118: 2\n" /* cauldronblock */
- "h: 67: 6\n" /* stairs */
- "i: 67: 4\n" /* stairs */
- "j: 87: 0\n" /* netherstone */
- "k: 67: 7\n" /* stairs */
- "l: 54: 5\n" /* chest */
- "m: 19: 0\n" /* sponge */
- "n: 61: 2\n" /* furnace */
- "o:101: 0\n" /* ironbars */
- "p: 51: 0\n" /* fire */
- "q: 50: 4\n" /* torch */
- "r: 50: 2\n" /* torch */
- "s: 35: 0\n" /* wool */
- "t: 67: 3\n" /* stairs */
- "u: 50: 3\n" /* torch */
- "v: 44: 8\n" /* step */
- "w: 43: 0\n" /* doubleslab */
- "x: 44: 0\n" /* step */
- "y: 17: 5\n" /* tree */
- "z: 17: 9\n" /* tree */,
-
- // Block data:
- // Level 0
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "mmmmmmmmmmmmmmmm"
- /* 1 */ "mmmmmmmmmmmmmmmm"
- /* 2 */ "mmaaaaaaaaaaaamm"
- /* 3 */ "mmaaaaaaaaaaaamm"
- /* 4 */ "mmaaaaaaaaaaaamm"
- /* 5 */ "mmaaaaaaaaaaaamm"
- /* 6 */ "mmaaaaaaaaaaaamm"
- /* 7 */ "mmaaaaaaaaaaaamm"
- /* 8 */ "mmaaaaaaaaaaaamm"
- /* 9 */ "mmaaaaaaaaaaaamm"
- /* 10 */ "mmaaaaaaaaaaaamm"
- /* 11 */ "mmaaaaaaaaaaaamm"
- /* 12 */ "mmmmmmmmmmmmmmmm"
- /* 13 */ "mmmmmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ ".....bbbbbbbbb.."
- /* 3 */ ".....cdddddddb.."
- /* 4 */ ".....cddaaaadb.."
- /* 5 */ "..beeedaaaaadb.."
- /* 6 */ "..bddddaaaaadb.."
- /* 7 */ "..bddddaaaaadb.."
- /* 8 */ "..bddddaaaaadb.."
- /* 9 */ "..bddddaaaaadb.."
- /* 10 */ "..bddddddddddb.."
- /* 11 */ "..bbbbbbbbbbbb.."
- /* 12 */ "................"
- /* 13 */ "................"
-
- // Level 2
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ ".....bfffbfffb.."
- /* 3 */ ".............a.."
- /* 4 */ ".............a.."
- /* 5 */ "..b.....ghh..a.."
- /* 6 */ "..f.....haa..b.."
- /* 7 */ "..f.....ija..b.."
- /* 8 */ "..f.....kaa..a.."
- /* 9 */ "..f..........a.."
- /* 10 */ "..fl.........a.."
- /* 11 */ "..bffffbbffffb.."
- /* 12 */ "................"
- /* 13 */ "................"
-
- // Level 3
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ ".....bfffbfffb.."
- /* 3 */ ".............a.."
- /* 4 */ ".............a.."
- /* 5 */ "..b......nn..a.."
- /* 6 */ "..f.....oaa..b.."
- /* 7 */ "..f.....opa..b.."
- /* 8 */ "..f.....oaa..a.."
- /* 9 */ "..f..........a.."
- /* 10 */ "..f..........a.."
- /* 11 */ "..bffffbbffffb.."
- /* 12 */ "................"
- /* 13 */ "................"
-
- // Level 4
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ ".........q...q.."
- /* 2 */ "....rbsssbsssb.."
- /* 3 */ ".............a.."
- /* 4 */ "..q..........a.."
- /* 5 */ "..b......ce..a.."
- /* 6 */ "..s......ea..b.."
- /* 7 */ "..s......aa..b.."
- /* 8 */ "..s......ta..a.."
- /* 9 */ "..s..........a.."
- /* 10 */ "..s..........a.."
- /* 11 */ ".rbssssbbssssb.."
- /* 12 */ "..u....uu....u.."
- /* 13 */ "................"
-
- // Level 5
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ ".vwxxxxxxxxxxwv."
- /* 1 */ "vvvvvvvvvvvvvvvv"
- /* 2 */ "wvbyybyyybbyybvw"
- /* 3 */ "xvz..........zvx"
- /* 4 */ "xvz..........zvx"
- /* 5 */ "xvb..........zvx"
- /* 6 */ "xvz.......a..bvx"
- /* 7 */ "xvz......ca..bvx"
- /* 8 */ "xvz.......a..zvx"
- /* 9 */ "xvz..........zvx"
- /* 10 */ "xvz..........zvx"
- /* 11 */ "wvbyyyyyyyyyybvw"
- /* 12 */ "vvvvvvvvvvvvvvvv"
- /* 13 */ ".vwxxxxxxxxxxwv."
-
- // Level 6
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "wx............xw"
- /* 1 */ "x..............x"
- /* 2 */ "..xxxxxxxxxxxx.."
- /* 3 */ "..xwwwwwwwwwwx.."
- /* 4 */ "..xwvvvvvvvvvx.."
- /* 5 */ "..xwv.......vx.."
- /* 6 */ "..xwv.....a.vx.."
- /* 7 */ "..xwv.....a.vx.."
- /* 8 */ "..xwv.....a.vx.."
- /* 9 */ "..xwvvvvvvvvvx.."
- /* 10 */ "..xwwwwwwwwwwx.."
- /* 11 */ "..xxxxxxxxxxxx.."
- /* 12 */ "x..............x"
- /* 13 */ "wx............xw"
-
- // Level 7
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ "................"
- /* 3 */ "................"
- /* 4 */ "....xxxxxxxx...."
- /* 5 */ "....xxxxxxxx...."
- /* 6 */ "....xwwwwwax...."
- /* 7 */ "....xwvvvvax...."
- /* 8 */ "....xwwwwwax...."
- /* 9 */ "....xxxxxxxx...."
- /* 10 */ "................"
- /* 11 */ "................"
- /* 12 */ "................"
- /* 13 */ "................"
-
- // Level 8
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ "................"
- /* 3 */ "................"
- /* 4 */ "................"
- /* 5 */ "................"
- /* 6 */ "..........a....."
- /* 7 */ ".......xx.a....."
- /* 8 */ "..........a....."
- /* 9 */ "................"
- /* 10 */ "................"
- /* 11 */ "................"
- /* 12 */ "................"
- /* 13 */ "................"
-
- // Level 9
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ "................"
- /* 3 */ "................"
- /* 4 */ "................"
- /* 5 */ "................"
- /* 6 */ "..........a....."
- /* 7 */ "..........a....."
- /* 8 */ "..........a....."
- /* 9 */ "................"
- /* 10 */ "................"
- /* 11 */ "................"
- /* 12 */ "................"
- /* 13 */ "................"
-
- // Level 10
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ "................"
- /* 3 */ "................"
- /* 4 */ "................"
- /* 5 */ "................"
- /* 6 */ "..........a....."
- /* 7 */ "..........a....."
- /* 8 */ "..........a....."
- /* 9 */ "................"
- /* 10 */ "................"
- /* 11 */ "................"
- /* 12 */ "................"
- /* 13 */ "................",
-
- // Connectors:
- "-1: 0, 1, 3: 4\n" /* Type -1, direction X- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Forge
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // Garden2:
- // The data has been exported from the gallery Plains, area index 147, ID 491, created by Aloe_vera
- {
- // Size:
- 16, 5, 16, // SizeX = 16, SizeY = 5, SizeZ = 16
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 15, 4, 15, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 3: 0\n" /* dirt */
- "b: 8: 0\n" /* water */
- "c: 2: 0\n" /* grass */
- "d: 17: 1\n" /* tree */
- "e: 13: 0\n" /* gravel */
- "f: 31: 2\n" /* tallgrass */
- "g: 18: 5\n" /* leaves */
- "h: 38: 7\n" /* rose */
- "i: 17: 9\n" /* tree */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "aaaaaaaaaaaaaaaa"
- /* 1 */ "aaaaaaaaaaaaaaaa"
- /* 2 */ "aaaaaaaaaaaaaaaa"
- /* 3 */ "aaaaaaaaaaaaaaaa"
- /* 4 */ "aaaaaaaaaaaaaaaa"
- /* 5 */ "aaaaaaaaaaaaaaaa"
- /* 6 */ "aaaaaaaaaaaaaaaa"
- /* 7 */ "aaaaaaaaaaaaaaaa"
- /* 8 */ "aaaaaaaaaaaaaaaa"
- /* 9 */ "aaaaaaaaaaaaaaaa"
- /* 10 */ "aaaaaaaaaaaaaaaa"
- /* 11 */ "aaaaaaaaaaaaaaaa"
- /* 12 */ "aaaaaaaaaaaaaaaa"
- /* 13 */ "aaaaaaaaaaaaaaaa"
- /* 14 */ "aaaaaaaaaaaaaaaa"
- /* 15 */ "aaaaaaaaaaaaaaaa"
-
- // Level 1
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "aaaaaaaaaaaaaaaa"
- /* 1 */ "aaaaaaaaaaaaaaaa"
- /* 2 */ "aaaaaaaaaaaaaaaa"
- /* 3 */ "aaaaaaaaaaaaaaaa"
- /* 4 */ "aaaaaaaaaaaaaaaa"
- /* 5 */ "aaaaaaaaaaaaaaaa"
- /* 6 */ "aaaabbaaaaaaaaaa"
- /* 7 */ "aaabbbaaaaaaaaaa"
- /* 8 */ "aaabbaaaaaaaaaaa"
- /* 9 */ "aaaabaaaaaaaaaaa"
- /* 10 */ "aaaaaaaaaaaaaaaa"
- /* 11 */ "aaaaaaaaaaaaaaaa"
- /* 12 */ "aaaaaaaaaaaaaaaa"
- /* 13 */ "aaaaaaaaaaaaaaaa"
- /* 14 */ "aaaaaaaaaaaaaaaa"
- /* 15 */ "aaaaaaaaaaaaaaaa"
-
- // Level 2
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "cccccccccccccccc"
- /* 1 */ "ccdccccccccdcccc"
- /* 2 */ "cccccceecccccdcc"
- /* 3 */ "ccccccceeccccccc"
- /* 4 */ "cccccccceccccccc"
- /* 5 */ "cccbbbbceccccccc"
- /* 6 */ "cccbbbbceecccccc"
- /* 7 */ "ccbbbbbcceeeeccc"
- /* 8 */ "ccbbbbbccccceecc"
- /* 9 */ "ccbbbbcccccccecc"
- /* 10 */ "ccccbcccccccceec"
- /* 11 */ "ccccccccccccccec"
- /* 12 */ "ccccccccaaacccec"
- /* 13 */ "cccccccccaccccec"
- /* 14 */ "ccccccccccccceec"
- /* 15 */ "cccccccccccceecc"
-
- // Level 3
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "......f...gg.g.."
- /* 1 */ "..gg.....gggggg."
- /* 2 */ "ffgg......ghgggg"
- /* 3 */ ".............gg."
- /* 4 */ "...........f...."
- /* 5 */ "...........h.ff."
- /* 6 */ ".............fh."
- /* 7 */ "...............f"
- /* 8 */ "................"
- /* 9 */ ".......ff.f....."
- /* 10 */ ".f.....ffggf...."
- /* 11 */ ".......gggg.f..."
- /* 12 */ ".f......iddg...."
- /* 13 */ ".....f..gdgg...."
- /* 14 */ "....ff...gg....."
- /* 15 */ "................"
-
- // Level 4
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "...........g.g.."
- /* 2 */ ".............gg."
- /* 3 */ "................"
- /* 4 */ "................"
- /* 5 */ "................"
- /* 6 */ "................"
- /* 7 */ "................"
- /* 8 */ "................"
- /* 9 */ "................"
- /* 10 */ ".........g......"
- /* 11 */ "........ggg....."
- /* 12 */ "........ggg....."
- /* 13 */ ".........g......"
- /* 14 */ "................"
- /* 15 */ "................",
-
- // Connectors:
- "-1: 12, 3, 15: 3\n" /* Type -1, direction Z+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Garden2
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // HouseMid:
- // The data has been exported from the gallery Plains, area index 62, ID 119, created by Aloe_vera
- {
- // Size:
- 10, 9, 9, // SizeX = 10, SizeY = 9, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- 0, 0, -1, // MinX, MinY, MinZ
- 10, 8, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 2\n" /* wood */
- "b:135: 2\n" /* 135 */
- "c:135: 0\n" /* 135 */
- "d: 17: 9\n" /* tree */
- "e:135: 3\n" /* 135 */
- "f: 85: 0\n" /* fence */
- "g: 17: 1\n" /* tree */
- "h:171: 0\n" /* carpet */
- "i: 50: 5\n" /* torch */
- "j: 35: 0\n" /* wool */
- "k: 17: 5\n" /* tree */
- "l:124: 0\n" /* redstonelampon */
- "m: 19: 0\n" /* sponge */
- "n: 69: 9\n" /* lever */
- "o: 44: 8\n" /* step */
- "p: 43: 0\n" /* doubleslab */
- "q: 44: 0\n" /* step */,
-
- // Block data:
- // Level 0
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "maaaaaaaaa"
- /* 1 */ "maaaaaaaaa"
- /* 2 */ "aaaaaaaaaa"
- /* 3 */ "aaaaaaaaaa"
- /* 4 */ "aaaaaaaaaa"
- /* 5 */ "aaaaaaaaaa"
- /* 6 */ "aaaaaaaaaa"
- /* 7 */ "maaaaaaaaa"
- /* 8 */ "maaaaaaaaa"
-
- // Level 1
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".aaaaaaaaa"
- /* 1 */ ".aaaaaaaaa"
- /* 2 */ "baaaaaaaaa"
- /* 3 */ "caaaaaaaaa"
- /* 4 */ "caadaaaaaa"
- /* 5 */ "caaaaaaaaa"
- /* 6 */ "eaaaaaaaaa"
- /* 7 */ ".aaaaaaaaa"
- /* 8 */ ".aaaaaaaaa"
-
- // Level 2
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".fffffffff"
- /* 1 */ ".f.......f"
- /* 2 */ ".f.ggggg.f"
- /* 3 */ "...ghhhg.f"
- /* 4 */ "....hhhg.f"
- /* 5 */ "...ghhhg.f"
- /* 6 */ ".f.ggggg.f"
- /* 7 */ ".f.......f"
- /* 8 */ ".fffffffff"
-
- // Level 3
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".....i...i"
- /* 1 */ ".........."
- /* 2 */ ".i.jjgjj.."
- /* 3 */ "...g...j.."
- /* 4 */ ".......g.i"
- /* 5 */ "...g...j.."
- /* 6 */ ".i.jjgjj.."
- /* 7 */ ".........."
- /* 8 */ ".....i...i"
-
- // Level 4
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".........."
- /* 1 */ ".........."
- /* 2 */ "...jjgjj.."
- /* 3 */ "...g...j.."
- /* 4 */ "...j...g.."
- /* 5 */ "...g...j.."
- /* 6 */ "...jjgjj.."
- /* 7 */ ".........."
- /* 8 */ ".........."
-
- // Level 5
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".........."
- /* 1 */ "...f...f.."
- /* 2 */ "..fgkgkgf."
- /* 3 */ "..fd...d.."
- /* 4 */ "...d.lng.."
- /* 5 */ "..fd...d.."
- /* 6 */ "..fgkgkgf."
- /* 7 */ "...f...f.."
- /* 8 */ ".........."
-
- // Level 6
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "...ooooo.."
- /* 1 */ "..opppppo."
- /* 2 */ ".opgjjjgpo"
- /* 3 */ ".opjgggjpo"
- /* 4 */ ".opjgggjpo"
- /* 5 */ ".opjgggjpo"
- /* 6 */ ".opgjjjgpo"
- /* 7 */ "..opppppo."
- /* 8 */ "...ooooo.."
-
- // Level 7
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".opq...qpo"
- /* 1 */ ".pq.....qp"
- /* 2 */ ".q.qqqqq.q"
- /* 3 */ "...qpppq.."
- /* 4 */ "...qpppq.."
- /* 5 */ "...qpppq.."
- /* 6 */ ".q.qqqqq.q"
- /* 7 */ ".pq.....qp"
- /* 8 */ ".opq...qpo"
-
- // Level 8
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".q.......q"
- /* 1 */ ".........."
- /* 2 */ ".........."
- /* 3 */ ".........."
- /* 4 */ ".....q...."
- /* 5 */ ".........."
- /* 6 */ ".........."
- /* 7 */ ".........."
- /* 8 */ ".q.......q",
-
- // Connectors:
- "-1: 0, 1, 4: 4\n" /* Type -1, direction X- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // HouseMid
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // HouseSmall:
- // The data has been exported from the gallery Plains, area index 68, ID 131, created by Aloe_vera
- {
- // Size:
- 7, 6, 7, // SizeX = 7, SizeY = 6, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 7, 5, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 2\n" /* wood */
- "b: 17: 1\n" /* tree */
- "c: 35: 0\n" /* wool */
- "d: 50: 4\n" /* torch */
- "e: 85: 0\n" /* fence */
- "f: 44: 8\n" /* step */
- "g: 43: 0\n" /* doubleslab */
- "h: 44: 0\n" /* step */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "maaaaam"
- /* 2 */ "maaaaam"
- /* 3 */ "maaaaam"
- /* 4 */ "maaaaam"
- /* 5 */ "maaaaam"
- /* 6 */ "mmmmmmm"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".bcc.b."
- /* 2 */ ".c...c."
- /* 3 */ ".c...c."
- /* 4 */ ".c...c."
- /* 5 */ ".bcccb."
- /* 6 */ "......."
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ ".....d."
- /* 1 */ ".bee.b."
- /* 2 */ ".c...c."
- /* 3 */ ".e...e."
- /* 4 */ ".c...c."
- /* 5 */ ".beeeb."
- /* 6 */ "......."
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ ".fffff."
- /* 1 */ "fbcccbf"
- /* 2 */ "fc...cf"
- /* 3 */ "fc...cf"
- /* 4 */ "fc...cf"
- /* 5 */ "fbcccbf"
- /* 6 */ ".fffff."
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "gh...hg"
- /* 1 */ "hhhhhhh"
- /* 2 */ ".hgggh."
- /* 3 */ ".hgggh."
- /* 4 */ ".hgggh."
- /* 5 */ "hhhhhhh"
- /* 6 */ "gh...hg"
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "......."
- /* 2 */ "......."
- /* 3 */ "...h..."
- /* 4 */ "......."
- /* 5 */ "......."
- /* 6 */ ".......",
-
- // Connectors:
- "-1: 4, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // HouseSmall
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // HouseSmallDblWithDoor:
- // The data has been exported from the gallery Plains, area index 113, ID 265, created by Aloe_vera
- {
- // Size:
- 11, 6, 7, // SizeX = 11, SizeY = 6, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 11, 5, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 2\n" /* wood */
- "b: 17: 9\n" /* tree */
- "c: 17: 1\n" /* tree */
- "d: 35: 0\n" /* wool */
- "e: 64: 7\n" /* wooddoorblock */
- "f:171:12\n" /* carpet */
- "g:135: 1\n" /* 135 */
- "h:126: 2\n" /* woodenslab */
- "i:135: 2\n" /* 135 */
- "j: 50: 4\n" /* torch */
- "k: 64:12\n" /* wooddoorblock */
- "l: 85: 0\n" /* fence */
- "m: 19: 0\n" /* sponge */
- "n: 44: 8\n" /* step */
- "o: 43: 0\n" /* doubleslab */
- "p: 44: 0\n" /* step */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmmmmmm"
- /* 1 */ "maaaaaaaaam"
- /* 2 */ "maaaabaaaam"
- /* 3 */ "maaaabaaaam"
- /* 4 */ "maaaabaaaam"
- /* 5 */ "maaaaaaaaam"
- /* 6 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".cdedcdddc."
- /* 2 */ ".dfff.fffd."
- /* 3 */ ".dgffdfhfd."
- /* 4 */ ".diifdfffd."
- /* 5 */ ".cdddcdddc."
- /* 6 */ "..........."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ ".j...j...j."
- /* 1 */ ".cdkdclllc."
- /* 2 */ ".d.......l."
- /* 3 */ ".l...l...l."
- /* 4 */ ".d...l...l."
- /* 5 */ ".clllclllc."
- /* 6 */ "..........."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ ".nnnnnnnnn."
- /* 1 */ "ncdddcdddcn"
- /* 2 */ "nd...d...dn"
- /* 3 */ "nd...d...dn"
- /* 4 */ "nd...d...dn"
- /* 5 */ "ncdddcdddcn"
- /* 6 */ ".nnnnnnnnn."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "op.......po"
- /* 1 */ "ppppppppppp"
- /* 2 */ ".pooooooop."
- /* 3 */ ".ponndnnop."
- /* 4 */ ".pooooooop."
- /* 5 */ "ppppppppppp"
- /* 6 */ "op.......po"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "...ppppp..."
- /* 4 */ "..........."
- /* 5 */ "..........."
- /* 6 */ "...........",
-
- // Connectors:
- "-1: 3, 1, -1: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // HouseSmallDblWithDoor
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // HouseSmallDouble:
- // The data has been exported from the gallery Plains, area index 72, ID 135, created by Aloe_vera
- {
- // Size:
- 11, 6, 7, // SizeX = 11, SizeY = 6, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 11, 5, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 2\n" /* wood */
- "b: 17: 1\n" /* tree */
- "c: 35: 0\n" /* wool */
- "d:171:12\n" /* carpet */
- "e:135: 1\n" /* 135 */
- "f:126: 2\n" /* woodenslab */
- "g:135: 2\n" /* 135 */
- "h: 50: 4\n" /* torch */
- "i: 85: 0\n" /* fence */
- "j: 44: 8\n" /* step */
- "k: 43: 0\n" /* doubleslab */
- "l: 44: 0\n" /* step */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmmmmmm"
- /* 1 */ "maaaaaaaaam"
- /* 2 */ "maaaaaaaaam"
- /* 3 */ "maaaaaaaaam"
- /* 4 */ "maaaaaaaaam"
- /* 5 */ "maaaaaaaaam"
- /* 6 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".bcc.bcccb."
- /* 2 */ ".cddd.dddc."
- /* 3 */ ".ceddcdfdc."
- /* 4 */ ".cggdcdddc."
- /* 5 */ ".bcccbcccb."
- /* 6 */ "..........."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ ".h...h...h."
- /* 1 */ ".bii.biiib."
- /* 2 */ ".c.......c."
- /* 3 */ ".i...i...i."
- /* 4 */ ".c...i...c."
- /* 5 */ ".biiibiiib."
- /* 6 */ "..........."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ ".jjjjjjjjj."
- /* 1 */ "jbiiibiiibj"
- /* 2 */ "jc.......cj"
- /* 3 */ "jc...c...cj"
- /* 4 */ "jc...c...cj"
- /* 5 */ "jbcccbcccbj"
- /* 6 */ ".jjjjjjjjj."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "kl...l...lk"
- /* 1 */ "lllllllllll"
- /* 2 */ ".lkkklkkkl."
- /* 3 */ ".lkjklkkkl."
- /* 4 */ ".lkkklkkkl."
- /* 5 */ "lllllllllll"
- /* 6 */ "kl...l...lk"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "...l...l..."
- /* 4 */ "..........."
- /* 5 */ "..........."
- /* 6 */ "...........",
-
- // Connectors:
- "-1: 4, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // HouseSmallDouble
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // HouseSmallWithDoor:
- // The data has been exported from the gallery Plains, area index 112, ID 264, created by Aloe_vera
- {
- // Size:
- 7, 6, 7, // SizeX = 7, SizeY = 6, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 7, 5, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 2\n" /* wood */
- "b: 17: 1\n" /* tree */
- "c: 35: 0\n" /* wool */
- "d: 64: 7\n" /* wooddoorblock */
- "e: 50: 4\n" /* torch */
- "f: 64:12\n" /* wooddoorblock */
- "g: 85: 0\n" /* fence */
- "h: 44: 8\n" /* step */
- "i: 43: 0\n" /* doubleslab */
- "j: 44: 0\n" /* step */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "maaaaam"
- /* 2 */ "maaaaam"
- /* 3 */ "maaaaam"
- /* 4 */ "maaaaam"
- /* 5 */ "maaaaam"
- /* 6 */ "mmmmmmm"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".bcdcb."
- /* 2 */ ".c...c."
- /* 3 */ ".c...c."
- /* 4 */ ".c...c."
- /* 5 */ ".bcccb."
- /* 6 */ "......."
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ ".....e."
- /* 1 */ ".bcfcb."
- /* 2 */ ".g...g."
- /* 3 */ ".g...g."
- /* 4 */ ".g...g."
- /* 5 */ ".bgggb."
- /* 6 */ "......."
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ ".hhhhh."
- /* 1 */ "hbcccbh"
- /* 2 */ "hc...ch"
- /* 3 */ "hc...ch"
- /* 4 */ "hc...ch"
- /* 5 */ "hbcccbh"
- /* 6 */ ".hhhhh."
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "ij...ji"
- /* 1 */ "jjjjjjj"
- /* 2 */ ".jiiij."
- /* 3 */ ".jiiij."
- /* 4 */ ".jiiij."
- /* 5 */ "jjjjjjj"
- /* 6 */ "ij...ji"
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "......."
- /* 2 */ "......."
- /* 3 */ "...j..."
- /* 4 */ "......."
- /* 5 */ "......."
- /* 6 */ ".......",
-
- // Connectors:
- "-1: 3, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // HouseSmallWithDoor
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // HouseWide:
- // The data has been exported from the gallery Plains, area index 64, ID 121, created by STR_Warrior
- {
- // Size:
- 11, 6, 11, // SizeX = 11, SizeY = 6, SizeZ = 11
-
- // Hitbox (relative to bounding box):
- -1, 0, -1, // MinX, MinY, MinZ
- 11, 5, 10, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 2\n" /* wood */
- "b: 17: 1\n" /* tree */
- "c: 35: 0\n" /* wool */
- "d:171: 0\n" /* carpet */
- "e:126: 1\n" /* woodenslab */
- "f: 64: 5\n" /* wooddoorblock */
- "g: 85: 0\n" /* fence */
- "h: 50: 1\n" /* torch */
- "i: 50: 2\n" /* torch */
- "j: 64:12\n" /* wooddoorblock */
- "k:126:11\n" /* woodenslab */
- "l: 17: 5\n" /* tree */
- "m: 19: 0\n" /* sponge */
- "n:126: 3\n" /* woodenslab */
- "o:125: 3\n" /* woodendoubleslab */
- "p: 5: 3\n" /* wood */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmmmmmm"
- /* 1 */ "mmaaaaaaamm"
- /* 2 */ "maaaaaaaaam"
- /* 3 */ "maaaaaaaaam"
- /* 4 */ "maaaaaaaaam"
- /* 5 */ "maaaaaaaaam"
- /* 6 */ "maaaaaaaaam"
- /* 7 */ "maaaaaaaaam"
- /* 8 */ "maaaaaaaaam"
- /* 9 */ "mmaaaaaaamm"
- /* 10 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..bcbcbcb.."
- /* 2 */ ".b.d.....b."
- /* 3 */ ".cded....c."
- /* 4 */ ".bded....b."
- /* 5 */ ".c.d.....c."
- /* 6 */ ".b.......b."
- /* 7 */ ".c.......c."
- /* 8 */ ".b.......b."
- /* 9 */ "..bcbfbcb.."
- /* 10 */ "..........."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..bgbgbgb.."
- /* 2 */ ".b.......b."
- /* 3 */ ".g.......g."
- /* 4 */ ".bh.....ib."
- /* 5 */ ".g.......g."
- /* 6 */ ".b.......b."
- /* 7 */ ".g.......g."
- /* 8 */ ".b.......b."
- /* 9 */ "..bgbjbgb.."
- /* 10 */ "..........."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "...kkkkk..."
- /* 1 */ "..bcbcbcb.."
- /* 2 */ ".b.......b."
- /* 3 */ "kc.......ck"
- /* 4 */ "kb.......bk"
- /* 5 */ "kc.......ck"
- /* 6 */ "kb.......bk"
- /* 7 */ "kc.......ck"
- /* 8 */ ".b.......b."
- /* 9 */ "..bcblbcb.."
- /* 10 */ "...kkkkk..."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ ".kn.....nk."
- /* 1 */ "konnnnnnnok"
- /* 2 */ "nnnnnnnnnnn"
- /* 3 */ ".nnpppppnn."
- /* 4 */ ".nnpkkkpnn."
- /* 5 */ ".nnpkkkpnn."
- /* 6 */ ".nnpkkkpnn."
- /* 7 */ ".nnpppppnn."
- /* 8 */ "nnnnnnnnnnn"
- /* 9 */ "kknnnnnnnok"
- /* 10 */ ".kn.....nk."
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "n.........n"
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "..........."
- /* 4 */ "....nnn...."
- /* 5 */ "....non...."
- /* 6 */ "....nnn...."
- /* 7 */ "..........."
- /* 8 */ "..........."
- /* 9 */ "..........."
- /* 10 */ "n.........n",
-
- // Connectors:
- "-1: 5, 1, 10: 3\n" /* Type -1, direction Z+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // HouseWide
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // HouseWithGarden:
- // The data has been exported from the gallery Plains, area index 67, ID 130, created by Aloe_vera
- {
- // Size:
- 16, 9, 16, // SizeX = 16, SizeY = 9, SizeZ = 16
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 16, 8, 16, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 3: 0\n" /* dirt */
- "b: 5: 2\n" /* wood */
- "c: 2: 0\n" /* grass */
- "d:113: 0\n" /* netherbrickfence */
- "e: 17: 1\n" /* tree */
- "f: 35: 0\n" /* wool */
- "g:126: 2\n" /* woodenslab */
- "h: 31: 2\n" /* tallgrass */
- "i:125: 2\n" /* woodendoubleslab */
- "j: 38: 3\n" /* rose */
- "k: 38: 2\n" /* rose */
- "l: 38: 1\n" /* rose */
- "m: 19: 0\n" /* sponge */
- "n: 17: 2\n" /* tree */
- "o: 50: 4\n" /* torch */
- "p: 85: 0\n" /* fence */
- "q:140: 0\n" /* flowerpotblock */
- "r: 50: 3\n" /* torch */
- "s: 44: 8\n" /* step */
- "t: 50: 1\n" /* torch */
- "u: 50: 2\n" /* torch */
- "v: 43: 0\n" /* doubleslab */
- "w: 44: 0\n" /* step */
- "x: 18:10\n" /* leaves */,
-
- // Block data:
- // Level 0
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "mmmmmmmmmaammmmm"
- /* 1 */ "aabbbbbbbbbbaaam"
- /* 2 */ "aabbbbbbbbbbaaam"
- /* 3 */ "aabbbbbbbbbbaaam"
- /* 4 */ "aabbbbbbbbbbaaam"
- /* 5 */ "aabbbbbbbbbbaaam"
- /* 6 */ "aabbbbbbbbbbaaam"
- /* 7 */ "aabbbbbbbbbbaaam"
- /* 8 */ "aabbbbbbbbbbaaam"
- /* 9 */ "aabbbbbbbbbbaaam"
- /* 10 */ "aaaaaaaaaaaaaaam"
- /* 11 */ "aaaaaaaaaaaaaaam"
- /* 12 */ "aaaaaaaaaaaaaaam"
- /* 13 */ "aaaaaaaaaaaaaaam"
- /* 14 */ "aaaaaaaaaaaaaaam"
- /* 15 */ "mmmmmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "mmmmmmmmmccmmmmm"
- /* 1 */ "ccbbbbbbbbbbcccm"
- /* 2 */ "ccbbbbbbbbbbcccm"
- /* 3 */ "ccbbbbbbbbbbcccm"
- /* 4 */ "ccbbbbbbbbbbcccm"
- /* 5 */ "ccbbbbbbbbbbcccm"
- /* 6 */ "ccbbbbbbbbbbcccm"
- /* 7 */ "ccbbbbbbbbbbcccm"
- /* 8 */ "ccbbbbbbbbbbcccm"
- /* 9 */ "ccbbbbbbbbbbcccm"
- /* 10 */ "cccccccccccccccm"
- /* 11 */ "cccccccccccccccm"
- /* 12 */ "cccccccccccccccm"
- /* 13 */ "cccccccccccccacm"
- /* 14 */ "cccccccccccccccm"
- /* 15 */ "mmmmmmmmmmmmmmmm"
-
- // Level 2
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "ddeffeffe..eddd."
- /* 2 */ "d.fbbgggg..f..d."
- /* 3 */ "d.fbgggggggf.hd."
- /* 4 */ "d.fbgggggggf..d."
- /* 5 */ "d.eggggggggehhd."
- /* 6 */ "d.fgiiggiigf.hd."
- /* 7 */ "d.fgiiggiigf..d."
- /* 8 */ "d.fggggggggf..d."
- /* 9 */ "d.efffeefffe.hd."
- /* 10 */ "d.............d."
- /* 11 */ "djhhk.jhh..hh.d."
- /* 12 */ "d.jlk.hj.h....d."
- /* 13 */ "d..jh.hh..h..nd."
- /* 14 */ "ddddddddddddddd."
- /* 15 */ "................"
-
- // Level 3
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "........o..o...."
- /* 1 */ "..eppeffe..e...."
- /* 2 */ "..pqq......p...."
- /* 3 */ "..pq.......p...."
- /* 4 */ "..pq.......p...."
- /* 5 */ "..e........e...."
- /* 6 */ "..p........p...."
- /* 7 */ "..p........p...."
- /* 8 */ "..p........p...."
- /* 9 */ "..epppeepppe...."
- /* 10 */ "......rr........"
- /* 11 */ "................"
- /* 12 */ "................"
- /* 13 */ ".............n.."
- /* 14 */ "................"
- /* 15 */ "................"
-
- // Level 4
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "..ssssssssss...."
- /* 1 */ ".seffeffeffes..."
- /* 2 */ ".sf..r.....fs..."
- /* 3 */ ".sf........fs..."
- /* 4 */ ".sf........fs..."
- /* 5 */ ".set......ues..."
- /* 6 */ ".sf........fs..."
- /* 7 */ ".sf........fs..."
- /* 8 */ ".sf........fs..."
- /* 9 */ ".sefffeefffes..."
- /* 10 */ "..ssssssssss...."
- /* 11 */ "................"
- /* 12 */ "................"
- /* 13 */ ".............n.."
- /* 14 */ "................"
- /* 15 */ "................"
-
- // Level 5
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ ".vw........wv..."
- /* 1 */ ".wwwwwwwwwwww..."
- /* 2 */ "..wvvvvvvvvw...."
- /* 3 */ "..wvvvvvvvvw...."
- /* 4 */ "..wvvvvvvvvw...."
- /* 5 */ "..wvvvvvvvvw...."
- /* 6 */ "..wvvvvvvvvw...."
- /* 7 */ "..wvvvvvvvvw...."
- /* 8 */ "..wvvvvvvvvw...."
- /* 9 */ ".wwwwwwwwwwww..."
- /* 10 */ ".vw........wv..."
- /* 11 */ "............xxx."
- /* 12 */ "...........xxxxx"
- /* 13 */ "...........xxnxx"
- /* 14 */ "...........xxxxx"
- /* 15 */ "............xxx."
-
- // Level 6
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ "................"
- /* 3 */ "....wwwwww......"
- /* 4 */ "....wvvvvw......"
- /* 5 */ "....wvvvvw......"
- /* 6 */ "....wvvvvw......"
- /* 7 */ "....wwwwww......"
- /* 8 */ "................"
- /* 9 */ "................"
- /* 10 */ "................"
- /* 11 */ "............xxx."
- /* 12 */ "...........xxxxx"
- /* 13 */ "...........xxnxx"
- /* 14 */ "...........xxxxx"
- /* 15 */ "............xxx."
-
- // Level 7
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ "................"
- /* 3 */ "................"
- /* 4 */ "................"
- /* 5 */ "......ww........"
- /* 6 */ "................"
- /* 7 */ "................"
- /* 8 */ "................"
- /* 9 */ "................"
- /* 10 */ "................"
- /* 11 */ "................"
- /* 12 */ "............xxx."
- /* 13 */ "............xnx."
- /* 14 */ "............xx.."
- /* 15 */ "................"
-
- // Level 8
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ "................"
- /* 3 */ "................"
- /* 4 */ "................"
- /* 5 */ "................"
- /* 6 */ "................"
- /* 7 */ "................"
- /* 8 */ "................"
- /* 9 */ "................"
- /* 10 */ "................"
- /* 11 */ "................"
- /* 12 */ ".............x.."
- /* 13 */ "............xxx."
- /* 14 */ ".............x.."
- /* 15 */ "................",
-
- // Connectors:
- "-1: 9, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // HouseWithGarden
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // HouseWithSakura1:
- // The data has been exported from the gallery Plains, area index 75, ID 141, created by Aloe_vera
- {
- // Size:
- 13, 7, 15, // SizeX = 13, SizeY = 7, SizeZ = 15
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 13, 6, 15, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 3: 0\n" /* dirt */
- "b: 2: 0\n" /* grass */
- "c: 17: 5\n" /* tree */
- "d: 5: 2\n" /* wood */
- "e: 17: 9\n" /* tree */
- "f:113: 0\n" /* netherbrickfence */
- "g: 17: 1\n" /* tree */
- "h: 35: 0\n" /* wool */
- "i: 31: 2\n" /* tallgrass */
- "j: 54: 2\n" /* chest */
- "k: 38: 6\n" /* rose */
- "l: 38: 2\n" /* rose */
- "m: 19: 0\n" /* sponge */
- "n: 50: 4\n" /* torch */
- "o: 85: 0\n" /* fence */
- "p: 44: 8\n" /* step */
- "q: 35: 6\n" /* wool */
- "r: 43: 0\n" /* doubleslab */
- "s: 44: 0\n" /* step */,
-
- // Block data:
- // Level 0
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "aaaaaaaaaaaaa"
- /* 1 */ "aaaaaaaaaaaaa"
- /* 2 */ "aaaaaaaaaaaaa"
- /* 3 */ "aaaaaaaaaaaaa"
- /* 4 */ "aaaaaaaaaaaaa"
- /* 5 */ "aaaaaaaaaaaaa"
- /* 6 */ "aaaaaaaaaaaaa"
- /* 7 */ "aaaaaaaaaaaaa"
- /* 8 */ "aaaaaaaaaaaaa"
- /* 9 */ "aaaaaaaaaaaaa"
- /* 10 */ "aaaaaaaaaaaaa"
- /* 11 */ "aaaaaaaaaaaaa"
- /* 12 */ "aaaaaaaaaaaaa"
- /* 13 */ "aaaaaaaaaaaaa"
- /* 14 */ "aaaaaaaaaaaaa"
-
- // Level 1
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "bbbbbbbbbbbbb"
- /* 1 */ "bbbbbbbbbbbbb"
- /* 2 */ "bbbaccdabbbbb"
- /* 3 */ "bbbedddebbbbb"
- /* 4 */ "bbbedddebbbbb"
- /* 5 */ "bbbedddebbbbb"
- /* 6 */ "bbbacccabbbbb"
- /* 7 */ "bbbbbbbbbbbbb"
- /* 8 */ "bbbbbbbbbbbbb"
- /* 9 */ "bbbbbbbbbbbbb"
- /* 10 */ "bbbbbbbbbbabb"
- /* 11 */ "bbbbbbbbbbbbb"
- /* 12 */ "bbbbbbbbbbbbb"
- /* 13 */ "bbbbbbbbbbbbb"
- /* 14 */ "bbbbbbbbbbbbb"
-
- // Level 2
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "ffff...ffffff"
- /* 1 */ "f...........f"
- /* 2 */ "f..ghh.g..i.f"
- /* 3 */ "f..h...h..i.f"
- /* 4 */ "f..h...h....f"
- /* 5 */ "fi.h..jh..i.f"
- /* 6 */ "f..ghhhg....f"
- /* 7 */ "f.........i.f"
- /* 8 */ "fii.........f"
- /* 9 */ "f.k..k.i....f"
- /* 10 */ "fl.i..i...g.f"
- /* 11 */ "f.i..i.k....f"
- /* 12 */ "f.l.k.......f"
- /* 13 */ "f.....l.....f"
- /* 14 */ "fffffffffffff"
-
- // Level 3
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ ".......n....."
- /* 2 */ "...goo.g....."
- /* 3 */ "...h...h....."
- /* 4 */ "...o...o....."
- /* 5 */ "...h...h....."
- /* 6 */ "...gooog....."
- /* 7 */ "............."
- /* 8 */ "............."
- /* 9 */ "............."
- /* 10 */ "..........g.."
- /* 11 */ "............."
- /* 12 */ "............."
- /* 13 */ "............."
- /* 14 */ "............."
-
- // Level 4
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "...ppppp....."
- /* 2 */ "..pghhhgp...."
- /* 3 */ "..ph...hp...."
- /* 4 */ "..ph...hp...."
- /* 5 */ "..ph...hp...."
- /* 6 */ "..pghhhgp...."
- /* 7 */ "...ppppp....."
- /* 8 */ "............."
- /* 9 */ "..........q.."
- /* 10 */ ".........qgq."
- /* 11 */ "..........q.."
- /* 12 */ "............."
- /* 13 */ "............."
- /* 14 */ "............."
-
- // Level 5
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "..rs...sr...."
- /* 2 */ "..sssssss...."
- /* 3 */ "...srrrs....."
- /* 4 */ "...srrrs....."
- /* 5 */ "...srrrs....."
- /* 6 */ "..sssssss...."
- /* 7 */ "..rs...sr...."
- /* 8 */ "............."
- /* 9 */ ".........qqq."
- /* 10 */ ".........qqq."
- /* 11 */ ".........qqq."
- /* 12 */ "............."
- /* 13 */ "............."
- /* 14 */ "............."
-
- // Level 6
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "............."
- /* 2 */ "............."
- /* 3 */ "............."
- /* 4 */ ".....s......."
- /* 5 */ "............."
- /* 6 */ "............."
- /* 7 */ "............."
- /* 8 */ "............."
- /* 9 */ "............."
- /* 10 */ "..........q.."
- /* 11 */ "............."
- /* 12 */ "............."
- /* 13 */ "............."
- /* 14 */ ".............",
-
- // Connectors:
- "-1: 5, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // HouseWithSakura1
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // HouseWithSpa:
- // The data has been exported from the gallery Plains, area index 73, ID 139, created by Aloe_vera
- {
- // Size:
- 16, 8, 14, // SizeX = 16, SizeY = 8, SizeZ = 14
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 15, 7, 13, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 2\n" /* wood */
- "b: 3: 0\n" /* dirt */
- "c: 2: 0\n" /* grass */
- "d: 8: 0\n" /* water */
- "e:135: 3\n" /* 135 */
- "f:135: 1\n" /* 135 */
- "g:113: 0\n" /* netherbrickfence */
- "h: 17: 1\n" /* tree */
- "i: 35: 0\n" /* wool */
- "j:171:12\n" /* carpet */
- "k: 64: 6\n" /* wooddoorblock */
- "l:126: 2\n" /* woodenslab */
- "m: 19: 0\n" /* sponge */
- "n:135: 2\n" /* 135 */
- "o: 64: 7\n" /* wooddoorblock */
- "p: 50: 4\n" /* torch */
- "q: 85: 0\n" /* fence */
- "r: 64:12\n" /* wooddoorblock */
- "s: 50: 3\n" /* torch */
- "t: 44: 8\n" /* step */
- "u: 43: 0\n" /* doubleslab */
- "v: 44: 0\n" /* step */,
-
- // Block data:
- // Level 0
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ ".aaaaaaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaaaaaa."
- /* 4 */ ".aaaaaaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaaaaaa."
- /* 6 */ ".aaaaaaaaaaaaaa."
- /* 7 */ ".aaaaaabbbbbbbbb"
- /* 8 */ ".aaaaaabbbbbbbbb"
- /* 9 */ ".aaaaaabbbbbbbbb"
- /* 10 */ ".aaaaaabbbbbbbbb"
- /* 11 */ ".aaaaaabbbbbbbbb"
- /* 12 */ ".aaaaaabbbbbbbbb"
- /* 13 */ ".......bbbbbbbbb"
-
- // Level 1
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "mmmmmmmmmmmmmmmm"
- /* 1 */ "maaaaaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaaaaam"
- /* 4 */ "maaaaaaaaaaaaaam"
- /* 5 */ "maaaaaaaaaaaaaam"
- /* 6 */ "maaaaaaaaaaaaaam"
- /* 7 */ "maaaaaaaaaaccccc"
- /* 8 */ "maaaaaaacccccccc"
- /* 9 */ "maaaaaaacccccccc"
- /* 10 */ "maaaaaaacccccccc"
- /* 11 */ "maaaaaaccccccccc"
- /* 12 */ "maaaaaaccccccccc"
- /* 13 */ "mmmmmmmccccccccc"
-
- // Level 2
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ ".aaaaaaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaaaaaa."
- /* 4 */ ".aaaaaaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaaaaaa."
- /* 6 */ ".aaddaaaaaaaaaa."
- /* 7 */ ".aaddaaeeef....."
- /* 8 */ ".aaddaaf........"
- /* 9 */ ".aaddaaf........"
- /* 10 */ ".aaddaae........"
- /* 11 */ ".aaddaa........."
- /* 12 */ ".aaaaaa........."
- /* 13 */ "................"
-
- // Level 3
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ ".ggggghiiihiiih."
- /* 2 */ ".geee.ijjjjjjji."
- /* 3 */ ".gf...kjjjijlji."
- /* 4 */ ".gf...innjijjji."
- /* 5 */ ".g....hiiohiiih."
- /* 6 */ ".g....g........."
- /* 7 */ ".g.............."
- /* 8 */ ".g.............."
- /* 9 */ ".g.............."
- /* 10 */ ".g....g........."
- /* 11 */ ".g....g........."
- /* 12 */ ".gggggg........."
- /* 13 */ "................"
-
- // Level 4
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "......p...p...p."
- /* 1 */ ".g....hqqqhqqqh."
- /* 2 */ "......i.......i."
- /* 3 */ "......r...q...q."
- /* 4 */ "......i...q...i."
- /* 5 */ "......hqqrhqqqh."
- /* 6 */ "......g...s....."
- /* 7 */ "................"
- /* 8 */ "................"
- /* 9 */ "................"
- /* 10 */ "................"
- /* 11 */ "................"
- /* 12 */ ".g....g........."
- /* 13 */ "................"
-
- // Level 5
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ ".tttttttttttttt."
- /* 1 */ "tggggghqqqhqqqht"
- /* 2 */ "tg....i.......it"
- /* 3 */ "tg....i...i...it"
- /* 4 */ "tg....i...i...it"
- /* 5 */ "tg....hiiihiiiht"
- /* 6 */ "tg....gtttttttt."
- /* 7 */ "tg....gt........"
- /* 8 */ "tg....gt........"
- /* 9 */ "tg....gt........"
- /* 10 */ "tg....gt........"
- /* 11 */ "tg....gt........"
- /* 12 */ "tggggggt........"
- /* 13 */ ".tttttt........."
-
- // Level 6
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "uv............vu"
- /* 1 */ "vvvvvvvvvvvvvvvv"
- /* 2 */ ".vuuuuuuuuuuuuv."
- /* 3 */ ".vuuuuuutuuuuuv."
- /* 4 */ ".vuuuuuuuuuuuuv."
- /* 5 */ ".vuuuuvvvvvvvvvv"
- /* 6 */ ".vuuuuv.......vu"
- /* 7 */ ".vuuuuv........."
- /* 8 */ ".vuuuuv........."
- /* 9 */ ".vuuuuv........."
- /* 10 */ ".vuuuuv........."
- /* 11 */ ".vuuuuv........."
- /* 12 */ "vvvvvvvv........"
- /* 13 */ "uv....vu........"
-
- // Level 7
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ "................"
- /* 3 */ "...vvvvvvvvvv..."
- /* 4 */ "...vv..........."
- /* 5 */ "...vv..........."
- /* 6 */ "...vv..........."
- /* 7 */ "...vv..........."
- /* 8 */ "...vv..........."
- /* 9 */ "...vv..........."
- /* 10 */ "...vv..........."
- /* 11 */ "................"
- /* 12 */ "................"
- /* 13 */ "................",
-
- // Connectors:
- "",
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // HouseWithSpa
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MediumSakuraTree:
- // The data has been exported from the gallery Plains, area index 146, ID 490, created by STR_Warrior
- {
- // Size:
- 7, 10, 7, // SizeX = 7, SizeY = 10, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 6, 9, 6, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 3: 0\n" /* dirt */
- "b: 2: 0\n" /* grass */
- "c: 31: 1\n" /* tallgrass */
- "d: 38: 7\n" /* rose */
- "e: 17: 1\n" /* tree */
- "f: 38: 0\n" /* rose */
- "g: 38: 8\n" /* rose */
- "h: 38: 5\n" /* rose */
- "i: 35: 6\n" /* wool */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "aaaaaaa"
- /* 1 */ "aaaaaaa"
- /* 2 */ "aaaaaaa"
- /* 3 */ "aaaaaaa"
- /* 4 */ "aaaaaaa"
- /* 5 */ "aaaaaaa"
- /* 6 */ "aaaaaaa"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "bbbbbbb"
- /* 1 */ "bbbbbbb"
- /* 2 */ "bbbbbbb"
- /* 3 */ "bbbabbb"
- /* 4 */ "bbbbbbb"
- /* 5 */ "bbbbbbb"
- /* 6 */ "bbbbbbb"
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "mm...mm"
- /* 1 */ "m.c...m"
- /* 2 */ ".dccdc."
- /* 3 */ "..cefc."
- /* 4 */ ".ccfgh."
- /* 5 */ "m.ccc.m"
- /* 6 */ "mm...mm"
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "m.....m"
- /* 1 */ "......."
- /* 2 */ "......."
- /* 3 */ "...e..."
- /* 4 */ "......."
- /* 5 */ "......."
- /* 6 */ "m.....m"
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "..i...."
- /* 2 */ "......."
- /* 3 */ "...e.i."
- /* 4 */ ".i....."
- /* 5 */ "......."
- /* 6 */ "......."
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "..i...."
- /* 2 */ "...i..."
- /* 3 */ "..ieii."
- /* 4 */ ".i.ii.."
- /* 5 */ "...i..."
- /* 6 */ "......."
-
- // Level 6
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "..ii..."
- /* 2 */ "..iii.."
- /* 3 */ ".iieii."
- /* 4 */ ".iiii.."
- /* 5 */ "..iii.."
- /* 6 */ "......."
-
- // Level 7
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "..iii.."
- /* 2 */ ".iiiii."
- /* 3 */ ".iieii."
- /* 4 */ ".iiiii."
- /* 5 */ "..iii.."
- /* 6 */ "......."
-
- // Level 8
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "...i..."
- /* 2 */ "..iiii."
- /* 3 */ ".iiiii."
- /* 4 */ "..iii.."
- /* 5 */ "...i..."
- /* 6 */ "......."
-
- // Level 9
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "......."
- /* 2 */ "...i..."
- /* 3 */ "..iii.."
- /* 4 */ "...i..."
- /* 5 */ "......."
- /* 6 */ ".......",
-
- // Connectors:
- "-1: 3, 2, 0: 2\n" /* Type -1, direction Z- */
- "3: 6, 2, 3: 5\n" /* Type 3, direction X+ */
- "-3: 0, 2, 3: 4\n" /* Type -3, direction X- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // MediumSakuraTree
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // Restaurant:
- // The data has been exported from the gallery Plains, area index 61, ID 117, created by Aloe_vera
- {
- // Size:
- 15, 10, 15, // SizeX = 15, SizeY = 10, SizeZ = 15
-
- // Hitbox (relative to bounding box):
- -1, 0, -1, // MinX, MinY, MinZ
- 14, 9, 15, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 2\n" /* wood */
- "b:135: 0\n" /* 135 */
- "c:135: 2\n" /* 135 */
- "d:135: 1\n" /* 135 */
- "e: 17: 9\n" /* tree */
- "f:135: 3\n" /* 135 */
- "g: 85: 0\n" /* fence */
- "h: 17: 1\n" /* tree */
- "i:171: 0\n" /* carpet */
- "j:171:12\n" /* carpet */
- "k:126: 1\n" /* woodenslab */
- "l: 50: 5\n" /* torch */
- "m: 19: 0\n" /* sponge */
- "n: 35: 0\n" /* wool */
- "o: 50: 3\n" /* torch */
- "p: 50: 1\n" /* torch */
- "q: 50: 4\n" /* torch */
- "r: 35:14\n" /* wool */
- "s: 44: 8\n" /* step */
- "t: 43: 0\n" /* doubleslab */
- "u: 44: 0\n" /* step */
- "v: 17: 5\n" /* tree */,
-
- // Block data:
- // Level 0
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmmaaaaaaammmm"
- /* 1 */ "maaaaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaaaam"
- /* 4 */ "aaaaaaaaaaaaaaa"
- /* 5 */ "aaaaaaaaaaaaaaa"
- /* 6 */ "aaaaaaaaaaaaaaa"
- /* 7 */ "aaaaaaaaaaaaaaa"
- /* 8 */ "aaaaaaaaaaaaaaa"
- /* 9 */ "aaaaaaaaaaaaaaa"
- /* 10 */ "aaaaaaaaaaaaaaa"
- /* 11 */ "maaaaaaaaaaaaam"
- /* 12 */ "maaaaaaaaaaaaam"
- /* 13 */ "maaaaaaaaaaaaam"
- /* 14 */ "mmmmaaaaaaammmm"
-
- // Level 1
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "....bcccccd...."
- /* 1 */ ".aaaaaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaaaaa."
- /* 4 */ "caaaaaaaaaaaaac"
- /* 5 */ "baaaaaaaaaaaaad"
- /* 6 */ "baaaaaaaaaaaaad"
- /* 7 */ "baaaaaaaaaaeaad"
- /* 8 */ "baaaaaaaaaaaaad"
- /* 9 */ "baaaaaaaaaaaaad"
- /* 10 */ "faaaaaaaaaaaaaf"
- /* 11 */ ".aaaaaaaaaaaaa."
- /* 12 */ ".aaaaaaaaaaaaa."
- /* 13 */ ".aaaaaaaaaaaaa."
- /* 14 */ "....bfffffd...."
-
- // Level 2
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".gggg.....gggg."
- /* 2 */ ".g...........g."
- /* 3 */ ".g.hhhhhhhhh.g."
- /* 4 */ ".g.hiiijiiih.g."
- /* 5 */ "...hikijikih..."
- /* 6 */ "...hiiijiiihg.."
- /* 7 */ "...hjjjjjjj...."
- /* 8 */ "...hiiijiiihg.."
- /* 9 */ "...hikijikih..."
- /* 10 */ ".g.hiiijiiih.g."
- /* 11 */ ".g.hhhhhhhhh.g."
- /* 12 */ ".g...........g."
- /* 13 */ ".gggg.....gggg."
- /* 14 */ "..............."
-
- // Level 3
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".l..g.....g..l."
- /* 2 */ "..............."
- /* 3 */ "...hnnnhnnnh..."
- /* 4 */ ".g.n.......n.g."
- /* 5 */ "...n.......n..."
- /* 6 */ "...n.......hl.."
- /* 7 */ "...h..........."
- /* 8 */ "...n.......hl.."
- /* 9 */ "...n.......n..."
- /* 10 */ ".g.n.......n.g."
- /* 11 */ "...hnnnhnnnh..."
- /* 12 */ "..............."
- /* 13 */ ".l..g.....g..l."
- /* 14 */ "..............."
-
- // Level 4
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "....g.....g...."
- /* 2 */ "..............."
- /* 3 */ "...hn.nhn.nh..."
- /* 4 */ ".g.n...o...n.g."
- /* 5 */ "...n.......n..."
- /* 6 */ "...n.......h..."
- /* 7 */ "...hp......e..."
- /* 8 */ "...n.......h..."
- /* 9 */ "...n.......n..."
- /* 10 */ ".g.n...q...n.g."
- /* 11 */ "...hn.nhn.nh..."
- /* 12 */ "..............."
- /* 13 */ "....g.....g...."
- /* 14 */ "..............."
-
- // Level 5
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "....g.....g...."
- /* 2 */ "....ggggggg...."
- /* 3 */ "...hnnnhnnnh..."
- /* 4 */ ".ggn.......ngg."
- /* 5 */ "..gn.......ng.."
- /* 6 */ "..gn.......hg.."
- /* 7 */ "..gh..r.r..ng.."
- /* 8 */ "..gn.......hg.."
- /* 9 */ "..gn.......ng.."
- /* 10 */ ".ggn.......ngg."
- /* 11 */ "...hnnnhnnnh..."
- /* 12 */ "....ggggggg...."
- /* 13 */ "....g.....g...."
- /* 14 */ "..............."
-
- // Level 6
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "...stuuuuuts..."
- /* 2 */ "..sttttttttts.."
- /* 3 */ ".sthvvvhvvvhts."
- /* 4 */ ".tte.......ett."
- /* 5 */ ".ute.......etu."
- /* 6 */ ".ute.......htu."
- /* 7 */ ".uth..g.g..etu."
- /* 8 */ ".ute.......htu."
- /* 9 */ ".ute.......etu."
- /* 10 */ ".tte.......ett."
- /* 11 */ ".sthvvvhvvvhts."
- /* 12 */ "..sttttttttts.."
- /* 13 */ "...stuuuuuts..."
- /* 14 */ "..............."
-
- // Level 7
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".stu.......uts."
- /* 2 */ ".tu.........ut."
- /* 3 */ ".u.uuuuuuuuu.u."
- /* 4 */ "...utttttttu..."
- /* 5 */ "...utttttttu..."
- /* 6 */ "...utttttttu..."
- /* 7 */ "...utttttttu..."
- /* 8 */ "...utttttttu..."
- /* 9 */ "...utttttttu..."
- /* 10 */ "...utttttttu..."
- /* 11 */ ".u.uuuuuuuuu.u."
- /* 12 */ ".tu.........ut."
- /* 13 */ ".stu.......uts."
- /* 14 */ "..............."
-
- // Level 8
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".u...........u."
- /* 2 */ "..............."
- /* 3 */ "..............."
- /* 4 */ "..............."
- /* 5 */ ".....uuuuu....."
- /* 6 */ ".....utttu....."
- /* 7 */ ".....utttu....."
- /* 8 */ ".....utttu....."
- /* 9 */ ".....uuuuu....."
- /* 10 */ "..............."
- /* 11 */ "..............."
- /* 12 */ "..............."
- /* 13 */ ".u...........u."
- /* 14 */ "..............."
-
- // Level 9
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "..............."
- /* 3 */ "..............."
- /* 4 */ "..............."
- /* 5 */ "..............."
- /* 6 */ "..............."
- /* 7 */ ".......u......."
- /* 8 */ "..............."
- /* 9 */ "..............."
- /* 10 */ "..............."
- /* 11 */ "..............."
- /* 12 */ "..............."
- /* 13 */ "..............."
- /* 14 */ "...............",
-
- // Connectors:
- "-1: 14, 1, 7: 5\n" /* Type -1, direction X+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Restaurant
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // SakuraDouble:
- // The data has been exported from the gallery Plains, area index 76, ID 142, created by Aloe_vera
- {
- // Size:
- 12, 8, 6, // SizeX = 12, SizeY = 8, SizeZ = 6
-
- // Hitbox (relative to bounding box):
- -1, 0, -1, // MinX, MinY, MinZ
- 12, 7, 6, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 3: 0\n" /* dirt */
- "b: 2: 0\n" /* grass */
- "c: 17: 1\n" /* tree */
- "d: 35: 6\n" /* wool */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "aaaaaaaaaaaa"
- /* 1 */ "aaaaaaaaaaaa"
- /* 2 */ "aaaaaaaaaaaa"
- /* 3 */ "aaaaaaaaaaaa"
- /* 4 */ "aaaaaaaaaaaa"
- /* 5 */ "aaaaaaaaaaaa"
-
- // Level 1
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "bbbbbbbbbbbb"
- /* 1 */ "bbbbbbbbbbbb"
- /* 2 */ "bbabbbbbbbbb"
- /* 3 */ "bbbbbbbbbabb"
- /* 4 */ "bbbbbbbbbbbb"
- /* 5 */ "bbbbbbbbbbbb"
-
- // Level 2
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ "..c........."
- /* 3 */ ".........c.."
- /* 4 */ "............"
- /* 5 */ "............"
-
- // Level 3
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ "..c........."
- /* 3 */ ".........c.."
- /* 4 */ "............"
- /* 5 */ "............"
-
- // Level 4
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "..d........."
- /* 1 */ "ddddd......."
- /* 2 */ "ddcdd...ddd."
- /* 3 */ "ddddd...dcd."
- /* 4 */ "..d.....ddd."
- /* 5 */ "............"
-
- // Level 5
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ ".ddd........"
- /* 1 */ ".ddd....ddd."
- /* 2 */ "ddddd..ddddd"
- /* 3 */ ".ddd...ddcdd"
- /* 4 */ ".ddd...ddddd"
- /* 5 */ "........ddd."
-
- // Level 6
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "..d......d.."
- /* 2 */ ".ddd....ddd."
- /* 3 */ "..d....ddddd"
- /* 4 */ "........ddd."
- /* 5 */ ".........d.."
-
- // Level 7
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ "............"
- /* 3 */ ".........d.."
- /* 4 */ "............"
- /* 5 */ "............",
-
- // Connectors:
- "-1: -1, 2, 2: 4\n" /* Type -1, direction X- */
- "3: 5, 2, 6: 3\n" /* Type 3, direction Z+ */
- "-3: 6, 2, -1: 2\n" /* Type -3, direction Z- */
- "-3: 12, 2, 2: 5\n" /* Type -3, direction X+ */
- "3: 12, 2, 2: 5\n" /* Type 3, direction X+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // SakuraDouble
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // SakuraSmall:
- // The data has been exported from the gallery Plains, area index 145, ID 489, created by Aloe_vera
- {
- // Size:
- 5, 7, 5, // SizeX = 5, SizeY = 7, SizeZ = 5
-
- // Hitbox (relative to bounding box):
- -1, 0, -1, // MinX, MinY, MinZ
- 5, 6, 5, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 3: 0\n" /* dirt */
- "b: 2: 0\n" /* grass */
- "c: 17: 1\n" /* tree */
- "d: 35: 6\n" /* wool */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 01234 */
- /* 0 */ "aaaaa"
- /* 1 */ "aaaaa"
- /* 2 */ "aaaaa"
- /* 3 */ "aaaaa"
- /* 4 */ "aaaaa"
-
- // Level 1
- /* z\x* 01234 */
- /* 0 */ "bbbbb"
- /* 1 */ "bbbbb"
- /* 2 */ "bbabb"
- /* 3 */ "bbbbb"
- /* 4 */ "bbbbb"
-
- // Level 2
- /* z\x* 01234 */
- /* 0 */ "....."
- /* 1 */ "....."
- /* 2 */ "..c.."
- /* 3 */ "....."
- /* 4 */ "....."
-
- // Level 3
- /* z\x* 01234 */
- /* 0 */ "....."
- /* 1 */ "....."
- /* 2 */ "..c.."
- /* 3 */ "....."
- /* 4 */ "....."
-
- // Level 4
- /* z\x* 01234 */
- /* 0 */ "..d.."
- /* 1 */ "ddddd"
- /* 2 */ "ddcdd"
- /* 3 */ "ddddd"
- /* 4 */ "..d.."
-
- // Level 5
- /* z\x* 01234 */
- /* 0 */ ".ddd."
- /* 1 */ ".ddd."
- /* 2 */ "ddddd"
- /* 3 */ ".ddd."
- /* 4 */ ".ddd."
-
- // Level 6
- /* z\x* 01234 */
- /* 0 */ "....."
- /* 1 */ "..d.."
- /* 2 */ ".ddd."
- /* 3 */ "..d.."
- /* 4 */ ".....",
-
- // Connectors:
- "-1: 2, 2, -1: 2\n" /* Type -1, direction Z- */
- "3: 5, 2, 2: 5\n" /* Type 3, direction X+ */
- "-3: -1, 2, 2: 4\n" /* Type -3, direction X- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // SakuraSmall
-}; // g_JapaneseVillagePrefabs
-
-
-
-
-
-
-const cPrefab::sDef g_JapaneseVillageStartingPrefabs[] =
-{
- ////////////////////////////////////////////////////////////////////////////////
- // HighTemple:
- // The data has been exported from the gallery Plains, area index 70, ID 133, created by Aloe_vera
- {
- // Size:
- 11, 19, 11, // SizeX = 11, SizeY = 19, SizeZ = 11
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 10, 18, 10, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 2\n" /* wood */
- "b:135: 0\n" /* 135 */
- "c:135: 2\n" /* 135 */
- "d:135: 1\n" /* 135 */
- "e: 17: 9\n" /* tree */
- "f:135: 3\n" /* 135 */
- "g: 85: 0\n" /* fence */
- "h: 17: 1\n" /* tree */
- "i:171: 0\n" /* carpet */
- "j: 50: 5\n" /* torch */
- "k: 35: 0\n" /* wool */
- "l: 17: 5\n" /* tree */
- "m: 19: 0\n" /* sponge */
- "n:124: 0\n" /* redstonelampon */
- "o: 69: 9\n" /* lever */
- "p: 44: 8\n" /* step */
- "q: 43: 0\n" /* doubleslab */
- "r: 44: 0\n" /* step */
- "s: 50: 4\n" /* torch */
- "t: 50: 1\n" /* torch */
- "u: 50: 3\n" /* torch */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmaaaaammm"
- /* 1 */ "maaaaaaaaam"
- /* 2 */ "maaaaaaaaam"
- /* 3 */ "aaaaaaaaaaa"
- /* 4 */ "aaaaaaaaaaa"
- /* 5 */ "aaaaaaaaaaa"
- /* 6 */ "aaaaaaaaaaa"
- /* 7 */ "aaaaaaaaaaa"
- /* 8 */ "maaaaaaaaam"
- /* 9 */ "maaaaaaaaam"
- /* 10 */ "mmmaaaaammm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "...bcccd..."
- /* 1 */ ".aaaaaaaaa."
- /* 2 */ ".aaaaaaaaa."
- /* 3 */ "caaaaaaaaac"
- /* 4 */ "baaaaaaaaad"
- /* 5 */ "baaeaaaaaad"
- /* 6 */ "baaaaaaaaad"
- /* 7 */ "faaaaaaaaaf"
- /* 8 */ ".aaaaaaaaa."
- /* 9 */ ".aaaaaaaaa."
- /* 10 */ "...bfffd..."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".ggg...ggg."
- /* 2 */ ".g.......g."
- /* 3 */ ".g.hhhhh.g."
- /* 4 */ "...hiiih..."
- /* 5 */ "....iiih..."
- /* 6 */ "...hiiih..."
- /* 7 */ ".g.hhhhh.g."
- /* 8 */ ".g.......g."
- /* 9 */ ".ggg...ggg."
- /* 10 */ "..........."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".j.g...g.j."
- /* 2 */ "..........."
- /* 3 */ ".g.kkhkk.g."
- /* 4 */ "...h...k..."
- /* 5 */ ".......h..."
- /* 6 */ "...h...k..."
- /* 7 */ ".g.kkhkk.g."
- /* 8 */ "..........."
- /* 9 */ ".j.g...g.j."
- /* 10 */ "..........."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "...g...g..."
- /* 2 */ "..........."
- /* 3 */ ".g.kkhkk.g."
- /* 4 */ "...h...k..."
- /* 5 */ "...k...h..."
- /* 6 */ "...h...k..."
- /* 7 */ ".g.kkhkk.g."
- /* 8 */ "..........."
- /* 9 */ "...g...g..."
- /* 10 */ "..........."
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "...g...g..."
- /* 2 */ "...ggggg..."
- /* 3 */ ".gghlhlhgg."
- /* 4 */ "..ge...eg.."
- /* 5 */ "..ge.nohg.."
- /* 6 */ "..ge...eg.."
- /* 7 */ ".gghlhlhgg."
- /* 8 */ "...ggggg..."
- /* 9 */ "...g...g..."
- /* 10 */ "..........."
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..pqrrrqp.."
- /* 2 */ ".pqqqqqqqp."
- /* 3 */ ".qqhkkkhqq."
- /* 4 */ ".rqkhhhkqr."
- /* 5 */ ".rqkhhhkqr."
- /* 6 */ ".rqkhhhkqr."
- /* 7 */ ".qqhkkkhqq."
- /* 8 */ ".pqqqqqqqp."
- /* 9 */ "..pqrrrqp.."
- /* 10 */ "..........."
-
- // Level 7
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".qr.....rq."
- /* 2 */ ".........r."
- /* 3 */ "...hhhhh..."
- /* 4 */ "...hiiih..."
- /* 5 */ "....iiih..."
- /* 6 */ "...hiiih..."
- /* 7 */ "...hhhhh..."
- /* 8 */ ".r.......r."
- /* 9 */ ".qr.....rq."
- /* 10 */ "..........."
-
- // Level 8
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "...kkhkk..."
- /* 4 */ "...h...k..."
- /* 5 */ ".......h..."
- /* 6 */ "...h...k..."
- /* 7 */ "...kkhkk..."
- /* 8 */ "..........."
- /* 9 */ "..........."
- /* 10 */ "..........."
-
- // Level 9
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ ".....s....."
- /* 3 */ "...kkhkk..."
- /* 4 */ "...h...k..."
- /* 5 */ "...k...ht.."
- /* 6 */ "...h...k..."
- /* 7 */ "...kkhkk..."
- /* 8 */ ".....u....."
- /* 9 */ "..........."
- /* 10 */ "..........."
-
- // Level 10
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "...ggggg..."
- /* 3 */ "..ghlhlhg.."
- /* 4 */ "..ge...eg.."
- /* 5 */ "..ge.nohg.."
- /* 6 */ "..ge...eg.."
- /* 7 */ "..ghlhlhg.."
- /* 8 */ "...ggggg..."
- /* 9 */ "..........."
- /* 10 */ "..........."
-
- // Level 11
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..prrrrrp.."
- /* 2 */ ".pqqqqqqqp."
- /* 3 */ ".qqhkkkhqq."
- /* 4 */ ".rqkhhhkqr."
- /* 5 */ ".rqkhhhkqr."
- /* 6 */ ".rqkhhhkqr."
- /* 7 */ ".qqhkkkhqr."
- /* 8 */ ".pqqqqqqqp."
- /* 9 */ "..pqrrrqp.."
- /* 10 */ "..........."
-
- // Level 12
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".qr.....rq."
- /* 2 */ ".r.......r."
- /* 3 */ "...hhhhh..."
- /* 4 */ "...hiiih..."
- /* 5 */ "....iiih..."
- /* 6 */ "...hiiih..."
- /* 7 */ "...hhhhh..."
- /* 8 */ ".r.......r."
- /* 9 */ ".qr.....rq."
- /* 10 */ "..........."
-
- // Level 13
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "...kkhkk..."
- /* 4 */ "...h...k..."
- /* 5 */ ".......h..."
- /* 6 */ "...h...k..."
- /* 7 */ "...kkhkk..."
- /* 8 */ "..........."
- /* 9 */ "..........."
- /* 10 */ "..........."
-
- // Level 14
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ ".....s....."
- /* 3 */ "...kkhkk..."
- /* 4 */ "...h...k..."
- /* 5 */ "...k...ht.."
- /* 6 */ "...h...k..."
- /* 7 */ "...kkhkk..."
- /* 8 */ ".....u....."
- /* 9 */ "..........."
- /* 10 */ "..........."
-
- // Level 15
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "...ggggg..."
- /* 3 */ "..ghlhlhg.."
- /* 4 */ "..ge...eg.."
- /* 5 */ "..ge.nohg.."
- /* 6 */ "..ge...eg.."
- /* 7 */ "..ghlhlhg.."
- /* 8 */ "...ggggg..."
- /* 9 */ "..........."
- /* 10 */ "..........."
-
- // Level 16
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..pqrrrqp.."
- /* 2 */ ".pqqqqqqqp."
- /* 3 */ ".qqrrrrrqq."
- /* 4 */ ".rqrrrrrqr."
- /* 5 */ ".rqrrrrrqr."
- /* 6 */ ".rqrrrrrqr."
- /* 7 */ ".qqrrrrrqq."
- /* 8 */ ".pqqqqqqqp."
- /* 9 */ "..pqrrrqp.."
- /* 10 */ "..........."
-
- // Level 17
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".qr.....rq."
- /* 2 */ ".rr.....rr."
- /* 3 */ "...rrrrr..."
- /* 4 */ "...rqqqr..."
- /* 5 */ "...rqqqr..."
- /* 6 */ "...rqqqr..."
- /* 7 */ "...rrrrr..."
- /* 8 */ ".rr.....rr."
- /* 9 */ ".qr.....rq."
- /* 10 */ "..........."
-
- // Level 18
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "..........."
- /* 4 */ "..........."
- /* 5 */ ".....r....."
- /* 6 */ "..........."
- /* 7 */ "..........."
- /* 8 */ "..........."
- /* 9 */ "..........."
- /* 10 */ "...........",
-
- // Connectors:
- "2: 0, 1, 5: 4\n" /* Type 2, direction X- */
- "2: 5, 1, 0: 2\n" /* Type 2, direction Z- */
- "2: 10, 1, 5: 5\n" /* Type 2, direction X+ */
- "2: 5, 1, 10: 3\n" /* Type 2, direction Z+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // HighTemple
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // Well:
- // The data has been exported from the gallery Plains, area index 143, ID 487, created by STR_Warrior
- {
- // Size:
- 7, 14, 7, // SizeX = 7, SizeY = 14, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 6, 13, 6, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 1: 0\n" /* stone */
- "b: 4: 0\n" /* cobblestone */
- "c: 8: 0\n" /* water */
- "d: 13: 0\n" /* gravel */
- "e: 67: 1\n" /* stairs */
- "f: 67: 2\n" /* stairs */
- "g: 67: 0\n" /* stairs */
- "h: 67: 3\n" /* stairs */
- "i: 85: 0\n" /* fence */
- "j: 44: 8\n" /* step */
- "k: 44: 0\n" /* step */
- "l: 43: 0\n" /* doubleslab */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "maaaaam"
- /* 2 */ "maaaaam"
- /* 3 */ "maaaaam"
- /* 4 */ "maaaaam"
- /* 5 */ "maaaaam"
- /* 6 */ "mmmmmmm"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbbbbbm"
- /* 2 */ "mbcc.bm"
- /* 3 */ "mbcccbm"
- /* 4 */ "mbcccbm"
- /* 5 */ "mbbbbbm"
- /* 6 */ "mmmmmmm"
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbbbbbm"
- /* 2 */ "mbcccbm"
- /* 3 */ "mbcccbm"
- /* 4 */ "mbcccbm"
- /* 5 */ "mbbbbbm"
- /* 6 */ "mmmmmmm"
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbbbbbm"
- /* 2 */ "mbcccbm"
- /* 3 */ "mbcccbm"
- /* 4 */ "mbcccbm"
- /* 5 */ "mbbbbbm"
- /* 6 */ "mmmmmmm"
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbbbbbm"
- /* 2 */ "mbcccbm"
- /* 3 */ "mbcccbm"
- /* 4 */ "mbcccbm"
- /* 5 */ "mbbbbbm"
- /* 6 */ "mmmmmmm"
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbbbbbm"
- /* 2 */ "mbcccbm"
- /* 3 */ "mbcccbm"
- /* 4 */ "mbcccbm"
- /* 5 */ "mbbbbbm"
- /* 6 */ "mmmmmmm"
-
- // Level 6
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mbbbbbm"
- /* 2 */ "mbcccbm"
- /* 3 */ "mbcccbm"
- /* 4 */ "mbcccbm"
- /* 5 */ "mbbbbbm"
- /* 6 */ "mmmmmmm"
-
- // Level 7
- /* z\x* 0123456 */
- /* 0 */ "mmbbbmm"
- /* 1 */ "mbbbbbm"
- /* 2 */ "bbcccbb"
- /* 3 */ "bbcccbb"
- /* 4 */ "bbcccbb"
- /* 5 */ "mbbbbbm"
- /* 6 */ "mmbbbmm"
-
- // Level 8
- /* z\x* 0123456 */
- /* 0 */ "mmdddmm"
- /* 1 */ "mbbbbbm"
- /* 2 */ "dbcccbd"
- /* 3 */ "dbcccbd"
- /* 4 */ "dbcccbd"
- /* 5 */ "mbbbbbm"
- /* 6 */ "mmdddmm"
-
- // Level 9
- /* z\x* 0123456 */
- /* 0 */ "mm...mm"
- /* 1 */ "mbefgbm"
- /* 2 */ ".h...h."
- /* 3 */ ".g...e."
- /* 4 */ ".f...f."
- /* 5 */ "mbehgbm"
- /* 6 */ "mm...mm"
-
- // Level 10
- /* z\x* 0123456 */
- /* 0 */ "mm...mm"
- /* 1 */ "mi...im"
- /* 2 */ "......."
- /* 3 */ "......."
- /* 4 */ "......."
- /* 5 */ "mi...im"
- /* 6 */ "mm...mm"
-
- // Level 11
- /* z\x* 0123456 */
- /* 0 */ "mm...mm"
- /* 1 */ "mi...im"
- /* 2 */ "......."
- /* 3 */ "......."
- /* 4 */ "......."
- /* 5 */ "mi...im"
- /* 6 */ "mm...mm"
-
- // Level 12
- /* z\x* 0123456 */
- /* 0 */ "mjkkkjm"
- /* 1 */ "jlllllj"
- /* 2 */ "klllllk"
- /* 3 */ "klllllk"
- /* 4 */ "klllllk"
- /* 5 */ "jlllllj"
- /* 6 */ "mjkkkjm"
-
- // Level 13
- /* z\x* 0123456 */
- /* 0 */ "k.....k"
- /* 1 */ "......."
- /* 2 */ "..kkk.."
- /* 3 */ "..klk.."
- /* 4 */ "..kkk.."
- /* 5 */ "......."
- /* 6 */ "k.....k",
-
- // Connectors:
- "2: 0, 9, 3: 4\n" /* Type 2, direction X- */
- "2: 3, 9, 0: 2\n" /* Type 2, direction Z- */
- "2: 6, 9, 3: 5\n" /* Type 2, direction X+ */
- "2: 3, 9, 6: 3\n" /* Type 2, direction Z+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Well
-};
-
-
-
-
-
-// The prefab counts:
-
-const size_t g_JapaneseVillagePrefabsCount = ARRAYCOUNT(g_JapaneseVillagePrefabs);
-
-const size_t g_JapaneseVillageStartingPrefabsCount = ARRAYCOUNT(g_JapaneseVillageStartingPrefabs);
-
diff --git a/src/Generating/Prefabs/JapaneseVillagePrefabs.h b/src/Generating/Prefabs/JapaneseVillagePrefabs.h
deleted file mode 100644
index 501b6c1cd..000000000
--- a/src/Generating/Prefabs/JapaneseVillagePrefabs.h
+++ /dev/null
@@ -1,15 +0,0 @@
-
-// JapaneseVillagePrefabs.h
-
-// Declares the prefabs in the group JapaneseVillage
-
-#include "../Prefab.h"
-
-
-
-
-
-extern const cPrefab::sDef g_JapaneseVillagePrefabs[];
-extern const cPrefab::sDef g_JapaneseVillageStartingPrefabs[];
-extern const size_t g_JapaneseVillagePrefabsCount;
-extern const size_t g_JapaneseVillageStartingPrefabsCount;
diff --git a/src/Generating/Prefabs/PlainsVillagePrefabs.cpp b/src/Generating/Prefabs/PlainsVillagePrefabs.cpp
deleted file mode 100644
index 4613f76e2..000000000
--- a/src/Generating/Prefabs/PlainsVillagePrefabs.cpp
+++ /dev/null
@@ -1,6118 +0,0 @@
-
-// PlainsVillagePrefabs.cpp
-
-// Defines the prefabs in the group PlainsVillage
-
-// NOTE: This file has been generated automatically by GalExport!
-// Any manual changes will be overwritten by the next automatic export!
-
-#include "Globals.h"
-#include "PlainsVillagePrefabs.h"
-
-
-
-
-
-const cPrefab::sDef g_PlainsVillagePrefabs[] =
-{
- ////////////////////////////////////////////////////////////////////////////////
- // BigPlantBed:
- // The data has been exported from the gallery Plains, area index 26, ID 70, created by Taugrammaton
- {
- // Size:
- 13, 8, 12, // SizeX = 13, SizeY = 8, SizeZ = 12
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 12, 7, 11, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 3: 0\n" /* dirt */
- "b: 5: 0\n" /* wood */
- "c: 13: 0\n" /* gravel */
- "d: 17: 0\n" /* tree */
- "e: 60: 7\n" /* tilleddirt */
- "f: 8: 0\n" /* water */
- "g: 85: 0\n" /* fence */
- "h: 59: 7\n" /* crops */
- "i: 50: 5\n" /* torch */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "aaaaaaaaaaaaa"
- /* 1 */ "aaaaaaaaaaaaa"
- /* 2 */ "aaaaaaaaaaaaa"
- /* 3 */ "aaaaaaaaaaaaa"
- /* 4 */ "aaaaaaaaaaaaa"
- /* 5 */ "aaaaaaaaaaaaa"
- /* 6 */ "aaaaaaaaaaaaa"
- /* 7 */ "aaaaaaaaaaaaa"
- /* 8 */ "aaaaaaaaaaaaa"
- /* 9 */ "aaaaaaaaaaaaa"
- /* 10 */ "aaaaaaaaaaaaa"
- /* 11 */ "aaaaaaaaaaaaa"
-
- // Level 1
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "bbbbbbbbbbbbb"
- /* 1 */ "bcccccccccccb"
- /* 2 */ "bcccccccccccb"
- /* 3 */ "bcccccccccccb"
- /* 4 */ "bcccccccccccb"
- /* 5 */ "bcccccccccccb"
- /* 6 */ "bcccccccccccb"
- /* 7 */ "bcccccccccccb"
- /* 8 */ "bcccccccccccb"
- /* 9 */ "bcccccccccccb"
- /* 10 */ "bcccccccccccb"
- /* 11 */ "bbbbbbbbbbbbb"
-
- // Level 2
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "ddddddddddddd"
- /* 1 */ "deefeefeefeed"
- /* 2 */ "deefeefeefeed"
- /* 3 */ "deefeefeefeed"
- /* 4 */ "deefeefeefeed"
- /* 5 */ "deefeefeefeed"
- /* 6 */ "deefeefeefeed"
- /* 7 */ "deefeefeefeed"
- /* 8 */ "deefeefeefeed"
- /* 9 */ "deefeefeefeed"
- /* 10 */ "deefeefeefeed"
- /* 11 */ "ddddddddddddd"
-
- // Level 3
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "g..g..g..g..g"
- /* 1 */ "ghh.h..hh.hhg"
- /* 2 */ "ghh..h.hh.hhg"
- /* 3 */ "ghh.h..h..hhg"
- /* 4 */ "ghh.hh.h..hhg"
- /* 5 */ "ghh.h..hh.hhg"
- /* 6 */ "ghh.hh.hh.hhg"
- /* 7 */ "ghh....h..hhg"
- /* 8 */ "ghh..h....hhg"
- /* 9 */ "ghh.....h.hhg"
- /* 10 */ "ghh.hh.h..hhg"
- /* 11 */ "g..g..g..g..g"
-
- // Level 4
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "i..i..i..i..i"
- /* 1 */ "............."
- /* 2 */ "............."
- /* 3 */ "............."
- /* 4 */ "............."
- /* 5 */ "............."
- /* 6 */ "............."
- /* 7 */ "............."
- /* 8 */ "............."
- /* 9 */ "............."
- /* 10 */ "............."
- /* 11 */ "i..i..i..i..i"
-
- // Level 5
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "............."
- /* 2 */ "............."
- /* 3 */ "............."
- /* 4 */ "............."
- /* 5 */ "............."
- /* 6 */ "............."
- /* 7 */ "............."
- /* 8 */ "............."
- /* 9 */ "............."
- /* 10 */ "............."
- /* 11 */ "............."
-
- // Level 6
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "............."
- /* 2 */ "............."
- /* 3 */ "............."
- /* 4 */ "............."
- /* 5 */ "............."
- /* 6 */ "............."
- /* 7 */ "............."
- /* 8 */ "............."
- /* 9 */ "............."
- /* 10 */ "............."
- /* 11 */ "............."
-
- // Level 7
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "............."
- /* 2 */ "............."
- /* 3 */ "............."
- /* 4 */ "............."
- /* 5 */ "............."
- /* 6 */ "............."
- /* 7 */ "............."
- /* 8 */ "............."
- /* 9 */ "............."
- /* 10 */ "............."
- /* 11 */ ".............",
-
- // Connectors:
- "-1: 7, 1, 11: 3\n" /* Type -1, direction Z+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // BigPlantBed
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // CobbleHouse10x5Library:
- // The data has been exported from the gallery Plains, area index 23, ID 66, created by xoft
- {
- // Size:
- 12, 7, 7, // SizeX = 12, SizeY = 7, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 12, 6, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f: 53: 3\n" /* woodstairs */
- "g: 53: 1\n" /* woodstairs */
- "h: 85: 0\n" /* fence */
- "i: 53: 0\n" /* woodstairs */
- "j: 53: 2\n" /* woodstairs */
- "k:102: 0\n" /* glasspane */
- "l: 64:12\n" /* wooddoorblock */
- "m: 19: 0\n" /* sponge */
- "n: 50: 3\n" /* torch */
- "o: 72: 0\n" /* woodplate */
- "p: 50: 4\n" /* torch */
- "q: 53: 7\n" /* woodstairs */
- "r: 47: 0\n" /* bookshelf */
- "s: 50: 1\n" /* torch */
- "t: 50: 2\n" /* torch */
- "u: 53: 6\n" /* woodstairs */
- "v: 5: 0\n" /* wood */,
-
- // Block data:
- // Level 0
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "mmmmmmmaaamm"
- /* 1 */ "maaaaaaaaaam"
- /* 2 */ "maaaaaaaaaam"
- /* 3 */ "maaaaaaaaaam"
- /* 4 */ "maaaaaaaaaam"
- /* 5 */ "maaaaaaaaaam"
- /* 6 */ "mmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ ".......bcd.."
- /* 1 */ ".aaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaa."
- /* 4 */ ".aaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaa."
- /* 6 */ "............"
-
- // Level 2
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ ".aaaaaaaeaa."
- /* 2 */ ".af.ghi...a."
- /* 3 */ ".ah.......a."
- /* 4 */ ".aj.ghighia."
- /* 5 */ ".aaaaaaaaaa."
- /* 6 */ "............"
-
- // Level 3
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ ".akkakkalaa."
- /* 2 */ ".k..no.n.nk."
- /* 3 */ ".ko.......k."
- /* 4 */ ".k..po.po.k."
- /* 5 */ ".akkakkakka."
- /* 6 */ "............"
-
- // Level 4
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "jjjjjjjjjjjj"
- /* 1 */ "qaaaaaaaaaaq"
- /* 2 */ ".arrrrrrrra."
- /* 3 */ ".as......ta."
- /* 4 */ ".arrrrrrrra."
- /* 5 */ "uaaaaaaaaaau"
- /* 6 */ "ffffffffffff"
-
- // Level 5
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "jjjjjjjjjjjj"
- /* 2 */ "qvvvvvvvvvvq"
- /* 3 */ ".vvvvvvvvvv."
- /* 4 */ "uvvvvvvvvvvu"
- /* 5 */ "ffffffffffff"
- /* 6 */ "............"
-
- // Level 6
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ "jjjjjjjjjjjj"
- /* 3 */ "vvvvvvvvvvvv"
- /* 4 */ "ffffffffffff"
- /* 5 */ "............"
- /* 6 */ "............",
-
- // Connectors:
- "-1: 8, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // CobbleHouse10x5Library
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // DoublePlantBed:
- // The data has been exported from the gallery Plains, area index 5, ID 20, created by tonibm1999
- {
- // Size:
- 15, 8, 9, // SizeX = 15, SizeY = 8, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 14, 7, 8, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 3: 0\n" /* dirt */
- "b: 2: 0\n" /* grass */
- "c: 17: 0\n" /* tree */
- "d: 60: 7\n" /* tilleddirt */
- "e: 8: 0\n" /* water */
- "f: 50: 5\n" /* torch */
- "g: 59: 7\n" /* crops */
- "h: 59: 3\n" /* crops */
- "i: 59: 5\n" /* crops */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "aaaaaaabaaaaaaa"
- /* 1 */ "aaaaaaaaaaaaaaa"
- /* 2 */ "aaaaaaaaaaaaaaa"
- /* 3 */ "aaaaaaaaaaaaaaa"
- /* 4 */ "aaaaaaabaaaaaaa"
- /* 5 */ "aaaaaaabaaaaaaa"
- /* 6 */ "aaaaaaabaaaaaaa"
- /* 7 */ "aaaaaaabaaaaaaa"
- /* 8 */ "aaaaaaabaaaaaaa"
-
- // Level 1
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "aaaaaaamaaaaaaa"
- /* 1 */ "aaaaaaamaaaaaaa"
- /* 2 */ "aaaaaaamaaaaaaa"
- /* 3 */ "aaaaaaamaaaaaaa"
- /* 4 */ "aaaaaaamaaaaaaa"
- /* 5 */ "aaaaaaamaaaaaaa"
- /* 6 */ "aaaaaaamaaaaaaa"
- /* 7 */ "aaaaaaamaaaaaaa"
- /* 8 */ "aaaaaaamaaaaaaa"
-
- // Level 2
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "ccccccc.ccccccc"
- /* 1 */ "cddeddc.cddeddc"
- /* 2 */ "cddeddc.cddeddc"
- /* 3 */ "cddeddc.cddeddc"
- /* 4 */ "cddeddc.cddeddc"
- /* 5 */ "cddeddc.cddeddc"
- /* 6 */ "cddeddc.cddeddc"
- /* 7 */ "cddeddc.cddeddc"
- /* 8 */ "ccccccc.ccccccc"
-
- // Level 3
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "f.....f.f.....f"
- /* 1 */ ".gg.gg...gg.gg."
- /* 2 */ ".gg.hg...gg.gg."
- /* 3 */ ".gg.gi...gg.gg."
- /* 4 */ ".gg.gg...gg.gg."
- /* 5 */ ".gg.gg...gg.gg."
- /* 6 */ ".gg.gg...gg.gg."
- /* 7 */ ".gg.gg...gg.gg."
- /* 8 */ "f.....f.f.....f"
-
- // Level 4
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "..............."
- /* 3 */ "..............."
- /* 4 */ "..............."
- /* 5 */ "..............."
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "..............."
-
- // Level 5
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "..............."
- /* 3 */ "..............."
- /* 4 */ "..............."
- /* 5 */ "..............."
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "..............."
-
- // Level 6
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "..............."
- /* 3 */ "..............."
- /* 4 */ "..............."
- /* 5 */ "..............."
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "..............."
-
- // Level 7
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "..............."
- /* 3 */ "..............."
- /* 4 */ "..............."
- /* 5 */ "..............."
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "...............",
-
- // Connectors:
- "-1: 7, 2, 8: 3\n" /* Type -1, direction Z+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // DoublePlantBed
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // Forge:
- // The data has been exported from the gallery Plains, area index 51, ID 102, created by Aloe_vera
- {
- // Size:
- 12, 9, 11, // SizeX = 12, SizeY = 9, SizeZ = 11
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 12, 8, 11, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 17: 0\n" /* tree */
- "f: 5: 0\n" /* wood */
- "g: 64: 2\n" /* wooddoorblock */
- "h: 10: 0\n" /* lava */
- "i: 54: 2\n" /* chest */
- "j: 61: 2\n" /* furnace */
- "k:102: 0\n" /* glasspane */
- "l: 64: 8\n" /* wooddoorblock */
- "m: 19: 0\n" /* sponge */
- "n:139: 0\n" /* cobblestonewall */
- "o:101: 0\n" /* ironbars */
- "p: 53: 2\n" /* woodstairs */
- "q: 53: 7\n" /* woodstairs */
- "r: 50: 2\n" /* torch */
- "s: 50: 1\n" /* torch */
- "t: 53: 6\n" /* woodstairs */
- "u: 53: 3\n" /* woodstairs */
- "v: 43: 0\n" /* doubleslab */
- "w: 44: 0\n" /* step */,
-
- // Block data:
- // Level 0
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "mmmmmaaaaamm"
- /* 1 */ "maaaaaaaaamm"
- /* 2 */ "maaaaaaaaamm"
- /* 3 */ "maaaaaaaaaaa"
- /* 4 */ "maaaaaaaaaaa"
- /* 5 */ "maaaaaaaaaaa"
- /* 6 */ "maaaaaaaaaaa"
- /* 7 */ "maaaaaaaaaaa"
- /* 8 */ "maaaaammmmmm"
- /* 9 */ "maaaaammmmmm"
- /* 10 */ "mmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ ".....bcccd.."
- /* 1 */ ".aaaaaaaad.."
- /* 2 */ ".aaaaaaaad.."
- /* 3 */ ".aaaaaaaaaaa"
- /* 4 */ ".aaaaaaaaaaa"
- /* 5 */ ".aaaaaaaaaaa"
- /* 6 */ ".aaaaaaaaaaa"
- /* 7 */ ".aaaaaaaaaaa"
- /* 8 */ ".aaaaa......"
- /* 9 */ ".aaaaa......"
- /* 10 */ "............"
-
- // Level 2
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ ".efffe......"
- /* 2 */ ".f...g......"
- /* 3 */ ".f...ea..aaa"
- /* 4 */ ".f...f...aha"
- /* 5 */ ".f...f...aha"
- /* 6 */ ".f...fijjaha"
- /* 7 */ ".f...eaaaaaa"
- /* 8 */ ".f...f......"
- /* 9 */ ".efffe......"
- /* 10 */ "............"
-
- // Level 3
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ ".ekkke......"
- /* 2 */ ".k...l......"
- /* 3 */ ".k...en..n.a"
- /* 4 */ ".k...k.....o"
- /* 5 */ ".f...k.....o"
- /* 6 */ ".k...k.....o"
- /* 7 */ ".k...eaooooa"
- /* 8 */ ".k...f......"
- /* 9 */ ".ekkke......"
- /* 10 */ "............"
-
- // Level 4
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "ppppppp....."
- /* 1 */ "qfffffq....."
- /* 2 */ ".f...f......"
- /* 3 */ ".f..rfa..aoa"
- /* 4 */ ".f...f...o.a"
- /* 5 */ ".f...f...o.a"
- /* 6 */ ".fs..f...o.a"
- /* 7 */ ".f...faaaaaa"
- /* 8 */ ".f...f......"
- /* 9 */ "tffffft....."
- /* 10 */ "uuuuuuu....."
-
- // Level 5
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "ppppppp....."
- /* 2 */ "qfffffq....."
- /* 3 */ ".f...fvvvvvv"
- /* 4 */ ".f...fvwwwwv"
- /* 5 */ ".f...fvwwwwv"
- /* 6 */ ".f...fvwwwwv"
- /* 7 */ ".f...fvvvvvv"
- /* 8 */ "tffffft....."
- /* 9 */ "uuuuuuu....."
- /* 10 */ "............"
-
- // Level 6
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ "ppppppp....."
- /* 3 */ "qfffffq....."
- /* 4 */ ".f...f......"
- /* 5 */ ".f...f......"
- /* 6 */ ".f...f......"
- /* 7 */ "tffffft....."
- /* 8 */ "uuuuuuu....."
- /* 9 */ "............"
- /* 10 */ "............"
-
- // Level 7
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ "............"
- /* 3 */ "ppppppp....."
- /* 4 */ "qfffffq....."
- /* 5 */ ".f...f......"
- /* 6 */ "tffffft....."
- /* 7 */ "uuuuuuu....."
- /* 8 */ "............"
- /* 9 */ "............"
- /* 10 */ "............"
-
- // Level 8
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ "............"
- /* 3 */ "............"
- /* 4 */ "ppppppp....."
- /* 5 */ "fffffff....."
- /* 6 */ "uuuuuuu....."
- /* 7 */ "............"
- /* 8 */ "............"
- /* 9 */ "............"
- /* 10 */ "............",
-
- // Connectors:
- "-1: 7, 1, -1: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Forge
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // LampPost:
- // The data has been exported from the gallery Plains, area index 28, ID 73, created by STR_Warrior
- {
- // Size:
- 3, 7, 3, // SizeX = 3, SizeY = 7, SizeZ = 3
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 2, 6, 2, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 3: 0\n" /* dirt */
- "b: 43: 0\n" /* doubleslab */
- "c:139: 0\n" /* cobblestonewall */
- "d: 50: 4\n" /* torch */
- "e: 50: 2\n" /* torch */
- "f: 50: 1\n" /* torch */
- "g: 50: 3\n" /* torch */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 012 */
- /* 0 */ "mmm"
- /* 1 */ "mam"
- /* 2 */ "mmm"
-
- // Level 1
- /* z\x* 012 */
- /* 0 */ "..."
- /* 1 */ ".b."
- /* 2 */ "..."
-
- // Level 2
- /* z\x* 012 */
- /* 0 */ "..."
- /* 1 */ ".c."
- /* 2 */ "..."
-
- // Level 3
- /* z\x* 012 */
- /* 0 */ "..."
- /* 1 */ ".c."
- /* 2 */ "..."
-
- // Level 4
- /* z\x* 012 */
- /* 0 */ ".d."
- /* 1 */ "ebf"
- /* 2 */ ".g."
-
- // Level 5
- /* z\x* 012 */
- /* 0 */ "..."
- /* 1 */ "..."
- /* 2 */ "..."
-
- // Level 6
- /* z\x* 012 */
- /* 0 */ "..."
- /* 1 */ "..."
- /* 2 */ "...",
-
- // Connectors:
- "-1: 1, 1, 2: 3\n" /* Type -1, direction Z+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // LampPost
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MineshaftCorridor:
- // The data has been exported from the gallery Plains, area index 139, ID 447, created by STR_Warrior
- {
- // Size:
- 10, 4, 3, // SizeX = 10, SizeY = 4, SizeZ = 3
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 9, 3, 2, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 0\n" /* wood */
- "b: 85: 0\n" /* fence */
- "c: 66: 1\n" /* tracks */
- "d: 50: 2\n" /* torch */
- "e: 50: 1\n" /* torch */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "aaaaaaaaaa"
- /* 1 */ "aaaaaaaaaa"
- /* 2 */ "aaaaaaaaaa"
-
- // Level 1
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "..b....b.."
- /* 1 */ "cccccccccc"
- /* 2 */ "..b....b.."
-
- // Level 2
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "..b....b.."
- /* 1 */ ".........."
- /* 2 */ "..b....b.."
-
- // Level 3
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "..a....a.."
- /* 1 */ ".dae..dae."
- /* 2 */ "..a....a..",
-
- // Connectors:
- "-3: 0, 1, 1: 4\n" /* Type -3, direction X- */
- "3: 9, 1, 1: 5\n" /* Type 3, direction X+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- false,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 200,
-
- // MoveToGround:
- false,
- }, // MineshaftCorridor
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MineshaftCrossing:
- // The data has been exported from the gallery Plains, area index 171, ID 578, created by Aloe_vera
- {
- // Size:
- 5, 4, 5, // SizeX = 5, SizeY = 4, SizeZ = 5
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 4, 3, 4, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 0\n" /* wood */
- "b: 66: 0\n" /* tracks */
- "c: 66: 1\n" /* tracks */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 01234 */
- /* 0 */ "aaaaa"
- /* 1 */ "aaaaa"
- /* 2 */ "aaaaa"
- /* 3 */ "aaaaa"
- /* 4 */ "aaaaa"
-
- // Level 1
- /* z\x* 01234 */
- /* 0 */ "m.b.m"
- /* 1 */ ".aba."
- /* 2 */ "ccccc"
- /* 3 */ ".aba."
- /* 4 */ "m.b.m"
-
- // Level 2
- /* z\x* 01234 */
- /* 0 */ "m...m"
- /* 1 */ ".a.a."
- /* 2 */ "....."
- /* 3 */ ".a.a."
- /* 4 */ "m...m"
-
- // Level 3
- /* z\x* 01234 */
- /* 0 */ "m...m"
- /* 1 */ ".a.a."
- /* 2 */ "....."
- /* 3 */ ".a.a."
- /* 4 */ "m...m",
-
- // Connectors:
- "3: 4, 1, 2: 5\n" /* Type 3, direction X+ */
- "-3: 4, 1, 2: 5\n" /* Type -3, direction X+ */
- "-3: 2, 1, 4: 3\n" /* Type -3, direction Z+ */
- "3: 2, 1, 4: 3\n" /* Type 3, direction Z+ */
- "3: 0, 1, 2: 4\n" /* Type 3, direction X- */
- "-3: 0, 1, 2: 4\n" /* Type -3, direction X- */
- "3: 2, 1, 0: 2\n" /* Type 3, direction Z- */
- "-3: 2, 1, 0: 2\n" /* Type -3, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- false,
-
- // DefaultWeight:
- 1,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- false,
- }, // MineshaftCrossing
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MineshaftCrossing:
- // The data has been exported from the gallery Plains, area index 193, ID 657, created by Aloe_vera
- {
- // Size:
- 11, 4, 11, // SizeX = 11, SizeY = 4, SizeZ = 11
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 10, 3, 10, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 0\n" /* wood */
- "b: 66: 0\n" /* tracks */
- "c: 85: 0\n" /* fence */
- "d: 66: 1\n" /* tracks */
- "e: 50: 4\n" /* torch */
- "f: 50: 3\n" /* torch */
- "g: 50: 2\n" /* torch */
- "h: 50: 1\n" /* torch */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmaaammmm"
- /* 1 */ "mmmmaaammmm"
- /* 2 */ "mmmmaaammmm"
- /* 3 */ "mmmmaaammmm"
- /* 4 */ "aaaaaaaaaaa"
- /* 5 */ "aaaaaaaaaaa"
- /* 6 */ "aaaaaaaaaaa"
- /* 7 */ "mmmmaaammmm"
- /* 8 */ "mmmmaaammmm"
- /* 9 */ "mmmmaaammmm"
- /* 10 */ "mmmmaaammmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmm.b.mmmm"
- /* 1 */ "mmmm.b.mmmm"
- /* 2 */ "mmmmcbcmmmm"
- /* 3 */ "mmmm.b.mmmm"
- /* 4 */ "..c..b..c.."
- /* 5 */ "ddddddddddd"
- /* 6 */ "..c..b..c.."
- /* 7 */ "mmmm.b.mmmm"
- /* 8 */ "mmmmcbcmmmm"
- /* 9 */ "mmmm.b.mmmm"
- /* 10 */ "mmmm.b.mmmm"
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmm...mmmm"
- /* 1 */ "mmmm...mmmm"
- /* 2 */ "mmmmc.cmmmm"
- /* 3 */ "mmmm...mmmm"
- /* 4 */ "..c.....c.."
- /* 5 */ "..........."
- /* 6 */ "..c.....c.."
- /* 7 */ "mmmm...mmmm"
- /* 8 */ "mmmmc.cmmmm"
- /* 9 */ "mmmm...mmmm"
- /* 10 */ "mmmm...mmmm"
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmm...mmmm"
- /* 1 */ "mmmm.e.mmmm"
- /* 2 */ "mmmmaaammmm"
- /* 3 */ "mmmm.f.mmmm"
- /* 4 */ "..a.....a.."
- /* 5 */ ".gah...gah."
- /* 6 */ "..a.....a.."
- /* 7 */ "mmmm.e.mmmm"
- /* 8 */ "mmmmaaammmm"
- /* 9 */ "mmmm.f.mmmm"
- /* 10 */ "mmmm...mmmm",
-
- // Connectors:
- "3: 5, 1, 0: 2\n" /* Type 3, direction Z- */
- "-3: 5, 1, 0: 2\n" /* Type -3, direction Z- */
- "3: 0, 1, 5: 4\n" /* Type 3, direction X- */
- "-3: 0, 1, 5: 4\n" /* Type -3, direction X- */
- "3: 5, 1, 10: 3\n" /* Type 3, direction Z+ */
- "-3: 5, 1, 10: 3\n" /* Type -3, direction Z+ */
- "3: 10, 1, 5: 5\n" /* Type 3, direction X+ */
- "-3: 10, 1, 5: 5\n" /* Type -3, direction X+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- false,
-
- // DefaultWeight:
- 10,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- false,
- }, // MineshaftCrossing
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MineshaftDoubleCrossing:
- // The data has been exported from the gallery Plains, area index 172, ID 579, created by Aloe_vera
- {
- // Size:
- 5, 8, 5, // SizeX = 5, SizeY = 8, SizeZ = 5
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 4, 7, 4, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 0\n" /* wood */
- "b: 66: 0\n" /* tracks */
- "c: 66: 1\n" /* tracks */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 01234 */
- /* 0 */ "aaaaa"
- /* 1 */ "aaaaa"
- /* 2 */ "aaaaa"
- /* 3 */ "aaaaa"
- /* 4 */ "aaaaa"
-
- // Level 1
- /* z\x* 01234 */
- /* 0 */ "m.b.m"
- /* 1 */ ".aba."
- /* 2 */ "ccccc"
- /* 3 */ ".aba."
- /* 4 */ "m.b.m"
-
- // Level 2
- /* z\x* 01234 */
- /* 0 */ "m...m"
- /* 1 */ ".a.a."
- /* 2 */ "....."
- /* 3 */ ".a.a."
- /* 4 */ "m...m"
-
- // Level 3
- /* z\x* 01234 */
- /* 0 */ "m...m"
- /* 1 */ ".a.a."
- /* 2 */ "....."
- /* 3 */ ".a.a."
- /* 4 */ "m...m"
-
- // Level 4
- /* z\x* 01234 */
- /* 0 */ "aaaaa"
- /* 1 */ "aa.aa"
- /* 2 */ "a...a"
- /* 3 */ "aa.aa"
- /* 4 */ "aaaaa"
-
- // Level 5
- /* z\x* 01234 */
- /* 0 */ "m...m"
- /* 1 */ ".a.a."
- /* 2 */ "....."
- /* 3 */ ".a.a."
- /* 4 */ "m...m"
-
- // Level 6
- /* z\x* 01234 */
- /* 0 */ "m...m"
- /* 1 */ ".a.a."
- /* 2 */ "....."
- /* 3 */ ".a.a."
- /* 4 */ "m...m"
-
- // Level 7
- /* z\x* 01234 */
- /* 0 */ "m...m"
- /* 1 */ ".a.a."
- /* 2 */ "....."
- /* 3 */ ".a.a."
- /* 4 */ "m...m",
-
- // Connectors:
- "-3: 4, 5, 2: 5\n" /* Type -3, direction X+ */
- "3: 4, 5, 2: 5\n" /* Type 3, direction X+ */
- "-3: 2, 1, 4: 3\n" /* Type -3, direction Z+ */
- "3: 2, 1, 4: 3\n" /* Type 3, direction Z+ */
- "-3: 0, 1, 2: 4\n" /* Type -3, direction X- */
- "3: 0, 1, 2: 4\n" /* Type 3, direction X- */
- "-3: 2, 1, 0: 2\n" /* Type -3, direction Z- */
- "3: 2, 1, 0: 2\n" /* Type 3, direction Z- */
- "-3: 4, 1, 2: 5\n" /* Type -3, direction X+ */
- "3: 4, 1, 2: 5\n" /* Type 3, direction X+ */
- "-3: 2, 5, 4: 3\n" /* Type -3, direction Z+ */
- "3: 2, 5, 4: 3\n" /* Type 3, direction Z+ */
- "-3: 0, 5, 2: 4\n" /* Type -3, direction X- */
- "3: 0, 5, 2: 4\n" /* Type 3, direction X- */
- "-3: 2, 5, 0: 2\n" /* Type -3, direction Z- */
- "3: 2, 5, 0: 2\n" /* Type 3, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- false,
-
- // DefaultWeight:
- 1,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- false,
- }, // MineshaftDoubleCrossing
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MineshaftSpiral:
- // The data has been exported from the gallery Plains, area index 198, ID 662, created by Aloe_vera
- {
- // Size:
- 7, 12, 7, // SizeX = 7, SizeY = 12, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 6, 11, 6, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 0\n" /* wood */
- "b: 85: 0\n" /* fence */
- "c: 66: 4\n" /* tracks */
- "d: 66: 0\n" /* tracks */
- "e: 66: 6\n" /* tracks */
- "f: 66: 2\n" /* tracks */
- "g: 50: 1\n" /* torch */
- "h: 50: 3\n" /* torch */
- "i: 66: 1\n" /* tracks */
- "j: 66: 7\n" /* tracks */
- "k: 66: 5\n" /* tracks */
- "l: 50: 2\n" /* torch */
- "m: 19: 0\n" /* sponge */
- "n: 66: 3\n" /* tracks */
- "o: 66: 8\n" /* tracks */
- "p: 50: 4\n" /* torch */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmmmmm"
- /* 2 */ "mmmmmmm"
- /* 3 */ "aaabmmm"
- /* 4 */ "aaammmm"
- /* 5 */ "aaammmm"
- /* 6 */ "aaammmm"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmmmmm"
- /* 2 */ "aaammmm"
- /* 3 */ "aaabmmm"
- /* 4 */ ".c.mmmm"
- /* 5 */ ".d.mmmm"
- /* 6 */ ".d.mmmm"
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "aaaammm"
- /* 1 */ "aaaammm"
- /* 2 */ "aaaammm"
- /* 3 */ ".c.bmmm"
- /* 4 */ "...mmmm"
- /* 5 */ "...mmmm"
- /* 6 */ "...mmmm"
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "b..aamm"
- /* 1 */ ".efaamm"
- /* 2 */ ".d.aamm"
- /* 3 */ "...bmmm"
- /* 4 */ "...mmmm"
- /* 5 */ "...mmmm"
- /* 6 */ "...mmmm"
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "b...aaa"
- /* 1 */ "...faaa"
- /* 2 */ "....aaa"
- /* 3 */ "...baaa"
- /* 4 */ "...mmmm"
- /* 5 */ "mmmmmmm"
- /* 6 */ "mmmmmmm"
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "ag....b"
- /* 1 */ "h...ij."
- /* 2 */ ".....k."
- /* 3 */ "...baaa"
- /* 4 */ "mmmmaaa"
- /* 5 */ "mmmmmmm"
- /* 6 */ "mmmmmmm"
-
- // Level 6
- /* z\x* 0123456 */
- /* 0 */ "mm....b"
- /* 1 */ "mm....."
- /* 2 */ "mm....."
- /* 3 */ "mmmb.k."
- /* 4 */ "mmmaaaa"
- /* 5 */ "mmmaaaa"
- /* 6 */ "mmmaaaa"
-
- // Level 7
- /* z\x* 0123456 */
- /* 0 */ "mmm..la"
- /* 1 */ "mmm...h"
- /* 2 */ "mmm...."
- /* 3 */ "mmmb..."
- /* 4 */ "mmaa.d."
- /* 5 */ "mmaano."
- /* 6 */ "mmaa..b"
-
- // Level 8
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmmmmm"
- /* 2 */ "mmmm..."
- /* 3 */ "mmmb..."
- /* 4 */ "aaa...."
- /* 5 */ "aaan..."
- /* 6 */ "aaa...b"
-
- // Level 9
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmmmmm"
- /* 2 */ "mmmmmmm"
- /* 3 */ "mmmb..."
- /* 4 */ "......."
- /* 5 */ "iii...p"
- /* 6 */ ".....la"
-
- // Level 10
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmmmmm"
- /* 2 */ "mmmmmmm"
- /* 3 */ "mmmbmmm"
- /* 4 */ ".....mm"
- /* 5 */ ".....mm"
- /* 6 */ ".....mm"
-
- // Level 11
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmmmmm"
- /* 2 */ "mmmmmmm"
- /* 3 */ "mmmbmmm"
- /* 4 */ "....mmm"
- /* 5 */ "....mmm"
- /* 6 */ "....mmm",
-
- // Connectors:
- "3: 1, 1, 6: 3\n" /* Type 3, direction Z+ */
- "-3: 1, 1, 6: 3\n" /* Type -3, direction Z+ */
- "3: 0, 9, 5: 4\n" /* Type 3, direction X- */
- "-3: 0, 9, 5: 4\n" /* Type -3, direction X- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- false,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- false,
- }, // MineshaftSpiral
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MineshaftStairs:
- // The data has been exported from the gallery Plains, area index 195, ID 659, created by Aloe_vera
- {
- // Size:
- 7, 8, 3, // SizeX = 7, SizeY = 8, SizeZ = 3
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 6, 7, 2, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 0\n" /* wood */
- "b: 66: 1\n" /* tracks */
- "c: 66: 2\n" /* tracks */
- "d: 85: 0\n" /* fence */
- "e: 50: 1\n" /* torch */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "aaammmm"
- /* 1 */ "aaammmm"
- /* 2 */ "aaammmm"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "..aammm"
- /* 1 */ "bcaammm"
- /* 2 */ "..aammm"
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "...aamm"
- /* 1 */ "..caamm"
- /* 2 */ "...aamm"
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "...daam"
- /* 1 */ "...caam"
- /* 2 */ "...daam"
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "m..d.aa"
- /* 1 */ "m...caa"
- /* 2 */ "m..d.aa"
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "mm.d..."
- /* 1 */ "mm...bb"
- /* 2 */ "mm.d..."
-
- // Level 6
- /* z\x* 0123456 */
- /* 0 */ "mmmd..."
- /* 1 */ "mmm...."
- /* 2 */ "mmmd..."
-
- // Level 7
- /* z\x* 0123456 */
- /* 0 */ "mmma..."
- /* 1 */ "mmmae.."
- /* 2 */ "mmma...",
-
- // Connectors:
- "3: 0, 1, 1: 4\n" /* Type 3, direction X- */
- "-3: 0, 1, 1: 4\n" /* Type -3, direction X- */
- "3: 6, 5, 1: 5\n" /* Type 3, direction X+ */
- "-3: 6, 5, 1: 5\n" /* Type -3, direction X+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- false,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- false,
- }, // MineshaftStairs
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MineshaftStairsCrossing:
- // The data has been exported from the gallery Plains, area index 199, ID 663, created by Aloe_vera
- {
- // Size:
- 11, 12, 12, // SizeX = 11, SizeY = 12, SizeZ = 12
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 10, 11, 11, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 0\n" /* wood */
- "b: 66: 0\n" /* tracks */
- "c: 66: 5\n" /* tracks */
- "d: 85: 0\n" /* fence */
- "e: 66: 1\n" /* tracks */
- "f: 50: 3\n" /* torch */
- "g: 50: 2\n" /* torch */
- "h: 50: 1\n" /* torch */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmaaammmm"
- /* 1 */ "mmmmaaammmm"
- /* 2 */ "mmmmaaammmm"
- /* 3 */ "mmmmmmmmmmm"
- /* 4 */ "mmmmmmmmmmm"
- /* 5 */ "mmmmmmmmmmm"
- /* 6 */ "mmmmmmmmmmm"
- /* 7 */ "mmmmmmmmmmm"
- /* 8 */ "mmmmmmmmmmm"
- /* 9 */ "mmmmmmmmmmm"
- /* 10 */ "mmmmmmmmmmm"
- /* 11 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmm.b.mmmm"
- /* 1 */ "mmmm.c.mmmm"
- /* 2 */ "mmmmaaammmm"
- /* 3 */ "mmmmaaammmm"
- /* 4 */ "mmmmmmmmmmm"
- /* 5 */ "mmmmmmmmmmm"
- /* 6 */ "mmmmmmmmmmm"
- /* 7 */ "mmmmmmmmmmm"
- /* 8 */ "mmmmmmmmmmm"
- /* 9 */ "mmmmmmmmmmm"
- /* 10 */ "mmmmmmmmmmm"
- /* 11 */ "mmmmmmmmmmm"
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmm...mmmm"
- /* 1 */ "mmmm...mmmm"
- /* 2 */ "mmmm.c.mmmm"
- /* 3 */ "mmmmaaammmm"
- /* 4 */ "mmmmaaammmm"
- /* 5 */ "mmmmmmmmmmm"
- /* 6 */ "mmmmmmmmmmm"
- /* 7 */ "mmmmmmmmmmm"
- /* 8 */ "mmmmmmmmmmm"
- /* 9 */ "mmmmmmmmmmm"
- /* 10 */ "mmmmmmmmmmm"
- /* 11 */ "mmmmmmmmmmm"
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmm...mmmm"
- /* 1 */ "mmmm...mmmm"
- /* 2 */ "mmmm...mmmm"
- /* 3 */ "mmmmdcdmmmm"
- /* 4 */ "mmmmaaammmm"
- /* 5 */ "mmmmaaammmm"
- /* 6 */ "mmmmmmmmmmm"
- /* 7 */ "mmmmmmmmmmm"
- /* 8 */ "mmmmmmmmmmm"
- /* 9 */ "mmmmmmmmmmm"
- /* 10 */ "mmmmmmmmmmm"
- /* 11 */ "mmmmmmmmmmm"
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmmmmmm"
- /* 1 */ "mmmm...mmmm"
- /* 2 */ "mmmm...mmmm"
- /* 3 */ "mmmmd.dmmmm"
- /* 4 */ "mmmm.c.mmmm"
- /* 5 */ "aaaaaaaaaaa"
- /* 6 */ "aaaaaaaaaaa"
- /* 7 */ "aaaaaaaaaaa"
- /* 8 */ "mmmmaaammmm"
- /* 9 */ "mmmmmmmmmmm"
- /* 10 */ "mmmmmmmmmmm"
- /* 11 */ "mmmmmmmmmmm"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmmmmmm"
- /* 1 */ "mmmmmmmmmmm"
- /* 2 */ "mmmm...mmmm"
- /* 3 */ "mmmmd.dmmmm"
- /* 4 */ "mmmm...mmmm"
- /* 5 */ "..d..b..d.."
- /* 6 */ "eeeeeeeeeee"
- /* 7 */ "..d..c..d.."
- /* 8 */ "mmmmaaammmm"
- /* 9 */ "mmmmaaammmm"
- /* 10 */ "mmmmmmmmmmm"
- /* 11 */ "mmmmmmmmmmm"
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmmmmmm"
- /* 1 */ "mmmmmmmmmmm"
- /* 2 */ "mmmmmmmmmmm"
- /* 3 */ "mmmmd.dmmmm"
- /* 4 */ "mmmm...mmmm"
- /* 5 */ "..d.....d.."
- /* 6 */ "..........."
- /* 7 */ "..d.....d.."
- /* 8 */ "mmmm.c.mmmm"
- /* 9 */ "mmmmaaammmm"
- /* 10 */ "mmmmaaammmm"
- /* 11 */ "mmmmmmmmmmm"
-
- // Level 7
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmmmmmm"
- /* 1 */ "mmmmmmmmmmm"
- /* 2 */ "mmmmmmmmmmm"
- /* 3 */ "mmmmaaammmm"
- /* 4 */ "mmmm.f.mmmm"
- /* 5 */ "..a.....a.."
- /* 6 */ ".gah...gah."
- /* 7 */ "..a.....a.."
- /* 8 */ "mmmm...mmmm"
- /* 9 */ "mmmmdcdmmmm"
- /* 10 */ "mmmmaaammmm"
- /* 11 */ "mmmmaaammmm"
-
- // Level 8
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmmmmmm"
- /* 1 */ "mmmmmmmmmmm"
- /* 2 */ "mmmmmmmmmmm"
- /* 3 */ "mmmmmmmmmmm"
- /* 4 */ "mmmmmmmmmmm"
- /* 5 */ "mmmmmmmmmmm"
- /* 6 */ "mmmmmmmmmmm"
- /* 7 */ "mmmm...mmmm"
- /* 8 */ "mmmm...mmmm"
- /* 9 */ "mmmmd.dmmmm"
- /* 10 */ "mmmm.c.mmmm"
- /* 11 */ "mmmmaaammmm"
-
- // Level 9
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmmmmmm"
- /* 1 */ "mmmmmmmmmmm"
- /* 2 */ "mmmmmmmmmmm"
- /* 3 */ "mmmmmmmmmmm"
- /* 4 */ "mmmmmmmmmmm"
- /* 5 */ "mmmmmmmmmmm"
- /* 6 */ "mmmmmmmmmmm"
- /* 7 */ "mmmmmmmmmmm"
- /* 8 */ "mmmm...mmmm"
- /* 9 */ "mmmmd.dmmmm"
- /* 10 */ "mmmm...mmmm"
- /* 11 */ "mmmm.b.mmmm"
-
- // Level 10
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmmmmmm"
- /* 1 */ "mmmmmmmmmmm"
- /* 2 */ "mmmmmmmmmmm"
- /* 3 */ "mmmmmmmmmmm"
- /* 4 */ "mmmmmmmmmmm"
- /* 5 */ "mmmmmmmmmmm"
- /* 6 */ "mmmmmmmmmmm"
- /* 7 */ "mmmmmmmmmmm"
- /* 8 */ "mmmmmmmmmmm"
- /* 9 */ "mmmmd.dmmmm"
- /* 10 */ "mmmm...mmmm"
- /* 11 */ "mmmm...mmmm"
-
- // Level 11
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmmmmmmmm"
- /* 1 */ "mmmmmmmmmmm"
- /* 2 */ "mmmmmmmmmmm"
- /* 3 */ "mmmmmmmmmmm"
- /* 4 */ "mmmmmmmmmmm"
- /* 5 */ "mmmmmmmmmmm"
- /* 6 */ "mmmmmmmmmmm"
- /* 7 */ "mmmmmmmmmmm"
- /* 8 */ "mmmmmmmmmmm"
- /* 9 */ "mmmmaaammmm"
- /* 10 */ "mmmm.f.mmmm"
- /* 11 */ "mmmm...mmmm",
-
- // Connectors:
- "3: 0, 5, 6: 4\n" /* Type 3, direction X- */
- "-3: 0, 5, 6: 4\n" /* Type -3, direction X- */
- "3: 10, 5, 6: 5\n" /* Type 3, direction X+ */
- "-3: 10, 5, 6: 5\n" /* Type -3, direction X+ */
- "3: 5, 9, 11: 3\n" /* Type 3, direction Z+ */
- "-3: 5, 9, 11: 3\n" /* Type -3, direction Z+ */
- "3: 5, 1, 1: 2\n" /* Type 3, direction Z- */
- "-3: 5, 1, 1: 2\n" /* Type -3, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- false,
-
- // DefaultWeight:
- 30,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- false,
- }, // MineshaftStairsCrossing
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MineshaftTee:
- // The data has been exported from the gallery Plains, area index 194, ID 658, created by Aloe_vera
- {
- // Size:
- 11, 4, 7, // SizeX = 11, SizeY = 4, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 10, 3, 6, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 0\n" /* wood */
- "b: 66: 0\n" /* tracks */
- "c: 85: 0\n" /* fence */
- "d: 66: 1\n" /* tracks */
- "e: 50: 4\n" /* torch */
- "f: 50: 3\n" /* torch */
- "g: 50: 2\n" /* torch */
- "h: 50: 1\n" /* torch */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmaaammmm"
- /* 1 */ "mmmmaaammmm"
- /* 2 */ "mmmmaaammmm"
- /* 3 */ "mmmmaaammmm"
- /* 4 */ "aaaaaaaaaaa"
- /* 5 */ "aaaaaaaaaaa"
- /* 6 */ "aaaaaaaaaaa"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmm.b.mmmm"
- /* 1 */ "mmmm.b.mmmm"
- /* 2 */ "mmmmcbcmmmm"
- /* 3 */ "mmmm.b.mmmm"
- /* 4 */ "..c..b..c.."
- /* 5 */ "ddddddddddd"
- /* 6 */ "..c.....c.."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmm...mmmm"
- /* 1 */ "mmmm...mmmm"
- /* 2 */ "mmmmc.cmmmm"
- /* 3 */ "mmmm...mmmm"
- /* 4 */ "..c.....c.."
- /* 5 */ "..........."
- /* 6 */ "..c.....c.."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmm...mmmm"
- /* 1 */ "mmmm.e.mmmm"
- /* 2 */ "mmmmaaammmm"
- /* 3 */ "mmmm.f.mmmm"
- /* 4 */ "..a.....a.."
- /* 5 */ ".gah...gah."
- /* 6 */ "..a.....a..",
-
- // Connectors:
- "3: 0, 1, 5: 4\n" /* Type 3, direction X- */
- "-3: 0, 1, 5: 4\n" /* Type -3, direction X- */
- "3: 5, 1, 0: 2\n" /* Type 3, direction Z- */
- "-3: 5, 1, 0: 2\n" /* Type -3, direction Z- */
- "3: 10, 1, 5: 5\n" /* Type 3, direction X+ */
- "-3: 10, 1, 5: 5\n" /* Type -3, direction X+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- false,
-
- // DefaultWeight:
- 20,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- false,
- }, // MineshaftTee
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MineshaftsCorridor5:
- // The data has been exported from the gallery Plains, area index 200, ID 664, created by Aloe_vera
- {
- // Size:
- 11, 4, 3, // SizeX = 11, SizeY = 4, SizeZ = 3
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 10, 3, 2, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 0\n" /* wood */
- "b: 85: 0\n" /* fence */
- "c: 66: 1\n" /* tracks */
- "d: 50: 2\n" /* torch */
- "e: 50: 1\n" /* torch */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "aaaaaaaaaaa"
- /* 1 */ "aaaaaaaaaaa"
- /* 2 */ "aaaaaaaaaaa"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..b.....b.."
- /* 1 */ "ccccccccccc"
- /* 2 */ "..b.....b.."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..b.....b.."
- /* 1 */ "..........."
- /* 2 */ "..b.....b.."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..a.....a.."
- /* 1 */ ".dae...dae."
- /* 2 */ "..a.....a..",
-
- // Connectors:
- "3: 10, 1, 1: 5\n" /* Type 3, direction X+ */
- "-3: 10, 1, 1: 5\n" /* Type -3, direction X+ */
- "-3: 0, 1, 1: 4\n" /* Type -3, direction X- */
- "3: 0, 1, 1: 4\n" /* Type 3, direction X- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- false,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- false,
- }, // MineshaftsCorridor5
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // Scarecrow:
- // The data has been exported from the gallery Plains, area index 150, ID 494, created by STR_Warrior
- {
- // Size:
- 1, 6, 3, // SizeX = 1, SizeY = 6, SizeZ = 3
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 0, 5, 2, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a:139: 0\n" /* cobblestonewall */
- "b: 85: 0\n" /* fence */
- "c:126: 4\n" /* woodenslab */
- "d: 86: 1\n" /* pumpkin */
- "e:139: 1\n" /* cobblestonewall */
- "f:163: 4\n" /* acaciawoodenstairs */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 0 */
- /* 0 */ "."
- /* 1 */ "a"
- /* 2 */ "."
-
- // Level 1
- /* z\x* 0 */
- /* 0 */ "."
- /* 1 */ "b"
- /* 2 */ "."
-
- // Level 2
- /* z\x* 0 */
- /* 0 */ "c"
- /* 1 */ "d"
- /* 2 */ "c"
-
- // Level 3
- /* z\x* 0 */
- /* 0 */ "."
- /* 1 */ "e"
- /* 2 */ "."
-
- // Level 4
- /* z\x* 0 */
- /* 0 */ "f"
- /* 1 */ "d"
- /* 2 */ "f"
-
- // Level 5
- /* z\x* 0 */
- /* 0 */ "."
- /* 1 */ "f"
- /* 2 */ ".",
-
- // Connectors:
- "-1: -1, 0, 1: 4\n" /* Type -1, direction X- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 10,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Scarecrow
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // SinglePlantBed:
- // The data has been exported from the gallery Plains, area index 17, ID 60, created by Aloe_vera
- {
- // Size:
- 10, 7, 7, // SizeX = 10, SizeY = 7, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 9, 6, 6, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 3: 0\n" /* dirt */
- "b: 17: 0\n" /* tree */
- "c: 60: 7\n" /* tilleddirt */
- "d: 8: 0\n" /* water */
- "e: 59: 7\n" /* crops */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "aaaaaaaaaa"
- /* 1 */ "aaaaaaaaaa"
- /* 2 */ "aaaaaaaaaa"
- /* 3 */ "aaaaaaaaaa"
- /* 4 */ "aaaaaaaaaa"
- /* 5 */ "aaaaaaaaaa"
- /* 6 */ "aaaaaaaaaa"
-
- // Level 1
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "bbbbbbbbbb"
- /* 1 */ "bccccccccb"
- /* 2 */ "bccccccccb"
- /* 3 */ "bddddddddb"
- /* 4 */ "bccccccccb"
- /* 5 */ "bccccccccb"
- /* 6 */ "bbbbbbbbbb"
-
- // Level 2
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".........."
- /* 1 */ ".eeeeeeee."
- /* 2 */ ".eeeeeeee."
- /* 3 */ ".........."
- /* 4 */ ".eeeeeeee."
- /* 5 */ ".eeeeeeee."
- /* 6 */ ".........."
-
- // Level 3
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".........."
- /* 1 */ ".........."
- /* 2 */ ".........."
- /* 3 */ ".........."
- /* 4 */ ".........."
- /* 5 */ ".........."
- /* 6 */ ".........."
-
- // Level 4
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".........."
- /* 1 */ ".........."
- /* 2 */ ".........."
- /* 3 */ ".........."
- /* 4 */ ".........."
- /* 5 */ ".........."
- /* 6 */ ".........."
-
- // Level 5
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".........."
- /* 1 */ ".........."
- /* 2 */ ".........."
- /* 3 */ ".........."
- /* 4 */ ".........."
- /* 5 */ ".........."
- /* 6 */ ".........."
-
- // Level 6
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".........."
- /* 1 */ ".........."
- /* 2 */ ".........."
- /* 3 */ ".........."
- /* 4 */ ".........."
- /* 5 */ ".........."
- /* 6 */ "..........",
-
- // Connectors:
- "-1: 9, 1, 3: 5\n" /* Type -1, direction X+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // SinglePlantBed
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenChurchMid:
- // The data has been exported from the gallery Plains, area index 58, ID 109, created by Aloe_vera
- {
- // Size:
- 7, 15, 13, // SizeX = 7, SizeY = 15, SizeZ = 13
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 7, 14, 13, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "A: 85: 0\n" /* fence */
- "B:126: 8\n" /* woodenslab */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 17: 0\n" /* tree */
- "f: 5: 0\n" /* wood */
- "g: 64: 7\n" /* wooddoorblock */
- "h: 65: 3\n" /* ladder */
- "i: 53: 3\n" /* woodstairs */
- "j: 53: 7\n" /* woodstairs */
- "k: 64:12\n" /* wooddoorblock */
- "l:102: 0\n" /* glasspane */
- "m: 19: 0\n" /* sponge */
- "n: 50: 1\n" /* torch */
- "o: 50: 2\n" /* torch */
- "p:171:14\n" /* carpet */
- "q: 50: 3\n" /* torch */
- "r: 53: 2\n" /* woodstairs */
- "s: 53: 0\n" /* woodstairs */
- "t: 53: 1\n" /* woodstairs */
- "u: 53: 5\n" /* woodstairs */
- "v: 53: 4\n" /* woodstairs */
- "w: 17: 4\n" /* tree */
- "x: 17: 8\n" /* tree */
- "y: 54: 2\n" /* chest */
- "z: 50: 4\n" /* torch */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "mmaaamm"
- /* 1 */ "maaaaam"
- /* 2 */ "maaaaam"
- /* 3 */ "maaaaam"
- /* 4 */ "maaaaam"
- /* 5 */ "maaaaam"
- /* 6 */ "maaaaam"
- /* 7 */ "maaaaam"
- /* 8 */ "maaaaam"
- /* 9 */ "maaaaam"
- /* 10 */ "maaaaam"
- /* 11 */ "maaaaam"
- /* 12 */ "mmmmmmm"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "..bcd.."
- /* 1 */ ".aaaaa."
- /* 2 */ ".aaaaa."
- /* 3 */ ".aaaaa."
- /* 4 */ ".aaaaa."
- /* 5 */ ".aaaaa."
- /* 6 */ ".aaaaa."
- /* 7 */ ".aaaaa."
- /* 8 */ ".aaaaa."
- /* 9 */ ".aaaaa."
- /* 10 */ ".aaaaa."
- /* 11 */ ".aaaaa."
- /* 12 */ "......."
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".efgfe."
- /* 2 */ ".f..hf."
- /* 3 */ ".f...f."
- /* 4 */ ".f...f."
- /* 5 */ ".ei.ie."
- /* 6 */ ".f...f."
- /* 7 */ ".fi.if."
- /* 8 */ ".f...f."
- /* 9 */ ".f.j.f."
- /* 10 */ ".f...f."
- /* 11 */ ".efffe."
- /* 12 */ "......."
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".efkfe."
- /* 2 */ ".l..hl."
- /* 3 */ ".l...l."
- /* 4 */ ".l...l."
- /* 5 */ ".e...e."
- /* 6 */ ".l...l."
- /* 7 */ ".l...l."
- /* 8 */ ".fn.of."
- /* 9 */ ".l.p.l."
- /* 10 */ ".l...l."
- /* 11 */ ".ellle."
- /* 12 */ "......."
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".efffe."
- /* 2 */ ".f.qhf."
- /* 3 */ ".f...f."
- /* 4 */ ".f...f."
- /* 5 */ "re...er"
- /* 6 */ "sf...ft"
- /* 7 */ "sf...ft"
- /* 8 */ "sf...ft"
- /* 9 */ "sf...ft"
- /* 10 */ "sf...ft"
- /* 11 */ "sefffet"
- /* 12 */ "su...vt"
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".ewwwe."
- /* 2 */ ".xffhx."
- /* 3 */ ".xfffx."
- /* 4 */ ".xfffx."
- /* 5 */ ".ewwwe."
- /* 6 */ ".sf.ft."
- /* 7 */ ".sf.ft."
- /* 8 */ ".sf.ft."
- /* 9 */ ".sf.ft."
- /* 10 */ ".sf.ft."
- /* 11 */ ".sffft."
- /* 12 */ ".su.vt."
-
- // Level 6
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".eflfe."
- /* 2 */ ".f..hf."
- /* 3 */ ".f...f."
- /* 4 */ ".f.y.f."
- /* 5 */ ".efffe."
- /* 6 */ "..sft.."
- /* 7 */ "..sft.."
- /* 8 */ "..sft.."
- /* 9 */ "..sft.."
- /* 10 */ "..sft.."
- /* 11 */ "..sft.."
- /* 12 */ "..sft.."
-
- // Level 7
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".eflfe."
- /* 2 */ ".f..hf."
- /* 3 */ ".l...l."
- /* 4 */ ".f...f."
- /* 5 */ ".efffe."
- /* 6 */ "......."
- /* 7 */ "......."
- /* 8 */ "......."
- /* 9 */ "......."
- /* 10 */ "......."
- /* 11 */ "......."
- /* 12 */ "......."
-
- // Level 8
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".eflfe."
- /* 2 */ ".f..hf."
- /* 3 */ ".f...f."
- /* 4 */ ".f.z.f."
- /* 5 */ ".efffe."
- /* 6 */ "......."
- /* 7 */ "......."
- /* 8 */ "......."
- /* 9 */ "......."
- /* 10 */ "......."
- /* 11 */ "......."
- /* 12 */ "......."
-
- // Level 9
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".ewwwe."
- /* 2 */ ".xffhx."
- /* 3 */ ".xfffx."
- /* 4 */ ".xfffx."
- /* 5 */ ".ewwwe."
- /* 6 */ "......."
- /* 7 */ "......."
- /* 8 */ "......."
- /* 9 */ "......."
- /* 10 */ "......."
- /* 11 */ "......."
- /* 12 */ "......."
-
- // Level 10
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".eAAAe."
- /* 2 */ ".A...A."
- /* 3 */ ".A...A."
- /* 4 */ ".A...A."
- /* 5 */ ".eAAAe."
- /* 6 */ "......."
- /* 7 */ "......."
- /* 8 */ "......."
- /* 9 */ "......."
- /* 10 */ "......."
- /* 11 */ "......."
- /* 12 */ "......."
-
- // Level 11
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".e...e."
- /* 2 */ "......."
- /* 3 */ "......."
- /* 4 */ "......."
- /* 5 */ ".e...e."
- /* 6 */ "......."
- /* 7 */ "......."
- /* 8 */ "......."
- /* 9 */ "......."
- /* 10 */ "......."
- /* 11 */ "......."
- /* 12 */ "......."
-
- // Level 12
- /* z\x* 0123456 */
- /* 0 */ "su...vt"
- /* 1 */ "sefffet"
- /* 2 */ "sfBBBft"
- /* 3 */ "sfBBBft"
- /* 4 */ "sfBBBft"
- /* 5 */ "sefffet"
- /* 6 */ "su...vt"
- /* 7 */ "......."
- /* 8 */ "......."
- /* 9 */ "......."
- /* 10 */ "......."
- /* 11 */ "......."
- /* 12 */ "......."
-
- // Level 13
- /* z\x* 0123456 */
- /* 0 */ ".su.vt."
- /* 1 */ ".sffft."
- /* 2 */ ".sffft."
- /* 3 */ ".sffft."
- /* 4 */ ".sffft."
- /* 5 */ ".sffft."
- /* 6 */ ".su.vt."
- /* 7 */ "......."
- /* 8 */ "......."
- /* 9 */ "......."
- /* 10 */ "......."
- /* 11 */ "......."
- /* 12 */ "......."
-
- // Level 14
- /* z\x* 0123456 */
- /* 0 */ "..sft.."
- /* 1 */ "..sft.."
- /* 2 */ "..sft.."
- /* 3 */ "..sft.."
- /* 4 */ "..sft.."
- /* 5 */ "..sft.."
- /* 6 */ "..sft.."
- /* 7 */ "......."
- /* 8 */ "......."
- /* 9 */ "......."
- /* 10 */ "......."
- /* 11 */ "......."
- /* 12 */ ".......",
-
- // Connectors:
- "-1: 3, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 20,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenChurchMid
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenGranary:
- // The data has been exported from the gallery Plains, area index 54, ID 105, created by Aloe_vera
- {
- // Size:
- 7, 7, 9, // SizeX = 7, SizeY = 7, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 7, 6, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b:170: 0\n" /* haybale */
- "c: 67: 0\n" /* stairs */
- "d: 67: 2\n" /* stairs */
- "e: 67: 1\n" /* stairs */
- "f: 17: 0\n" /* tree */
- "g: 5: 0\n" /* wood */
- "h:170: 4\n" /* haybale */
- "i:170: 8\n" /* haybale */
- "j: 54: 2\n" /* chest */
- "k: 50: 4\n" /* torch */
- "l: 53: 0\n" /* woodstairs */
- "m: 19: 0\n" /* sponge */
- "n: 53: 5\n" /* woodstairs */
- "o: 53: 4\n" /* woodstairs */
- "p: 53: 1\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "maaaaam"
- /* 1 */ "maaaaam"
- /* 2 */ "maaaaam"
- /* 3 */ "maaaaam"
- /* 4 */ "maaaaam"
- /* 5 */ "maaaaam"
- /* 6 */ "maaaaam"
- /* 7 */ "maaaaam"
- /* 8 */ "mmmmmmm"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "bcddde."
- /* 1 */ ".aaaaa."
- /* 2 */ ".aaaaa."
- /* 3 */ ".aaaaa."
- /* 4 */ ".aaaaa."
- /* 5 */ ".aaaaa."
- /* 6 */ ".aaaaa."
- /* 7 */ ".aaaaa."
- /* 8 */ "......."
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".f..bf."
- /* 2 */ ".g...g."
- /* 3 */ ".gb.hg."
- /* 4 */ ".fihif."
- /* 5 */ ".gbbbg."
- /* 6 */ ".gijbg."
- /* 7 */ ".fgfgf."
- /* 8 */ "......."
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ ".k...k."
- /* 1 */ ".f...f."
- /* 2 */ ".g...g."
- /* 3 */ ".g...g."
- /* 4 */ ".fh..f."
- /* 5 */ ".ghibg."
- /* 6 */ ".ghiig."
- /* 7 */ ".fgfgf."
- /* 8 */ "......."
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "ln...op"
- /* 1 */ "lgggggp"
- /* 2 */ "lg...gp"
- /* 3 */ "lg...gp"
- /* 4 */ "lg...gp"
- /* 5 */ "lgbb.gp"
- /* 6 */ "lgibigp"
- /* 7 */ "lgggggp"
- /* 8 */ "ln...op"
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ ".ln.op."
- /* 1 */ ".lgggp."
- /* 2 */ ".lg.gp."
- /* 3 */ ".lg.gp."
- /* 4 */ ".lg.gp."
- /* 5 */ ".lg.gp."
- /* 6 */ ".lg.gp."
- /* 7 */ ".lgggp."
- /* 8 */ ".ln.op."
-
- // Level 6
- /* z\x* 0123456 */
- /* 0 */ "..lgp.."
- /* 1 */ "..lgp.."
- /* 2 */ "..lgp.."
- /* 3 */ "..lgp.."
- /* 4 */ "..lgp.."
- /* 5 */ "..lgp.."
- /* 6 */ "..lgp.."
- /* 7 */ "..lgp.."
- /* 8 */ "..lgp..",
-
- // Connectors:
- "-1: 3, 1, -1: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 20,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenGranary
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenHouse10x7Library:
- // The data has been exported from the gallery Plains, area index 47, ID 98, created by Aloe_vera
- {
- // Size:
- 12, 8, 9, // SizeX = 12, SizeY = 8, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 12, 7, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 17: 0\n" /* tree */
- "f: 5: 0\n" /* wood */
- "g: 64: 7\n" /* wooddoorblock */
- "h: 64: 5\n" /* wooddoorblock */
- "i: 53: 3\n" /* woodstairs */
- "j: 85: 0\n" /* fence */
- "k: 53: 2\n" /* woodstairs */
- "l: 53: 1\n" /* woodstairs */
- "m: 19: 0\n" /* sponge */
- "n: 53: 0\n" /* woodstairs */
- "o:102: 0\n" /* glasspane */
- "p: 64:12\n" /* wooddoorblock */
- "q: 50: 3\n" /* torch */
- "r: 72: 0\n" /* woodplate */
- "s: 53: 7\n" /* woodstairs */
- "t: 47: 0\n" /* bookshelf */
- "u: 50: 1\n" /* torch */
- "v: 50: 2\n" /* torch */
- "w: 53: 6\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "mmmmaaaammmm"
- /* 1 */ "maaaaaaaaaam"
- /* 2 */ "maaaaaaaaaam"
- /* 3 */ "maaaaaaaaaam"
- /* 4 */ "maaaaaaaaaam"
- /* 5 */ "maaaaaaaaaam"
- /* 6 */ "maaaaaaaaaam"
- /* 7 */ "maaaaaaaaaam"
- /* 8 */ "mmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "....bccd...."
- /* 1 */ ".aaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaa."
- /* 4 */ ".aaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaa."
- /* 6 */ ".aaaaaaaaaa."
- /* 7 */ ".aaaaaaaaaa."
- /* 8 */ "............"
-
- // Level 2
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ ".efffghfffe."
- /* 2 */ ".f........f."
- /* 3 */ ".fi......if."
- /* 4 */ ".fj......jf."
- /* 5 */ ".fk......kf."
- /* 6 */ ".f.ljnljn.f."
- /* 7 */ ".effffffffe."
- /* 8 */ "............"
-
- // Level 3
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ ".eoofppfooe."
- /* 2 */ ".o..q..q..o."
- /* 3 */ ".o........o."
- /* 4 */ ".fr......rf."
- /* 5 */ ".o........o."
- /* 6 */ ".o..r..r..o."
- /* 7 */ ".eoofoofooe."
- /* 8 */ "............"
-
- // Level 4
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "kkkkkkkkkkkk"
- /* 1 */ "sffffffffffs"
- /* 2 */ ".fttttttttf."
- /* 3 */ ".f........f."
- /* 4 */ ".fu......vf."
- /* 5 */ ".f........f."
- /* 6 */ ".fttttttttf."
- /* 7 */ "wffffffffffw"
- /* 8 */ "iiiiiiiiiiii"
-
- // Level 5
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "kkkkkkkkkkkk"
- /* 2 */ "sffffffffffs"
- /* 3 */ ".fttttttttf."
- /* 4 */ ".f........f."
- /* 5 */ ".fttttttttf."
- /* 6 */ "wffffffffffw"
- /* 7 */ "iiiiiiiiiiii"
- /* 8 */ "............"
-
- // Level 6
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ "kkkkkkkkkkkk"
- /* 3 */ "sffffffffffs"
- /* 4 */ ".f........f."
- /* 5 */ "wffffffffffw"
- /* 6 */ "iiiiiiiiiiii"
- /* 7 */ "............"
- /* 8 */ "............"
-
- // Level 7
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ "............"
- /* 2 */ "............"
- /* 3 */ "kkkkkkkkkkkk"
- /* 4 */ "ffffffffffff"
- /* 5 */ "iiiiiiiiiiii"
- /* 6 */ "............"
- /* 7 */ "............"
- /* 8 */ "............",
-
- // Connectors:
- "-1: 5, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenHouse10x7Library
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenHouse5x5:
- // The data has been exported from the gallery Plains, area index 49, ID 100, created by Aloe_vera
- {
- // Size:
- 7, 7, 7, // SizeX = 7, SizeY = 7, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 7, 6, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 17: 0\n" /* tree */
- "f: 5: 0\n" /* wood */
- "g: 64: 3\n" /* wooddoorblock */
- "h: 64: 8\n" /* wooddoorblock */
- "i:102: 0\n" /* glasspane */
- "j: 53: 2\n" /* woodstairs */
- "k: 53: 7\n" /* woodstairs */
- "l: 50: 3\n" /* torch */
- "m: 19: 0\n" /* sponge */
- "n: 53: 6\n" /* woodstairs */
- "o: 53: 3\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "mmaaamm"
- /* 1 */ "maaaaam"
- /* 2 */ "maaaaam"
- /* 3 */ "maaaaam"
- /* 4 */ "maaaaam"
- /* 5 */ "maaaaam"
- /* 6 */ "mmmmmmm"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "..bcd.."
- /* 1 */ ".aaaaa."
- /* 2 */ ".aaaaa."
- /* 3 */ ".aaaaa."
- /* 4 */ ".aaaaa."
- /* 5 */ ".aaaaa."
- /* 6 */ "......."
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".efgfe."
- /* 2 */ ".f...f."
- /* 3 */ ".f...f."
- /* 4 */ ".f...f."
- /* 5 */ ".efffe."
- /* 6 */ "......."
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".efhfe."
- /* 2 */ ".i...i."
- /* 3 */ ".i...i."
- /* 4 */ ".i...i."
- /* 5 */ ".eiiie."
- /* 6 */ "......."
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "jjjjjjj"
- /* 1 */ "kfffffk"
- /* 2 */ ".fl.lf."
- /* 3 */ ".f...f."
- /* 4 */ ".f...f."
- /* 5 */ "nfffffn"
- /* 6 */ "ooooooo"
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "jjjjjjj"
- /* 2 */ "kfffffk"
- /* 3 */ ".f...f."
- /* 4 */ "nfffffn"
- /* 5 */ "ooooooo"
- /* 6 */ "......."
-
- // Level 6
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "......."
- /* 2 */ "jjjjjjj"
- /* 3 */ "fffffff"
- /* 4 */ "ooooooo"
- /* 5 */ "......."
- /* 6 */ ".......",
-
- // Connectors:
- "-1: 3, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenHouse5x5
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenHouse7x5:
- // The data has been exported from the gallery Plains, area index 40, ID 91, created by xoft
- {
- // Size:
- 9, 7, 7, // SizeX = 9, SizeY = 7, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 9, 6, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 17: 0\n" /* tree */
- "f: 5: 0\n" /* wood */
- "g: 64: 7\n" /* wooddoorblock */
- "h:102: 0\n" /* glasspane */
- "i: 64:12\n" /* wooddoorblock */
- "j: 53: 2\n" /* woodstairs */
- "k: 53: 7\n" /* woodstairs */
- "l: 50: 3\n" /* torch */
- "m: 19: 0\n" /* sponge */
- "n: 53: 6\n" /* woodstairs */
- "o: 53: 3\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 012345678 */
- /* 0 */ "mmmaaammm"
- /* 1 */ "maaaaaaam"
- /* 2 */ "maaaaaaam"
- /* 3 */ "maaaaaaam"
- /* 4 */ "maaaaaaam"
- /* 5 */ "maaaaaaam"
- /* 6 */ "mmmmmmmmm"
-
- // Level 1
- /* z\x* 012345678 */
- /* 0 */ "...bcd..."
- /* 1 */ ".aaaaaaa."
- /* 2 */ ".aaaaaaa."
- /* 3 */ ".aaaaaaa."
- /* 4 */ ".aaaaaaa."
- /* 5 */ ".aaaaaaa."
- /* 6 */ "........."
-
- // Level 2
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ ".effgffe."
- /* 2 */ ".f.....f."
- /* 3 */ ".f.....f."
- /* 4 */ ".f.....f."
- /* 5 */ ".efffffe."
- /* 6 */ "........."
-
- // Level 3
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ ".ehfifhe."
- /* 2 */ ".h.....h."
- /* 3 */ ".h.....h."
- /* 4 */ ".h.....h."
- /* 5 */ ".ehhfhhe."
- /* 6 */ "........."
-
- // Level 4
- /* z\x* 012345678 */
- /* 0 */ "jjjjjjjjj"
- /* 1 */ "kefffffek"
- /* 2 */ ".f.l.l.f."
- /* 3 */ ".f.....f."
- /* 4 */ ".f.....f."
- /* 5 */ "nefffffen"
- /* 6 */ "ooooooooo"
-
- // Level 5
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ "jjjjjjjjj"
- /* 2 */ "kfffffffk"
- /* 3 */ ".f.....f."
- /* 4 */ "nfffffffn"
- /* 5 */ "ooooooooo"
- /* 6 */ "........."
-
- // Level 6
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ "........."
- /* 2 */ "jjjjjjjjj"
- /* 3 */ "fffffffff"
- /* 4 */ "ooooooooo"
- /* 5 */ "........."
- /* 6 */ ".........",
-
- // Connectors:
- "-1: 4, 1, -1: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenHouse7x5
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenHouse9x5:
- // The data has been exported from the gallery Plains, area index 41, ID 92, created by xoft
- {
- // Size:
- 11, 7, 7, // SizeX = 11, SizeY = 7, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 11, 6, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 17: 0\n" /* tree */
- "f: 5: 0\n" /* wood */
- "g: 64: 3\n" /* wooddoorblock */
- "h:102: 0\n" /* glasspane */
- "i: 64: 8\n" /* wooddoorblock */
- "j: 53: 2\n" /* woodstairs */
- "k: 53: 7\n" /* woodstairs */
- "l: 50: 3\n" /* torch */
- "m: 19: 0\n" /* sponge */
- "n: 53: 6\n" /* woodstairs */
- "o: 53: 3\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmaaammmm"
- /* 1 */ "maaaaaaaaam"
- /* 2 */ "maaaaaaaaam"
- /* 3 */ "maaaaaaaaam"
- /* 4 */ "maaaaaaaaam"
- /* 5 */ "maaaaaaaaam"
- /* 6 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "....bcd...."
- /* 1 */ ".aaaaaaaaa."
- /* 2 */ ".aaaaaaaaa."
- /* 3 */ ".aaaaaaaaa."
- /* 4 */ ".aaaaaaaaa."
- /* 5 */ ".aaaaaaaaa."
- /* 6 */ "..........."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".efffgfffe."
- /* 2 */ ".f.......f."
- /* 3 */ ".f.......f."
- /* 4 */ ".f.......f."
- /* 5 */ ".efffffffe."
- /* 6 */ "..........."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".ehhfifhhe."
- /* 2 */ ".h.......h."
- /* 3 */ ".h.......h."
- /* 4 */ ".h.......h."
- /* 5 */ ".ehhhfhhhe."
- /* 6 */ "..........."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "jjjjjjjjjjj"
- /* 1 */ "kfffffffffk"
- /* 2 */ ".f..l.l.ff."
- /* 3 */ ".f......ff."
- /* 4 */ ".f......ff."
- /* 5 */ "nfffffffffn"
- /* 6 */ "ooooooooooo"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "jjjjjjjjjjj"
- /* 2 */ "kfffffffffk"
- /* 3 */ ".fffffffff."
- /* 4 */ "nfffffffffn"
- /* 5 */ "ooooooooooo"
- /* 6 */ "..........."
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "jjjjjjjjjjj"
- /* 3 */ "fffffffffff"
- /* 4 */ "ooooooooooo"
- /* 5 */ "..........."
- /* 6 */ "...........",
-
- // Connectors:
- "-1: 5, 1, -1: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenHouse9x5
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenHouse9x5Fence:
- // The data has been exported from the gallery Plains, area index 9, ID 26, created by Aloe_vera
- {
- // Size:
- 10, 7, 11, // SizeX = 10, SizeY = 7, SizeZ = 11
-
- // Hitbox (relative to bounding box):
- 0, -1, -1, // MinX, MinY, MinZ
- 10, 6, 11, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 3: 0\n" /* dirt */
- "c: 5: 0\n" /* wood */
- "d: 2: 0\n" /* grass */
- "e: 67: 2\n" /* stairs */
- "f: 43: 0\n" /* doubleslab */
- "g: 67: 0\n" /* stairs */
- "h: 67: 3\n" /* stairs */
- "i: 17: 0\n" /* tree */
- "j: 53: 1\n" /* woodstairs */
- "k: 85: 0\n" /* fence */
- "l: 53: 0\n" /* woodstairs */
- "m: 19: 0\n" /* sponge */
- "n: 64: 2\n" /* wooddoorblock */
- "o: 64: 4\n" /* wooddoorblock */
- "p:102: 0\n" /* glasspane */
- "q: 72: 0\n" /* woodplate */
- "r: 64: 8\n" /* wooddoorblock */
- "s: 64:12\n" /* wooddoorblock */
- "t: 53: 5\n" /* woodstairs */
- "u: 53: 4\n" /* woodstairs */
- "v: 50: 1\n" /* torch */
- "w: 50: 2\n" /* torch */,
-
- // Block data:
- // Level 0
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "mmmmmmmmmm"
- /* 1 */ "maaaaammmm"
- /* 2 */ "maaaaammmm"
- /* 3 */ "maaaaabbbb"
- /* 4 */ "aaaaaabbbb"
- /* 5 */ "aaaaaabbbb"
- /* 6 */ "aaaaaabbbb"
- /* 7 */ "maaaaabbbb"
- /* 8 */ "maaaaabbbb"
- /* 9 */ "maaaaammmm"
- /* 10 */ "mmmmmmmmmm"
-
- // Level 1
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "......mmmm"
- /* 1 */ ".aaaaammmm"
- /* 2 */ ".acccammmm"
- /* 3 */ ".acccadddd"
- /* 4 */ "eafffadddd"
- /* 5 */ "gaffffdddd"
- /* 6 */ "hafffadddd"
- /* 7 */ ".afffadddd"
- /* 8 */ ".afffadddd"
- /* 9 */ ".aaaaammmm"
- /* 10 */ "......mmmm"
-
- // Level 2
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "......mmmm"
- /* 1 */ ".icccimmmm"
- /* 2 */ ".cjklcmmmm"
- /* 3 */ ".c...ckkkk"
- /* 4 */ ".c...c...k"
- /* 5 */ ".n...o...k"
- /* 6 */ ".c...c...k"
- /* 7 */ ".cff.c...k"
- /* 8 */ ".c...ckkkk"
- /* 9 */ ".icccimmmm"
- /* 10 */ "......mmmm"
-
- // Level 3
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "......mmmm"
- /* 1 */ ".ipppimmmm"
- /* 2 */ ".p.q.pmmmm"
- /* 3 */ ".p...p...."
- /* 4 */ ".c...c...."
- /* 5 */ ".r...s...."
- /* 6 */ ".c...c...."
- /* 7 */ ".p...p...."
- /* 8 */ ".p...p...."
- /* 9 */ ".ipppimmmm"
- /* 10 */ "......mmmm"
-
- // Level 4
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "lt...ujmmm"
- /* 1 */ "licccijmmm"
- /* 2 */ "lc...cjmmm"
- /* 3 */ "lc...cj..."
- /* 4 */ "lcv.wcj..."
- /* 5 */ "lc...cj..."
- /* 6 */ "lcv.wcj..."
- /* 7 */ "lc...cj..."
- /* 8 */ "lc...cj..."
- /* 9 */ "licccijmmm"
- /* 10 */ "lt...ujmmm"
-
- // Level 5
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".lt.uj.mmm"
- /* 1 */ ".lcccj.mmm"
- /* 2 */ ".lc.cj.mmm"
- /* 3 */ ".lc.cj...."
- /* 4 */ ".lc.cj...."
- /* 5 */ ".lc.cj...."
- /* 6 */ ".lc.cj...."
- /* 7 */ ".lc.cj...."
- /* 8 */ ".lc.cj...."
- /* 9 */ ".lcccj.mmm"
- /* 10 */ ".lt.uj.mmm"
-
- // Level 6
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "..lcj..mmm"
- /* 1 */ "..lcj..mmm"
- /* 2 */ "..lcj..mmm"
- /* 3 */ "..lcj....."
- /* 4 */ "..lcj....."
- /* 5 */ "..lcj....."
- /* 6 */ "..lcj....."
- /* 7 */ "..lcj....."
- /* 8 */ "..lcj....."
- /* 9 */ "..lcj..mmm"
- /* 10 */ "..lcj..mmm",
-
- // Connectors:
- "-1: 0, 1, 5: 4\n" /* Type -1, direction X- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenHouse9x5Fence
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenHouse9x5Library:
- // The data has been exported from the gallery Plains, area index 46, ID 97, created by Aloe_vera
- {
- // Size:
- 11, 7, 7, // SizeX = 11, SizeY = 7, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 11, 6, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 17: 0\n" /* tree */
- "f: 5: 0\n" /* wood */
- "g: 64: 7\n" /* wooddoorblock */
- "h: 53: 3\n" /* woodstairs */
- "i: 85: 0\n" /* fence */
- "j: 53: 2\n" /* woodstairs */
- "k: 53: 1\n" /* woodstairs */
- "l: 53: 0\n" /* woodstairs */
- "m: 19: 0\n" /* sponge */
- "n:102: 0\n" /* glasspane */
- "o: 64:12\n" /* wooddoorblock */
- "p: 50: 3\n" /* torch */
- "q: 72: 0\n" /* woodplate */
- "r: 53: 7\n" /* woodstairs */
- "s: 47: 0\n" /* bookshelf */
- "t: 50: 1\n" /* torch */
- "u: 50: 2\n" /* torch */
- "v: 53: 6\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmaaammmm"
- /* 1 */ "maaaaaaaaam"
- /* 2 */ "maaaaaaaaam"
- /* 3 */ "maaaaaaaaam"
- /* 4 */ "maaaaaaaaam"
- /* 5 */ "maaaaaaaaam"
- /* 6 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "....bcd...."
- /* 1 */ ".aaaaaaaaa."
- /* 2 */ ".aaaaaaaaa."
- /* 3 */ ".aaaaaaaaa."
- /* 4 */ ".aaaaaaaaa."
- /* 5 */ ".aaaaaaaaa."
- /* 6 */ "..........."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".efffgfffe."
- /* 2 */ ".fh.....hf."
- /* 3 */ ".fi.....if."
- /* 4 */ ".fj.kil.jf."
- /* 5 */ ".efffffffe."
- /* 6 */ "..........."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".ennfofnne."
- /* 2 */ ".n..p.p..n."
- /* 3 */ ".nq.....qn."
- /* 4 */ ".n...q...n."
- /* 5 */ ".ennnfnnne."
- /* 6 */ "..........."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "jjjjjjjjjjj"
- /* 1 */ "rfffffffffr"
- /* 2 */ ".fsssssssf."
- /* 3 */ ".ft.....uf."
- /* 4 */ ".fsssssssf."
- /* 5 */ "vfffffffffv"
- /* 6 */ "hhhhhhhhhhh"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "jjjjjjjjjjj"
- /* 2 */ "rfffffffffr"
- /* 3 */ ".f.......f."
- /* 4 */ "vfffffffffv"
- /* 5 */ "hhhhhhhhhhh"
- /* 6 */ "..........."
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "jjjjjjjjjjj"
- /* 3 */ "fffffffffff"
- /* 4 */ "hhhhhhhhhhh"
- /* 5 */ "..........."
- /* 6 */ "...........",
-
- // Connectors:
- "-1: 5, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenHouse9x5Library
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenHouse9x7:
- // The data has been exported from the gallery Plains, area index 52, ID 103, created by Aloe_vera
- {
- // Size:
- 11, 8, 9, // SizeX = 11, SizeY = 8, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 11, 7, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 17: 0\n" /* tree */
- "f: 5: 0\n" /* wood */
- "g: 64: 7\n" /* wooddoorblock */
- "h:102: 0\n" /* glasspane */
- "i: 64:12\n" /* wooddoorblock */
- "j: 53: 2\n" /* woodstairs */
- "k: 53: 7\n" /* woodstairs */
- "l: 50: 3\n" /* torch */
- "m: 19: 0\n" /* sponge */
- "n: 50: 4\n" /* torch */
- "o: 53: 6\n" /* woodstairs */
- "p: 53: 3\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmaaammmm"
- /* 1 */ "maaaaaaaaam"
- /* 2 */ "maaaaaaaaam"
- /* 3 */ "maaaaaaaaam"
- /* 4 */ "maaaaaaaaam"
- /* 5 */ "maaaaaaaaam"
- /* 6 */ "maaaaaaaaam"
- /* 7 */ "maaaaaaaaam"
- /* 8 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "....bcd...."
- /* 1 */ ".aaaaaaaaa."
- /* 2 */ ".aaaaaaaaa."
- /* 3 */ ".aaaaaaaaa."
- /* 4 */ ".aaaaaaaaa."
- /* 5 */ ".aaaaaaaaa."
- /* 6 */ ".aaaaaaaaa."
- /* 7 */ ".aaaaaaaaa."
- /* 8 */ "..........."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".efffgfffe."
- /* 2 */ ".f.......f."
- /* 3 */ ".f.......f."
- /* 4 */ ".f.......f."
- /* 5 */ ".f.......f."
- /* 6 */ ".f.......f."
- /* 7 */ ".efffffffe."
- /* 8 */ "..........."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".ehhfifhhe."
- /* 2 */ ".h.......h."
- /* 3 */ ".h.......h."
- /* 4 */ ".f.......f."
- /* 5 */ ".h.......h."
- /* 6 */ ".h.......h."
- /* 7 */ ".ehhhfhhhe."
- /* 8 */ "..........."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "jjjjjjjjjjj"
- /* 1 */ "kfffffffffk"
- /* 2 */ ".f..l.l..f."
- /* 3 */ ".f.......f."
- /* 4 */ ".f.......f."
- /* 5 */ ".f.......f."
- /* 6 */ ".f...n...f."
- /* 7 */ "offfffffffo"
- /* 8 */ "ppppppppppp"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "jjjjjjjjjjj"
- /* 2 */ "kfffffffffk"
- /* 3 */ ".f.......f."
- /* 4 */ ".f.......f."
- /* 5 */ ".f.......f."
- /* 6 */ "offfffffffo"
- /* 7 */ "ppppppppppp"
- /* 8 */ "..........."
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "jjjjjjjjjjj"
- /* 3 */ "kfffffffffk"
- /* 4 */ ".f.......f."
- /* 5 */ "offfffffffo"
- /* 6 */ "ppppppppppp"
- /* 7 */ "..........."
- /* 8 */ "..........."
-
- // Level 7
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "jjjjjjjjjjj"
- /* 4 */ "fffffffffff"
- /* 5 */ "ppppppppppp"
- /* 6 */ "..........."
- /* 7 */ "..........."
- /* 8 */ "...........",
-
- // Connectors:
- "-1: 5, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenHouse9x7
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenHouse9x7Butcher:
- // The data has been exported from the gallery Plains, area index 48, ID 99, created by Aloe_vera
- {
- // Size:
- 11, 9, 13, // SizeX = 11, SizeY = 9, SizeZ = 13
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 11, 8, 13, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 3: 0\n" /* dirt */
- "b: 2: 0\n" /* grass */
- "c: 4: 0\n" /* cobblestone */
- "d: 67: 0\n" /* stairs */
- "e: 67: 2\n" /* stairs */
- "f: 67: 1\n" /* stairs */
- "g: 43: 0\n" /* doubleslab */
- "h: 17: 0\n" /* tree */
- "i: 5: 0\n" /* wood */
- "j: 64: 7\n" /* wooddoorblock */
- "k: 53: 3\n" /* woodstairs */
- "l: 85: 0\n" /* fence */
- "m: 19: 0\n" /* sponge */
- "n: 53: 2\n" /* woodstairs */
- "o:102: 0\n" /* glasspane */
- "p: 64:12\n" /* wooddoorblock */
- "q: 72: 0\n" /* woodplate */
- "r: 53: 7\n" /* woodstairs */
- "s: 50: 1\n" /* torch */
- "t: 50: 2\n" /* torch */
- "u: 53: 6\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "aaaaaaaaaaa"
- /* 1 */ "aaaaaaaaaaa"
- /* 2 */ "aaaaaaaaaaa"
- /* 3 */ "aaaaaaaaaaa"
- /* 4 */ "aaaaaaaaaab"
- /* 5 */ "baaaaaaaaab"
- /* 6 */ "aaaaaaaaaaa"
- /* 7 */ "baaaaaaaaaa"
- /* 8 */ "baaaaaaaaaa"
- /* 9 */ "baaaaaaaaab"
- /* 10 */ "aaaaaaaaaaa"
- /* 11 */ "aaaaaaaaaba"
- /* 12 */ "aaaaaaaaaba"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmcccmmmm"
- /* 1 */ "mcccccccccm"
- /* 2 */ "mcccccccccm"
- /* 3 */ "mcccccccccm"
- /* 4 */ "mcccccccccm"
- /* 5 */ "mcccccccccm"
- /* 6 */ "mcccccccccm"
- /* 7 */ "mcccccccccm"
- /* 8 */ "mmaaaaaaamm"
- /* 9 */ "mmaaaaaaamm"
- /* 10 */ "mmaaaaaaamm"
- /* 11 */ "mmaaaaaaamm"
- /* 12 */ "mmaaaaaaamm"
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "....def...."
- /* 1 */ ".ccccccccc."
- /* 2 */ ".cggggcccc."
- /* 3 */ ".cggggcccc."
- /* 4 */ ".cggggcccc."
- /* 5 */ ".cggggcccc."
- /* 6 */ ".cggggcccc."
- /* 7 */ ".ccccccccc."
- /* 8 */ "..bbbbbbb.."
- /* 9 */ "mmbbbbbbbmm"
- /* 10 */ "mmbbbbbbbmm"
- /* 11 */ "mmbbbbbbbmm"
- /* 12 */ "mmbbbbbbbmm"
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".hiiijiiih."
- /* 2 */ ".i.g....ki."
- /* 3 */ ".i.g....li."
- /* 4 */ ".i.g....ni."
- /* 5 */ ".i.......i."
- /* 6 */ ".i.......i."
- /* 7 */ ".hiiijiiih."
- /* 8 */ "..l.....l.."
- /* 9 */ "mml.....lmm"
- /* 10 */ "mml.....lmm"
- /* 11 */ "mml.....lmm"
- /* 12 */ "mmlllllllmm"
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".hooipiooh."
- /* 2 */ ".o.......o."
- /* 3 */ ".o......qo."
- /* 4 */ ".i.......i."
- /* 5 */ ".o.......o."
- /* 6 */ ".o.......o."
- /* 7 */ ".hooipiooh."
- /* 8 */ "..........."
- /* 9 */ "mm.......mm"
- /* 10 */ "mm.......mm"
- /* 11 */ "mm.......mm"
- /* 12 */ "mm.......mm"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "nnnnnnnnnnn"
- /* 1 */ "riiiiiiiiir"
- /* 2 */ ".i.......i."
- /* 3 */ ".i.......i."
- /* 4 */ ".is.....ti."
- /* 5 */ ".i.......i."
- /* 6 */ ".i.......i."
- /* 7 */ "uiiiiiiiiiu"
- /* 8 */ "kkkkkkkkkkk"
- /* 9 */ "mm.......mm"
- /* 10 */ "mm.......mm"
- /* 11 */ "mm.......mm"
- /* 12 */ "mm.......mm"
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "nnnnnnnnnnn"
- /* 2 */ "riiiiiiiiir"
- /* 3 */ ".i.......i."
- /* 4 */ ".i.......i."
- /* 5 */ ".i.......i."
- /* 6 */ "uiiiiiiiiiu"
- /* 7 */ "kkkkkkkkkkk"
- /* 8 */ "..........."
- /* 9 */ "mm.......mm"
- /* 10 */ "mm.......mm"
- /* 11 */ "mm.......mm"
- /* 12 */ "mm.......mm"
-
- // Level 7
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "nnnnnnnnnnn"
- /* 3 */ "riiiiiiiiir"
- /* 4 */ ".i.......i."
- /* 5 */ "uiiiiiiiiiu"
- /* 6 */ "kkkkkkkkkkk"
- /* 7 */ "..........."
- /* 8 */ "..........."
- /* 9 */ "mm.......mm"
- /* 10 */ "mm.......mm"
- /* 11 */ "mm.......mm"
- /* 12 */ "mm.......mm"
-
- // Level 8
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "nnnnnnnnnnn"
- /* 4 */ "iiiiiiiiiii"
- /* 5 */ "kkkkkkkkkkk"
- /* 6 */ "..........."
- /* 7 */ "..........."
- /* 8 */ "..........."
- /* 9 */ "mm.......mm"
- /* 10 */ "mm.......mm"
- /* 11 */ "mm.......mm"
- /* 12 */ "mm.......mm",
-
- // Connectors:
- "-1: 5, 2, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenHouse9x7Butcher
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenHouse9x7DoubleDoor:
- // The data has been exported from the gallery Plains, area index 38, ID 87, created by Aloe_vera
- {
- // Size:
- 11, 8, 9, // SizeX = 11, SizeY = 8, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 11, 7, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 67: 3\n" /* stairs */
- "f: 17: 0\n" /* tree */
- "g: 5: 0\n" /* wood */
- "h: 64: 7\n" /* wooddoorblock */
- "i:102: 0\n" /* glasspane */
- "j: 64:12\n" /* wooddoorblock */
- "k: 53: 2\n" /* woodstairs */
- "l: 53: 7\n" /* woodstairs */
- "m: 19: 0\n" /* sponge */
- "n: 17: 4\n" /* tree */
- "o: 17: 8\n" /* tree */
- "p: 50: 3\n" /* torch */
- "q: 50: 4\n" /* torch */
- "r: 53: 6\n" /* woodstairs */
- "s: 53: 3\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmaaammmm"
- /* 1 */ "maaaaaaaaam"
- /* 2 */ "maaaaaaaaam"
- /* 3 */ "maaaaaaaaam"
- /* 4 */ "maaaaaaaaam"
- /* 5 */ "maaaaaaaaam"
- /* 6 */ "maaaaaaaaam"
- /* 7 */ "maaaaaaaaam"
- /* 8 */ "mmmmaaammmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "....bcd...."
- /* 1 */ ".aaaaaaaaa."
- /* 2 */ ".aaaaaaaaa."
- /* 3 */ ".aaaaaaaaa."
- /* 4 */ ".aaaaaaaaa."
- /* 5 */ ".aaaaaaaaa."
- /* 6 */ ".aaaaaaaaa."
- /* 7 */ ".aaaaaaaaa."
- /* 8 */ "....bed...."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".fggfhfggf."
- /* 2 */ ".g.......g."
- /* 3 */ ".g.......g."
- /* 4 */ ".f.......f."
- /* 5 */ ".g.......g."
- /* 6 */ ".g.......g."
- /* 7 */ ".fggfhfggf."
- /* 8 */ "..........."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".fiifjfiif."
- /* 2 */ ".i.......i."
- /* 3 */ ".i.......i."
- /* 4 */ ".f.......f."
- /* 5 */ ".i.......i."
- /* 6 */ ".i.......i."
- /* 7 */ ".fiifjfiif."
- /* 8 */ "..........."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "kkkkkkkkkkk"
- /* 1 */ "lfnnnnnnnfl"
- /* 2 */ ".o..p.p..o."
- /* 3 */ ".o.......o."
- /* 4 */ ".o.......o."
- /* 5 */ ".o.......o."
- /* 6 */ ".o..q.q..o."
- /* 7 */ "rfnnnnnnnfr"
- /* 8 */ "sssssssssss"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "kkkkkkkkkkk"
- /* 2 */ "lgggggggggl"
- /* 3 */ ".g.......g."
- /* 4 */ ".g.......g."
- /* 5 */ ".g.......g."
- /* 6 */ "rgggggggggr"
- /* 7 */ "sssssssssss"
- /* 8 */ "..........."
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "kkkkkkkkkkk"
- /* 3 */ "lgggggggggl"
- /* 4 */ ".g.......g."
- /* 5 */ "rgggggggggr"
- /* 6 */ "sssssssssss"
- /* 7 */ "..........."
- /* 8 */ "..........."
-
- // Level 7
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "kkkkkkkkkkk"
- /* 4 */ "ggggggggggg"
- /* 5 */ "sssssssssss"
- /* 6 */ "..........."
- /* 7 */ "..........."
- /* 8 */ "...........",
-
- // Connectors:
- "-1: 5, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenHouse9x7DoubleDoor
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenHouseL13x14:
- // The data has been exported from the gallery Plains, area index 39, ID 90, created by STR_Warrior
- {
- // Size:
- 15, 9, 16, // SizeX = 15, SizeY = 9, SizeZ = 16
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 15, 8, 16, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "A: 53: 7\n" /* woodstairs */
- "B: 53: 4\n" /* woodstairs */
- "C: 53: 5\n" /* woodstairs */
- "D: 53: 6\n" /* woodstairs */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 43: 0\n" /* doubleslab */
- "f: 17: 0\n" /* tree */
- "g: 5: 0\n" /* wood */
- "h: 64: 7\n" /* wooddoorblock */
- "i: 96: 8\n" /* trapdoor */
- "j: 61: 2\n" /* furnace */
- "k: 53: 3\n" /* woodstairs */
- "l: 85: 0\n" /* fence */
- "m: 19: 0\n" /* sponge */
- "n: 53: 2\n" /* woodstairs */
- "o: 53: 1\n" /* woodstairs */
- "p: 53: 0\n" /* woodstairs */
- "q: 47: 0\n" /* bookshelf */
- "r:102: 0\n" /* glasspane */
- "s: 64:12\n" /* wooddoorblock */
- "t: 72: 0\n" /* woodplate */
- "u: 17: 4\n" /* tree */
- "v: 17: 8\n" /* tree */
- "w: 50: 3\n" /* torch */
- "x: 50: 1\n" /* torch */
- "y: 50: 4\n" /* torch */
- "z: 50: 2\n" /* torch */,
-
- // Block data:
- // Level 0
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmmmmaaammmmmm"
- /* 1 */ "maaaaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaaaam"
- /* 4 */ "maaaaaaaaaaaaam"
- /* 5 */ "maaaaaaaaaaaaam"
- /* 6 */ "maaaaaaaaaaaaam"
- /* 7 */ "maaaaaaaaaaaaam"
- /* 8 */ "mmmmmmmmaaaaaam"
- /* 9 */ "mmmmmmmmaaaaaam"
- /* 10 */ "mmmmmmmmaaaaaam"
- /* 11 */ "mmmmmmmmaaaaaam"
- /* 12 */ "mmmmmmmmaaaaaam"
- /* 13 */ "mmmmmmmmaaaaaam"
- /* 14 */ "mmmmmmmmaaaaaam"
- /* 15 */ "mmmmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "......bcd......"
- /* 1 */ ".aaaaaaaaaaaaa."
- /* 2 */ ".aeeeeaaaaaaaa."
- /* 3 */ ".aeeeeaaaaaaaa."
- /* 4 */ ".aaaaaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaaaaa."
- /* 6 */ ".aaaaaaaaaaaaa."
- /* 7 */ ".aaaaaaaaaaaaa."
- /* 8 */ "........aaaaaa."
- /* 9 */ "mmmmmmm.aaaaaa."
- /* 10 */ "mmmmmmm.aaaaaa."
- /* 11 */ "mmmmmmm.aaaaaa."
- /* 12 */ "mmmmmmm.aaaaaa."
- /* 13 */ "mmmmmmm.aaaaaa."
- /* 14 */ "mmmmmmm.aaaaaa."
- /* 15 */ "mmmmmmm........"
-
- // Level 2
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".fggggfhfggggf."
- /* 2 */ ".g...i.......g."
- /* 3 */ ".gjeee......kg."
- /* 4 */ ".f..........lg."
- /* 5 */ ".g..........ng."
- /* 6 */ ".g.olp..ol...g."
- /* 7 */ ".fggggggfn...f."
- /* 8 */ "........g....g."
- /* 9 */ "mmmmmmm.gk...g."
- /* 10 */ "mmmmmmm.gl..kg."
- /* 11 */ "mmmmmmm.gn..lg."
- /* 12 */ "mmmmmmm.g...ng."
- /* 13 */ "mmmmmmm.gq..qg."
- /* 14 */ "mmmmmmm.fggggf."
- /* 15 */ "mmmmmmm........"
-
- // Level 3
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".fgrrgfsfgrrgf."
- /* 2 */ ".g...........g."
- /* 3 */ ".g...........r."
- /* 4 */ ".f..........tr."
- /* 5 */ ".g...........r."
- /* 6 */ ".g..t....t...g."
- /* 7 */ ".fgrrrrgf....f."
- /* 8 */ "........g....g."
- /* 9 */ "mmmmmmm.r....r."
- /* 10 */ "mmmmmmm.rt...r."
- /* 11 */ "mmmmmmm.r...tr."
- /* 12 */ "mmmmmmm.r....r."
- /* 13 */ "mmmmmmm.gq..qg."
- /* 14 */ "mmmmmmm.fgrrgf."
- /* 15 */ "mmmmmmm........"
-
- // Level 4
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".fuuuuuuuuuuuf."
- /* 2 */ ".v....w.w....v."
- /* 3 */ ".v...........v."
- /* 4 */ ".vx..........v."
- /* 5 */ ".v...........v."
- /* 6 */ ".v......y....v."
- /* 7 */ ".fuuuuuufx..zv."
- /* 8 */ "........v....v."
- /* 9 */ "mmmmmmm.v....v."
- /* 10 */ "mmmmmmm.v....v."
- /* 11 */ "mmmmmmm.v....v."
- /* 12 */ "mmmmmmm.v....v."
- /* 13 */ "mmmmmmm.v.yy.v."
- /* 14 */ "mmmmmmm.fuuuuf."
- /* 15 */ "mmmmmmm........"
-
- // Level 5
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "nnnnnnnnnnnnnno"
- /* 1 */ "pgggggggggggggo"
- /* 2 */ "pgAAAAAAAAAABgo"
- /* 3 */ "pgC.........Bgo"
- /* 4 */ "pgC.........Bgo"
- /* 5 */ "pgC.........Bgo"
- /* 6 */ "pgCDDDDDDD..Bgo"
- /* 7 */ "pggggggggC..Bgo"
- /* 8 */ "pkkkkkkpgC..Bgo"
- /* 9 */ "mmmmmmmpgC..Bgo"
- /* 10 */ "mmmmmmmpgC..Bgo"
- /* 11 */ "mmmmmmmpgC..Bgo"
- /* 12 */ "mmmmmmmpgC..Bgo"
- /* 13 */ "mmmmmmmpgCDDBgo"
- /* 14 */ "mmmmmmmpggggggo"
- /* 15 */ "mmmmmmmpkkkkkkk"
-
- // Level 6
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".pnnnnnnnnnnno."
- /* 2 */ ".pgggggggggggo."
- /* 3 */ ".pgggggggggggo."
- /* 4 */ ".pgggggggggggo."
- /* 5 */ ".pgggggggggggo."
- /* 6 */ ".pgggggggggggo."
- /* 7 */ ".pkkkkkkkggggo."
- /* 8 */ "........pggggo."
- /* 9 */ "mmmmmmm.pggggo."
- /* 10 */ "mmmmmmm.pggggo."
- /* 11 */ "mmmmmmm.pggggo."
- /* 12 */ "mmmmmmm.pggggo."
- /* 13 */ "mmmmmmm.pggggo."
- /* 14 */ "mmmmmmm.kkkkko."
- /* 15 */ "mmmmmmm........"
-
- // Level 7
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "..nnnnnnnnnnn.."
- /* 3 */ "..pgggggggggo.."
- /* 4 */ "..pgggggggggo.."
- /* 5 */ "..pgggggggggo.."
- /* 6 */ "..kkkkkkkkggo.."
- /* 7 */ ".........pggo.."
- /* 8 */ ".........pggo.."
- /* 9 */ "mmmmmmm..pggo.."
- /* 10 */ "mmmmmmm..pggo.."
- /* 11 */ "mmmmmmm..pggo.."
- /* 12 */ "mmmmmmm..pggo.."
- /* 13 */ "mmmmmmm..kkko.."
- /* 14 */ "mmmmmmm........"
- /* 15 */ "mmmmmmm........"
-
- // Level 8
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "..............."
- /* 3 */ "...pnnnnnnno..."
- /* 4 */ "...pgggggggo..."
- /* 5 */ "...pkkkkkkpo..."
- /* 6 */ "..........po..."
- /* 7 */ "..........po..."
- /* 8 */ "..........po..."
- /* 9 */ "mmmmmmm...po..."
- /* 10 */ "mmmmmmm...po..."
- /* 11 */ "mmmmmmm...po..."
- /* 12 */ "mmmmmmm...pk..."
- /* 13 */ "mmmmmmm........"
- /* 14 */ "mmmmmmm........"
- /* 15 */ "mmmmmmm........",
-
- // Connectors:
- "-1: 7, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenHouseL13x14
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenHouseL14x14:
- // The data has been exported from the gallery Plains, area index 0, ID 4, created by Aloe_vera
- {
- // Size:
- 16, 8, 16, // SizeX = 16, SizeY = 8, SizeZ = 16
-
- // Hitbox (relative to bounding box):
- -1, 1, 0, // MinX, MinY, MinZ
- 16, 7, 16, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 5: 0\n" /* wood */
- "f: 67: 3\n" /* stairs */
- "g: 17: 0\n" /* tree */
- "h: 64: 7\n" /* wooddoorblock */
- "i: 64: 5\n" /* wooddoorblock */
- "j:102: 0\n" /* glasspane */
- "k: 64:12\n" /* wooddoorblock */
- "l: 53: 2\n" /* woodstairs */
- "m: 19: 0\n" /* sponge */
- "n: 53: 1\n" /* woodstairs */
- "o: 53: 7\n" /* woodstairs */
- "p: 53: 6\n" /* woodstairs */
- "q: 53: 3\n" /* woodstairs */
- "r: 53: 0\n" /* woodstairs */
- "s: 53: 5\n" /* woodstairs */
- "t: 53: 4\n" /* woodstairs */
- "u: 50: 3\n" /* torch */
- "v: 50: 2\n" /* torch */
- "w: 50: 4\n" /* torch */
- "x: 50: 1\n" /* torch */,
-
- // Block data:
- // Level 0
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "mmmmmmmmaaammmmm"
- /* 1 */ "maaaaaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaaaaam"
- /* 4 */ "maaaaaaaaaaaaaam"
- /* 5 */ "maaaaaaaaaaaaaam"
- /* 6 */ "maaaaaaaaaaaaaam"
- /* 7 */ "maaaaaaaaaaaaaam"
- /* 8 */ "mmmmmaaaaaaaaaam"
- /* 9 */ "mmmmmmmmaaaaaaam"
- /* 10 */ "mmmmmmmmaaaaaaam"
- /* 11 */ "mmmmmmmmaaaaaaam"
- /* 12 */ "mmmmmmmmaaaaaaam"
- /* 13 */ "mmmmmmmmaaaaaaam"
- /* 14 */ "mmmmmmmmaaaaaaam"
- /* 15 */ "mmmmmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "........bcd....."
- /* 1 */ ".aaaaaaaaaaaaaa."
- /* 2 */ ".aeeeeeeeeeeeea."
- /* 3 */ ".aeeeeeeeeeeeea."
- /* 4 */ ".aeeeeeeeeeeeea."
- /* 5 */ ".aeeeeeeeeeeeea."
- /* 6 */ ".aeeeeeeeeeeeea."
- /* 7 */ ".aaaaaaaaeeeeea."
- /* 8 */ ".....bfdaeeeeea."
- /* 9 */ "mmmm....aeeeeea."
- /* 10 */ "mmmmmmm.aeeeeea."
- /* 11 */ "mmmmmmm.aeeeeea."
- /* 12 */ "mmmmmmm.aeeeeea."
- /* 13 */ "mmmmmmm.aeeeeea."
- /* 14 */ "mmmmmmm.aaaaaaa."
- /* 15 */ "mmmmmmm........."
-
- // Level 2
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ ".geeeeeeghgeeeg."
- /* 2 */ ".e............e."
- /* 3 */ ".e............e."
- /* 4 */ ".e............e."
- /* 5 */ ".e............e."
- /* 6 */ ".e............e."
- /* 7 */ ".geeeeieg.....e."
- /* 8 */ "........e.....e."
- /* 9 */ "mmmm....e.....e."
- /* 10 */ "mmmmmmm.e.....e."
- /* 11 */ "mmmmmmm.e.....e."
- /* 12 */ "mmmmmmm.e.....e."
- /* 13 */ "mmmmmmm.e.....e."
- /* 14 */ "mmmmmmm.geeeeeg."
- /* 15 */ "mmmmmmm........."
-
- // Level 3
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ ".gejjejjgkgjjeg."
- /* 2 */ ".j............e."
- /* 3 */ ".j............j."
- /* 4 */ ".j............j."
- /* 5 */ ".j............e."
- /* 6 */ ".j............j."
- /* 7 */ ".gejjekeg.....j."
- /* 8 */ "........e.....e."
- /* 9 */ "mmmm....j.....j."
- /* 10 */ "mmmmmmm.j.....j."
- /* 11 */ "mmmmmmm.e.....e."
- /* 12 */ "mmmmmmm.j.....j."
- /* 13 */ "mmmmmmm.j.....j."
- /* 14 */ "mmmmmmm.gjjjjjg."
- /* 15 */ "mmmmmmm........."
-
- // Level 4
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "llllllllllllllln"
- /* 1 */ "ogeeeeeegegeeegn"
- /* 2 */ ".e............en"
- /* 3 */ ".e............en"
- /* 4 */ ".e............en"
- /* 5 */ ".e............en"
- /* 6 */ ".e............en"
- /* 7 */ "pgeeeeeeg.....en"
- /* 8 */ "qqqqqqqre.....en"
- /* 9 */ "mmmm...re.....en"
- /* 10 */ "mmmmmmmre.....en"
- /* 11 */ "mmmmmmmre.....en"
- /* 12 */ "mmmmmmmre.....en"
- /* 13 */ "mmmmmmmre.....en"
- /* 14 */ "mmmmmmmrgeeeeegn"
- /* 15 */ "mmmmmmmrs.....tn"
-
- // Level 5
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "lllllllllllllll."
- /* 2 */ "oeeeeeeeeeeeeen."
- /* 3 */ ".e.........u.en."
- /* 4 */ ".e..........ven."
- /* 5 */ ".e......w....en."
- /* 6 */ "peeeeeeeee...en."
- /* 7 */ "qqqqqqqqrex..en."
- /* 8 */ "........re...en."
- /* 9 */ "mmmm....re...en."
- /* 10 */ "mmmmmmm.re...en."
- /* 11 */ "mmmmmmm.re...en."
- /* 12 */ "mmmmmmm.re...en."
- /* 13 */ "mmmmmmm.re...en."
- /* 14 */ "mmmmmmm.reeeeen."
- /* 15 */ "mmmmmmm.rs...tn."
-
- // Level 6
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ "llllllllllllln.."
- /* 3 */ "oeeeeeeeeeeeen.."
- /* 4 */ ".ex.........en.."
- /* 5 */ "peeeeeeeeee.en.."
- /* 6 */ "qqqqqqqqqre.en.."
- /* 7 */ ".........re.en.."
- /* 8 */ ".........re.en.."
- /* 9 */ "mmmm.....re.en.."
- /* 10 */ "mmmmmmm..re.en.."
- /* 11 */ "mmmmmmm..re.en.."
- /* 12 */ "mmmmmmm..re.en.."
- /* 13 */ "mmmmmmm..rewen.."
- /* 14 */ "mmmmmmm..reeen.."
- /* 15 */ "mmmmmmm..rs.tn.."
-
- // Level 7
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ "................"
- /* 3 */ "lllllllllllll..."
- /* 4 */ "eeeeeeeeeeeen..."
- /* 5 */ "qqqqqqqqqqren..."
- /* 6 */ "..........ren..."
- /* 7 */ "..........ren..."
- /* 8 */ "..........ren..."
- /* 9 */ "mmmm......ren..."
- /* 10 */ "mmmmmmm...ren..."
- /* 11 */ "mmmmmmm...ren..."
- /* 12 */ "mmmmmmm...ren..."
- /* 13 */ "mmmmmmm...ren..."
- /* 14 */ "mmmmmmm...ren..."
- /* 15 */ "mmmmmmm...ren...",
-
- // Connectors:
- "-1: 9, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenHouseL14x14
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenHouseL9x9:
- // The data has been exported from the gallery Plains, area index 42, ID 93, created by xoft
- {
- // Size:
- 11, 7, 11, // SizeX = 11, SizeY = 7, SizeZ = 11
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 11, 6, 11, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 17: 0\n" /* tree */
- "f: 5: 0\n" /* wood */
- "g: 64: 7\n" /* wooddoorblock */
- "h:102: 0\n" /* glasspane */
- "i: 64:12\n" /* wooddoorblock */
- "j: 53: 2\n" /* woodstairs */
- "k: 53: 7\n" /* woodstairs */
- "l: 53: 1\n" /* woodstairs */
- "m: 19: 0\n" /* sponge */
- "n: 50: 3\n" /* torch */
- "o: 50: 4\n" /* torch */
- "p: 53: 6\n" /* woodstairs */
- "q: 50: 1\n" /* torch */
- "r: 50: 2\n" /* torch */
- "s: 53: 3\n" /* woodstairs */
- "t: 53: 0\n" /* woodstairs */
- "u: 53: 5\n" /* woodstairs */
- "v: 53: 4\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmaaammmm"
- /* 1 */ "maaaaaaaaam"
- /* 2 */ "maaaaaaaaam"
- /* 3 */ "maaaaaaaaam"
- /* 4 */ "maaaaaaaaam"
- /* 5 */ "maaaaaaaaam"
- /* 6 */ "mmmmmaaaaam"
- /* 7 */ "mmmmmaaaaam"
- /* 8 */ "mmmmmaaaaam"
- /* 9 */ "mmmmmaaaaam"
- /* 10 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "....bcd...."
- /* 1 */ ".aaaaaaaaa."
- /* 2 */ ".aaaaaaaaa."
- /* 3 */ ".aaaaaaaaa."
- /* 4 */ ".aaaaaaaaa."
- /* 5 */ ".aaaaaaaaa."
- /* 6 */ ".....aaaaa."
- /* 7 */ "mmmm.aaaaa."
- /* 8 */ "mmmm.aaaaa."
- /* 9 */ "mmmm.aaaaa."
- /* 10 */ "mmmm......."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".efffgfffe."
- /* 2 */ ".f.......f."
- /* 3 */ ".f.......f."
- /* 4 */ ".f.......f."
- /* 5 */ ".efffe...f."
- /* 6 */ ".....f...f."
- /* 7 */ "mmmm.f...f."
- /* 8 */ "mmmm.f...f."
- /* 9 */ "mmmm.efffe."
- /* 10 */ "mmmm......."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".ehhfifhhe."
- /* 2 */ ".h.......h."
- /* 3 */ ".h.......h."
- /* 4 */ ".h.......h."
- /* 5 */ ".ehhhe...f."
- /* 6 */ ".....h...h."
- /* 7 */ "mmmm.h...h."
- /* 8 */ "mmmm.h...h."
- /* 9 */ "mmmm.ehhhe."
- /* 10 */ "mmmm......."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "jjjjjjjjjjj"
- /* 1 */ "kfffffffffl"
- /* 2 */ ".f..n.n..fl"
- /* 3 */ ".f.......fl"
- /* 4 */ ".f...o...fl"
- /* 5 */ "pfffffq.rfl"
- /* 6 */ "sssssf...fl"
- /* 7 */ "mmmmtf...fl"
- /* 8 */ "mmmmtf...fl"
- /* 9 */ "mmmmtfffffl"
- /* 10 */ "mmmmtu...vl"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "jjjjjjjjjl."
- /* 2 */ "kffffffffl."
- /* 3 */ ".f......fl."
- /* 4 */ "pffffff.fl."
- /* 5 */ "ssssssf.fl."
- /* 6 */ ".....tf.fl."
- /* 7 */ "mmmm.tf.fl."
- /* 8 */ "mmmm.tf.fl."
- /* 9 */ "mmmm.tfffl."
- /* 10 */ "mmmm.tu.vl."
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "jjjjjjjjj.."
- /* 3 */ "ffffffffl.."
- /* 4 */ "sssssstfl.."
- /* 5 */ "......tfl.."
- /* 6 */ "......tfl.."
- /* 7 */ "mmmm..tfl.."
- /* 8 */ "mmmm..tfl.."
- /* 9 */ "mmmm..tfl.."
- /* 10 */ "mmmm..tfl..",
-
- // Connectors:
- "-1: 5, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenHouseL9x9
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenHouseU13x9:
- // The data has been exported from the gallery Plains, area index 43, ID 94, created by xoft
- {
- // Size:
- 15, 7, 11, // SizeX = 15, SizeY = 7, SizeZ = 11
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 15, 6, 11, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 17: 0\n" /* tree */
- "f: 5: 0\n" /* wood */
- "g: 64: 7\n" /* wooddoorblock */
- "h:102: 0\n" /* glasspane */
- "i: 64:12\n" /* wooddoorblock */
- "j: 53: 2\n" /* woodstairs */
- "k: 53: 0\n" /* woodstairs */
- "l: 53: 1\n" /* woodstairs */
- "m: 19: 0\n" /* sponge */
- "n: 50: 3\n" /* torch */
- "o: 50: 4\n" /* torch */
- "p: 50: 2\n" /* torch */
- "q: 50: 1\n" /* torch */
- "r: 53: 3\n" /* woodstairs */
- "s: 53: 5\n" /* woodstairs */
- "t: 53: 4\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmmmmaaammmmmm"
- /* 1 */ "maaaaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaaaam"
- /* 4 */ "maaaaaaaaaaaaam"
- /* 5 */ "maaaaaaaaaaaaam"
- /* 6 */ "maaaaammmaaaaam"
- /* 7 */ "maaaaammmaaaaam"
- /* 8 */ "maaaaammmaaaaam"
- /* 9 */ "maaaaammmaaaaam"
- /* 10 */ "mmmmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "......bcd......"
- /* 1 */ ".aaaaaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaaaaa."
- /* 4 */ ".aaaaaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaaaaa."
- /* 6 */ ".aaaaa...aaaaa."
- /* 7 */ ".aaaaa...aaaaa."
- /* 8 */ ".aaaaa...aaaaa."
- /* 9 */ ".aaaaa...aaaaa."
- /* 10 */ "..............."
-
- // Level 2
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".efffffgfffffe."
- /* 2 */ ".f...........f."
- /* 3 */ ".f...........f."
- /* 4 */ ".f...........f."
- /* 5 */ ".f...efffe...f."
- /* 6 */ ".f...f...f...f."
- /* 7 */ ".f...f...f...f."
- /* 8 */ ".f...f...f...f."
- /* 9 */ ".efffe...efffe."
- /* 10 */ "..............."
-
- // Level 3
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".ehhhhfifhhhhe."
- /* 2 */ ".h...........h."
- /* 3 */ ".h...........h."
- /* 4 */ ".h...........h."
- /* 5 */ ".f...ehhhe...f."
- /* 6 */ ".h...h...h...h."
- /* 7 */ ".h...h...h...h."
- /* 8 */ ".h...h...h...h."
- /* 9 */ ".ehhhe...ehhhe."
- /* 10 */ "..............."
-
- // Level 4
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "jjjjjjjjjjjjjjj"
- /* 1 */ "kfffffffffffffl"
- /* 2 */ "kf....n.n....fl"
- /* 3 */ "kf...........fl"
- /* 4 */ "kf...o...o...fl"
- /* 5 */ "kf..pfffffq..fl"
- /* 6 */ "kf...frrrf...fl"
- /* 7 */ "kf...fl.kf...fl"
- /* 8 */ "kf...fl.kf...fl"
- /* 9 */ "kfffffl.kfffffl"
- /* 10 */ "ks...tl.ks...tl"
-
- // Level 5
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".jjjjjjjjjjjjl."
- /* 2 */ ".kfffffffffffl."
- /* 3 */ ".kfffffffffffl."
- /* 4 */ ".kfffffffffffl."
- /* 5 */ ".kffflrrrrfffl."
- /* 6 */ ".kfffl...kfffl."
- /* 7 */ ".kfffl...kfffl."
- /* 8 */ ".kfffl...kfffl."
- /* 9 */ ".kfffl...kfffl."
- /* 10 */ ".ks.tl...ks.tl."
-
- // Level 6
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "..kjjjjjjjjjj.."
- /* 3 */ "..kfffffffffl.."
- /* 4 */ "..kflrrrrrkfl.."
- /* 5 */ "..kfl.....kfl.."
- /* 6 */ "..kfl.....kfl.."
- /* 7 */ "..kfl.....kfl.."
- /* 8 */ "..kfl.....kfl.."
- /* 9 */ "..kfl.....kfl.."
- /* 10 */ "..kfl.....kfl..",
-
- // Connectors:
- "-1: 7, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenHouseU13x9
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenMill5x5:
- // The data has been exported from the gallery Plains, area index 60, ID 111, created by Aloe_vera
- {
- // Size:
- 9, 17, 13, // SizeX = 9, SizeY = 17, SizeZ = 13
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 8, 16, 12, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 2\n" /* stairs */
- "c: 67: 1\n" /* stairs */
- "d: 67: 3\n" /* stairs */
- "e: 17: 0\n" /* tree */
- "f: 5: 0\n" /* wood */
- "g: 54: 4\n" /* chest */
- "h:154: 4\n" /* hopper */
- "i: 64: 4\n" /* wooddoorblock */
- "j:102: 0\n" /* glasspane */
- "k: 85: 0\n" /* fence */
- "l: 64:12\n" /* wooddoorblock */
- "m: 19: 0\n" /* sponge */
- "n: 50: 2\n" /* torch */
- "o: 35: 0\n" /* wool */
- "p: 17: 4\n" /* tree */
- "q: 17: 8\n" /* tree */
- "r: 53: 2\n" /* woodstairs */
- "s: 53: 7\n" /* woodstairs */
- "t: 53: 6\n" /* woodstairs */
- "u: 53: 3\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmmmm"
- /* 1 */ "mmmmmmmmm"
- /* 2 */ "mmmmmmmmm"
- /* 3 */ "mmmmmmmmm"
- /* 4 */ "maaaaammm"
- /* 5 */ "maaaaaamm"
- /* 6 */ "maaaaaamm"
- /* 7 */ "maaaaaamm"
- /* 8 */ "maaaaammm"
- /* 9 */ "mmmmmmmmm"
- /* 10 */ "mmmmmmmmm"
- /* 11 */ "mmmmmmmmm"
- /* 12 */ "mmmmmmmmm"
-
- // Level 1
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.."
- /* 3 */ "........."
- /* 4 */ ".aaaaa..."
- /* 5 */ ".aaaaab.."
- /* 6 */ ".aaaaac.."
- /* 7 */ ".aaaaad.."
- /* 8 */ ".aaaaa..."
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.."
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm.."
-
- // Level 2
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.."
- /* 3 */ "........."
- /* 4 */ ".efffe..."
- /* 5 */ ".f...f..."
- /* 6 */ ".fgh.i..."
- /* 7 */ ".f...f..."
- /* 8 */ ".efffe..."
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.."
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm.."
-
- // Level 3
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.."
- /* 3 */ "........."
- /* 4 */ ".ejjje..."
- /* 5 */ ".j...f..."
- /* 6 */ ".j.k.l..."
- /* 7 */ ".j...f..."
- /* 8 */ ".ejjje..."
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.."
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm.."
-
- // Level 4
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.."
- /* 3 */ "........."
- /* 4 */ ".efffe..."
- /* 5 */ ".f..nf..."
- /* 6 */ ".f.k.f..."
- /* 7 */ ".f..nf..k"
- /* 8 */ ".efffe..o"
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.."
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm.."
-
- // Level 5
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.."
- /* 3 */ "........."
- /* 4 */ ".epppe..."
- /* 5 */ ".q...q..."
- /* 6 */ ".q.k.q..."
- /* 7 */ ".q...q..k"
- /* 8 */ ".epppe..o"
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.."
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm.."
-
- // Level 6
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.."
- /* 3 */ "........."
- /* 4 */ ".efffe..."
- /* 5 */ ".f...f..."
- /* 6 */ ".f.k.f..k"
- /* 7 */ ".f...f..o"
- /* 8 */ ".efffe..o"
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.."
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm.."
-
- // Level 7
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.."
- /* 3 */ "........."
- /* 4 */ ".ejjje..."
- /* 5 */ ".j...j..."
- /* 6 */ ".j.k.j..k"
- /* 7 */ ".j...j..o"
- /* 8 */ ".ejjje..."
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.."
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm.."
-
- // Level 8
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.o"
- /* 1 */ "mmmmmmm.o"
- /* 2 */ "mmmmmmm.o"
- /* 3 */ "........."
- /* 4 */ ".efffe..."
- /* 5 */ ".f...f..k"
- /* 6 */ ".f.k.f..o"
- /* 7 */ ".f...f..o"
- /* 8 */ ".efffe..."
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.."
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm.."
-
- // Level 9
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.k"
- /* 1 */ "mmmmmmm.k"
- /* 2 */ "mmmmmmm.o"
- /* 3 */ "........o"
- /* 4 */ ".epppe..o"
- /* 5 */ ".q...q..k"
- /* 6 */ ".q.k.q..o"
- /* 7 */ ".q...q..k"
- /* 8 */ ".epppe..k"
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.."
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm.."
-
- // Level 10
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.k"
- /* 3 */ "rrrrrrr.k"
- /* 4 */ "sfffffs.o"
- /* 5 */ ".f...f..o"
- /* 6 */ ".f.kppppp"
- /* 7 */ ".f...f..o"
- /* 8 */ "tffffft.o"
- /* 9 */ "uuuuuuu.k"
- /* 10 */ "mmmmmmm.k"
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm.."
-
- // Level 11
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.."
- /* 3 */ "........."
- /* 4 */ "rrrrrrr.k"
- /* 5 */ "sfffffs.k"
- /* 6 */ ".f...f..o"
- /* 7 */ "tffffft.k"
- /* 8 */ "uuuuuuu.o"
- /* 9 */ "........o"
- /* 10 */ "mmmmmmm.o"
- /* 11 */ "mmmmmmm.k"
- /* 12 */ "mmmmmmm.k"
-
- // Level 12
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.."
- /* 3 */ "........."
- /* 4 */ "........."
- /* 5 */ "rrrrrrr.o"
- /* 6 */ "fffffff.o"
- /* 7 */ "uuuuuuu.k"
- /* 8 */ "........."
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.o"
- /* 11 */ "mmmmmmm.o"
- /* 12 */ "mmmmmmm.o"
-
- // Level 13
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.."
- /* 3 */ "........."
- /* 4 */ "........."
- /* 5 */ "........o"
- /* 6 */ "........k"
- /* 7 */ "........."
- /* 8 */ "........."
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.."
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm.."
-
- // Level 14
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.."
- /* 3 */ "........."
- /* 4 */ "........o"
- /* 5 */ "........o"
- /* 6 */ "........k"
- /* 7 */ "........."
- /* 8 */ "........."
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.."
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm.."
-
- // Level 15
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.."
- /* 3 */ "........."
- /* 4 */ "........o"
- /* 5 */ "........k"
- /* 6 */ "........."
- /* 7 */ "........."
- /* 8 */ "........."
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.."
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm.."
-
- // Level 16
- /* z\x* 012345678 */
- /* 0 */ "mmmmmmm.."
- /* 1 */ "mmmmmmm.."
- /* 2 */ "mmmmmmm.."
- /* 3 */ "........."
- /* 4 */ "........o"
- /* 5 */ "........k"
- /* 6 */ "........."
- /* 7 */ "........."
- /* 8 */ "........."
- /* 9 */ "........."
- /* 10 */ "mmmmmmm.."
- /* 11 */ "mmmmmmm.."
- /* 12 */ "mmmmmmm..",
-
- // Connectors:
- "-1: 8, 1, 6: 5\n" /* Type -1, direction X+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenMill5x5
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // WoodenStables:
- // The data has been exported from the gallery Plains, area index 55, ID 106, created by Aloe_vera
- {
- // Size:
- 15, 9, 9, // SizeX = 15, SizeY = 9, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, -1, 0, // MinX, MinY, MinZ
- 15, 8, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 4: 0\n" /* cobblestone */
- "b: 67: 0\n" /* stairs */
- "c: 67: 2\n" /* stairs */
- "d: 67: 1\n" /* stairs */
- "e: 3: 0\n" /* dirt */
- "f: 17: 0\n" /* tree */
- "g:107: 0\n" /* fencegate */
- "h:107: 4\n" /* fencegate */
- "i: 5: 0\n" /* wood */
- "j:107: 6\n" /* fencegate */
- "k: 85: 0\n" /* fence */
- "l:170: 0\n" /* haybale */
- "m: 19: 0\n" /* sponge */
- "n:170: 4\n" /* haybale */
- "o:170: 8\n" /* haybale */
- "p: 50: 1\n" /* torch */
- "q: 50: 2\n" /* torch */
- "r: 53: 2\n" /* woodstairs */
- "s: 53: 7\n" /* woodstairs */
- "t: 53: 6\n" /* woodstairs */
- "u: 53: 3\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "maaaaaaaaaaaaam"
- /* 1 */ "maaaaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaaaam"
- /* 4 */ "maaaaaaaaaaaaam"
- /* 5 */ "maaaaaaaaaaaaam"
- /* 6 */ "maaaaaaaaaaaaam"
- /* 7 */ "maaaaaaaaaaaaam"
- /* 8 */ "mmmmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ ".bcccccccccccd."
- /* 1 */ ".aaaaaaaaaaaaa."
- /* 2 */ ".aeeeeeeeeeeea."
- /* 3 */ ".aeeeeeeeeeeea."
- /* 4 */ ".aeeeeeeeeeeea."
- /* 5 */ ".aeeeeeeeeeeea."
- /* 6 */ ".aeeeeeeeeeeea."
- /* 7 */ ".aaaaaaaaaaaaa."
- /* 8 */ "..............."
-
- // Level 2
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".fghgighgigjgf."
- /* 2 */ ".k...k...k...k."
- /* 3 */ ".k...k...k...k."
- /* 4 */ ".k...k...k...k."
- /* 5 */ ".k...k...k...k."
- /* 6 */ ".kl..k..nko..k."
- /* 7 */ ".fkkkikkkikkkf."
- /* 8 */ "..............."
-
- // Level 3
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".f...i...i...f."
- /* 2 */ "..............."
- /* 3 */ "..............."
- /* 4 */ "..............."
- /* 5 */ "..............."
- /* 6 */ "..............."
- /* 7 */ ".f...i...i...f."
- /* 8 */ "..............."
-
- // Level 4
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".fp.qip.qip.qf."
- /* 2 */ "..............."
- /* 3 */ "..............."
- /* 4 */ "..............."
- /* 5 */ "..............."
- /* 6 */ "..............."
- /* 7 */ ".f...i...i...f."
- /* 8 */ "..............."
-
- // Level 5
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "rrrrrrrrrrrrrrr"
- /* 1 */ "siiiiiiiiiiiiis"
- /* 2 */ ".i...........i."
- /* 3 */ ".i...........i."
- /* 4 */ ".i...........i."
- /* 5 */ ".i...........i."
- /* 6 */ ".i...........i."
- /* 7 */ "tiiiiiiiiiiiiit"
- /* 8 */ "uuuuuuuuuuuuuuu"
-
- // Level 6
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "rrrrrrrrrrrrrrr"
- /* 2 */ "siiiiiiiiiiiiis"
- /* 3 */ ".i...........i."
- /* 4 */ ".i...........i."
- /* 5 */ ".i...........i."
- /* 6 */ "tiiiiiiiiiiiiit"
- /* 7 */ "uuuuuuuuuuuuuuu"
- /* 8 */ "..............."
-
- // Level 7
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "rrrrrrrrrrrrrrr"
- /* 3 */ "siiiiiiiiiiiiis"
- /* 4 */ ".i...........i."
- /* 5 */ "tiiiiiiiiiiiiit"
- /* 6 */ "uuuuuuuuuuuuuuu"
- /* 7 */ "..............."
- /* 8 */ "..............."
-
- // Level 8
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "..............."
- /* 3 */ "rrrrrrrrrrrrrrr"
- /* 4 */ "iiiiiiiiiiiiiii"
- /* 5 */ "uuuuuuuuuuuuuuu"
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "...............",
-
- // Connectors:
- "-1: 7, 1, -1: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // WoodenStables
-}; // g_PlainsVillagePrefabs
-
-
-
-
-
-
-const cPrefab::sDef g_PlainsVillageStartingPrefabs[] =
-{
- ////////////////////////////////////////////////////////////////////////////////
- // CobbleWell4x4:
- // The data has been exported from the gallery Plains, area index 1, ID 5, created by Aloe_vera
- {
- // Size:
- 4, 13, 4, // SizeX = 4, SizeY = 13, SizeZ = 4
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 3, 12, 3, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 1: 0\n" /* stone */
- "b: 4: 0\n" /* cobblestone */
- "c: 8: 0\n" /* water */
- "d: 85: 0\n" /* fence */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 0123 */
- /* 0 */ "aaaa"
- /* 1 */ "aaaa"
- /* 2 */ "aaaa"
- /* 3 */ "aaaa"
-
- // Level 1
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 2
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 3
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 4
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 5
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 6
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 7
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 8
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 9
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "b..b"
- /* 2 */ "b..b"
- /* 3 */ "bbbb"
-
- // Level 10
- /* z\x* 0123 */
- /* 0 */ "d..d"
- /* 1 */ "...."
- /* 2 */ "...."
- /* 3 */ "d..d"
-
- // Level 11
- /* z\x* 0123 */
- /* 0 */ "d..d"
- /* 1 */ "...."
- /* 2 */ "...."
- /* 3 */ "d..d"
-
- // Level 12
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bbbb"
- /* 2 */ "bbbb"
- /* 3 */ "bbbb",
-
- // Connectors:
- "2: 1, 9, 3: 3\n" /* Type 2, direction Z+ */
- "2: 2, 9, 0: 2\n" /* Type 2, direction Z- */
- "2: 0, 9, 1: 4\n" /* Type 2, direction X- */
- "2: 3, 9, 2: 5\n" /* Type 2, direction X+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // CobbleWell4x4
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MineEntrance:
- // The data has been exported from the gallery Plains, area index 138, ID 446, created by STR_Warrior
- {
- // Size:
- 7, 38, 7, // SizeX = 7, SizeY = 38, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 6, 37, 6, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 5: 0\n" /* wood */
- "b: 77: 2\n" /* stonebutton */
- "c: 66: 6\n" /* tracks */
- "d: 27: 1\n" /* poweredrail */
- "e: 66: 5\n" /* tracks */
- "f: 66: 9\n" /* tracks */
- "g: 66: 2\n" /* tracks */
- "h: 50: 4\n" /* torch */
- "i: 66: 4\n" /* tracks */
- "j: 66: 8\n" /* tracks */
- "k: 66: 3\n" /* tracks */
- "l: 66: 7\n" /* tracks */
- "m: 19: 0\n" /* sponge */
- "n: 50: 2\n" /* torch */
- "o: 4: 0\n" /* cobblestone */
- "p: 2: 0\n" /* grass */
- "q: 13: 0\n" /* gravel */
- "r: 53: 2\n" /* woodstairs */
- "s: 77: 1\n" /* stonebutton */
- "t: 27: 0\n" /* poweredrail */
- "u: 53: 7\n" /* woodstairs */
- "v: 53: 6\n" /* woodstairs */
- "w: 53: 3\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "maaaaam"
- /* 1 */ "maaaaam"
- /* 2 */ "maaaaam"
- /* 3 */ "maaaaam"
- /* 4 */ "maaaaam"
- /* 5 */ "maaaaam"
- /* 6 */ "mmmmmmm"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "mm...mm"
- /* 1 */ "mm.abam"
- /* 2 */ "mmcddam"
- /* 3 */ "mae..am"
- /* 4 */ "mmaa.mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "mm...mm"
- /* 1 */ "mm.a.mm"
- /* 2 */ "mm...mm"
- /* 3 */ "ma..aam"
- /* 4 */ "mmfgamm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "mm.h.mm"
- /* 1 */ "mm.a.mm"
- /* 2 */ "mm.aamm"
- /* 3 */ "ma..iam"
- /* 4 */ "mm..jmm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmaklmm"
- /* 3 */ "maa..am"
- /* 4 */ "mm...mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmc..mm"
- /* 3 */ "mae.nam"
- /* 4 */ "mmaa.mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 6
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mm...mm"
- /* 3 */ "ma..aam"
- /* 4 */ "mmfgamm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 7
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mm.aamm"
- /* 3 */ "ma..iam"
- /* 4 */ "mm..jmm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 8
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmaklmm"
- /* 3 */ "maa..am"
- /* 4 */ "mm...mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 9
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmc..mm"
- /* 3 */ "mae.nam"
- /* 4 */ "mmaa.mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 10
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mm...mm"
- /* 3 */ "ma..aam"
- /* 4 */ "mmfgamm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 11
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mm.aamm"
- /* 3 */ "ma..iam"
- /* 4 */ "mm..jmm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 12
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmaklmm"
- /* 3 */ "maa..am"
- /* 4 */ "mm...mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 13
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmc..mm"
- /* 3 */ "mae.nam"
- /* 4 */ "mmaa.mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 14
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mm...mm"
- /* 3 */ "ma..aam"
- /* 4 */ "mmfgamm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 15
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mm.aamm"
- /* 3 */ "ma..iam"
- /* 4 */ "mm..jmm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 16
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmaklmm"
- /* 3 */ "maa..am"
- /* 4 */ "mm...mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 17
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmc..mm"
- /* 3 */ "mae.nam"
- /* 4 */ "mmaa.mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 18
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mm...mm"
- /* 3 */ "ma..aam"
- /* 4 */ "mmfgamm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 19
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mm.aamm"
- /* 3 */ "ma..iam"
- /* 4 */ "mm..jmm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 20
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmaklmm"
- /* 3 */ "maa..am"
- /* 4 */ "mm...mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 21
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmc..mm"
- /* 3 */ "mae.nam"
- /* 4 */ "mmaa.mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 22
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mm...mm"
- /* 3 */ "ma..aam"
- /* 4 */ "mmfgamm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 23
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mm.aamm"
- /* 3 */ "ma..iam"
- /* 4 */ "mm..jmm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 24
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmaklmm"
- /* 3 */ "maa..am"
- /* 4 */ "mm...mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 25
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmc..mm"
- /* 3 */ "mae.nam"
- /* 4 */ "mmaa.mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 26
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mm...mm"
- /* 3 */ "ma..aam"
- /* 4 */ "mmfgamm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 27
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mm.aamm"
- /* 3 */ "ma..iam"
- /* 4 */ "mm..jmm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 28
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmaklmm"
- /* 3 */ "maa..am"
- /* 4 */ "mm...mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 29
- /* z\x* 0123456 */
- /* 0 */ "mmmmmmm"
- /* 1 */ "mmmammm"
- /* 2 */ "mmc..mm"
- /* 3 */ "mae.nam"
- /* 4 */ "mmaa.mm"
- /* 5 */ "mmmammm"
- /* 6 */ "mmmmmmm"
-
- // Level 30
- /* z\x* 0123456 */
- /* 0 */ "mmooomm"
- /* 1 */ "mmmammm"
- /* 2 */ "om...mo"
- /* 3 */ "oa..aao"
- /* 4 */ "omfgamo"
- /* 5 */ "mmmammm"
- /* 6 */ "mmooomm"
-
- // Level 31
- /* z\x* 0123456 */
- /* 0 */ "ppqqqpp"
- /* 1 */ "paaaaap"
- /* 2 */ "qa.aaaq"
- /* 3 */ "qa..iaq"
- /* 4 */ "qa..jaq"
- /* 5 */ "paaaaap"
- /* 6 */ "ppqqqpp"
-
- // Level 32
- /* z\x* 0123456 */
- /* 0 */ "...r..."
- /* 1 */ ".astba."
- /* 2 */ "...fl.."
- /* 3 */ "......."
- /* 4 */ "......."
- /* 5 */ ".a...a."
- /* 6 */ "......."
-
- // Level 33
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".a...a."
- /* 2 */ "......."
- /* 3 */ "......."
- /* 4 */ "......."
- /* 5 */ ".a...a."
- /* 6 */ "......."
-
- // Level 34
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".a...a."
- /* 2 */ "......."
- /* 3 */ "......."
- /* 4 */ "......."
- /* 5 */ ".a...a."
- /* 6 */ "......."
-
- // Level 35
- /* z\x* 0123456 */
- /* 0 */ "rrrrrrr"
- /* 1 */ "uaaaaau"
- /* 2 */ ".a...a."
- /* 3 */ ".a...a."
- /* 4 */ ".a...a."
- /* 5 */ "vaaaaav"
- /* 6 */ "wwwwwww"
-
- // Level 36
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "rrrrrrr"
- /* 2 */ "uaaaaau"
- /* 3 */ ".aaaaa."
- /* 4 */ "vaaaaav"
- /* 5 */ "wwwwwww"
- /* 6 */ "......."
-
- // Level 37
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "......."
- /* 2 */ "rrrrrrr"
- /* 3 */ "aaaaaaa"
- /* 4 */ "wwwwwww"
- /* 5 */ "......."
- /* 6 */ ".......",
-
- // Connectors:
- "2: 6, 32, 3: 5\n" /* Type 2, direction X+ */
- "2: 3, 32, 6: 3\n" /* Type 2, direction Z+ */
- "2: 0, 32, 3: 4\n" /* Type 2, direction X- */
- "2: 3, 32, 0: 2\n" /* Type 2, direction Z- */
- "3: 3, 1, 0: 2\n" /* Type 3, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- false,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // MineEntrance
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // RoofedWell:
- // The data has been exported from the gallery Plains, area index 119, ID 271, created by STR_Warrior
- {
- // Size:
- 7, 15, 7, // SizeX = 7, SizeY = 15, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 6, 14, 6, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 1: 0\n" /* stone */
- "b: 4: 0\n" /* cobblestone */
- "c: 8: 0\n" /* water */
- "d: 3: 0\n" /* dirt */
- "e: 2: 0\n" /* grass */
- "f: 13: 0\n" /* gravel */
- "g:118: 3\n" /* cauldronblock */
- "h: 85: 0\n" /* fence */
- "i: 53: 2\n" /* woodstairs */
- "j: 53: 7\n" /* woodstairs */
- "k: 5: 0\n" /* wood */
- "l: 53: 4\n" /* woodstairs */
- "m: 19: 0\n" /* sponge */
- "n: 53: 5\n" /* woodstairs */
- "o: 53: 6\n" /* woodstairs */
- "p: 53: 3\n" /* woodstairs */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "aaaaaaa"
- /* 1 */ "aaaaaaa"
- /* 2 */ "aaaaaaa"
- /* 3 */ "aaaaaaa"
- /* 4 */ "aaaaaaa"
- /* 5 */ "aaaaaaa"
- /* 6 */ "aaaaaaa"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "aaaaaaa"
- /* 1 */ "abbbbba"
- /* 2 */ "abcccba"
- /* 3 */ "abcccba"
- /* 4 */ "abcccba"
- /* 5 */ "abbbbba"
- /* 6 */ "aaaaaaa"
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "aaaaaaa"
- /* 1 */ "abbbbba"
- /* 2 */ "abcccba"
- /* 3 */ "abcccba"
- /* 4 */ "abcccba"
- /* 5 */ "abbbbba"
- /* 6 */ "aaaaaaa"
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "aaaaaaa"
- /* 1 */ "abbbbba"
- /* 2 */ "abcccba"
- /* 3 */ "abcccba"
- /* 4 */ "abcccba"
- /* 5 */ "abbbbba"
- /* 6 */ "aaaaaaa"
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "aaaaaaa"
- /* 1 */ "abbbbba"
- /* 2 */ "abcccba"
- /* 3 */ "abcccba"
- /* 4 */ "abcccba"
- /* 5 */ "abbbbba"
- /* 6 */ "aaaaaaa"
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "ddddddd"
- /* 1 */ "dbbbbbd"
- /* 2 */ "dbcccbd"
- /* 3 */ "dbcccbd"
- /* 4 */ "dbcccbd"
- /* 5 */ "dbbbbbd"
- /* 6 */ "ddddddd"
-
- // Level 6
- /* z\x* 0123456 */
- /* 0 */ "ddddddd"
- /* 1 */ "dbbbbbd"
- /* 2 */ "dbcccbd"
- /* 3 */ "dbcccbd"
- /* 4 */ "dbcccbd"
- /* 5 */ "dbbbbbd"
- /* 6 */ "ddddddd"
-
- // Level 7
- /* z\x* 0123456 */
- /* 0 */ "ddddddd"
- /* 1 */ "dbbbbbd"
- /* 2 */ "dbcccbd"
- /* 3 */ "dbcccbd"
- /* 4 */ "dbcccbd"
- /* 5 */ "dbbbbbd"
- /* 6 */ "ddddddd"
-
- // Level 8
- /* z\x* 0123456 */
- /* 0 */ "eefffee"
- /* 1 */ "ebbbbbe"
- /* 2 */ "fbcccbf"
- /* 3 */ "fbcccbf"
- /* 4 */ "fbcccbf"
- /* 5 */ "ebbbbbe"
- /* 6 */ "eefffee"
-
- // Level 9
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".bbbbb."
- /* 2 */ ".b...b."
- /* 3 */ ".b.g.b."
- /* 4 */ ".b...b."
- /* 5 */ ".bbbbb."
- /* 6 */ "......."
-
- // Level 10
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".h...h."
- /* 2 */ "......."
- /* 3 */ "...h..."
- /* 4 */ "......."
- /* 5 */ ".h...h."
- /* 6 */ "......."
-
- // Level 11
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".h...h."
- /* 2 */ "......."
- /* 3 */ "...h..."
- /* 4 */ "......."
- /* 5 */ ".h...h."
- /* 6 */ "......."
-
- // Level 12
- /* z\x* 0123456 */
- /* 0 */ "iiiiiii"
- /* 1 */ "jkjjjkj"
- /* 2 */ ".l...n."
- /* 3 */ ".l.h.n."
- /* 4 */ ".l...n."
- /* 5 */ "okoooko"
- /* 6 */ "ppppppp"
-
- // Level 13
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "iiiiiii"
- /* 2 */ "jkjjjkj"
- /* 3 */ ".k.h.k."
- /* 4 */ "okoooko"
- /* 5 */ "ppppppp"
- /* 6 */ "......."
-
- // Level 14
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "......."
- /* 2 */ "iiiiiii"
- /* 3 */ "kkkkkkk"
- /* 4 */ "ppppppp"
- /* 5 */ "......."
- /* 6 */ ".......",
-
- // Connectors:
- "2: 0, 9, 3: 4\n" /* Type 2, direction X- */
- "2: 3, 9, 6: 3\n" /* Type 2, direction Z+ */
- "2: 6, 9, 3: 5\n" /* Type 2, direction X+ */
- "2: 3, 9, 0: 2\n" /* Type 2, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // RoofedWell
-};
-
-
-
-
-
-// The prefab counts:
-
-const size_t g_PlainsVillagePrefabsCount = ARRAYCOUNT(g_PlainsVillagePrefabs);
-
-const size_t g_PlainsVillageStartingPrefabsCount = ARRAYCOUNT(g_PlainsVillageStartingPrefabs);
-
diff --git a/src/Generating/Prefabs/PlainsVillagePrefabs.h b/src/Generating/Prefabs/PlainsVillagePrefabs.h
deleted file mode 100644
index 087783b1e..000000000
--- a/src/Generating/Prefabs/PlainsVillagePrefabs.h
+++ /dev/null
@@ -1,15 +0,0 @@
-
-// PlainsVillagePrefabs.h
-
-// Declares the prefabs in the group PlainsVillage
-
-#include "../Prefab.h"
-
-
-
-
-
-extern const cPrefab::sDef g_PlainsVillagePrefabs[];
-extern const cPrefab::sDef g_PlainsVillageStartingPrefabs[];
-extern const size_t g_PlainsVillagePrefabsCount;
-extern const size_t g_PlainsVillageStartingPrefabsCount;
diff --git a/src/Generating/Prefabs/SandFlatRoofVillagePrefabs.cpp b/src/Generating/Prefabs/SandFlatRoofVillagePrefabs.cpp
deleted file mode 100644
index 3328ee210..000000000
--- a/src/Generating/Prefabs/SandFlatRoofVillagePrefabs.cpp
+++ /dev/null
@@ -1,1669 +0,0 @@
-
-// SandFlatRoofVillagePrefabs.cpp
-
-// Defines the prefabs in the group SandFlatRoofVillage
-
-// NOTE: This file has been generated automatically by GalExport!
-// Any manual changes will be overwritten by the next automatic export!
-
-#include "Globals.h"
-#include "SandFlatRoofVillagePrefabs.h"
-
-
-
-
-
-const cPrefab::sDef g_SandFlatRoofVillagePrefabs[] =
-{
- ////////////////////////////////////////////////////////////////////////////////
- // Forge:
- // The data has been exported from the gallery Desert, area index 32, ID 173, created by Aloe_vera
- {
- // Size:
- 12, 6, 10, // SizeX = 12, SizeY = 6, SizeZ = 10
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 12, 5, 10, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e:128: 3\n" /* sandstonestairs */
- "f:171:15\n" /* carpet */
- "g: 64: 6\n" /* wooddoorblock */
- "h:171: 0\n" /* carpet */
- "i:171:14\n" /* carpet */
- "j: 61: 2\n" /* furnace */
- "k: 10: 0\n" /* lava */
- "l: 54: 2\n" /* chest */
- "m: 19: 0\n" /* sponge */
- "n: 24: 2\n" /* sandstone */
- "o: 64:12\n" /* wooddoorblock */
- "p: 50: 1\n" /* torch */
- "q:101: 0\n" /* ironbars */
- "r:128: 4\n" /* sandstonestairs */
- "s:128: 6\n" /* sandstonestairs */
- "t:128: 5\n" /* sandstonestairs */
- "u:128: 7\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "aaaaaaammmmm"
- /* 1 */ "aaaaaaaaaaam"
- /* 2 */ "aaaaaaaaaaam"
- /* 3 */ "aaaaaaaaaaam"
- /* 4 */ "aaaaaaaaaaam"
- /* 5 */ "aaaaaaaaaaam"
- /* 6 */ "maaaaaaaaaam"
- /* 7 */ "maaaaaaaaaam"
- /* 8 */ "maaaaaaaaaam"
- /* 9 */ "mmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "bcccccd....."
- /* 1 */ "baaaaaaaaaa."
- /* 2 */ "baaaaaaaaaa."
- /* 3 */ "baaaaaaaaaa."
- /* 4 */ "baaaaaaaaaa."
- /* 5 */ "eaaaaaaaaaa."
- /* 6 */ ".aaaaaaaaaa."
- /* 7 */ ".aaaaaaaaaa."
- /* 8 */ ".aaaaaaaaaa."
- /* 9 */ "............"
-
- // Level 2
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ ".a....aaaaa."
- /* 2 */ "......afffa."
- /* 3 */ "......ghfha."
- /* 4 */ "......aiiia."
- /* 5 */ ".a....ahfha."
- /* 6 */ ".ajaajafffa."
- /* 7 */ ".aakkaal..a."
- /* 8 */ ".aaaaaaaaaa."
- /* 9 */ "............"
-
- // Level 3
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ ".n....nn.nn."
- /* 2 */ "......n...n."
- /* 3 */ "......o...n."
- /* 4 */ "......n....."
- /* 5 */ ".n....n...n."
- /* 6 */ ".n....n...n."
- /* 7 */ ".n....n...n."
- /* 8 */ ".nnn.nnn.nn."
- /* 9 */ "............"
-
- // Level 4
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "............"
- /* 1 */ ".a....aaaaa."
- /* 2 */ "......a...a."
- /* 3 */ "......a...a."
- /* 4 */ "......ap..a."
- /* 5 */ ".a....a...a."
- /* 6 */ ".aqqqqa...a."
- /* 7 */ ".a....a...a."
- /* 8 */ ".aaaaaaaaaa."
- /* 9 */ "............"
-
- // Level 5
- /* z\x* 11 */
- /* * 012345678901 */
- /* 0 */ "rsssssssssss"
- /* 1 */ "raaaaaaaaaat"
- /* 2 */ "raaaaaaaaaat"
- /* 3 */ "raaaaaaaaaat"
- /* 4 */ "raaaaaaaaaat"
- /* 5 */ "raaaaaaaaaat"
- /* 6 */ "raaaaaaaaaat"
- /* 7 */ "raaaaaaaaaat"
- /* 8 */ "raaaaaaaaaat"
- /* 9 */ "uuuuuuuuuuut",
-
- // Connectors:
- "-1: 3, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Forge
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House11x7:
- // The data has been exported from the gallery Desert, area index 31, ID 172, created by Aloe_vera
- {
- // Size:
- 13, 6, 9, // SizeX = 13, SizeY = 6, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 13, 5, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:171: 0\n" /* carpet */
- "g:171:15\n" /* carpet */
- "h:171:14\n" /* carpet */
- "i: 24: 2\n" /* sandstone */
- "j: 64:12\n" /* wooddoorblock */
- "k: 50: 3\n" /* torch */
- "l: 50: 1\n" /* torch */
- "m: 19: 0\n" /* sponge */
- "n: 50: 2\n" /* torch */
- "o: 50: 4\n" /* torch */
- "p:128: 4\n" /* sandstonestairs */
- "q:128: 6\n" /* sandstonestairs */
- "r:128: 5\n" /* sandstonestairs */
- "s:128: 7\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "mmaaammmmmmmm"
- /* 1 */ "maaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaam"
- /* 4 */ "maaaaaaaaaaam"
- /* 5 */ "maaaaaaaaaaam"
- /* 6 */ "maaaaaaaaaaam"
- /* 7 */ "maaaaaaaaaaam"
- /* 8 */ "mmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "..bcd........"
- /* 1 */ ".aaaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaaa."
- /* 4 */ ".aaaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaaa."
- /* 6 */ ".aaaaaaaaaaa."
- /* 7 */ ".aaaaaaaaaaa."
- /* 8 */ "............."
-
- // Level 2
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ ".aaeaaaaaaaa."
- /* 2 */ ".affgggggffa."
- /* 3 */ ".afghhhhhgfa."
- /* 4 */ ".afghfffhgfa."
- /* 5 */ ".afghhhhhgfa."
- /* 6 */ ".affgggggffa."
- /* 7 */ ".aaaaaaaaaaa."
- /* 8 */ "............."
-
- // Level 3
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ ".iiji.iii.ii."
- /* 2 */ ".i.........i."
- /* 3 */ ".i.........i."
- /* 4 */ "............."
- /* 5 */ ".i.........i."
- /* 6 */ ".i.........i."
- /* 7 */ ".ii.ii.ii.ii."
- /* 8 */ "............."
-
- // Level 4
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ ".aaaaaaaaaaa."
- /* 2 */ ".a..k..k...a."
- /* 3 */ ".a.........a."
- /* 4 */ ".al.......na."
- /* 5 */ ".a.........a."
- /* 6 */ ".a....o....a."
- /* 7 */ ".aaaaaaaaaaa."
- /* 8 */ "............."
-
- // Level 5
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "pqqqqqqqqqqqq"
- /* 1 */ "paaaaaaaaaaar"
- /* 2 */ "paaaaaaaaaaar"
- /* 3 */ "paaaaaaaaaaar"
- /* 4 */ "paaaaaaaaaaar"
- /* 5 */ "paaaaaaaaaaar"
- /* 6 */ "paaaaaaaaaaar"
- /* 7 */ "paaaaaaaaaaar"
- /* 8 */ "ssssssssssssr",
-
- // Connectors:
- "-1: 3, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House11x7
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House5x4:
- // The data has been exported from the gallery Desert, area index 25, ID 166, created by Aloe_vera
- {
- // Size:
- 7, 6, 6, // SizeX = 7, SizeY = 6, SizeZ = 6
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 7, 5, 6, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:171: 0\n" /* carpet */
- "g:171:14\n" /* carpet */
- "h: 24: 2\n" /* sandstone */
- "i: 64:12\n" /* wooddoorblock */
- "j: 50: 3\n" /* torch */
- "k:128: 4\n" /* sandstonestairs */
- "l:128: 6\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */
- "n:128: 5\n" /* sandstonestairs */
- "o:128: 7\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "mmaaamm"
- /* 1 */ "maaaaam"
- /* 2 */ "maaaaam"
- /* 3 */ "maaaaam"
- /* 4 */ "maaaaam"
- /* 5 */ "mmmmmmm"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "..bcd.."
- /* 1 */ ".aaaaa."
- /* 2 */ ".aaaaa."
- /* 3 */ ".aaaaa."
- /* 4 */ ".aaaaa."
- /* 5 */ "......."
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".aaeaa."
- /* 2 */ ".afgfa."
- /* 3 */ ".afgfa."
- /* 4 */ ".aaaaa."
- /* 5 */ "......."
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".hhihh."
- /* 2 */ ".h...h."
- /* 3 */ ".h...h."
- /* 4 */ ".hh.hh."
- /* 5 */ "......."
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".aaaaa."
- /* 2 */ ".aj.ja."
- /* 3 */ ".a...a."
- /* 4 */ ".aaaaa."
- /* 5 */ "......."
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "kllllln"
- /* 1 */ "kaaaaan"
- /* 2 */ "kaaaaan"
- /* 3 */ "kaaaaan"
- /* 4 */ "kaaaaan"
- /* 5 */ "oooooon",
-
- // Connectors:
- "-1: 3, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House5x4
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House5x5:
- // The data has been exported from the gallery Desert, area index 26, ID 167, created by Aloe_vera
- {
- // Size:
- 7, 6, 7, // SizeX = 7, SizeY = 6, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 7, 5, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:171: 0\n" /* carpet */
- "g:171:15\n" /* carpet */
- "h:171:14\n" /* carpet */
- "i: 24: 2\n" /* sandstone */
- "j: 64:12\n" /* wooddoorblock */
- "k: 50: 3\n" /* torch */
- "l:128: 4\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */
- "n:128: 6\n" /* sandstonestairs */
- "o:128: 5\n" /* sandstonestairs */
- "p:128: 7\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "mmaaamm"
- /* 1 */ "maaaaam"
- /* 2 */ "maaaaam"
- /* 3 */ "maaaaam"
- /* 4 */ "maaaaam"
- /* 5 */ "maaaaam"
- /* 6 */ "mmmmmmm"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "..bcd.."
- /* 1 */ ".aaaaa."
- /* 2 */ ".aaaaa."
- /* 3 */ ".aaaaa."
- /* 4 */ ".aaaaa."
- /* 5 */ ".aaaaa."
- /* 6 */ "......."
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".aaeaa."
- /* 2 */ ".afffa."
- /* 3 */ ".aghga."
- /* 4 */ ".afffa."
- /* 5 */ ".aaaaa."
- /* 6 */ "......."
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".iijii."
- /* 2 */ ".i...i."
- /* 3 */ "......."
- /* 4 */ ".i...i."
- /* 5 */ ".ii.ii."
- /* 6 */ "......."
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".aaaaa."
- /* 2 */ ".ak.ka."
- /* 3 */ ".a...a."
- /* 4 */ ".a...a."
- /* 5 */ ".aaaaa."
- /* 6 */ "......."
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "lnnnnno"
- /* 1 */ "laaaaao"
- /* 2 */ "laaaaao"
- /* 3 */ "laaaaao"
- /* 4 */ "laaaaao"
- /* 5 */ "laaaaao"
- /* 6 */ "ppppppo",
-
- // Connectors:
- "-1: 3, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House5x5
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House7x5:
- // The data has been exported from the gallery Desert, area index 27, ID 168, created by Aloe_vera
- {
- // Size:
- 9, 6, 7, // SizeX = 9, SizeY = 6, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 9, 5, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:171:14\n" /* carpet */
- "g:171: 0\n" /* carpet */
- "h:171:15\n" /* carpet */
- "i: 24: 2\n" /* sandstone */
- "j: 64:12\n" /* wooddoorblock */
- "k: 50: 3\n" /* torch */
- "l:128: 4\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */
- "n:128: 6\n" /* sandstonestairs */
- "o:128: 5\n" /* sandstonestairs */
- "p:128: 7\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* 012345678 */
- /* 0 */ "mmaaammmm"
- /* 1 */ "maaaaaaam"
- /* 2 */ "maaaaaaam"
- /* 3 */ "maaaaaaam"
- /* 4 */ "maaaaaaam"
- /* 5 */ "maaaaaaam"
- /* 6 */ "mmmmmmmmm"
-
- // Level 1
- /* z\x* 012345678 */
- /* 0 */ "..bcd...."
- /* 1 */ ".aaaaaaa."
- /* 2 */ ".aaaaaaa."
- /* 3 */ ".aaaaaaa."
- /* 4 */ ".aaaaaaa."
- /* 5 */ ".aaaaaaa."
- /* 6 */ "........."
-
- // Level 2
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ ".aaeaaaa."
- /* 2 */ ".afffffa."
- /* 3 */ ".aghhhga."
- /* 4 */ ".afffffa."
- /* 5 */ ".aaaaaaa."
- /* 6 */ "........."
-
- // Level 3
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ ".iiji.ii."
- /* 2 */ ".i.....i."
- /* 3 */ "........."
- /* 4 */ ".i.....i."
- /* 5 */ ".iii.iii."
- /* 6 */ "........."
-
- // Level 4
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ ".aaaaaaa."
- /* 2 */ ".ak.k..a."
- /* 3 */ ".a.....a."
- /* 4 */ ".a.....a."
- /* 5 */ ".aaaaaaa."
- /* 6 */ "........."
-
- // Level 5
- /* z\x* 012345678 */
- /* 0 */ "lnnnnnnnn"
- /* 1 */ "laaaaaaao"
- /* 2 */ "laaaaaaao"
- /* 3 */ "laaaaaaao"
- /* 4 */ "laaaaaaao"
- /* 5 */ "laaaaaaao"
- /* 6 */ "ppppppppo",
-
- // Connectors:
- "-1: 3, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House7x5
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House8x5:
- // The data has been exported from the gallery Desert, area index 28, ID 169, created by Aloe_vera
- {
- // Size:
- 10, 6, 7, // SizeX = 10, SizeY = 6, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 10, 5, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:171: 0\n" /* carpet */
- "g:171:14\n" /* carpet */
- "h:171:15\n" /* carpet */
- "i: 24: 2\n" /* sandstone */
- "j: 64:12\n" /* wooddoorblock */
- "k: 50: 3\n" /* torch */
- "l:128: 4\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */
- "n:128: 6\n" /* sandstonestairs */
- "o:128: 5\n" /* sandstonestairs */
- "p:128: 7\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "mmaaammmmm"
- /* 1 */ "maaaaaaaam"
- /* 2 */ "maaaaaaaam"
- /* 3 */ "maaaaaaaam"
- /* 4 */ "maaaaaaaam"
- /* 5 */ "maaaaaaaam"
- /* 6 */ "mmmmmmmmmm"
-
- // Level 1
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "..bcd....."
- /* 1 */ ".aaaaaaaa."
- /* 2 */ ".aaaaaaaa."
- /* 3 */ ".aaaaaaaa."
- /* 4 */ ".aaaaaaaa."
- /* 5 */ ".aaaaaaaa."
- /* 6 */ ".........."
-
- // Level 2
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".........."
- /* 1 */ ".aaeaaaaa."
- /* 2 */ ".afghhgfa."
- /* 3 */ ".afhffhfa."
- /* 4 */ ".afghhgfa."
- /* 5 */ ".aaaaaaaa."
- /* 6 */ ".........."
-
- // Level 3
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".........."
- /* 1 */ ".iijii.ii."
- /* 2 */ ".i......i."
- /* 3 */ ".........."
- /* 4 */ ".i......i."
- /* 5 */ ".ii.ii.ii."
- /* 6 */ ".........."
-
- // Level 4
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".........."
- /* 1 */ ".aaaaaaaa."
- /* 2 */ ".ak.k...a."
- /* 3 */ ".a......a."
- /* 4 */ ".a......a."
- /* 5 */ ".aaaaaaaa."
- /* 6 */ ".........."
-
- // Level 5
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "lnnnnnnnnn"
- /* 1 */ "laaaaaaaao"
- /* 2 */ "laaaaaaaao"
- /* 3 */ "laaaaaaaao"
- /* 4 */ "laaaaaaaao"
- /* 5 */ "laaaaaaaao"
- /* 6 */ "pppppppppo",
-
- // Connectors:
- "-1: 3, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House8x5
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House8x7:
- // The data has been exported from the gallery Desert, area index 29, ID 170, created by Aloe_vera
- {
- // Size:
- 10, 6, 9, // SizeX = 10, SizeY = 6, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 10, 5, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:171: 0\n" /* carpet */
- "g:171:14\n" /* carpet */
- "h:171:15\n" /* carpet */
- "i: 24: 2\n" /* sandstone */
- "j: 64:12\n" /* wooddoorblock */
- "k: 50: 3\n" /* torch */
- "l: 50: 1\n" /* torch */
- "m: 19: 0\n" /* sponge */
- "n: 50: 2\n" /* torch */
- "o:128: 4\n" /* sandstonestairs */
- "p:128: 6\n" /* sandstonestairs */
- "q:128: 5\n" /* sandstonestairs */
- "r:128: 7\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "mmaaammmmm"
- /* 1 */ "maaaaaaaam"
- /* 2 */ "maaaaaaaam"
- /* 3 */ "maaaaaaaam"
- /* 4 */ "maaaaaaaam"
- /* 5 */ "maaaaaaaam"
- /* 6 */ "maaaaaaaam"
- /* 7 */ "maaaaaaaam"
- /* 8 */ "mmmmmmmmmm"
-
- // Level 1
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "..bcd....."
- /* 1 */ ".aaaaaaaa."
- /* 2 */ ".aaaaaaaa."
- /* 3 */ ".aaaaaaaa."
- /* 4 */ ".aaaaaaaa."
- /* 5 */ ".aaaaaaaa."
- /* 6 */ ".aaaaaaaa."
- /* 7 */ ".aaaaaaaa."
- /* 8 */ ".........."
-
- // Level 2
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".........."
- /* 1 */ ".aaeaaaaa."
- /* 2 */ ".afghhgfa."
- /* 3 */ ".afhffhfa."
- /* 4 */ ".afhgghfa."
- /* 5 */ ".afhffhfa."
- /* 6 */ ".afghhgfa."
- /* 7 */ ".aaaaaaaa."
- /* 8 */ ".........."
-
- // Level 3
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".........."
- /* 1 */ ".iijii.ii."
- /* 2 */ ".i......i."
- /* 3 */ ".i......i."
- /* 4 */ ".........."
- /* 5 */ ".i......i."
- /* 6 */ ".i......i."
- /* 7 */ ".ii.ii.ii."
- /* 8 */ ".........."
-
- // Level 4
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ ".........."
- /* 1 */ ".aaaaaaaa."
- /* 2 */ ".a..k...a."
- /* 3 */ ".a......a."
- /* 4 */ ".al....na."
- /* 5 */ ".a......a."
- /* 6 */ ".a......a."
- /* 7 */ ".aaaaaaaa."
- /* 8 */ ".........."
-
- // Level 5
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "oppppppppp"
- /* 1 */ "oaaaaaaaaq"
- /* 2 */ "oaaaaaaaaq"
- /* 3 */ "oaaaaaaaaq"
- /* 4 */ "oaaaaaaaaq"
- /* 5 */ "oaaaaaaaaq"
- /* 6 */ "oaaaaaaaaq"
- /* 7 */ "oaaaaaaaaq"
- /* 8 */ "rrrrrrrrrq",
-
- // Connectors:
- "-1: 3, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House8x7
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House9x7:
- // The data has been exported from the gallery Desert, area index 30, ID 171, created by Aloe_vera
- {
- // Size:
- 11, 6, 9, // SizeX = 11, SizeY = 6, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 11, 5, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:171: 0\n" /* carpet */
- "g:171:15\n" /* carpet */
- "h:171:14\n" /* carpet */
- "i: 24: 2\n" /* sandstone */
- "j: 64:12\n" /* wooddoorblock */
- "k: 50: 3\n" /* torch */
- "l: 50: 1\n" /* torch */
- "m: 19: 0\n" /* sponge */
- "n: 50: 2\n" /* torch */
- "o: 50: 4\n" /* torch */
- "p:128: 4\n" /* sandstonestairs */
- "q:128: 6\n" /* sandstonestairs */
- "r:128: 5\n" /* sandstonestairs */
- "s:128: 7\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmaaammmmmm"
- /* 1 */ "maaaaaaaaam"
- /* 2 */ "maaaaaaaaam"
- /* 3 */ "maaaaaaaaam"
- /* 4 */ "maaaaaaaaam"
- /* 5 */ "maaaaaaaaam"
- /* 6 */ "maaaaaaaaam"
- /* 7 */ "maaaaaaaaam"
- /* 8 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..bcd......"
- /* 1 */ ".aaaaaaaaa."
- /* 2 */ ".aaaaaaaaa."
- /* 3 */ ".aaaaaaaaa."
- /* 4 */ ".aaaaaaaaa."
- /* 5 */ ".aaaaaaaaa."
- /* 6 */ ".aaaaaaaaa."
- /* 7 */ ".aaaaaaaaa."
- /* 8 */ "..........."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".aaeaaaaaa."
- /* 2 */ ".affgggffa."
- /* 3 */ ".afghhhgfa."
- /* 4 */ ".afghfhgfa."
- /* 5 */ ".afghhhgfa."
- /* 6 */ ".affgggffa."
- /* 7 */ ".aaaaaaaaa."
- /* 8 */ "..........."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".iijii.iii."
- /* 2 */ ".i.......i."
- /* 3 */ ".i.......i."
- /* 4 */ "..........."
- /* 5 */ ".i.......i."
- /* 6 */ ".i.......i."
- /* 7 */ ".ii.iii.ii."
- /* 8 */ "..........."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".aaaaaaaaa."
- /* 2 */ ".a..k....a."
- /* 3 */ ".a.......a."
- /* 4 */ ".al.....na."
- /* 5 */ ".a.......a."
- /* 6 */ ".a...o...a."
- /* 7 */ ".aaaaaaaaa."
- /* 8 */ "..........."
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "pqqqqqqqqqq"
- /* 1 */ "paaaaaaaaar"
- /* 2 */ "paaaaaaaaar"
- /* 3 */ "paaaaaaaaar"
- /* 4 */ "paaaaaaaaar"
- /* 5 */ "paaaaaaaaar"
- /* 6 */ "paaaaaaaaar"
- /* 7 */ "paaaaaaaaar"
- /* 8 */ "ssssssssssr",
-
- // Connectors:
- "-1: 3, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House9x7
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // HouseL13x12:
- // The data has been exported from the gallery Desert, area index 53, ID 345, created by jakibaki
- {
- // Size:
- 15, 6, 14, // SizeX = 15, SizeY = 6, SizeZ = 14
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 15, 5, 14, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 43: 1\n" /* doubleslab */
- "f: 64: 7\n" /* wooddoorblock */
- "g:171: 0\n" /* carpet */
- "h:171:15\n" /* carpet */
- "i:171:14\n" /* carpet */
- "j: 58: 0\n" /* workbench */
- "k: 24: 2\n" /* sandstone */
- "l: 64:12\n" /* wooddoorblock */
- "m: 19: 0\n" /* sponge */
- "n: 50: 3\n" /* torch */
- "o: 50: 1\n" /* torch */
- "p: 50: 2\n" /* torch */
- "q: 50: 4\n" /* torch */
- "r:128: 6\n" /* sandstonestairs */
- "s:128: 5\n" /* sandstonestairs */
- "t:128: 4\n" /* sandstonestairs */
- "u:128: 7\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmaaammmmmmmmm"
- /* 1 */ "maaaaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaaaam"
- /* 4 */ "maaaaaaaaaaaaam"
- /* 5 */ "maaaaaaaaaaaaam"
- /* 6 */ "maaaaaaaaaaaaam"
- /* 7 */ "maaaaaaaaaaaaam"
- /* 8 */ "mmmmmmmaaaaaaam"
- /* 9 */ "mmmmmmmaaaaaaam"
- /* 10 */ "mmmmmmmaaaaaaam"
- /* 11 */ "mmmmmmmaaaaaaam"
- /* 12 */ "mmmmmmmaaaaaaam"
- /* 13 */ "mmmmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "...bcd........."
- /* 1 */ ".aaaaaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaaaaa."
- /* 4 */ ".aaaaaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaaaea."
- /* 6 */ ".aaaaaaaaaaaaa."
- /* 7 */ ".aaaaaaaaaaaaa."
- /* 8 */ ".......aeaaaaa."
- /* 9 */ "mmmmmm.aaaaaaa."
- /* 10 */ "mmmmmm.aaaaaaa."
- /* 11 */ "mmmmmm.aaaaaaa."
- /* 12 */ "mmmmmm.aaaaaaa."
- /* 13 */ "..............."
-
- // Level 2
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".aaafaaaaaaaaa."
- /* 2 */ ".agghhhhhhhhga."
- /* 3 */ ".aghiiiiiiiiha."
- /* 4 */ ".aghiggggggiha."
- /* 5 */ ".aghiiiiiigiha."
- /* 6 */ ".agghhhhhigiha."
- /* 7 */ ".aaaaaaahigiha."
- /* 8 */ ".......ahigiha."
- /* 9 */ "mmmmmm.ahiiiha."
- /* 10 */ "mmmmmm.aghhhga."
- /* 11 */ "mmmmmm.aggggja."
- /* 12 */ "mmmmmm.aaaaaaa."
- /* 13 */ "..............."
-
- // Level 3
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".kkklkkkk.kkkk."
- /* 2 */ ".k...........k."
- /* 3 */ ".k...........k."
- /* 4 */ "..............."
- /* 5 */ ".k...........k."
- /* 6 */ ".k...........k."
- /* 7 */ ".kkk.kkk.....k."
- /* 8 */ ".......k.....k."
- /* 9 */ "mmmmmm.k......."
- /* 10 */ "mmmmmm.......k."
- /* 11 */ "mmmmmm.k.....k."
- /* 12 */ "mmmmmm.kkk.kkk."
- /* 13 */ "..............."
-
- // Level 4
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".aaaaaaaaaaaaa."
- /* 2 */ ".a......n....a."
- /* 3 */ ".a...........a."
- /* 4 */ ".ao..........a."
- /* 5 */ ".a...........a."
- /* 6 */ ".a..........pa."
- /* 7 */ ".aaaaaaa.....a."
- /* 8 */ ".......a.....a."
- /* 9 */ "mmmmmm.a.....a."
- /* 10 */ "mmmmmm.a.....a."
- /* 11 */ "mmmmmm.a..q..a."
- /* 12 */ "mmmmmm.aaaaaaa."
- /* 13 */ "..............."
-
- // Level 5
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "rrrrrrrrrrrrrrs"
- /* 1 */ "taaaaaaaaaaaaas"
- /* 2 */ "taaaaaaaaaaaaas"
- /* 3 */ "taaaaaaaaaaaaas"
- /* 4 */ "taaaaaaaaaaaaas"
- /* 5 */ "taaaaaaaaaaaaas"
- /* 6 */ "taaaaaaaaaaaaas"
- /* 7 */ "taaaaaaaaaaaaas"
- /* 8 */ "tuuuuutaaaaaaas"
- /* 9 */ "mmmmmmtaaaaaaas"
- /* 10 */ "mmmmmmtaaaaaaas"
- /* 11 */ "mmmmmmtaaaaaaas"
- /* 12 */ "mmmmmmtaaaaaaas"
- /* 13 */ "......tuuuuuuuu",
-
- // Connectors:
- "-1: 4, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // HouseL13x12
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // MarketStall:
- // The data has been exported from the gallery Desert, area index 34, ID 175, created by Aloe_vera
- {
- // Size:
- 7, 6, 7, // SizeX = 7, SizeY = 6, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 7, 5, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 12: 0\n" /* sand */
- "b: 85: 0\n" /* fence */
- "c:171:14\n" /* carpet */
- "d:171:15\n" /* carpet */
- "e:171: 0\n" /* carpet */
- "f: 35:14\n" /* wool */
- "g: 35: 0\n" /* wool */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "aaaaaaa"
- /* 1 */ "aaaaaaa"
- /* 2 */ "aaaaaaa"
- /* 3 */ "aaaaaaa"
- /* 4 */ "aaaaaaa"
- /* 5 */ "aaaaaaa"
- /* 6 */ "aaaaaaa"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "b.....b"
- /* 1 */ "cddeddc"
- /* 2 */ "cdeeedc"
- /* 3 */ "cdeeedc"
- /* 4 */ "cddeddc"
- /* 5 */ "b.....b"
- /* 6 */ "......."
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "b.....b"
- /* 1 */ "......."
- /* 2 */ "......."
- /* 3 */ "......."
- /* 4 */ "......."
- /* 5 */ "b.....b"
- /* 6 */ "......."
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "b.....b"
- /* 1 */ "......."
- /* 2 */ "......."
- /* 3 */ "......."
- /* 4 */ "......."
- /* 5 */ "b.....b"
- /* 6 */ "fgfgfgf"
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "fgfgfgf"
- /* 1 */ "......."
- /* 2 */ "......."
- /* 3 */ "......."
- /* 4 */ "......."
- /* 5 */ "fgfgfgf"
- /* 6 */ "......."
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "fgfgfgf"
- /* 2 */ "fgfgfgf"
- /* 3 */ "fgfgfgf"
- /* 4 */ "fgfgfgf"
- /* 5 */ "......."
- /* 6 */ ".......",
-
- // Connectors:
- "-1: 2, 0, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 5,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // MarketStall
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // Marketplace:
- // The data has been exported from the gallery Desert, area index 38, ID 261, created by Aloe_vera
- {
- // Size:
- 14, 4, 16, // SizeX = 14, SizeY = 4, SizeZ = 16
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 14, 3, 16, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b: 12: 0\n" /* sand */
- "c: 24: 2\n" /* sandstone */
- "d: 12: 2\n" /* sand */
- "e: 85: 0\n" /* fence */
- "f: 5: 0\n" /* wood */
- "g:128: 2\n" /* sandstonestairs */
- "h:128: 0\n" /* sandstonestairs */
- "i: 8: 0\n" /* water */
- "j:128: 1\n" /* sandstonestairs */
- "k:128: 3\n" /* sandstonestairs */
- "l: 35: 0\n" /* wool */
- "m: 19: 0\n" /* sponge */
- "n: 35:14\n" /* wool */,
-
- // Block data:
- // Level 0
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ "aaaabbbaaabbbb"
- /* 1 */ "aaaabbaabbabbb"
- /* 2 */ "aababbabcabbbb"
- /* 3 */ "aaaaabaaaaabbb"
- /* 4 */ "bbbbbbbbbbbbbb"
- /* 5 */ "bbbbbbbbbbaabb"
- /* 6 */ "bbbbccccbbabab"
- /* 7 */ "ccbbccccbbaaab"
- /* 8 */ "ccbbccccbbabbb"
- /* 9 */ "dcbbccccbbabaa"
- /* 10 */ "ccbbbbbbbbaaba"
- /* 11 */ "ccbbbbbbbbabaa"
- /* 12 */ "bbbbbbbbbbabaa"
- /* 13 */ "bbbaababbbaaba"
- /* 14 */ "bbbcaaaabbabbb"
- /* 15 */ "bbbcccabbbabbb"
-
- // Level 1
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ "e...e.e...e..."
- /* 1 */ ".............."
- /* 2 */ ".............."
- /* 3 */ "fffff.fffff..."
- /* 4 */ ".............."
- /* 5 */ "..........f..e"
- /* 6 */ "....gggg..f..."
- /* 7 */ ".f..hiij..f..."
- /* 8 */ ".f..hiij..f..."
- /* 9 */ ".f..kkkk..f..e"
- /* 10 */ ".f............"
- /* 11 */ ".f........f..e"
- /* 12 */ "...fffff..f..."
- /* 13 */ "..........f..."
- /* 14 */ "..........f..."
- /* 15 */ "...e...e..f..e"
-
- // Level 2
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ "lnlnl.lnlnl..."
- /* 1 */ ".............."
- /* 2 */ ".............."
- /* 3 */ "e...e.e...e..."
- /* 4 */ ".............."
- /* 5 */ "..........e..l"
- /* 6 */ ".............n"
- /* 7 */ ".e...........l"
- /* 8 */ ".............n"
- /* 9 */ "..........e..l"
- /* 10 */ ".............."
- /* 11 */ ".e........e..l"
- /* 12 */ "...e...e.....n"
- /* 13 */ ".............l"
- /* 14 */ ".............n"
- /* 15 */ "...lnlnl..e..l"
-
- // Level 3
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ ".............."
- /* 1 */ "lnlnl.lnlnl..."
- /* 2 */ "lnlnl.lnlnl..."
- /* 3 */ "lnlnl.lnlnl..."
- /* 4 */ ".............."
- /* 5 */ "..........lll."
- /* 6 */ "..........nnn."
- /* 7 */ "ll........lll."
- /* 8 */ "nn........nnn."
- /* 9 */ "ll........lll."
- /* 10 */ "nn............"
- /* 11 */ "ll........lll."
- /* 12 */ "...lnlnl..nnn."
- /* 13 */ "...lnlnl..lll."
- /* 14 */ "...lnlnl..nnn."
- /* 15 */ "..........lll.",
-
- // Connectors:
- "-1: 5, 0, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 20,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Marketplace
-}; // g_SandFlatRoofVillagePrefabs
-
-
-
-
-
-
-const cPrefab::sDef g_SandFlatRoofVillageStartingPrefabs[] =
-{
- ////////////////////////////////////////////////////////////////////////////////
- // Well:
- // The data has been exported from the gallery Desert, area index 44, ID 275, created by Aloe_vera
- {
- // Size:
- 5, 16, 5, // SizeX = 5, SizeY = 16, SizeZ = 5
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 4, 15, 4, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 1: 0\n" /* stone */
- "b: 24: 0\n" /* sandstone */
- "c: 8: 0\n" /* water */
- "d:128: 2\n" /* sandstonestairs */
- "e:128: 0\n" /* sandstonestairs */
- "f:128: 1\n" /* sandstonestairs */
- "g:128: 3\n" /* sandstonestairs */
- "h:128: 6\n" /* sandstonestairs */
- "i:128: 4\n" /* sandstonestairs */
- "j:128: 5\n" /* sandstonestairs */
- "k:128: 7\n" /* sandstonestairs */
- "l: 44: 1\n" /* step */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 01234 */
- /* 0 */ "aaaaa"
- /* 1 */ "abbba"
- /* 2 */ "abbba"
- /* 3 */ "abbba"
- /* 4 */ "aaaaa"
-
- // Level 1
- /* z\x* 01234 */
- /* 0 */ "bbbbb"
- /* 1 */ "bcccb"
- /* 2 */ "bcccb"
- /* 3 */ "bcccb"
- /* 4 */ "bbbbb"
-
- // Level 2
- /* z\x* 01234 */
- /* 0 */ "bbbbb"
- /* 1 */ "bcccb"
- /* 2 */ "bcccb"
- /* 3 */ "bcccb"
- /* 4 */ "bbbbb"
-
- // Level 3
- /* z\x* 01234 */
- /* 0 */ "bbbbb"
- /* 1 */ "bcccb"
- /* 2 */ "bcccb"
- /* 3 */ "bcccb"
- /* 4 */ "bbbbb"
-
- // Level 4
- /* z\x* 01234 */
- /* 0 */ "bbbbb"
- /* 1 */ "bcccb"
- /* 2 */ "bcccb"
- /* 3 */ "bcccb"
- /* 4 */ "bbbbb"
-
- // Level 5
- /* z\x* 01234 */
- /* 0 */ "bbbbb"
- /* 1 */ "bcccb"
- /* 2 */ "bcccb"
- /* 3 */ "bcccb"
- /* 4 */ "bbbbb"
-
- // Level 6
- /* z\x* 01234 */
- /* 0 */ "bbbbb"
- /* 1 */ "bcccb"
- /* 2 */ "bcccb"
- /* 3 */ "bcccb"
- /* 4 */ "bbbbb"
-
- // Level 7
- /* z\x* 01234 */
- /* 0 */ "bbbbb"
- /* 1 */ "bcccb"
- /* 2 */ "bcccb"
- /* 3 */ "bcccb"
- /* 4 */ "bbbbb"
-
- // Level 8
- /* z\x* 01234 */
- /* 0 */ "bbbbb"
- /* 1 */ "bcbcb"
- /* 2 */ "bbcbb"
- /* 3 */ "bcbcb"
- /* 4 */ "bbbbb"
-
- // Level 9
- /* z\x* 01234 */
- /* 0 */ "bbbbb"
- /* 1 */ "bcbcb"
- /* 2 */ "bbbbb"
- /* 3 */ "bcbcb"
- /* 4 */ "bbbbb"
-
- // Level 10
- /* z\x* 01234 */
- /* 0 */ "bbbbb"
- /* 1 */ "bcbcb"
- /* 2 */ "bbbbb"
- /* 3 */ "bcbcb"
- /* 4 */ "bbbbb"
-
- // Level 11
- /* z\x* 01234 */
- /* 0 */ "ddddd"
- /* 1 */ "ecccf"
- /* 2 */ "ecbcf"
- /* 3 */ "ecccf"
- /* 4 */ "ggggf"
-
- // Level 12
- /* z\x* 01234 */
- /* 0 */ "....."
- /* 1 */ "....."
- /* 2 */ "..b.."
- /* 3 */ "....."
- /* 4 */ "....."
-
- // Level 13
- /* z\x* 01234 */
- /* 0 */ "....."
- /* 1 */ "....."
- /* 2 */ "..b.."
- /* 3 */ "....."
- /* 4 */ "....."
-
- // Level 14
- /* z\x* 01234 */
- /* 0 */ "....."
- /* 1 */ ".hhh."
- /* 2 */ ".ibj."
- /* 3 */ ".kkj."
- /* 4 */ "....."
-
- // Level 15
- /* z\x* 01234 */
- /* 0 */ "lllll"
- /* 1 */ "lllll"
- /* 2 */ "lllll"
- /* 3 */ "lllll"
- /* 4 */ "lllll",
-
- // Connectors:
- "2: 4, 11, 2: 5\n" /* Type 2, direction X+ */
- "2: 2, 11, 4: 3\n" /* Type 2, direction Z+ */
- "2: 0, 11, 2: 4\n" /* Type 2, direction X- */
- "2: 2, 11, 0: 2\n" /* Type 2, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Well
-};
-
-
-
-
-
-// The prefab counts:
-
-const size_t g_SandFlatRoofVillagePrefabsCount = ARRAYCOUNT(g_SandFlatRoofVillagePrefabs);
-
-const size_t g_SandFlatRoofVillageStartingPrefabsCount = ARRAYCOUNT(g_SandFlatRoofVillageStartingPrefabs);
-
diff --git a/src/Generating/Prefabs/SandFlatRoofVillagePrefabs.h b/src/Generating/Prefabs/SandFlatRoofVillagePrefabs.h
deleted file mode 100644
index ea06de5b5..000000000
--- a/src/Generating/Prefabs/SandFlatRoofVillagePrefabs.h
+++ /dev/null
@@ -1,15 +0,0 @@
-
-// SandFlatRoofVillagePrefabs.h
-
-// Declares the prefabs in the group SandFlatRoofVillage
-
-#include "../Prefab.h"
-
-
-
-
-
-extern const cPrefab::sDef g_SandFlatRoofVillagePrefabs[];
-extern const cPrefab::sDef g_SandFlatRoofVillageStartingPrefabs[];
-extern const size_t g_SandFlatRoofVillagePrefabsCount;
-extern const size_t g_SandFlatRoofVillageStartingPrefabsCount;
diff --git a/src/Generating/Prefabs/SandVillagePrefabs.cpp b/src/Generating/Prefabs/SandVillagePrefabs.cpp
deleted file mode 100644
index c63f8161b..000000000
--- a/src/Generating/Prefabs/SandVillagePrefabs.cpp
+++ /dev/null
@@ -1,2307 +0,0 @@
-
-// SandVillagePrefabs.cpp
-
-// Defines the prefabs in the group SandVillage
-
-// NOTE: This file has been generated automatically by GalExport!
-// Any manual changes will be overwritten by the next automatic export!
-
-#include "Globals.h"
-#include "SandVillagePrefabs.h"
-
-
-
-
-
-const cPrefab::sDef g_SandVillagePrefabs[] =
-{
- ////////////////////////////////////////////////////////////////////////////////
- // DoubleField:
- // The data has been exported from the gallery Desert, area index 5, ID 75, created by tonibm1999
- {
- // Size:
- 13, 3, 9, // SizeX = 13, SizeY = 3, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, -1, // MinX, MinY, MinZ
- 13, 2, 8, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b: 60: 7\n" /* tilleddirt */
- "c: 8: 0\n" /* water */
- "d: 50: 5\n" /* torch */
- "e: 59: 7\n" /* crops */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "aaaaaaaaaaaaa"
- /* 1 */ "aaaaaaaaaaaaa"
- /* 2 */ "aaaaaaaaaaaaa"
- /* 3 */ "aaaaaaaaaaaaa"
- /* 4 */ "aaaaaaaaaaaaa"
- /* 5 */ "aaaaaaaaaaaaa"
- /* 6 */ "aaaaaaaaaaaaa"
- /* 7 */ "aaaaaaaaaaaaa"
- /* 8 */ "aaaaaaaaaaaaa"
-
- // Level 1
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "aaaaaaaaaaaaa"
- /* 1 */ "abbcbbabbcbba"
- /* 2 */ "abbcbbabbcbba"
- /* 3 */ "abbcbbabbcbba"
- /* 4 */ "abbcbbabbcbba"
- /* 5 */ "abbcbbabbcbba"
- /* 6 */ "abbcbbabbcbba"
- /* 7 */ "abbcbbabbcbba"
- /* 8 */ "aaaaaaaaaaaaa"
-
- // Level 2
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "d.....d.....d"
- /* 1 */ ".ee.ee.ee.ee."
- /* 2 */ ".ee.ee.ee.ee."
- /* 3 */ ".ee.ee.ee.ee."
- /* 4 */ ".ee.ee.ee.ee."
- /* 5 */ ".ee.ee.ee.ee."
- /* 6 */ ".ee.ee.ee.ee."
- /* 7 */ ".ee.ee.ee.ee."
- /* 8 */ "d.....d.....d",
-
- // Connectors:
- "-1: 6, 1, 8: 3\n" /* Type -1, direction Z+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // DoubleField
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House11x7:
- // The data has been exported from the gallery Desert, area index 6, ID 81, created by Aloe_vera
- {
- // Size:
- 11, 7, 7, // SizeX = 11, SizeY = 7, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 11, 6, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:102: 0\n" /* glasspane */
- "g: 64:12\n" /* wooddoorblock */
- "h:128: 7\n" /* sandstonestairs */
- "i: 50: 3\n" /* torch */
- "j: 50: 4\n" /* torch */
- "k:128: 6\n" /* sandstonestairs */
- "l:128: 3\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */
- "n: 50: 1\n" /* torch */
- "o: 50: 2\n" /* torch */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmaaammmm"
- /* 1 */ "maaaaaaaaam"
- /* 2 */ "maaaaaaaaam"
- /* 3 */ "maaaaaaaaam"
- /* 4 */ "maaaaaaaaam"
- /* 5 */ "maaaaaaaaam"
- /* 6 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "....bcd...."
- /* 1 */ ".aaaaaaaaa."
- /* 2 */ ".aaaaaaaaa."
- /* 3 */ ".aaaaaaaaa."
- /* 4 */ ".aaaaaaaaa."
- /* 5 */ ".aaaaaaaaa."
- /* 6 */ "..........."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".aaaaeaaaa."
- /* 2 */ ".a.......a."
- /* 3 */ ".a.......a."
- /* 4 */ ".a.......a."
- /* 5 */ ".aaaaaaaaa."
- /* 6 */ "..........."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".affagaffa."
- /* 2 */ ".f.......f."
- /* 3 */ ".f.......f."
- /* 4 */ ".f.......f."
- /* 5 */ ".affafaffa."
- /* 6 */ "..........."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "ccccccccccc"
- /* 1 */ "haaaaaaaaah"
- /* 2 */ ".a..i.i..a."
- /* 3 */ ".a.......a."
- /* 4 */ ".a..j.j..a."
- /* 5 */ "kaaaaaaaaak"
- /* 6 */ "lllllllllll"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "ccccccccccc"
- /* 2 */ "haaaaaaaaah"
- /* 3 */ ".an.....oa."
- /* 4 */ "kaaaaaaaaak"
- /* 5 */ "lllllllllll"
- /* 6 */ "..........."
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "ccccccccccc"
- /* 3 */ "aaaaaaaaaaa"
- /* 4 */ "lllllllllll"
- /* 5 */ "..........."
- /* 6 */ "...........",
-
- // Connectors:
- "-1: 5, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House11x7
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House11x9:
- // The data has been exported from the gallery Desert, area index 11, ID 115, created by xoft
- {
- // Size:
- 11, 8, 9, // SizeX = 11, SizeY = 8, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 11, 7, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:102: 0\n" /* glasspane */
- "g: 64:12\n" /* wooddoorblock */
- "h:128: 7\n" /* sandstonestairs */
- "i: 50: 3\n" /* torch */
- "j: 50: 4\n" /* torch */
- "k:128: 6\n" /* sandstonestairs */
- "l:128: 3\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "mmmmaaammmm"
- /* 1 */ "maaaaaaaaam"
- /* 2 */ "maaaaaaaaam"
- /* 3 */ "maaaaaaaaam"
- /* 4 */ "maaaaaaaaam"
- /* 5 */ "maaaaaaaaam"
- /* 6 */ "maaaaaaaaam"
- /* 7 */ "maaaaaaaaam"
- /* 8 */ "mmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "....bcd...."
- /* 1 */ ".aaaaaaaaa."
- /* 2 */ ".aaaaaaaaa."
- /* 3 */ ".aaaaaaaaa."
- /* 4 */ ".aaaaaaaaa."
- /* 5 */ ".aaaaaaaaa."
- /* 6 */ ".aaaaaaaaa."
- /* 7 */ ".aaaaaaaaa."
- /* 8 */ "..........."
-
- // Level 2
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".aaaaeaaaa."
- /* 2 */ ".a.......a."
- /* 3 */ ".a.......a."
- /* 4 */ ".a.......a."
- /* 5 */ ".a.......a."
- /* 6 */ ".a.......a."
- /* 7 */ ".aaaaaaaaa."
- /* 8 */ "..........."
-
- // Level 3
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ ".affagaffa."
- /* 2 */ ".f.......f."
- /* 3 */ ".f.......f."
- /* 4 */ ".a.......a."
- /* 5 */ ".f.......f."
- /* 6 */ ".f.......f."
- /* 7 */ ".afffafffa."
- /* 8 */ "..........."
-
- // Level 4
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "ccccccccccc"
- /* 1 */ "haaaaaaaaah"
- /* 2 */ ".a..i.i..a."
- /* 3 */ ".a.......a."
- /* 4 */ ".a.......a."
- /* 5 */ ".a.......a."
- /* 6 */ ".a...j...a."
- /* 7 */ "kaaaaaaaaak"
- /* 8 */ "lllllllllll"
-
- // Level 5
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "ccccccccccc"
- /* 2 */ "haaaaaaaaah"
- /* 3 */ ".a.......a."
- /* 4 */ ".a.......a."
- /* 5 */ ".a.......a."
- /* 6 */ "kaaaaaaaaak"
- /* 7 */ "lllllllllll"
- /* 8 */ "..........."
-
- // Level 6
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "ccccccccccc"
- /* 3 */ "haaaaaaaaah"
- /* 4 */ ".a.......a."
- /* 5 */ "kaaaaaaaaak"
- /* 6 */ "lllllllllll"
- /* 7 */ "..........."
- /* 8 */ "..........."
-
- // Level 7
- /* z\x* 1 */
- /* * 01234567890 */
- /* 0 */ "..........."
- /* 1 */ "..........."
- /* 2 */ "..........."
- /* 3 */ "ccccccccccc"
- /* 4 */ "aaaaaaaaaaa"
- /* 5 */ "lllllllllll"
- /* 6 */ "..........."
- /* 7 */ "..........."
- /* 8 */ "...........",
-
- // Connectors:
- "-1: 5, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House11x9
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House13x7:
- // The data has been exported from the gallery Desert, area index 15, ID 125, created by Aloe_vera
- {
- // Size:
- 13, 7, 7, // SizeX = 13, SizeY = 7, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 13, 6, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:102: 0\n" /* glasspane */
- "g: 64:12\n" /* wooddoorblock */
- "h:128: 7\n" /* sandstonestairs */
- "i: 50: 3\n" /* torch */
- "j: 50: 4\n" /* torch */
- "k:128: 6\n" /* sandstonestairs */
- "l:128: 3\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "mmmmmaaammmmm"
- /* 1 */ "maaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaam"
- /* 4 */ "maaaaaaaaaaam"
- /* 5 */ "maaaaaaaaaaam"
- /* 6 */ "mmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ ".....bcd....."
- /* 1 */ ".aaaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaaa."
- /* 4 */ ".aaaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaaa."
- /* 6 */ "............."
-
- // Level 2
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ ".aaaaaeaaaaa."
- /* 2 */ ".a.........a."
- /* 3 */ ".a.........a."
- /* 4 */ ".a.........a."
- /* 5 */ ".aaaaaaaaaaa."
- /* 6 */ "............."
-
- // Level 3
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ ".afffagafffa."
- /* 2 */ ".f.........f."
- /* 3 */ ".f.........f."
- /* 4 */ ".f.........f."
- /* 5 */ ".affafffaffa."
- /* 6 */ "............."
-
- // Level 4
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "ccccccccccccc"
- /* 1 */ "haaaaaaaaaaah"
- /* 2 */ ".a...i.i...a."
- /* 3 */ ".a.........a."
- /* 4 */ ".a..j...j..a."
- /* 5 */ "kaaaaaaaaaaak"
- /* 6 */ "lllllllllllll"
-
- // Level 5
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "ccccccccccccc"
- /* 2 */ "haaaaaaaaaaah"
- /* 3 */ ".a.........a."
- /* 4 */ "kaaaaaaaaaaak"
- /* 5 */ "lllllllllllll"
- /* 6 */ "............."
-
- // Level 6
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "............."
- /* 2 */ "ccccccccccccc"
- /* 3 */ "aaaaaaaaaaaaa"
- /* 4 */ "lllllllllllll"
- /* 5 */ "............."
- /* 6 */ ".............",
-
- // Connectors:
- "-1: 6, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House13x7
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House13x9:
- // The data has been exported from the gallery Desert, area index 12, ID 116, created by xoft
- {
- // Size:
- 13, 8, 9, // SizeX = 13, SizeY = 8, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 13, 7, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:102: 0\n" /* glasspane */
- "g: 64:12\n" /* wooddoorblock */
- "h:128: 7\n" /* sandstonestairs */
- "i: 50: 3\n" /* torch */
- "j: 50: 4\n" /* torch */
- "k:128: 6\n" /* sandstonestairs */
- "l:128: 3\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "mmmmmaaammmmm"
- /* 1 */ "maaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaam"
- /* 4 */ "maaaaaaaaaaam"
- /* 5 */ "maaaaaaaaaaam"
- /* 6 */ "maaaaaaaaaaam"
- /* 7 */ "maaaaaaaaaaam"
- /* 8 */ "mmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ ".....bcd....."
- /* 1 */ ".aaaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaaa."
- /* 4 */ ".aaaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaaa."
- /* 6 */ ".aaaaaaaaaaa."
- /* 7 */ ".aaaaaaaaaaa."
- /* 8 */ "............."
-
- // Level 2
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ ".aaaaaeaaaaa."
- /* 2 */ ".a.........a."
- /* 3 */ ".a.........a."
- /* 4 */ ".a.........a."
- /* 5 */ ".a.........a."
- /* 6 */ ".a.........a."
- /* 7 */ ".aaaaaaaaaaa."
- /* 8 */ "............."
-
- // Level 3
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ ".afffagafffa."
- /* 2 */ ".f.........f."
- /* 3 */ ".f.........f."
- /* 4 */ ".a.........a."
- /* 5 */ ".f.........f."
- /* 6 */ ".f.........f."
- /* 7 */ ".affaffafffa."
- /* 8 */ "............."
-
- // Level 4
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "ccccccccccccc"
- /* 1 */ "haaaaaaaaaaah"
- /* 2 */ ".a...i.i...a."
- /* 3 */ ".a.........a."
- /* 4 */ ".a.........a."
- /* 5 */ ".a.........a."
- /* 6 */ ".a..j..j...a."
- /* 7 */ "kaaaaaaaaaaak"
- /* 8 */ "lllllllllllll"
-
- // Level 5
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "ccccccccccccc"
- /* 2 */ "haaaaaaaaaaah"
- /* 3 */ ".a.........a."
- /* 4 */ ".a.........a."
- /* 5 */ ".a.........a."
- /* 6 */ "kaaaaaaaaaaak"
- /* 7 */ "lllllllllllll"
- /* 8 */ "............."
-
- // Level 6
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "............."
- /* 2 */ "ccccccccccccc"
- /* 3 */ "haaaaaaaaaaah"
- /* 4 */ ".a.........a."
- /* 5 */ "kaaaaaaaaaaak"
- /* 6 */ "lllllllllllll"
- /* 7 */ "............."
- /* 8 */ "............."
-
- // Level 7
- /* z\x* 111 */
- /* * 0123456789012 */
- /* 0 */ "............."
- /* 1 */ "............."
- /* 2 */ "............."
- /* 3 */ "ccccccccccccc"
- /* 4 */ "aaaaaaaaaaaaa"
- /* 5 */ "lllllllllllll"
- /* 6 */ "............."
- /* 7 */ "............."
- /* 8 */ ".............",
-
- // Connectors:
- "-1: 6, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House13x9
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House15x9:
- // The data has been exported from the gallery Desert, area index 13, ID 118, created by xoft
- {
- // Size:
- 15, 8, 9, // SizeX = 15, SizeY = 8, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 15, 7, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:102: 0\n" /* glasspane */
- "g: 64:12\n" /* wooddoorblock */
- "h:128: 7\n" /* sandstonestairs */
- "i: 50: 3\n" /* torch */
- "j: 50: 4\n" /* torch */
- "k:128: 6\n" /* sandstonestairs */
- "l:128: 3\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "mmmmmaaammmmmmm"
- /* 1 */ "maaaaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaaaam"
- /* 4 */ "maaaaaaaaaaaaam"
- /* 5 */ "maaaaaaaaaaaaam"
- /* 6 */ "maaaaaaaaaaaaam"
- /* 7 */ "maaaaaaaaaaaaam"
- /* 8 */ "mmmmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ ".....bcd......."
- /* 1 */ ".aaaaaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaaaaa."
- /* 4 */ ".aaaaaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaaaaa."
- /* 6 */ ".aaaaaaaaaaaaa."
- /* 7 */ ".aaaaaaaaaaaaa."
- /* 8 */ "..............."
-
- // Level 2
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".aaaaaeaaaaaaa."
- /* 2 */ ".a...........a."
- /* 3 */ ".a...........a."
- /* 4 */ ".a...........a."
- /* 5 */ ".a...........a."
- /* 6 */ ".a...........a."
- /* 7 */ ".aaaaaaaaaaaaa."
- /* 8 */ "..............."
-
- // Level 3
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ ".afffagaffaffa."
- /* 2 */ ".f...........f."
- /* 3 */ ".f...........f."
- /* 4 */ ".a...........a."
- /* 5 */ ".f...........f."
- /* 6 */ ".f...........f."
- /* 7 */ ".affaffaffaffa."
- /* 8 */ "..............."
-
- // Level 4
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "ccccccccccccccc"
- /* 1 */ "haaaaaaaaaaaaah"
- /* 2 */ ".a...i.i..i..a."
- /* 3 */ ".a...........a."
- /* 4 */ ".a...........a."
- /* 5 */ ".a...........a."
- /* 6 */ ".a..j..j..j..a."
- /* 7 */ "kaaaaaaaaaaaaak"
- /* 8 */ "lllllllllllllll"
-
- // Level 5
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "ccccccccccccccc"
- /* 2 */ "haaaaaaaaaaaaah"
- /* 3 */ ".a...........a."
- /* 4 */ ".a...........a."
- /* 5 */ ".a...........a."
- /* 6 */ "kaaaaaaaaaaaaak"
- /* 7 */ "lllllllllllllll"
- /* 8 */ "..............."
-
- // Level 6
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "ccccccccccccccc"
- /* 3 */ "haaaaaaaaaaaaah"
- /* 4 */ ".a...........a."
- /* 5 */ "kaaaaaaaaaaaaak"
- /* 6 */ "lllllllllllllll"
- /* 7 */ "..............."
- /* 8 */ "..............."
-
- // Level 7
- /* z\x* 11111 */
- /* * 012345678901234 */
- /* 0 */ "..............."
- /* 1 */ "..............."
- /* 2 */ "..............."
- /* 3 */ "ccccccccccccccc"
- /* 4 */ "aaaaaaaaaaaaaaa"
- /* 5 */ "lllllllllllllll"
- /* 6 */ "..............."
- /* 7 */ "..............."
- /* 8 */ "...............",
-
- // Connectors:
- "-1: 6, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House15x9
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House16x9:
- // The data has been exported from the gallery Desert, area index 16, ID 126, created by Aloe_vera
- {
- // Size:
- 16, 8, 9, // SizeX = 16, SizeY = 8, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 16, 7, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:102: 0\n" /* glasspane */
- "g: 64:12\n" /* wooddoorblock */
- "h:128: 7\n" /* sandstonestairs */
- "i: 50: 3\n" /* torch */
- "j: 50: 4\n" /* torch */
- "k:128: 6\n" /* sandstonestairs */
- "l:128: 3\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "mmmmmmmmaaammmmm"
- /* 1 */ "maaaaaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaaaaam"
- /* 4 */ "maaaaaaaaaaaaaam"
- /* 5 */ "maaaaaaaaaaaaaam"
- /* 6 */ "maaaaaaaaaaaaaam"
- /* 7 */ "maaaaaaaaaaaaaam"
- /* 8 */ "mmmmmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "........bcd....."
- /* 1 */ ".aaaaaaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaaaaaa."
- /* 4 */ ".aaaaaaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaaaaaa."
- /* 6 */ ".aaaaaaaaaaaaaa."
- /* 7 */ ".aaaaaaaaaaaaaa."
- /* 8 */ "................"
-
- // Level 2
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ ".aaaaaaaaeaaaaa."
- /* 2 */ ".a............a."
- /* 3 */ ".a............a."
- /* 4 */ ".a............a."
- /* 5 */ ".a............a."
- /* 6 */ ".a............a."
- /* 7 */ ".aaaaaaaaaaaaaa."
- /* 8 */ "................"
-
- // Level 3
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ ".affafffagafffa."
- /* 2 */ ".f............f."
- /* 3 */ ".f............f."
- /* 4 */ ".a............a."
- /* 5 */ ".f............f."
- /* 6 */ ".f............f."
- /* 7 */ ".affaffafffaffa."
- /* 8 */ "................"
-
- // Level 4
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "cccccccccccccccc"
- /* 1 */ "haaaaaaaaaaaaaah"
- /* 2 */ ".a..i...i.i...a."
- /* 3 */ ".a............a."
- /* 4 */ ".a............a."
- /* 5 */ ".a............a."
- /* 6 */ ".a..j..j...j..a."
- /* 7 */ "kaaaaaaaaaaaaaak"
- /* 8 */ "llllllllllllllll"
-
- // Level 5
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "cccccccccccccccc"
- /* 2 */ "haaaaaaaaaaaaaah"
- /* 3 */ ".a............a."
- /* 4 */ ".a............a."
- /* 5 */ ".a............a."
- /* 6 */ "kaaaaaaaaaaaaaak"
- /* 7 */ "llllllllllllllll"
- /* 8 */ "................"
-
- // Level 6
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ "cccccccccccccccc"
- /* 3 */ "haaaaaaaaaaaaaah"
- /* 4 */ ".a............a."
- /* 5 */ "kaaaaaaaaaaaaaak"
- /* 6 */ "llllllllllllllll"
- /* 7 */ "................"
- /* 8 */ "................"
-
- // Level 7
- /* z\x* 111111 */
- /* * 0123456789012345 */
- /* 0 */ "................"
- /* 1 */ "................"
- /* 2 */ "................"
- /* 3 */ "cccccccccccccccc"
- /* 4 */ "aaaaaaaaaaaaaaaa"
- /* 5 */ "llllllllllllllll"
- /* 6 */ "................"
- /* 7 */ "................"
- /* 8 */ "................",
-
- // Connectors:
- "-1: 9, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House16x9
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House7x7:
- // The data has been exported from the gallery Desert, area index 8, ID 112, created by Aloe_vera
- {
- // Size:
- 7, 7, 7, // SizeX = 7, SizeY = 7, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 7, 6, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:102: 0\n" /* glasspane */
- "g: 64:12\n" /* wooddoorblock */
- "h:128: 7\n" /* sandstonestairs */
- "i: 50: 3\n" /* torch */
- "j:128: 6\n" /* sandstonestairs */
- "k:128: 3\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "mmmaaam"
- /* 1 */ "maaaaam"
- /* 2 */ "maaaaam"
- /* 3 */ "maaaaam"
- /* 4 */ "maaaaam"
- /* 5 */ "maaaaam"
- /* 6 */ "mmmmmmm"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "...bcd."
- /* 1 */ ".aaaaa."
- /* 2 */ ".aaaaa."
- /* 3 */ ".aaaaa."
- /* 4 */ ".aaaaa."
- /* 5 */ ".aaaaa."
- /* 6 */ "......."
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".aaaea."
- /* 2 */ ".a...a."
- /* 3 */ ".a...a."
- /* 4 */ ".a...a."
- /* 5 */ ".aaaaa."
- /* 6 */ "......."
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".afaga."
- /* 2 */ ".f...f."
- /* 3 */ ".f...f."
- /* 4 */ ".f...f."
- /* 5 */ ".afffa."
- /* 6 */ "......."
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "ccccccc"
- /* 1 */ "haaaaah"
- /* 2 */ ".a.i.a."
- /* 3 */ ".a...a."
- /* 4 */ ".a...a."
- /* 5 */ "jaaaaaj"
- /* 6 */ "kkkkkkk"
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "ccccccc"
- /* 2 */ "haaaaah"
- /* 3 */ ".a...a."
- /* 4 */ "jaaaaaj"
- /* 5 */ "kkkkkkk"
- /* 6 */ "......."
-
- // Level 6
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "......."
- /* 2 */ "ccccccc"
- /* 3 */ "aaaaaaa"
- /* 4 */ "kkkkkkk"
- /* 5 */ "......."
- /* 6 */ ".......",
-
- // Connectors:
- "-1: 4, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House7x7
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House9x7:
- // The data has been exported from the gallery Desert, area index 9, ID 113, created by xoft
- {
- // Size:
- 9, 7, 7, // SizeX = 9, SizeY = 7, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 9, 6, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:102: 0\n" /* glasspane */
- "g: 64:12\n" /* wooddoorblock */
- "h:128: 7\n" /* sandstonestairs */
- "i: 50: 3\n" /* torch */
- "j: 50: 4\n" /* torch */
- "k:128: 6\n" /* sandstonestairs */
- "l:128: 3\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 012345678 */
- /* 0 */ "mmmaaammm"
- /* 1 */ "maaaaaaam"
- /* 2 */ "maaaaaaam"
- /* 3 */ "maaaaaaam"
- /* 4 */ "maaaaaaam"
- /* 5 */ "maaaaaaam"
- /* 6 */ "mmmmmmmmm"
-
- // Level 1
- /* z\x* 012345678 */
- /* 0 */ "...bcd..."
- /* 1 */ ".aaaaaaa."
- /* 2 */ ".aaaaaaa."
- /* 3 */ ".aaaaaaa."
- /* 4 */ ".aaaaaaa."
- /* 5 */ ".aaaaaaa."
- /* 6 */ "........."
-
- // Level 2
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ ".aaaeaaa."
- /* 2 */ ".a.....a."
- /* 3 */ ".a.....a."
- /* 4 */ ".a.....a."
- /* 5 */ ".aaaaaaa."
- /* 6 */ "........."
-
- // Level 3
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ ".afagafa."
- /* 2 */ ".f.....f."
- /* 3 */ ".f.....f."
- /* 4 */ ".f.....f."
- /* 5 */ ".affaffa."
- /* 6 */ "........."
-
- // Level 4
- /* z\x* 012345678 */
- /* 0 */ "ccccccccc"
- /* 1 */ "haaaaaaah"
- /* 2 */ ".a.i.i.a."
- /* 3 */ ".a.....a."
- /* 4 */ ".a..j..a."
- /* 5 */ "kaaaaaaak"
- /* 6 */ "lllllllll"
-
- // Level 5
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ "ccccccccc"
- /* 2 */ "haaaaaaah"
- /* 3 */ ".a.....a."
- /* 4 */ "kaaaaaaak"
- /* 5 */ "lllllllll"
- /* 6 */ "........."
-
- // Level 6
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ "........."
- /* 2 */ "ccccccccc"
- /* 3 */ "aaaaaaaaa"
- /* 4 */ "lllllllll"
- /* 5 */ "........."
- /* 6 */ ".........",
-
- // Connectors:
- "-1: 4, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House9x7
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // House9x9:
- // The data has been exported from the gallery Desert, area index 10, ID 114, created by xoft
- {
- // Size:
- 9, 8, 9, // SizeX = 9, SizeY = 8, SizeZ = 9
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 9, 7, 9, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e: 64: 7\n" /* wooddoorblock */
- "f:102: 0\n" /* glasspane */
- "g: 64:12\n" /* wooddoorblock */
- "h:128: 7\n" /* sandstonestairs */
- "i: 50: 3\n" /* torch */
- "j: 50: 4\n" /* torch */
- "k:128: 6\n" /* sandstonestairs */
- "l:128: 3\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 012345678 */
- /* 0 */ "mmmaaammm"
- /* 1 */ "maaaaaaam"
- /* 2 */ "maaaaaaam"
- /* 3 */ "maaaaaaam"
- /* 4 */ "maaaaaaam"
- /* 5 */ "maaaaaaam"
- /* 6 */ "maaaaaaam"
- /* 7 */ "maaaaaaam"
- /* 8 */ "mmmmmmmmm"
-
- // Level 1
- /* z\x* 012345678 */
- /* 0 */ "...bcd..."
- /* 1 */ ".aaaaaaa."
- /* 2 */ ".aaaaaaa."
- /* 3 */ ".aaaaaaa."
- /* 4 */ ".aaaaaaa."
- /* 5 */ ".aaaaaaa."
- /* 6 */ ".aaaaaaa."
- /* 7 */ ".aaaaaaa."
- /* 8 */ "........."
-
- // Level 2
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ ".aaaeaaa."
- /* 2 */ ".a.....a."
- /* 3 */ ".a.....a."
- /* 4 */ ".a.....a."
- /* 5 */ ".a.....a."
- /* 6 */ ".a.....a."
- /* 7 */ ".aaaaaaa."
- /* 8 */ "........."
-
- // Level 3
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ ".afagafa."
- /* 2 */ ".f.....f."
- /* 3 */ ".f.....f."
- /* 4 */ ".a.....a."
- /* 5 */ ".f.....f."
- /* 6 */ ".f.....f."
- /* 7 */ ".affaffa."
- /* 8 */ "........."
-
- // Level 4
- /* z\x* 012345678 */
- /* 0 */ "ccccccccc"
- /* 1 */ "haaaaaaah"
- /* 2 */ ".a.i.i.a."
- /* 3 */ ".a.....a."
- /* 4 */ ".a.....a."
- /* 5 */ ".a.....a."
- /* 6 */ ".a..j..a."
- /* 7 */ "kaaaaaaak"
- /* 8 */ "lllllllll"
-
- // Level 5
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ "ccccccccc"
- /* 2 */ "haaaaaaah"
- /* 3 */ ".a.....a."
- /* 4 */ ".a.....a."
- /* 5 */ ".a.....a."
- /* 6 */ "kaaaaaaak"
- /* 7 */ "lllllllll"
- /* 8 */ "........."
-
- // Level 6
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ "........."
- /* 2 */ "ccccccccc"
- /* 3 */ "haaaaaaah"
- /* 4 */ ".a.....a."
- /* 5 */ "kaaaaaaak"
- /* 6 */ "lllllllll"
- /* 7 */ "........."
- /* 8 */ "........."
-
- // Level 7
- /* z\x* 012345678 */
- /* 0 */ "........."
- /* 1 */ "........."
- /* 2 */ "........."
- /* 3 */ "ccccccccc"
- /* 4 */ "aaaaaaaaa"
- /* 5 */ "lllllllll"
- /* 6 */ "........."
- /* 7 */ "........."
- /* 8 */ ".........",
-
- // Connectors:
- "-1: 4, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // House9x9
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // HouseL14x12:
- // The data has been exported from the gallery Desert, area index 14, ID 124, created by Aloe_vera
- {
- // Size:
- 14, 8, 12, // SizeX = 14, SizeY = 8, SizeZ = 12
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 14, 7, 12, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e:128: 3\n" /* sandstonestairs */
- "f: 64: 3\n" /* wooddoorblock */
- "g: 64: 1\n" /* wooddoorblock */
- "h:102: 0\n" /* glasspane */
- "i: 64: 8\n" /* wooddoorblock */
- "j:128: 7\n" /* sandstonestairs */
- "k: 50: 3\n" /* torch */
- "l: 50: 2\n" /* torch */
- "m: 19: 0\n" /* sponge */
- "n: 50: 4\n" /* torch */
- "o:128: 6\n" /* sandstonestairs */
- "p: 50: 1\n" /* torch */
- "q:128: 5\n" /* sandstonestairs */
- "r:128: 4\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ "mmmmaaammmmmmm"
- /* 1 */ "maaaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaaam"
- /* 4 */ "maaaaaaaaaaaam"
- /* 5 */ "maaaaaaaaaaaam"
- /* 6 */ "maaaaaaaaaaaam"
- /* 7 */ "maaaaaaaaaaaam"
- /* 8 */ "mmmmaaaaaaaaam"
- /* 9 */ "mmmmmmaaaaaaam"
- /* 10 */ "mmmmmmaaaaaaam"
- /* 11 */ "mmmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ "....bcd......."
- /* 1 */ ".aaaaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaaaa."
- /* 4 */ ".aaaaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaaaa."
- /* 6 */ ".aaaaaaaaaaaa."
- /* 7 */ ".aaaaaaaaaaaa."
- /* 8 */ "....beaaaaaaa."
- /* 9 */ "mmmmm.aaaaaaa."
- /* 10 */ "mmmmm.aaaaaaa."
- /* 11 */ "mmmmm........."
-
- // Level 2
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ ".............."
- /* 1 */ ".aaaafaaaaaaa."
- /* 2 */ ".a..........a."
- /* 3 */ ".a..........a."
- /* 4 */ ".a..........a."
- /* 5 */ ".a..........a."
- /* 6 */ ".a..........a."
- /* 7 */ ".aaaaga.....a."
- /* 8 */ "......a.....a."
- /* 9 */ "mmmmm.a.....a."
- /* 10 */ "mmmmm.aaaaaaa."
- /* 11 */ "mmmmm........."
-
- // Level 3
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ ".............."
- /* 1 */ ".ahhaiahhahha."
- /* 2 */ ".h..........h."
- /* 3 */ ".h..........h."
- /* 4 */ ".a..........a."
- /* 5 */ ".h..........h."
- /* 6 */ ".h..........h."
- /* 7 */ ".ahhaia.....a."
- /* 8 */ "......h.....h."
- /* 9 */ "mmmmm.h.....h."
- /* 10 */ "mmmmm.ahhahha."
- /* 11 */ "mmmmm........."
-
- // Level 4
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ "cccccccccccccc"
- /* 1 */ "jaaaaaaaaaaaad"
- /* 2 */ ".a..k.k.....ad"
- /* 3 */ ".a..........ad"
- /* 4 */ ".a.........lad"
- /* 5 */ ".a..........ad"
- /* 6 */ ".a..n.n.....ad"
- /* 7 */ "oaaaaaap...lad"
- /* 8 */ "eeeeeba.....ad"
- /* 9 */ "mmmmmba.....ad"
- /* 10 */ "mmmmmbaaaaaaad"
- /* 11 */ "mmmmmbq.....rd"
-
- // Level 5
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ ".............."
- /* 1 */ "ccccccccccccd."
- /* 2 */ "jaaaaaaaaaaad."
- /* 3 */ ".a.........ad."
- /* 4 */ ".a.........ad."
- /* 5 */ ".a.........ad."
- /* 6 */ "oaaaaaaa...ad."
- /* 7 */ "eeeeeeba...ad."
- /* 8 */ "......ba...ad."
- /* 9 */ "mmmmm.ba...ad."
- /* 10 */ "mmmmm.baaaaad."
- /* 11 */ "mmmmm.bq...rd."
-
- // Level 6
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ ".............."
- /* 1 */ ".............."
- /* 2 */ "cccccccccccc.."
- /* 3 */ "jaaaaaaaaaad.."
- /* 4 */ ".a........ad.."
- /* 5 */ "oaaaaaaaa.ad.."
- /* 6 */ "eeeeeeeea.ad.."
- /* 7 */ ".......ba.ad.."
- /* 8 */ ".......ba.ad.."
- /* 9 */ "mmmmm..ba.ad.."
- /* 10 */ "mmmmm..baaad.."
- /* 11 */ "mmmmm..bq.rd.."
-
- // Level 7
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ ".............."
- /* 1 */ ".............."
- /* 2 */ ".............."
- /* 3 */ "ccccccccccc..."
- /* 4 */ "aaaaaaaaaad..."
- /* 5 */ "eeeeeeeebad..."
- /* 6 */ "........bad..."
- /* 7 */ "........bad..."
- /* 8 */ "........bad..."
- /* 9 */ "mmmmm...bad..."
- /* 10 */ "mmmmm...bad..."
- /* 11 */ "mmmmm...bad...",
-
- // Connectors:
- "-1: 5, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // HouseL14x12
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // HouseL14x12:
- // The data has been exported from the gallery Desert, area index 7, ID 82, created by Aloe_vera
- {
- // Size:
- 14, 7, 12, // SizeX = 14, SizeY = 7, SizeZ = 12
-
- // Hitbox (relative to bounding box):
- -1, 0, 0, // MinX, MinY, MinZ
- 14, 6, 12, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 0\n" /* sandstonestairs */
- "c:128: 2\n" /* sandstonestairs */
- "d:128: 1\n" /* sandstonestairs */
- "e:128: 3\n" /* sandstonestairs */
- "f: 64: 7\n" /* wooddoorblock */
- "g: 64: 5\n" /* wooddoorblock */
- "h:102: 0\n" /* glasspane */
- "i: 64:12\n" /* wooddoorblock */
- "j:128: 7\n" /* sandstonestairs */
- "k: 50: 3\n" /* torch */
- "l: 50: 4\n" /* torch */
- "m: 19: 0\n" /* sponge */
- "n:128: 6\n" /* sandstonestairs */
- "o:128: 5\n" /* sandstonestairs */
- "p:128: 4\n" /* sandstonestairs */
- "q: 50: 1\n" /* torch */,
-
- // Block data:
- // Level 0
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ "mmmmmmmaaammmm"
- /* 1 */ "maaaaaaaaaaaam"
- /* 2 */ "maaaaaaaaaaaam"
- /* 3 */ "maaaaaaaaaaaam"
- /* 4 */ "maaaaaaaaaaaam"
- /* 5 */ "maaaaaaaaaaaam"
- /* 6 */ "mmmmaaamaaaaam"
- /* 7 */ "mmmmmmmmaaaaam"
- /* 8 */ "mmmmmmmmaaaaam"
- /* 9 */ "mmmmmmmmaaaaam"
- /* 10 */ "mmmmmmmmaaaaam"
- /* 11 */ "mmmmmmmmmmmmmm"
-
- // Level 1
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ ".......bcd...."
- /* 1 */ ".aaaaaaaaaaaa."
- /* 2 */ ".aaaaaaaaaaaa."
- /* 3 */ ".aaaaaaaaaaaa."
- /* 4 */ ".aaaaaaaaaaaa."
- /* 5 */ ".aaaaaaaaaaaa."
- /* 6 */ "....bed.aaaaa."
- /* 7 */ "........aaaaa."
- /* 8 */ "........aaaaa."
- /* 9 */ "........aaaaa."
- /* 10 */ "........aaaaa."
- /* 11 */ ".............."
-
- // Level 2
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ ".............."
- /* 1 */ ".aaaaaaafaaaa."
- /* 2 */ ".a..........a."
- /* 3 */ ".a..........a."
- /* 4 */ ".a..........a."
- /* 5 */ ".aaaagaaa...a."
- /* 6 */ "........a...a."
- /* 7 */ "........a...a."
- /* 8 */ "........a...a."
- /* 9 */ "........a...a."
- /* 10 */ "........aaaaa."
- /* 11 */ ".............."
-
- // Level 3
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ ".............."
- /* 1 */ ".ahhahhaiahha."
- /* 2 */ ".h..........h."
- /* 3 */ ".h..........h."
- /* 4 */ ".h..........a."
- /* 5 */ ".ahhaiahh...h."
- /* 6 */ "........h...h."
- /* 7 */ "........a...a."
- /* 8 */ "........h...h."
- /* 9 */ "........h...h."
- /* 10 */ "........ahhha."
- /* 11 */ ".............."
-
- // Level 4
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ "cccccccccccccc"
- /* 1 */ "jaaaaaaaaaaaad"
- /* 2 */ ".a.....k.k..ad"
- /* 3 */ ".a..........ad"
- /* 4 */ ".a..l.l.....ad"
- /* 5 */ "naaaaaaaa...ad"
- /* 6 */ "eeeeeeeba...ad"
- /* 7 */ ".......ba...ad"
- /* 8 */ ".......ba...ad"
- /* 9 */ ".......ba...ad"
- /* 10 */ ".......baaaaad"
- /* 11 */ ".......bo...pd"
-
- // Level 5
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ ".............."
- /* 1 */ "ccccccccccccc."
- /* 2 */ "jaaaaaaaaaaad."
- /* 3 */ ".aq........ad."
- /* 4 */ "naaaaaaaaa.ad."
- /* 5 */ "eeeeeeeeba.ad."
- /* 6 */ "........ba.ad."
- /* 7 */ "........ba.ad."
- /* 8 */ "........ba.ad."
- /* 9 */ "........balad."
- /* 10 */ "........baaad."
- /* 11 */ "........bo.pd."
-
- // Level 6
- /* z\x* 1111 */
- /* * 01234567890123 */
- /* 0 */ ".............."
- /* 1 */ ".............."
- /* 2 */ "cccccccccccc.."
- /* 3 */ "aaaaaaaaaaad.."
- /* 4 */ "eeeeeeeeebad.."
- /* 5 */ ".........bad.."
- /* 6 */ ".........bad.."
- /* 7 */ ".........bad.."
- /* 8 */ ".........bad.."
- /* 9 */ ".........bad.."
- /* 10 */ ".........bad.."
- /* 11 */ ".........bad..",
-
- // Connectors:
- "-1: 8, 1, 0: 2\n" /* Type -1, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // HouseL14x12
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // SingleField:
- // The data has been exported from the gallery Desert, area index 17, ID 127, created by Aloe_vera
- {
- // Size:
- 10, 3, 7, // SizeX = 10, SizeY = 3, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- 0, 0, -1, // MinX, MinY, MinZ
- 10, 2, 7, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b: 60: 7\n" /* tilleddirt */
- "c: 8: 0\n" /* water */
- "d: 50: 5\n" /* torch */
- "e: 59: 7\n" /* crops */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "aaaaaaaaaa"
- /* 1 */ "aaaaaaaaaa"
- /* 2 */ "aaaaaaaaaa"
- /* 3 */ "aaaaaaaaaa"
- /* 4 */ "aaaaaaaaaa"
- /* 5 */ "aaaaaaaaaa"
- /* 6 */ "aaaaaaaaaa"
-
- // Level 1
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "aaaaaaaaaa"
- /* 1 */ "abbbbbbbba"
- /* 2 */ "abbbbbbbba"
- /* 3 */ "acccccccca"
- /* 4 */ "abbbbbbbba"
- /* 5 */ "abbbbbbbba"
- /* 6 */ "aaaaaaaaaa"
-
- // Level 2
- /* z\x* */
- /* * 0123456789 */
- /* 0 */ "d........d"
- /* 1 */ ".eeeeeeee."
- /* 2 */ ".eeeeeeee."
- /* 3 */ ".........."
- /* 4 */ ".eeeeeeee."
- /* 5 */ ".eeeeeeee."
- /* 6 */ "d........d",
-
- // Connectors:
- "-1: 0, 1, 3: 4\n" /* Type -1, direction X- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // SingleField
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // SmallHut:
- // The data has been exported from the gallery Desert, area index 4, ID 68, created by tonibm1999
- {
- // Size:
- 5, 6, 6, // SizeX = 5, SizeY = 6, SizeZ = 6
-
- // Hitbox (relative to bounding box):
- -1, 0, -1, // MinX, MinY, MinZ
- 5, 5, 5, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 24: 0\n" /* sandstone */
- "b:128: 3\n" /* sandstonestairs */
- "c: 24: 2\n" /* sandstone */
- "d: 50: 5\n" /* torch */
- "e: 26:10\n" /* bedblock */
- "f: 26: 2\n" /* bedblock */
- "g: 64: 5\n" /* wooddoorblock */
- "h: 64:12\n" /* wooddoorblock */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 01234 */
- /* 0 */ "aaaaa"
- /* 1 */ "aaaaa"
- /* 2 */ "aaaaa"
- /* 3 */ "aaaaa"
- /* 4 */ "aaaaa"
- /* 5 */ "mmamm"
-
- // Level 1
- /* z\x* 01234 */
- /* 0 */ "aaaaa"
- /* 1 */ "aaaaa"
- /* 2 */ "aaaaa"
- /* 3 */ "aaaaa"
- /* 4 */ "aaaaa"
- /* 5 */ "..b.."
-
- // Level 2
- /* z\x* 01234 */
- /* 0 */ "accca"
- /* 1 */ "cdedc"
- /* 2 */ "c.f.c"
- /* 3 */ "c...c"
- /* 4 */ "acgca"
- /* 5 */ "....."
-
- // Level 3
- /* z\x* 01234 */
- /* 0 */ "ac.ca"
- /* 1 */ "c...c"
- /* 2 */ "....."
- /* 3 */ "c...c"
- /* 4 */ "achca"
- /* 5 */ "....."
-
- // Level 4
- /* z\x* 01234 */
- /* 0 */ "accca"
- /* 1 */ "c...c"
- /* 2 */ "c...c"
- /* 3 */ "c...c"
- /* 4 */ "accca"
- /* 5 */ "....."
-
- // Level 5
- /* z\x* 01234 */
- /* 0 */ ".aaa."
- /* 1 */ "aaaaa"
- /* 2 */ "aaaaa"
- /* 3 */ "aaaaa"
- /* 4 */ ".aaa."
- /* 5 */ ".....",
-
- // Connectors:
- "-1: 2, 1, 5: 3\n" /* Type -1, direction Z+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // SmallHut
-}; // g_SandVillagePrefabs
-
-
-
-
-
-
-const cPrefab::sDef g_SandVillageStartingPrefabs[] =
-{
- ////////////////////////////////////////////////////////////////////////////////
- // RoofedWell:
- // The data has been exported from the gallery Desert, area index 43, ID 274, created by Aloe_vera
- {
- // Size:
- 7, 14, 7, // SizeX = 7, SizeY = 14, SizeZ = 7
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 6, 13, 6, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 1: 0\n" /* stone */
- "b: 24: 0\n" /* sandstone */
- "c: 8: 0\n" /* water */
- "d: 12: 0\n" /* sand */
- "e: 4: 0\n" /* cobblestone */
- "f: 13: 0\n" /* gravel */
- "g:118: 3\n" /* cauldronblock */
- "h: 85: 0\n" /* fence */
- "i:128: 2\n" /* sandstonestairs */
- "j:128: 7\n" /* sandstonestairs */
- "k:128: 4\n" /* sandstonestairs */
- "l:128: 5\n" /* sandstonestairs */
- "m: 19: 0\n" /* sponge */
- "n:128: 6\n" /* sandstonestairs */
- "o:128: 3\n" /* sandstonestairs */,
-
- // Block data:
- // Level 0
- /* z\x* 0123456 */
- /* 0 */ "aaaaaaa"
- /* 1 */ "aaaaaaa"
- /* 2 */ "aaaaaaa"
- /* 3 */ "aaaaaaa"
- /* 4 */ "aaaaaaa"
- /* 5 */ "aaaaaaa"
- /* 6 */ "aaaaaaa"
-
- // Level 1
- /* z\x* 0123456 */
- /* 0 */ "aaaaaaa"
- /* 1 */ "abbbbba"
- /* 2 */ "abcccba"
- /* 3 */ "abcccba"
- /* 4 */ "abcccba"
- /* 5 */ "abbbbba"
- /* 6 */ "aaaaaaa"
-
- // Level 2
- /* z\x* 0123456 */
- /* 0 */ "aaaaaaa"
- /* 1 */ "abbbbba"
- /* 2 */ "abcccba"
- /* 3 */ "abcccba"
- /* 4 */ "abcccba"
- /* 5 */ "abbbbba"
- /* 6 */ "aaaaaaa"
-
- // Level 3
- /* z\x* 0123456 */
- /* 0 */ "aaaaaaa"
- /* 1 */ "abbbbba"
- /* 2 */ "abcccba"
- /* 3 */ "abcccba"
- /* 4 */ "abcccba"
- /* 5 */ "abbbbba"
- /* 6 */ "aaaaaaa"
-
- // Level 4
- /* z\x* 0123456 */
- /* 0 */ "ddddddd"
- /* 1 */ "dbbbbbd"
- /* 2 */ "dbcccbd"
- /* 3 */ "dbcccbd"
- /* 4 */ "dbcccbd"
- /* 5 */ "dbbbbbd"
- /* 6 */ "ddddddd"
-
- // Level 5
- /* z\x* 0123456 */
- /* 0 */ "ddddddd"
- /* 1 */ "dbbbbbd"
- /* 2 */ "dbcccbd"
- /* 3 */ "dbcccbd"
- /* 4 */ "dbcccbd"
- /* 5 */ "dbbbbbd"
- /* 6 */ "ddddddd"
-
- // Level 6
- /* z\x* 0123456 */
- /* 0 */ "ddeeedd"
- /* 1 */ "dbbbbbd"
- /* 2 */ "ebcccbe"
- /* 3 */ "ebcccbe"
- /* 4 */ "ebcccbe"
- /* 5 */ "dbbbbbd"
- /* 6 */ "ddeeedd"
-
- // Level 7
- /* z\x* 0123456 */
- /* 0 */ "ddfffdd"
- /* 1 */ "dbbbbbd"
- /* 2 */ "fbcccbf"
- /* 3 */ "fbcccbf"
- /* 4 */ "fbcccbf"
- /* 5 */ "dbbbbbd"
- /* 6 */ "ddfffdd"
-
- // Level 8
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".bbbbb."
- /* 2 */ ".b...b."
- /* 3 */ ".b.g.b."
- /* 4 */ ".b...b."
- /* 5 */ ".bbbbb."
- /* 6 */ "......."
-
- // Level 9
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".h...h."
- /* 2 */ "......."
- /* 3 */ "...h..."
- /* 4 */ "......."
- /* 5 */ ".h...h."
- /* 6 */ "......."
-
- // Level 10
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ ".h...h."
- /* 2 */ "......."
- /* 3 */ "...h..."
- /* 4 */ "......."
- /* 5 */ ".h...h."
- /* 6 */ "......."
-
- // Level 11
- /* z\x* 0123456 */
- /* 0 */ "iiiiiii"
- /* 1 */ "jbjjjbj"
- /* 2 */ ".k...l."
- /* 3 */ ".k.h.l."
- /* 4 */ ".k...l."
- /* 5 */ "nbnnnbn"
- /* 6 */ "ooooooo"
-
- // Level 12
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "iiiiiii"
- /* 2 */ "jb...bj"
- /* 3 */ ".b.h.b."
- /* 4 */ "nb...bn"
- /* 5 */ "ooooooo"
- /* 6 */ "......."
-
- // Level 13
- /* z\x* 0123456 */
- /* 0 */ "......."
- /* 1 */ "......."
- /* 2 */ "iiiiiii"
- /* 3 */ "bbbbbbb"
- /* 4 */ "ooooooo"
- /* 5 */ "......."
- /* 6 */ ".......",
-
- // Connectors:
- "2: 6, 8, 3: 5\n" /* Type 2, direction X+ */
- "2: 3, 8, 6: 3\n" /* Type 2, direction Z+ */
- "2: 0, 8, 3: 4\n" /* Type 2, direction X- */
- "2: 3, 8, 0: 2\n" /* Type 2, direction Z- */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // RoofedWell
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // Well:
- // The data has been exported from the gallery Desert, area index 0, ID 1, created by Aloe_vera
- {
- // Size:
- 4, 13, 4, // SizeX = 4, SizeY = 13, SizeZ = 4
-
- // Hitbox (relative to bounding box):
- 0, 0, 0, // MinX, MinY, MinZ
- 3, 12, 3, // MaxX, MaxY, MaxZ
-
- // Block definitions:
- ".: 0: 0\n" /* air */
- "a: 1: 0\n" /* stone */
- "b: 24: 0\n" /* sandstone */
- "c: 8: 0\n" /* water */
- "d: 85: 0\n" /* fence */
- "m: 19: 0\n" /* sponge */,
-
- // Block data:
- // Level 0
- /* z\x* 0123 */
- /* 0 */ "aaaa"
- /* 1 */ "aaaa"
- /* 2 */ "aaaa"
- /* 3 */ "aaaa"
-
- // Level 1
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 2
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 3
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 4
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 5
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 6
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 7
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bccb"
- /* 2 */ "bccb"
- /* 3 */ "bbbb"
-
- // Level 8
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "b..b"
- /* 2 */ "b..b"
- /* 3 */ "bbbb"
-
- // Level 9
- /* z\x* 0123 */
- /* 0 */ "d..d"
- /* 1 */ "...."
- /* 2 */ "...."
- /* 3 */ "d..d"
-
- // Level 10
- /* z\x* 0123 */
- /* 0 */ "d..d"
- /* 1 */ "...."
- /* 2 */ "...."
- /* 3 */ "d..d"
-
- // Level 11
- /* z\x* 0123 */
- /* 0 */ "d..d"
- /* 1 */ "...."
- /* 2 */ "...."
- /* 3 */ "d..d"
-
- // Level 12
- /* z\x* 0123 */
- /* 0 */ "bbbb"
- /* 1 */ "bbbb"
- /* 2 */ "bbbb"
- /* 3 */ "bbbb",
-
- // Connectors:
- "2: 2, 8, 0: 2\n" /* Type 2, direction Z- */
- "2: 0, 8, 1: 4\n" /* Type 2, direction X- */
- "2: 1, 8, 3: 3\n" /* Type 2, direction Z+ */
- "2: 3, 8, 2: 5\n" /* Type 2, direction X+ */,
-
- // AllowedRotations:
- 7, /* 1, 2, 3 CCW rotation allowed */
-
- // Merge strategy:
- cBlockArea::msSpongePrint,
-
- // ShouldExtendFloor:
- true,
-
- // DefaultWeight:
- 100,
-
- // DepthWeight:
- "",
-
- // AddWeightIfSame:
- 0,
-
- // MoveToGround:
- true,
- }, // Well
-};
-
-
-
-
-
-// The prefab counts:
-
-const size_t g_SandVillagePrefabsCount = ARRAYCOUNT(g_SandVillagePrefabs);
-
-const size_t g_SandVillageStartingPrefabsCount = ARRAYCOUNT(g_SandVillageStartingPrefabs);
-
diff --git a/src/Generating/Prefabs/SandVillagePrefabs.h b/src/Generating/Prefabs/SandVillagePrefabs.h
deleted file mode 100644
index 7b00db56f..000000000
--- a/src/Generating/Prefabs/SandVillagePrefabs.h
+++ /dev/null
@@ -1,15 +0,0 @@
-
-// SandVillagePrefabs.h
-
-// Declares the prefabs in the group SandVillage
-
-#include "../Prefab.h"
-
-
-
-
-
-extern const cPrefab::sDef g_SandVillagePrefabs[];
-extern const cPrefab::sDef g_SandVillageStartingPrefabs[];
-extern const size_t g_SandVillagePrefabsCount;
-extern const size_t g_SandVillageStartingPrefabsCount;
diff --git a/src/Generating/Prefabs/UnderwaterBasePrefabs.cpp b/src/Generating/Prefabs/UnderwaterBasePrefabs.cpp
index 1655f50b9..112531641 100644
--- a/src/Generating/Prefabs/UnderwaterBasePrefabs.cpp
+++ b/src/Generating/Prefabs/UnderwaterBasePrefabs.cpp
@@ -32,9 +32,9 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
"b: 20: 0\n" /* glass */
"c: 5: 5\n" /* wood */
"d: 8: 0\n" /* water */
- "e: 64: 4\n" /* wooddoorblock */
- "f: 64:12\n" /* wooddoorblock */
- "g: 64:13\n" /* wooddoorblock */
+ "e: 64: 0\n" /* wooddoorblock */
+ "f: 64: 8\n" /* wooddoorblock */
+ "g: 64: 9\n" /* wooddoorblock */
"m: 19: 0\n" /* sponge */,
// Block data:
@@ -280,18 +280,16 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
".: 0: 0\n" /* air */
"a: 5: 5\n" /* wood */
"b: 5: 0\n" /* wood */
- "c: 64: 5\n" /* wooddoorblock */
- "d: 64: 2\n" /* wooddoorblock */
- "e: 64: 4\n" /* wooddoorblock */
- "f: 64: 1\n" /* wooddoorblock */
- "g: 20: 0\n" /* glass */
- "h: 64:12\n" /* wooddoorblock */
- "i: 76: 3\n" /* redstonetorchon */
- "j: 64: 8\n" /* wooddoorblock */
- "k: 76: 4\n" /* redstonetorchon */
- "l: 76: 2\n" /* redstonetorchon */
- "m: 19: 0\n" /* sponge */
- "n: 76: 1\n" /* redstonetorchon */,
+ "c: 64: 2\n" /* wooddoorblock */
+ "d: 64: 1\n" /* wooddoorblock */
+ "e: 20: 0\n" /* glass */
+ "f: 64: 9\n" /* wooddoorblock */
+ "g: 76: 3\n" /* redstonetorchon */
+ "h: 64: 8\n" /* wooddoorblock */
+ "i: 76: 4\n" /* redstonetorchon */
+ "j: 76: 2\n" /* redstonetorchon */
+ "k: 76: 1\n" /* redstonetorchon */
+ "m: 19: 0\n" /* sponge */,
// Block data:
// Level 0
@@ -313,28 +311,28 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
/* * 0123456789 */
/* 0 */ "abbbbbmmmm"
/* 1 */ "c.....bbmm"
- /* 2 */ "d.......bm"
+ /* 2 */ "c.......bm"
/* 3 */ "abb.....bm"
/* 4 */ "mmmbb....b"
/* 5 */ "mmmmmb...b"
/* 6 */ "mmmmmb...b"
/* 7 */ "mmmmmmb..b"
/* 8 */ "mmmmmmb..b"
- /* 9 */ "mmmmmmaefa"
+ /* 9 */ "mmmmmmadda"
// Level 2
/* z\x* */
/* * 0123456789 */
- /* 0 */ "abggbbmmmm"
- /* 1 */ "h...i.bbmm"
- /* 2 */ "j.......bm"
- /* 3 */ "abbk....bm"
+ /* 0 */ "abeebbmmmm"
+ /* 1 */ "f...g.bbmm"
+ /* 2 */ "h.......bm"
+ /* 3 */ "abbi....bm"
/* 4 */ "mmmbb....b"
- /* 5 */ "mmmmmb..lb"
- /* 6 */ "mmmmmbn..g"
- /* 7 */ "mmmmmmb..g"
+ /* 5 */ "mmmmmb..jb"
+ /* 6 */ "mmmmmbk..e"
+ /* 7 */ "mmmmmmb..e"
/* 8 */ "mmmmmmb..b"
- /* 9 */ "mmmmmmahja"
+ /* 9 */ "mmmmmmafha"
// Level 3
/* z\x* */
@@ -396,20 +394,17 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
"a: 5: 5\n" /* wood */
"b: 5: 0\n" /* wood */
"c: 64: 3\n" /* wooddoorblock */
- "d: 64: 6\n" /* wooddoorblock */
- "e: 64: 5\n" /* wooddoorblock */
- "f: 64: 0\n" /* wooddoorblock */
- "g: 64: 2\n" /* wooddoorblock */
- "h: 64: 1\n" /* wooddoorblock */
- "i: 64: 8\n" /* wooddoorblock */
- "j: 64:12\n" /* wooddoorblock */
- "k: 20: 0\n" /* glass */
- "l: 76: 1\n" /* redstonetorchon */
+ "d: 64: 2\n" /* wooddoorblock */
+ "e: 64: 0\n" /* wooddoorblock */
+ "f: 64: 1\n" /* wooddoorblock */
+ "g: 64: 8\n" /* wooddoorblock */
+ "h: 64: 9\n" /* wooddoorblock */
+ "i: 20: 0\n" /* glass */
+ "j: 76: 1\n" /* redstonetorchon */
+ "k: 76: 2\n" /* redstonetorchon */
+ "l: 76: 3\n" /* redstonetorchon */
"m: 19: 0\n" /* sponge */
- "n: 76: 2\n" /* redstonetorchon */
- "o: 76: 3\n" /* redstonetorchon */
- "p: 76: 4\n" /* redstonetorchon */
- "q: 64: 9\n" /* wooddoorblock */,
+ "n: 76: 4\n" /* redstonetorchon */,
// Block data:
// Level 0
@@ -435,42 +430,42 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
// Level 1
/* z\x* 111111 */
/* * 0123456789012345 */
- /* 0 */ "mmmmmmacdammmmmm"
+ /* 0 */ "mmmmmmaccammmmmm"
/* 1 */ "mmmmmmb..bmmmmmm"
/* 2 */ "mmmmmmb..bmmmmmm"
/* 3 */ "mmmmmmb..bmmmmmm"
/* 4 */ "mmmmmmb..bmmmmmm"
/* 5 */ "mmmmmmb..bmmmmmm"
/* 6 */ "abbbbbb..bbbbbba"
- /* 7 */ "e..............f"
- /* 8 */ "g..............f"
+ /* 7 */ "d..............e"
+ /* 8 */ "d..............e"
/* 9 */ "abbbbbb..bbbbbba"
/* 10 */ "mmmmmmb..bmmmmmm"
/* 11 */ "mmmmmmb..bmmmmmm"
/* 12 */ "mmmmmmb..bmmmmmm"
/* 13 */ "mmmmmmb..bmmmmmm"
/* 14 */ "mmmmmmb..bmmmmmm"
- /* 15 */ "mmmmmmahhammmmmm"
+ /* 15 */ "mmmmmmaffammmmmm"
// Level 2
/* z\x* 111111 */
/* * 0123456789012345 */
- /* 0 */ "mmmmmmaijammmmmm"
+ /* 0 */ "mmmmmmaghammmmmm"
/* 1 */ "mmmmmmb..bmmmmmm"
- /* 2 */ "mmmmmmk..kmmmmmm"
- /* 3 */ "mmmmmmk..kmmmmmm"
- /* 4 */ "mmmmmmblnbmmmmmm"
+ /* 2 */ "mmmmmmi..immmmmm"
+ /* 3 */ "mmmmmmi..immmmmm"
+ /* 4 */ "mmmmmmbjkbmmmmmm"
/* 5 */ "mmmmmmb..bmmmmmm"
- /* 6 */ "abkkbbb..bbbkkba"
- /* 7 */ "j...o......o...i"
- /* 8 */ "i...p......p...q"
- /* 9 */ "abkkbbb..bbbkkba"
+ /* 6 */ "abiibbb..bbbiiba"
+ /* 7 */ "h...l......l...g"
+ /* 8 */ "g...n......n...h"
+ /* 9 */ "abiibbb..bbbiiba"
/* 10 */ "mmmmmmb..bmmmmmm"
- /* 11 */ "mmmmmmblnbmmmmmm"
- /* 12 */ "mmmmmmk..kmmmmmm"
- /* 13 */ "mmmmmmk..kmmmmmm"
+ /* 11 */ "mmmmmmbjkbmmmmmm"
+ /* 12 */ "mmmmmmi..immmmmm"
+ /* 13 */ "mmmmmmi..immmmmm"
/* 14 */ "mmmmmmb..bmmmmmm"
- /* 15 */ "mmmmmmaqiammmmmm"
+ /* 15 */ "mmmmmmahgammmmmm"
// Level 3
/* z\x* 111111 */
@@ -549,8 +544,6 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
"h: 64: 8\n" /* wooddoorblock */
"i: 76: 4\n" /* redstonetorchon */
"j: 64: 0\n" /* wooddoorblock */
- "k: 64: 7\n" /* wooddoorblock */
- "l: 64:12\n" /* wooddoorblock */
"m: 19: 0\n" /* sponge */,
// Block data:
@@ -607,7 +600,7 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
/* * 0123456789012345 */
/* 0 */ "mmmmmmmbbbbbbbba"
/* 1 */ "mmmmmmmb.......j"
- /* 2 */ "mmmmmmmb.......k"
+ /* 2 */ "mmmmmmmb.......j"
/* 3 */ "mmmmmmmbbbbbbbba"
// Level 7
@@ -615,7 +608,7 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
/* * 0123456789012345 */
/* 0 */ "mmmmmmmmbbbeebba"
/* 1 */ "mmmmmmmmb.g....h"
- /* 2 */ "mmmmmmmmb.i....l"
+ /* 2 */ "mmmmmmmmb.i....f"
/* 3 */ "mmmmmmmmbbbeebba"
// Level 8
@@ -672,19 +665,16 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
"a: 5: 5\n" /* wood */
"b: 5: 0\n" /* wood */
"c: 64: 3\n" /* wooddoorblock */
- "d: 64: 6\n" /* wooddoorblock */
- "e: 64: 5\n" /* wooddoorblock */
- "f: 64: 0\n" /* wooddoorblock */
- "g: 64: 2\n" /* wooddoorblock */
- "h: 64: 8\n" /* wooddoorblock */
- "i: 64:12\n" /* wooddoorblock */
- "j: 20: 0\n" /* glass */
- "k: 76: 1\n" /* redstonetorchon */
- "l: 76: 2\n" /* redstonetorchon */
- "m: 19: 0\n" /* sponge */
- "n: 76: 3\n" /* redstonetorchon */
- "o: 76: 4\n" /* redstonetorchon */
- "p: 64: 9\n" /* wooddoorblock */,
+ "d: 64: 2\n" /* wooddoorblock */
+ "e: 64: 0\n" /* wooddoorblock */
+ "f: 64: 8\n" /* wooddoorblock */
+ "g: 64: 9\n" /* wooddoorblock */
+ "h: 20: 0\n" /* glass */
+ "i: 76: 1\n" /* redstonetorchon */
+ "j: 76: 2\n" /* redstonetorchon */
+ "k: 76: 3\n" /* redstonetorchon */
+ "l: 76: 4\n" /* redstonetorchon */
+ "m: 19: 0\n" /* sponge */,
// Block data:
// Level 0
@@ -704,30 +694,30 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
// Level 1
/* z\x* 111111 */
/* * 0123456789012345 */
- /* 0 */ "mmmmmmacdammmmmm"
+ /* 0 */ "mmmmmmaccammmmmm"
/* 1 */ "mmmmmmb..bmmmmmm"
/* 2 */ "mmmmmmb..bmmmmmm"
/* 3 */ "mmmmmmb..bmmmmmm"
/* 4 */ "mmmmmmb..bmmmmmm"
/* 5 */ "mmmmmmb..bmmmmmm"
/* 6 */ "abbbbbb..bbbbbba"
- /* 7 */ "e..............f"
- /* 8 */ "g..............f"
+ /* 7 */ "d..............e"
+ /* 8 */ "d..............e"
/* 9 */ "abbbbbbbbbbbbbba"
// Level 2
/* z\x* 111111 */
/* * 0123456789012345 */
- /* 0 */ "mmmmmmahiammmmmm"
+ /* 0 */ "mmmmmmafgammmmmm"
/* 1 */ "mmmmmmb..bmmmmmm"
- /* 2 */ "mmmmmmj..jmmmmmm"
- /* 3 */ "mmmmmmj..jmmmmmm"
- /* 4 */ "mmmmmmbklbmmmmmm"
+ /* 2 */ "mmmmmmh..hmmmmmm"
+ /* 3 */ "mmmmmmh..hmmmmmm"
+ /* 4 */ "mmmmmmbijbmmmmmm"
/* 5 */ "mmmmmmb..bmmmmmm"
- /* 6 */ "abjjbbb..bbbjjba"
- /* 7 */ "i...n......n...h"
- /* 8 */ "h...o......o...p"
- /* 9 */ "abjjbbbjjbbbjjba"
+ /* 6 */ "abhhbbb..bbbhhba"
+ /* 7 */ "g...k......k...f"
+ /* 8 */ "f...l......l...g"
+ /* 9 */ "abhhbbbhhbbbhhba"
// Level 3
/* z\x* 111111 */
@@ -974,14 +964,12 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
"a: 5: 0\n" /* wood */
"b: 5: 5\n" /* wood */
"c: 20: 0\n" /* glass */
- "d: 64: 5\n" /* wooddoorblock */
+ "d: 64: 2\n" /* wooddoorblock */
"e: 64: 0\n" /* wooddoorblock */
- "f: 64: 2\n" /* wooddoorblock */
- "g: 76: 3\n" /* redstonetorchon */
- "h: 64:12\n" /* wooddoorblock */
- "i: 64: 8\n" /* wooddoorblock */
- "j: 64: 9\n" /* wooddoorblock */
- "k: 76: 4\n" /* redstonetorchon */
+ "f: 76: 3\n" /* redstonetorchon */
+ "g: 64: 9\n" /* wooddoorblock */
+ "h: 64: 8\n" /* wooddoorblock */
+ "i: 76: 4\n" /* redstonetorchon */
"m: 19: 0\n" /* sponge */,
// Block data:
@@ -1001,7 +989,7 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
/* 0 */ "mmaccccccccccamm"
/* 1 */ "ba............ab"
/* 2 */ "d..............e"
- /* 3 */ "f..............e"
+ /* 3 */ "d..............e"
/* 4 */ "ba............ab"
/* 5 */ "mmaccccccccccamm"
@@ -1009,10 +997,10 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
/* z\x* 111111 */
/* * 0123456789012345 */
/* 0 */ "mmaccccccccccamm"
- /* 1 */ "bag..........gab"
- /* 2 */ "h..............i"
- /* 3 */ "i..............j"
- /* 4 */ "bak..........kab"
+ /* 1 */ "baf..........fab"
+ /* 2 */ "g..............h"
+ /* 3 */ "h..............g"
+ /* 4 */ "bai..........iab"
/* 5 */ "mmaccccccccccamm"
// Level 3
@@ -1673,7 +1661,8 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
"j: 76: 4\n" /* redstonetorchon */
"k: 64: 1\n" /* wooddoorblock */
"l: 64: 8\n" /* wooddoorblock */
- "m: 19: 0\n" /* sponge */,
+ "m: 19: 0\n" /* sponge */
+ "n: 64: 9\n" /* wooddoorblock */,
// Block data:
// Level 0
@@ -1721,7 +1710,7 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
// Level 2
/* z\x* 1111 */
/* * 01234567890123 */
- /* 0 */ "mmmmallammmmmm"
+ /* 0 */ "mmmmalnammmmmm"
/* 1 */ "mmmmb..bmmmmmm"
/* 2 */ "mmmmc..cmmmmmm"
/* 3 */ "mmmcc..ccmmmmm"
@@ -1729,14 +1718,14 @@ const cPrefab::sDef g_UnderwaterBasePrefabs[] =
/* 5 */ "mcc......ccmmm"
/* 6 */ "mc........ccba"
/* 7 */ "c............l"
- /* 8 */ "c............l"
+ /* 8 */ "c............n"
/* 9 */ "mc........ccba"
/* 10 */ "mcc......ccmmm"
/* 11 */ "mmcc....ccmmmm"
/* 12 */ "mmmcc..ccmmmmm"
/* 13 */ "mmmmc..cmmmmmm"
/* 14 */ "mmmmb..bmmmmmm"
- /* 15 */ "mmmmallammmmmm"
+ /* 15 */ "mmmmanlammmmmm"
/* 16 */ "dddddddddddddd"
// Level 3
diff --git a/src/Generating/VillageGen.cpp b/src/Generating/VillageGen.cpp
index 488497ac1..2475565c0 100644
--- a/src/Generating/VillageGen.cpp
+++ b/src/Generating/VillageGen.cpp
@@ -5,11 +5,6 @@
#include "Globals.h"
#include "VillageGen.h"
-#include "Prefabs/AlchemistVillagePrefabs.h"
-#include "Prefabs/JapaneseVillagePrefabs.h"
-#include "Prefabs/PlainsVillagePrefabs.h"
-#include "Prefabs/SandVillagePrefabs.h"
-#include "Prefabs/SandFlatRoofVillagePrefabs.h"
#include "PieceGenerator.h"
@@ -52,6 +47,16 @@ public:
) :
super(a_PieceDefs, a_NumPieceDefs, a_StartingPieceDefs, a_NumStartingPieceDefs)
{
+ AddRoadPieces();
+ }
+
+ cVillagePiecePool(void)
+ {
+ AddRoadPieces();
+ }
+
+ void AddRoadPieces(void)
+ {
// Add the road pieces:
for (int len = 27; len < 60; len += 12)
{
@@ -115,10 +120,8 @@ public:
int a_MaxRoadDepth,
int a_MaxSize,
int a_Density,
- cPiecePool & a_Prefabs,
- cTerrainHeightGenPtr a_HeightGen,
- BLOCKTYPE a_RoadBlock,
- BLOCKTYPE a_WaterRoadBlock
+ cVillagePiecePool & a_Prefabs,
+ cTerrainHeightGenPtr a_HeightGen
) :
super(a_GridX, a_GridZ, a_OriginX, a_OriginZ),
m_Seed(a_Seed),
@@ -127,9 +130,7 @@ public:
m_Density(a_Density),
m_Borders(a_OriginX - a_MaxSize, 0, a_OriginZ - a_MaxSize, a_OriginX + a_MaxSize, cChunkDef::Height - 1, a_OriginZ + a_MaxSize),
m_Prefabs(a_Prefabs),
- m_HeightGen(a_HeightGen),
- m_RoadBlock(a_RoadBlock),
- m_WaterRoadBlock(a_WaterRoadBlock)
+ m_HeightGen(a_HeightGen)
{
// Generate the pieces for this village; don't care about the Y coord:
cBFSPieceGenerator pg(*this, a_Seed);
@@ -172,7 +173,7 @@ protected:
cCuboid m_Borders;
/** Prefabs to use for buildings */
- cPiecePool & m_Prefabs;
+ cVillagePiecePool & m_Prefabs;
/** The underlying height generator, used for placing the structures on top of the terrain. */
cTerrainHeightGenPtr m_HeightGen;
@@ -180,12 +181,6 @@ protected:
/** The village pieces, placed by the generator. */
cPlacedPieces m_Pieces;
- /** The block to use for the roads. */
- BLOCKTYPE m_RoadBlock;
-
- /** The block used for the roads if the road is on water. */
- BLOCKTYPE m_WaterRoadBlock;
-
// cGridStructGen::cStructure overrides:
virtual void DrawIntoChunk(cChunkDesc & a_Chunk) override
@@ -241,17 +236,21 @@ protected:
int MaxX = std::min(RoadCoords.p2.x - a_Chunk.GetChunkX() * cChunkDef::Width, cChunkDef::Width - 1);
int MinZ = std::max(RoadCoords.p1.z - a_Chunk.GetChunkZ() * cChunkDef::Width, 0);
int MaxZ = std::min(RoadCoords.p2.z - a_Chunk.GetChunkZ() * cChunkDef::Width, cChunkDef::Width - 1);
+ auto WaterRoadBlockType = m_Prefabs.GetVillageWaterRoadBlockType();
+ auto WaterRoadBlockMeta = m_Prefabs.GetVillageWaterRoadBlockMeta();
+ auto RoadBlockType = m_Prefabs.GetVillageRoadBlockType();
+ auto RoadBlockMeta = m_Prefabs.GetVillageRoadBlockMeta();
for (int z = MinZ; z <= MaxZ; z++)
{
for (int x = MinX; x <= MaxX; x++)
{
if (IsBlockWater(a_Chunk.GetBlockType(x, cChunkDef::GetHeight(a_HeightMap, x, z), z)))
{
- a_Chunk.SetBlockType(x, cChunkDef::GetHeight(a_HeightMap, x, z), z, m_WaterRoadBlock);
+ a_Chunk.SetBlockTypeMeta(x, cChunkDef::GetHeight(a_HeightMap, x, z), z, WaterRoadBlockType, WaterRoadBlockMeta);
}
else
{
- a_Chunk.SetBlockType(x, cChunkDef::GetHeight(a_HeightMap, x, z), z, m_RoadBlock);
+ a_Chunk.SetBlockTypeMeta(x, cChunkDef::GetHeight(a_HeightMap, x, z), z, RoadBlockType, RoadBlockMeta);
}
}
}
@@ -336,30 +335,18 @@ protected:
////////////////////////////////////////////////////////////////////////////////
// cVillageGen:
-static cVillagePiecePool g_SandVillage(g_SandVillagePrefabs, g_SandVillagePrefabsCount, g_SandVillageStartingPrefabs, g_SandVillageStartingPrefabsCount);
-static cVillagePiecePool g_SandFlatRoofVillage(g_SandFlatRoofVillagePrefabs, g_SandFlatRoofVillagePrefabsCount, g_SandFlatRoofVillageStartingPrefabs, g_SandFlatRoofVillageStartingPrefabsCount);
-static cVillagePiecePool g_AlchemistVillage(g_AlchemistVillagePrefabs, g_AlchemistVillagePrefabsCount, g_AlchemistVillageStartingPrefabs, g_AlchemistVillageStartingPrefabsCount);
-static cVillagePiecePool g_PlainsVillage(g_PlainsVillagePrefabs, g_PlainsVillagePrefabsCount, g_PlainsVillageStartingPrefabs, g_PlainsVillageStartingPrefabsCount);
-static cVillagePiecePool g_JapaneseVillage(g_JapaneseVillagePrefabs, g_JapaneseVillagePrefabsCount, g_JapaneseVillageStartingPrefabs, g_JapaneseVillageStartingPrefabsCount);
-
-static cVillagePiecePool * g_DesertVillagePools[] =
-{
- &g_SandVillage,
- &g_SandFlatRoofVillage,
- &g_AlchemistVillage,
-} ;
-
-static cVillagePiecePool * g_PlainsVillagePools[] =
-{
- &g_PlainsVillage,
- &g_JapaneseVillage,
-} ;
-
-
-
-
-
-cVillageGen::cVillageGen(int a_Seed, int a_GridSize, int a_MaxOffset, int a_MaxDepth, int a_MaxSize, int a_MinDensity, int a_MaxDensity, cBiomeGenPtr a_BiomeGen, cTerrainHeightGenPtr a_HeightGen) :
+cVillageGen::cVillageGen(
+ int a_Seed,
+ int a_GridSize,
+ int a_MaxOffset,
+ int a_MaxDepth,
+ int a_MaxSize,
+ int a_MinDensity,
+ int a_MaxDensity,
+ cBiomeGenPtr a_BiomeGen,
+ cTerrainHeightGenPtr a_HeightGen,
+ const AStringVector & a_PrefabsToLoad
+) :
super(a_Seed, a_GridSize, a_GridSize, a_MaxOffset, a_MaxOffset, a_MaxSize, a_MaxSize, 100),
m_Noise(a_Seed + 1000),
m_MaxDepth(a_MaxDepth),
@@ -369,6 +356,21 @@ cVillageGen::cVillageGen(int a_Seed, int a_GridSize, int a_MaxOffset, int a_MaxD
m_BiomeGen(a_BiomeGen),
m_HeightGen(a_HeightGen)
{
+ for (const auto & toLoad: a_PrefabsToLoad)
+ {
+ auto prefabs = std::make_shared<cVillagePiecePool>();
+ auto fileName = Printf("Prefabs%sVillages%s%s.cubeset", cFile::GetPathSeparator().c_str(), cFile::GetPathSeparator().c_str(), toLoad.c_str());
+ if (prefabs->LoadFromFile(fileName, true))
+ {
+ if (NoCaseCompare(prefabs->GetIntendedUse(), "village") != 0)
+ {
+ LOGWARNING("Village generator: File %s is intended for use in \"%s\", rather than villages. Loading the file, but the generator may behave unexpectedly.",
+ fileName.c_str(), prefabs->GetIntendedUse().c_str()
+ );
+ }
+ m_Pools.push_back(std::move(prefabs));
+ }
+ }
}
@@ -383,60 +385,48 @@ cGridStructGen::cStructurePtr cVillageGen::CreateStructure(int a_GridX, int a_Gr
cChunkDef::BiomeMap Biomes;
m_BiomeGen->GenBiomes(ChunkX, ChunkZ, Biomes);
- // Check if all the biomes are village-friendly:
- // If just one is not, no village is created, because it's likely that an unfriendly biome is too close
- cVillagePiecePool * VillagePrefabs = nullptr;
- BLOCKTYPE RoadBlock = E_BLOCK_GRAVEL;
- BLOCKTYPE WaterRoadBlock = E_BLOCK_PLANKS;
- int rnd = m_Noise.IntNoise2DInt(a_OriginX, a_OriginZ) / 11;
- cVillagePiecePool * PlainsVillage = g_PlainsVillagePools[static_cast<size_t>(rnd) % ARRAYCOUNT(g_PlainsVillagePools)];
- cVillagePiecePool * DesertVillage = g_DesertVillagePools[static_cast<size_t>(rnd) % ARRAYCOUNT(g_DesertVillagePools)];
+ // Get a list of pools that support each biome within the chunk:
+ // If just one column's biome is not allowed, the pool is not used because it's likely that an unfriendly biome is too close
+ auto availablePools = m_Pools;
for (size_t i = 0; i < ARRAYCOUNT(Biomes); i++)
{
- switch (Biomes[i])
- {
- case biDesert:
- case biDesertM:
+ auto biome = Biomes[i];
+ availablePools.erase(std::remove_if(availablePools.begin(), availablePools.end(),
+ [biome](SharedPtr<cPrefabPiecePool> a_Pool)
{
- // These biomes allow sand villages
- VillagePrefabs = DesertVillage;
- // RoadBlock = E_BLOCK_SANDSTONE;
- break;
- }
- case biPlains:
- case biSavanna:
- case biSavannaM:
- case biSunflowerPlains:
- {
- // These biomes allow plains-style villages
- VillagePrefabs = PlainsVillage;
- break;
- }
- default:
- {
- // Village-unfriendly biome, bail out with zero structure:
- return cStructurePtr();
- }
- } // switch (Biomes[i])
- } // for i - Biomes[]
+ return !a_Pool->IsBiomeAllowed(biome);
+ }),
+ availablePools.end()
+ );
+ // Bail out if no compatible pools left:
+ if (availablePools.empty())
+ {
+ return cStructurePtr();
+ }
+ }
+
+ // Pick one pool from the available pools:
+ if (availablePools.empty())
+ {
+ return cStructurePtr();
+ }
+ auto rnd = m_Noise.IntNoise2DInt(a_OriginX, a_OriginZ) / 11;
+ auto pool = availablePools[static_cast<size_t>(rnd) % availablePools.size()];
+ rnd /= 137;
// Choose density for the village, random between m_MinDensity and m_MaxDensity:
int Density;
- if (m_MaxDensity > m_MinDensity)
+ if (pool->GetMaxDensity() > pool->GetMinDensity())
{
- Density = m_MinDensity + rnd % (m_MaxDensity - m_MinDensity);
+ Density = pool->GetMinDensity() + rnd % (pool->GetMaxDensity() - pool->GetMinDensity());
}
else
{
- Density = m_MinDensity;
+ Density = pool->GetMinDensity();
}
// Create a village based on the chosen prefabs:
- if (VillagePrefabs == nullptr)
- {
- return cStructurePtr();
- }
- return cStructurePtr(new cVillage(m_Seed, a_GridX, a_GridZ, a_OriginX, a_OriginZ, m_MaxDepth, m_MaxSize, Density, *VillagePrefabs, m_HeightGen, RoadBlock, WaterRoadBlock));
+ return cStructurePtr(new cVillage(m_Seed, a_GridX, a_GridZ, a_OriginX, a_OriginZ, m_MaxDepth, m_MaxSize, Density, *pool.get(), m_HeightGen));
}
diff --git a/src/Generating/VillageGen.h b/src/Generating/VillageGen.h
index c384ed9e5..e7f9f2529 100644
--- a/src/Generating/VillageGen.h
+++ b/src/Generating/VillageGen.h
@@ -16,15 +16,34 @@
+// fwd:
+class cVillagePiecePool;
+
+
+
+
+
class cVillageGen :
public cGridStructGen
{
typedef cGridStructGen super;
public:
- cVillageGen(int a_Seed, int a_GridSize, int a_MaxOffset, int a_MaxDepth, int a_MaxSize, int a_MinDensity, int a_MaxDensity, cBiomeGenPtr a_BiomeGen, cTerrainHeightGenPtr a_HeightGen);
+ /** Creates a new instance of the generator with the specified parameters. */
+ cVillageGen(
+ int a_Seed,
+ int a_GridSize,
+ int a_MaxOffset,
+ int a_MaxDepth,
+ int a_MaxSize,
+ int a_MinDensity, int a_MaxDensity,
+ cBiomeGenPtr a_BiomeGen,
+ cTerrainHeightGenPtr a_HeightGen,
+ const AStringVector & a_PrefabsToLoad
+ );
protected:
class cVillage; // fwd: VillageGen.cpp
+ typedef std::vector<SharedPtr<cVillagePiecePool> > cVillagePiecePools;
/** The noise used for generating random numbers */
cNoise m_Noise;
@@ -47,6 +66,9 @@ protected:
/** The underlying height generator, used to position the prefabs crossing chunk borders */
cTerrainHeightGenPtr m_HeightGen;
+ /** All available prefab sets. Each village gets one of these chosen randomly. */
+ cVillagePiecePools m_Pools;
+
// cGridStructGen overrides:
virtual cStructurePtr CreateStructure(int a_GridX, int a_GridZ, int a_OriginX, int a_OriginZ) override;
diff --git a/src/Globals.h b/src/Globals.h
index b787a94da..f0e370d2c 100644
--- a/src/Globals.h
+++ b/src/Globals.h
@@ -261,14 +261,15 @@ template class SizeChecker<UInt8, 1>;
+// Common headers (part 1, without macros):
+#include "StringUtils.h"
+#include "OSSupport/CriticalSection.h"
+#include "OSSupport/Event.h"
+#include "OSSupport/File.h"
+#include "OSSupport/StackTrace.h"
+
#ifndef TEST_GLOBALS
- // Common headers (part 1, without macros):
- #include "StringUtils.h"
- #include "OSSupport/CriticalSection.h"
- #include "OSSupport/Event.h"
- #include "OSSupport/File.h"
#include "Logger.h"
- #include "OSSupport/StackTrace.h"
#else
// Logging functions
void inline LOGERROR(const char * a_Format, ...) FORMATSTRING(1, 2);
@@ -315,6 +316,9 @@ void inline LOG(const char * a_Format, ...)
va_end(argList);
}
+#define LOGINFO LOG
+#define LOGWARN LOGWARNING
+
#endif
diff --git a/src/Items/ItemBed.h b/src/Items/ItemBed.h
index 77d51d744..15b924a08 100644
--- a/src/Items/ItemBed.h
+++ b/src/Items/ItemBed.h
@@ -25,10 +25,11 @@ public:
}
- virtual bool OnPlayerPlace(
+ virtual bool GetBlocksToPlace(
cWorld & a_World, cPlayer & a_Player, const cItem & a_EquippedItem,
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
- int a_CursorX, int a_CursorY, int a_CursorZ
+ int a_CursorX, int a_CursorY, int a_CursorZ,
+ sSetBlockVector & a_BlocksToPlace
) override
{
// Can only be placed on the floor:
@@ -36,12 +37,10 @@ public:
{
return false;
}
- AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_BlockFace);
// The "foot" block:
- sSetBlockVector blks;
NIBBLETYPE BlockMeta = cBlockBedHandler::RotationToMetaData(a_Player.GetYaw());
- blks.emplace_back(a_BlockX, a_BlockY, a_BlockZ, E_BLOCK_BED, BlockMeta);
+ a_BlocksToPlace.emplace_back(a_BlockX, a_BlockY, a_BlockZ, E_BLOCK_BED, BlockMeta);
// Check if there is empty space for the "head" block:
// (Vanilla only allows beds to be placed into air)
@@ -50,10 +49,8 @@ public:
{
return false;
}
- blks.emplace_back(a_BlockX + Direction.x, a_BlockY, a_BlockZ + Direction.z, E_BLOCK_BED, BlockMeta | 0x08);
-
- // Place both bed blocks:
- return a_Player.PlaceBlocks(blks);
+ a_BlocksToPlace.emplace_back(a_BlockX + Direction.x, a_BlockY, a_BlockZ + Direction.z, E_BLOCK_BED, BlockMeta | 0x08);
+ return true;
}
} ;
diff --git a/src/Items/ItemBigFlower.h b/src/Items/ItemBigFlower.h
index 4341a1a17..a052485e4 100644
--- a/src/Items/ItemBigFlower.h
+++ b/src/Items/ItemBigFlower.h
@@ -27,10 +27,11 @@ public:
}
- virtual bool OnPlayerPlace(
+ virtual bool GetBlocksToPlace(
cWorld & a_World, cPlayer & a_Player, const cItem & a_EquippedItem,
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
- int a_CursorX, int a_CursorY, int a_CursorZ
+ int a_CursorX, int a_CursorY, int a_CursorZ,
+ sSetBlockVector & a_BlocksToSet
) override
{
// Can only be placed on the floor:
@@ -38,16 +39,14 @@ public:
{
return false;
}
- AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_BlockFace);
- // Place both blocks atomically:
- sSetBlockVector blks;
- blks.emplace_back(a_BlockX, a_BlockY, a_BlockZ, E_BLOCK_BIG_FLOWER, a_EquippedItem.m_ItemDamage & 0x07);
+ AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_BlockFace);
+ a_BlocksToSet.emplace_back(a_BlockX, a_BlockY, a_BlockZ, E_BLOCK_BIG_FLOWER, a_EquippedItem.m_ItemDamage & 0x07);
if (a_BlockY < cChunkDef::Height - 1)
{
- blks.emplace_back(a_BlockX, a_BlockY + 1, a_BlockZ, E_BLOCK_BIG_FLOWER, (a_EquippedItem.m_ItemDamage & 0x07) | 0x08);
+ a_BlocksToSet.emplace_back(a_BlockX, a_BlockY + 1, a_BlockZ, E_BLOCK_BIG_FLOWER, (a_EquippedItem.m_ItemDamage & 0x07) | 0x08);
}
- return a_Player.PlaceBlocks(blks);
+ return true;
}
};
diff --git a/src/Items/ItemChest.h b/src/Items/ItemChest.h
index 1d23975cd..3dd112c91 100644
--- a/src/Items/ItemChest.h
+++ b/src/Items/ItemChest.h
@@ -27,6 +27,8 @@ public:
}
+ /** We need an OnPlayerPlace override because we're processing neighbor chests and changing their metas,
+ the parent class cannot do that. */
virtual bool OnPlayerPlace(
cWorld & a_World, cPlayer & a_Player, const cItem & a_EquippedItem,
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
@@ -118,34 +120,32 @@ public:
} // for j
} // for i
- // If there's no chest neighbor, place the single block chest and bail out:
+ // Get the meta of the placed chest; take existing neighbors into account:
BLOCKTYPE ChestBlockType = static_cast<BLOCKTYPE>(m_ItemType);
- if (NeighborIdx < 0)
+ NIBBLETYPE Meta;
+ auto yaw = a_Player.GetYaw();
+ switch (NeighborIdx)
{
- NIBBLETYPE Meta = cBlockChestHandler::PlayerYawToMetaData(a_Player.GetYaw());
- return a_Player.PlaceBlock(a_BlockX, a_BlockY, a_BlockZ, ChestBlockType, Meta);
- }
-
- // There is a neighbor to which we need to adjust
- double yaw = a_Player.GetYaw();
- if ((NeighborIdx == 0) || (NeighborIdx == 2))
- {
- // The neighbor is in the X axis, form a X-axis-aligned dblchest:
- NIBBLETYPE Meta = ((yaw >= -90) && (yaw < 90)) ? E_META_CHEST_FACING_ZM : E_META_CHEST_FACING_ZP;
-
- // Place the new chest:
- if (!a_Player.PlaceBlock(a_BlockX, a_BlockY, a_BlockZ, ChestBlockType, Meta))
+ case 0:
+ case 2:
{
- return false;
+ // The neighbor is in the X axis, form a X-axis-aligned dblchest:
+ Meta = ((yaw >= -90) && (yaw < 90)) ? E_META_CHEST_FACING_ZM : E_META_CHEST_FACING_ZP;
+ break;
}
-
- // Adjust the existing chest:
- a_World.FastSetBlock(a_BlockX + CrossCoords[NeighborIdx].x, a_BlockY, a_BlockZ + CrossCoords[NeighborIdx].z, ChestBlockType, Meta);
- return true;
- }
-
- // The neighbor is in the Z axis, form a Z-axis-aligned dblchest:
- NIBBLETYPE Meta = (yaw < 0) ? E_META_CHEST_FACING_XM : E_META_CHEST_FACING_XP;
+ case 1:
+ case 3:
+ {
+ // The neighbor is in the Z axis, form a Z-axis-aligned dblchest:
+ Meta = (yaw < 0) ? E_META_CHEST_FACING_XM : E_META_CHEST_FACING_XP;
+ break;
+ }
+ default:
+ {
+ Meta = cBlockChestHandler::PlayerYawToMetaData(yaw);
+ break;
+ }
+ } // switch (NeighborIdx)
// Place the new chest:
if (!a_Player.PlaceBlock(a_BlockX, a_BlockY, a_BlockZ, ChestBlockType, Meta))
@@ -153,8 +153,31 @@ public:
return false;
}
- // Adjust the existing chest:
- a_World.FastSetBlock(a_BlockX + CrossCoords[NeighborIdx].x, a_BlockY, a_BlockZ + CrossCoords[NeighborIdx].z, ChestBlockType, Meta);
+ // Adjust the existing chest, if any:
+ if (NeighborIdx > 0)
+ {
+ a_World.FastSetBlock(a_BlockX + CrossCoords[NeighborIdx].x, a_BlockY, a_BlockZ + CrossCoords[NeighborIdx].z, ChestBlockType, Meta);
+ }
+
+ // Play the placement sound:
+ AString PlaceSound = cBlockInfo::GetPlaceSound(ChestBlockType);
+ float Volume = 1.0f, Pitch = 0.8f;
+ if (PlaceSound == "dig.metal")
+ {
+ Pitch = 1.2f;
+ PlaceSound = "dig.stone";
+ }
+ else if (PlaceSound == "random.anvil_land")
+ {
+ Volume = 0.65f;
+ }
+ a_World.BroadcastSoundEffect(PlaceSound, a_BlockX + 0.5, a_BlockY + 0.5, a_BlockZ + 0.5, Volume, Pitch);
+
+ // Remove the "placed" item:
+ if (a_Player.IsGameModeSurvival())
+ {
+ a_Player.GetInventory().RemoveOneEquippedItem();
+ }
return true;
}
diff --git a/src/Items/ItemDoor.h b/src/Items/ItemDoor.h
index ddd3d4e20..e92c567fb 100644
--- a/src/Items/ItemDoor.h
+++ b/src/Items/ItemDoor.h
@@ -20,10 +20,11 @@ public:
}
- virtual bool OnPlayerPlace(
+ virtual bool GetBlocksToPlace(
cWorld & a_World, cPlayer & a_Player, const cItem & a_EquippedItem,
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
- int a_CursorX, int a_CursorY, int a_CursorZ
+ int a_CursorX, int a_CursorY, int a_CursorZ,
+ sSetBlockVector & a_BlocksToSet
) override
{
// Vanilla only allows door placement while clicking on the top face of the block below the door:
@@ -31,7 +32,6 @@ public:
{
return false;
}
- AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_BlockFace);
// Door (bottom block) can be placed in Y range of [1, 254]:
if ((a_BlockY < 1) || (a_BlockY >= cChunkDef::Height - 2))
@@ -107,10 +107,9 @@ public:
}
// Set the blocks:
- sSetBlockVector blks;
- blks.emplace_back(a_BlockX, a_BlockY, a_BlockZ, BlockType, LowerBlockMeta);
- blks.emplace_back(a_BlockX, a_BlockY + 1, a_BlockZ, BlockType, UpperBlockMeta);
- return a_Player.PlaceBlocks(blks);
+ a_BlocksToSet.emplace_back(a_BlockX, a_BlockY, a_BlockZ, BlockType, LowerBlockMeta);
+ a_BlocksToSet.emplace_back(a_BlockX, a_BlockY + 1, a_BlockZ, BlockType, UpperBlockMeta);
+ return true;
}
diff --git a/src/Items/ItemDye.h b/src/Items/ItemDye.h
index 273af826a..c2635bcb6 100644
--- a/src/Items/ItemDye.h
+++ b/src/Items/ItemDye.h
@@ -27,7 +27,7 @@ public:
) override
{
// Handle growing the plants:
- if (a_Item.m_ItemDamage == E_META_DYE_WHITE)
+ if ((a_Item.m_ItemDamage == E_META_DYE_WHITE) && (a_BlockFace != BLOCK_FACE_NONE))
{
if (a_World->GrowRipePlant(a_BlockX, a_BlockY, a_BlockZ, true))
{
diff --git a/src/Items/ItemHandler.cpp b/src/Items/ItemHandler.cpp
index b7f89809e..a1fa67152 100644
--- a/src/Items/ItemHandler.cpp
+++ b/src/Items/ItemHandler.cpp
@@ -367,37 +367,51 @@ bool cItemHandler::OnPlayerPlace(
return false;
}
}
-
- BLOCKTYPE BlockType;
- NIBBLETYPE BlockMeta;
- if (!GetPlacementBlockTypeMeta(&a_World, &a_Player, a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_CursorX, a_CursorY, a_CursorZ, BlockType, BlockMeta))
+
+ // Get all the blocks to place:
+ sSetBlockVector blocks;
+ if (!GetBlocksToPlace(a_World, a_Player, a_EquippedItem, a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_CursorX, a_CursorY, a_CursorZ, blocks))
{
// Handler refused the placement, send that information back to the client:
+ for (const auto & blk: blocks)
+ {
+ a_World.SendBlockTo(blk.GetX(), blk.GetY(), blk.GetZ(), &a_Player);
+ }
a_World.SendBlockTo(a_BlockX, a_BlockY, a_BlockZ, &a_Player);
a_Player.GetInventory().SendEquippedSlot();
return false;
}
- if (!a_Player.PlaceBlock(a_BlockX, a_BlockY, a_BlockZ, BlockType, BlockMeta))
+ // Try to place the blocks:
+ if (!a_Player.PlaceBlocks(blocks))
{
- // The placement failed, the block has already been re-sent, re-send inventory:
+ // The placement failed, the blocks have already been re-sent, re-send inventory:
a_Player.GetInventory().SendEquippedSlot();
return false;
}
- AString PlaceSound = cBlockInfo::GetPlaceSound(BlockType);
- float Volume = 1.0f, Pitch = 0.8f;
- if (PlaceSound == "dig.metal")
- {
- Pitch = 1.2f;
- PlaceSound = "dig.stone";
- }
- else if (PlaceSound == "random.anvil_land")
+ // Play the placement sound for the main block:
+ for (const auto & blk: blocks)
{
- Volume = 0.65f;
- }
-
- a_World.BroadcastSoundEffect(PlaceSound, a_BlockX + 0.5, a_BlockY + 0.5, a_BlockZ + 0.5, Volume, Pitch);
+ // Find the main block by comparing the coords:
+ if ((blk.GetX() != a_BlockX) || (blk.GetY() != a_BlockY) || (blk.GetZ() != a_BlockZ))
+ {
+ continue;
+ }
+ AString PlaceSound = cBlockInfo::GetPlaceSound(blk.m_BlockType);
+ float Volume = 1.0f, Pitch = 0.8f;
+ if (PlaceSound == "dig.metal")
+ {
+ Pitch = 1.2f;
+ PlaceSound = "dig.stone";
+ }
+ else if (PlaceSound == "random.anvil_land")
+ {
+ Volume = 0.65f;
+ }
+ a_World.BroadcastSoundEffect(PlaceSound, a_BlockX + 0.5, a_BlockY + 0.5, a_BlockZ + 0.5, Volume, Pitch);
+ break;
+ } // for blk - blocks[]
// Remove the "placed" item:
if (a_Player.IsGameModeSurvival())
@@ -411,6 +425,27 @@ bool cItemHandler::OnPlayerPlace(
+bool cItemHandler::GetBlocksToPlace(
+ cWorld & a_World, cPlayer & a_Player, const cItem & a_EquippedItem,
+ int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
+ int a_CursorX, int a_CursorY, int a_CursorZ,
+ sSetBlockVector & a_BlocksToSet
+)
+{
+ BLOCKTYPE BlockType;
+ NIBBLETYPE BlockMeta;
+ if (!GetPlacementBlockTypeMeta(&a_World, &a_Player, a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_CursorX, a_CursorY, a_CursorZ, BlockType, BlockMeta))
+ {
+ return false;
+ }
+ a_BlocksToSet.emplace_back(a_BlockX, a_BlockY, a_BlockZ, BlockType, BlockMeta);
+ return true;
+}
+
+
+
+
+
bool cItemHandler::OnItemUse(
cWorld * a_World, cPlayer * a_Player, cBlockPluginInterface & a_PluginInterface, const cItem & a_Item,
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace
diff --git a/src/Items/ItemHandler.h b/src/Items/ItemHandler.h
index ec88aeb99..684b55788 100644
--- a/src/Items/ItemHandler.h
+++ b/src/Items/ItemHandler.h
@@ -35,8 +35,9 @@ public:
/** Called when the player tries to place the item (right mouse button, IsPlaceable() == true).
- The default handler uses GetPlacementBlockTypeMeta and places the returned block.
- Override this function for advanced behavior such as placing multiple blocks.
+ The block coords are for the block that has been clicked.
+ The default handler uses GetBlocksToPlace() and places the returned blocks.
+ Override if the item needs advanced processing, such as spawning a mob based on the blocks being placed.
If the block placement is refused inside this call, it will automatically revert the client-side changes.
Returns true if the placement succeeded, false if the placement was aborted for any reason. */
virtual bool OnPlayerPlace(
@@ -46,7 +47,20 @@ public:
);
- /** Called when the player right-clicks with this item and IsPlaceable() == true, and OnPlace() is not overridden.
+ /** Called from OnPlayerPlace() to determine the blocks that the current placement operation should set.
+ The block coords are where the new (main) block should be placed.
+ The default handler uses GetPlacementBlockTypeMeta() and provides that as the single block at the specified coords.
+ Returns true if the placement succeeded, false if the placement was aborted for any reason.
+ If aborted, the server then sends all original blocks in the coords provided in a_BlocksToSet to the client. */
+ virtual bool GetBlocksToPlace(
+ cWorld & a_World, cPlayer & a_Player, const cItem & a_EquippedItem,
+ int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
+ int a_CursorX, int a_CursorY, int a_CursorZ,
+ sSetBlockVector & a_BlocksToSet
+ );
+
+
+ /** Called when the player right-clicks with this item and IsPlaceable() == true, and OnPlayerPlace() is not overridden.
This function should provide the block type and meta for the placed block, or refuse the placement.
Returns true to allow placement, false to refuse. */
virtual bool GetPlacementBlockTypeMeta(
diff --git a/src/Items/ItemMobHead.h b/src/Items/ItemMobHead.h
index 8780f7e4b..9a4044bc0 100644
--- a/src/Items/ItemMobHead.h
+++ b/src/Items/ItemMobHead.h
@@ -12,9 +12,11 @@
class cItemMobHeadHandler :
public cItemHandler
{
+ typedef cItemHandler super;
+
public:
cItemMobHeadHandler(int a_ItemType) :
- cItemHandler(a_ItemType)
+ super(a_ItemType)
{
}
@@ -30,34 +32,36 @@ public:
{
return true;
}
- AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_BlockFace);
+ auto placedX = a_BlockX, placedY = a_BlockY, placedZ = a_BlockZ;
+ AddFaceDirection(placedY, placedY, placedZ, a_BlockFace);
// If the placed head is a wither, try to spawn the wither first:
if (a_EquippedItem.m_ItemDamage == E_META_HEAD_WITHER)
{
- if (TrySpawnWitherAround(a_World, a_Player, a_BlockX, a_BlockY, a_BlockZ))
+ if (TrySpawnWitherAround(a_World, a_Player, placedX, placedY, placedZ))
{
return true;
}
// Wither not created, proceed with regular head placement
}
- return PlaceRegularHead(a_World, a_Player, a_EquippedItem, a_BlockX, a_BlockY, a_BlockZ, a_BlockFace);
+ cItem itemCopy(a_EquippedItem); // Make a copy in case this is the player's last head item and OnPlayerPlace removes it
+ if (!super::OnPlayerPlace(a_World, a_Player, a_EquippedItem, a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_CursorX, a_CursorY, a_CursorZ))
+ {
+ return false;
+ }
+ RegularHeadPlaced(a_World, a_Player, itemCopy, placedX, placedY, placedZ, a_BlockFace);
+ return true;
}
- /** Places a regular head block with no mob spawning checking. */
- bool PlaceRegularHead(
+ /** Called after placing a regular head block with no mob spawning.
+ Adjusts the mob head entity based on the equipped item's data. */
+ void RegularHeadPlaced(
cWorld & a_World, cPlayer & a_Player, const cItem & a_EquippedItem,
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace
)
{
- // Place the block:
- if (!a_Player.PlaceBlock(a_BlockX, a_BlockY, a_BlockZ, E_BLOCK_HEAD, BlockFaceToBlockMeta(a_BlockFace)))
- {
- return false;
- }
-
// Use a callback to set the properties of the mob head block entity:
class cCallback : public cBlockEntityCallback
{
@@ -71,7 +75,7 @@ public:
{
return false;
}
- cMobHeadEntity * MobHeadEntity = static_cast<cMobHeadEntity *>(a_BlockEntity);
+ auto MobHeadEntity = static_cast<cMobHeadEntity *>(a_BlockEntity);
int Rotation = 0;
if (m_BlockMeta == 1)
@@ -94,7 +98,6 @@ public:
};
cCallback Callback(a_Player, static_cast<eMobHeadType>(a_EquippedItem.m_ItemDamage), static_cast<NIBBLETYPE>(a_BlockFace));
a_World.DoWithBlockEntityAt(a_BlockX, a_BlockY, a_BlockZ, Callback);
- return true;
}
@@ -340,7 +343,7 @@ public:
) override
{
a_BlockType = E_BLOCK_HEAD;
- a_BlockMeta = (NIBBLETYPE)(a_Player->GetEquippedItem().m_ItemDamage & 0x0f);
+ a_BlockMeta = BlockFaceToBlockMeta(a_BlockFace);
return true;
}
} ;
diff --git a/src/LoggerListeners.cpp b/src/LoggerListeners.cpp
index 132751e8e..91964c57e 100644
--- a/src/LoggerListeners.cpp
+++ b/src/LoggerListeners.cpp
@@ -299,15 +299,15 @@ cLogger::cListener * MakeConsoleListener(bool a_IsService)
cFileListener::cFileListener(void)
{
cFile::CreateFolder(FILE_IO_PREFIX + AString("logs"));
- AString FileName;
- auto time = std::chrono::system_clock::now();
- FileName = Printf(
- "%s%sLOG_%d.txt",
- FILE_IO_PREFIX,
- "logs/",
- std::chrono::duration_cast<std::chrono::duration<int, std::milli>>(time.time_since_epoch()).count()
+ m_File.Open(
+ FILE_IO_PREFIX + Printf(
+ "logs/LOG_%d.txt",
+ std::chrono::duration_cast<std::chrono::duration<int, std::ratio<1>>>(
+ std::chrono::system_clock::now().time_since_epoch()
+ ).count()
+ ),
+ cFile::fmAppend
);
- m_File.Open(FileName, cFile::fmAppend);
}
@@ -326,7 +326,7 @@ void cFileListener::Log(AString a_Message, cLogger::eLogLevel a_LogLevel)
}
case cLogger::llInfo:
{
- LogLevelPrefix = "info ";
+ LogLevelPrefix = "Info ";
break;
}
case cLogger::llWarning:
diff --git a/src/Mobs/Monster.cpp b/src/Mobs/Monster.cpp
index 8d71c54e8..cb4edb951 100644
--- a/src/Mobs/Monster.cpp
+++ b/src/Mobs/Monster.cpp
@@ -1073,9 +1073,9 @@ cMonster * cMonster::NewMonsterFromType(eMonsterType a_MobType)
case mtHorse:
{
// Horses take a type (species), a colour, and a style (dots, stripes, etc.)
- int HorseType = Random.NextInt(7);
- int HorseColor = Random.NextInt(6);
- int HorseStyle = Random.NextInt(6);
+ int HorseType = Random.NextInt(8);
+ int HorseColor = Random.NextInt(7);
+ int HorseStyle = Random.NextInt(5);
int HorseTameTimes = Random.NextInt(6) + 1;
if ((HorseType == 5) || (HorseType == 6) || (HorseType == 7))
diff --git a/src/NetherPortalScanner.cpp b/src/NetherPortalScanner.cpp
index fe563509d..cebf09ceb 100644
--- a/src/NetherPortalScanner.cpp
+++ b/src/NetherPortalScanner.cpp
@@ -49,6 +49,12 @@ void cNetherPortalScanner::OnChunkAvailable(int a_ChunkX, int a_ChunkZ)
if (blocks[i] == E_BLOCK_NETHER_PORTAL)
{
Vector3i Coordinate = cChunkDef::IndexToCoordinate(i);
+ if (Coordinate.y >= m_MaxY)
+ {
+ // This is above the map, don't consider it.
+ continue;
+ }
+
Vector3d PortalLoc = Vector3d(Coordinate.x + a_ChunkX * cChunkDef::Width, Coordinate.y, Coordinate.z + a_ChunkZ * cChunkDef::Width);
if (!m_FoundPortal)
{
@@ -109,9 +115,9 @@ bool cNetherPortalScanner::OnAllChunksAvailable(void)
// Find the bottom of this portal
while (m_World->GetBlock(m_PortalLoc.x, m_PortalLoc.y, m_PortalLoc.z) == E_BLOCK_NETHER_PORTAL)
{
- m_PortalLoc.y -= 1.0;
+ m_PortalLoc.y -= 1;
}
- m_PortalLoc.y += 1.0;
+ m_PortalLoc.y += 1;
// Figure out which way the portal is facing
int BXP = m_World->GetBlock(m_PortalLoc.x + 1, m_PortalLoc.y, m_PortalLoc.z);
@@ -284,7 +290,7 @@ void cNetherPortalScanner::OnDisabled(void)
}
LOGD("Placing player at {%f, %f, %f}", Position.x, Position.y, Position.z);
- m_Entity->ScheduleMoveToWorld(m_World, Position);
+ m_Entity->ScheduleMoveToWorld(m_World, Position, true);
delete this;
}
diff --git a/src/NetherPortalScanner.h b/src/NetherPortalScanner.h
index 89ffd7d0e..393859b4d 100644
--- a/src/NetherPortalScanner.h
+++ b/src/NetherPortalScanner.h
@@ -40,7 +40,7 @@ private:
static const int SearchSolidBaseWidth = 3;
/** Where to place the player out from the face and across the face */
- const double OutOffset = 1.5;
+ const double OutOffset = 0.5;
const double AcrossOffset = 0.5;
/** Builds a portal. */
diff --git a/src/OSSupport/NetworkInterfaceEnum.cpp b/src/OSSupport/NetworkInterfaceEnum.cpp
index c4af1e93c..d74565e07 100644
--- a/src/OSSupport/NetworkInterfaceEnum.cpp
+++ b/src/OSSupport/NetworkInterfaceEnum.cpp
@@ -6,6 +6,8 @@
#include "Globals.h"
#include "Network.h"
#include "event2/util.h"
+#include "../SelfTests.h"
+
#ifdef _WIN32
#include <IPHlpApi.h>
#pragma comment(lib, "IPHLPAPI.lib")
@@ -27,13 +29,18 @@ static class cEnumIPAddressTest
public:
cEnumIPAddressTest(void)
{
- printf("Enumerating all IP addresses...\n");
+ cSelfTests::Get().Register(std::function<void(void)>(&Test), "Network IP enumeration");
+ }
+
+ static void Test(void)
+ {
+ LOG("Enumerating all IP addresses...");
auto IPs = cNetwork::EnumLocalIPAddresses();
for (auto & ip: IPs)
{
- printf(" %s\n", ip.c_str());
+ LOG(" %s", ip.c_str());
}
- printf("Done.\n");
+ LOG("Done.");
}
} g_EnumIPAddressTest;
diff --git a/src/Protocol/ChunkDataSerializer.cpp b/src/Protocol/ChunkDataSerializer.cpp
index 2b9c06779..37fbae0e5 100644
--- a/src/Protocol/ChunkDataSerializer.cpp
+++ b/src/Protocol/ChunkDataSerializer.cpp
@@ -43,7 +43,6 @@ const AString & cChunkDataSerializer::Serialize(int a_Version, int a_ChunkX, int
AString data;
switch (a_Version)
{
- case RELEASE_1_2_5: Serialize29(data); break;
case RELEASE_1_3_2: Serialize39(data); break;
case RELEASE_1_8_0: Serialize47(data, a_ChunkX, a_ChunkZ); break;
// TODO: Other protocol versions may serialize the data differently; implement here
@@ -65,65 +64,6 @@ const AString & cChunkDataSerializer::Serialize(int a_Version, int a_ChunkX, int
-
-void cChunkDataSerializer::Serialize29(AString & a_Data)
-{
- // TODO: Do not copy data and then compress it; rather, compress partial blocks of data (zlib can stream)
-
- const int BiomeDataSize = cChunkDef::Width * cChunkDef::Width;
- const int MetadataOffset = sizeof(m_BlockTypes);
- const int BlockLightOffset = MetadataOffset + sizeof(m_BlockMetas);
- const int SkyLightOffset = BlockLightOffset + sizeof(m_BlockLight);
- const int BiomeOffset = SkyLightOffset + sizeof(m_BlockSkyLight);
- const int DataSize = BiomeOffset + BiomeDataSize;
-
- // Temporary buffer for the composed data:
- char AllData [DataSize];
-
- memcpy(AllData, m_BlockTypes, sizeof(m_BlockTypes));
- memcpy(AllData + MetadataOffset, m_BlockMetas, sizeof(m_BlockMetas));
- memcpy(AllData + BlockLightOffset, m_BlockLight, sizeof(m_BlockLight));
- memcpy(AllData + SkyLightOffset, m_BlockSkyLight, sizeof(m_BlockSkyLight));
- memcpy(AllData + BiomeOffset, m_BiomeData, BiomeDataSize);
-
- // Compress the data:
- // In order not to use allocation, use a fixed-size buffer, with the size
- // that uses the same calculation as compressBound():
- const uLongf CompressedMaxSize = DataSize + (DataSize >> 12) + (DataSize >> 14) + (DataSize >> 25) + 16;
- char CompressedBlockData[CompressedMaxSize];
-
- uLongf CompressedSize = compressBound(DataSize);
-
- // Run-time check that our compile-time guess about CompressedMaxSize was enough:
- ASSERT(CompressedSize <= CompressedMaxSize);
-
- compress2((Bytef*)CompressedBlockData, &CompressedSize, (const Bytef*)AllData, sizeof(AllData), Z_DEFAULT_COMPRESSION);
-
- // Now put all those data into a_Data:
-
- // "Ground-up continuous", or rather, "biome data present" flag:
- a_Data.push_back('\x01');
-
- // Two bitmaps; we're aways sending the full chunk with no additional data, so the bitmaps are 0xffff and 0, respectively
- // Also, no endian flipping is needed because of the const values
- unsigned short BitMap1 = 0xffff;
- unsigned short BitMap2 = 0;
- a_Data.append((const char *)&BitMap1, sizeof(short));
- a_Data.append((const char *)&BitMap2, sizeof(short));
-
- UInt32 CompressedSizeBE = htonl((UInt32)CompressedSize);
- a_Data.append((const char *)&CompressedSizeBE, sizeof(CompressedSizeBE));
-
- Int32 UnusedInt32 = 0;
- a_Data.append((const char *)&UnusedInt32, sizeof(UnusedInt32));
-
- a_Data.append(CompressedBlockData, CompressedSize);
-}
-
-
-
-
-
void cChunkDataSerializer::Serialize39(AString & a_Data)
{
// TODO: Do not copy data and then compress it; rather, compress partial blocks of data (zlib can stream)
diff --git a/src/Protocol/ChunkDataSerializer.h b/src/Protocol/ChunkDataSerializer.h
index a082ef3d8..6acc1544b 100644
--- a/src/Protocol/ChunkDataSerializer.h
+++ b/src/Protocol/ChunkDataSerializer.h
@@ -22,14 +22,12 @@ protected:
Serializations m_Serializations;
- void Serialize29(AString & a_Data); // Release 1.2.4 and 1.2.5
void Serialize39(AString & a_Data); // Release 1.3.1 to 1.7.10
void Serialize47(AString & a_Data, int a_ChunkX, int a_ChunkZ); // Release 1.8
public:
enum
{
- RELEASE_1_2_5 = 29,
RELEASE_1_3_2 = 39,
RELEASE_1_8_0 = 47,
} ;
diff --git a/src/Protocol/Protocol17x.cpp b/src/Protocol/Protocol17x.cpp
index 3d96071b5..c5c0f4a03 100644
--- a/src/Protocol/Protocol17x.cpp
+++ b/src/Protocol/Protocol17x.cpp
@@ -2374,7 +2374,7 @@ void cProtocol172::HandlePacketWindowClick(cByteBuffer & a_ByteBuffer)
case 0x0206: Action = caNumber7; break;
case 0x0207: Action = caNumber8; break;
case 0x0208: Action = caNumber9; break;
- case 0x0300: Action = caMiddleClick; break;
+ case 0x0302: Action = caMiddleClick; break;
case 0x0400: Action = (SlotNum == SLOT_NUM_OUTSIDE) ? caLeftClickOutsideHoldNothing : caDropKey; break;
case 0x0401: Action = (SlotNum == SLOT_NUM_OUTSIDE) ? caRightClickOutsideHoldNothing : caCtrlDropKey; break;
case 0x0500: Action = (SlotNum == SLOT_NUM_OUTSIDE) ? caLeftPaintBegin : caUnknown; break;
diff --git a/src/Protocol/Protocol18x.cpp b/src/Protocol/Protocol18x.cpp
index d9449283b..d5dd328a4 100644
--- a/src/Protocol/Protocol18x.cpp
+++ b/src/Protocol/Protocol18x.cpp
@@ -1921,12 +1921,11 @@ void cProtocol180::AddReceivedData(const char * a_Data, size_t a_Size)
{
// Decompress the data:
AString CompressedData;
- if (!m_ReceivedData.ReadString(CompressedData, CompressedSize))
+ if (!m_ReceivedData.ReadString(CompressedData, CompressedSize) || (InflateString(CompressedData.data(), CompressedSize, UncompressedData) != Z_OK))
{
m_Client->Kick("Compression failure");
return;
}
- InflateString(CompressedData.data(), CompressedSize, UncompressedData);
PacketLen = UncompressedData.size();
}
else
@@ -2693,7 +2692,7 @@ void cProtocol180::HandlePacketWindowClick(cByteBuffer & a_ByteBuffer)
case 0x0206: Action = caNumber7; break;
case 0x0207: Action = caNumber8; break;
case 0x0208: Action = caNumber9; break;
- case 0x0300: Action = caMiddleClick; break;
+ case 0x0302: Action = caMiddleClick; break;
case 0x0400: Action = (SlotNum == SLOT_NUM_OUTSIDE) ? caLeftClickOutsideHoldNothing : caDropKey; break;
case 0x0401: Action = (SlotNum == SLOT_NUM_OUTSIDE) ? caRightClickOutsideHoldNothing : caCtrlDropKey; break;
case 0x0500: Action = (SlotNum == SLOT_NUM_OUTSIDE) ? caLeftPaintBegin : caUnknown; break;
diff --git a/src/Root.cpp b/src/Root.cpp
index 8d344ee65..349e85315 100644
--- a/src/Root.cpp
+++ b/src/Root.cpp
@@ -21,6 +21,7 @@
#include "IniFile.h"
#include "SettingsRepositoryInterface.h"
#include "OverridesSettingsRepository.h"
+#include "SelfTests.h"
#ifdef _WIN32
#include <conio.h>
@@ -111,11 +112,16 @@ void cRoot::Start(std::unique_ptr<cSettingsRepositoryInterface> overridesRepo)
cLogger::GetInstance().AttachListener(consoleLogListener);
cLogger::GetInstance().AttachListener(fileLogListener);
- LOG("--- Started Log ---\n");
+ LOG("--- Started Log ---");
#ifdef BUILD_ID
- LOG("MCServer " BUILD_SERIES_NAME " build id: " BUILD_ID);
- LOG("from commit id: " BUILD_COMMIT_ID " built at: " BUILD_DATETIME);
+ LOG("MCServer " BUILD_SERIES_NAME " build id: " BUILD_ID);
+ LOG("from commit id: " BUILD_COMMIT_ID " built at: " BUILD_DATETIME);
+ #endif
+
+ // Run the self-tests registered previously via cSelfTests::Register():
+ #ifdef SELF_TEST
+ cSelfTests::ExecuteAll();
#endif
cDeadlockDetect dd;
@@ -255,7 +261,7 @@ void cRoot::Start(std::unique_ptr<cSettingsRepositoryInterface> overridesRepo)
delete m_FurnaceRecipe; m_FurnaceRecipe = nullptr;
delete m_CraftingRecipes; m_CraftingRecipes = nullptr;
- LOGD("Unloading worlds...");
+ LOG("Unloading worlds...");
UnloadWorlds();
LOGD("Stopping plugin manager...");
@@ -336,7 +342,7 @@ void cRoot::LoadWorlds(cSettingsRepositoryInterface & a_Settings)
-cWorld * cRoot::CreateAndInitializeWorld(const AString & a_WorldName, eDimension a_Dimension, const AString & a_OverworldName)
+cWorld * cRoot::CreateAndInitializeWorld(const AString & a_WorldName, eDimension a_Dimension, const AString & a_OverworldName, bool a_InitSpawn)
{
cWorld * World = m_WorldsByName[a_WorldName];
if (World != nullptr)
@@ -347,7 +353,10 @@ cWorld * cRoot::CreateAndInitializeWorld(const AString & a_WorldName, eDimension
cWorld * NewWorld = new cWorld(a_WorldName.c_str(), a_Dimension, a_OverworldName);
m_WorldsByName[a_WorldName] = NewWorld;
NewWorld->Start();
- NewWorld->InitializeSpawn();
+ if (a_InitSpawn)
+ {
+ NewWorld->InitializeSpawn();
+ }
m_PluginManager->CallHookWorldStarted(*NewWorld);
return NewWorld;
}
@@ -869,3 +878,8 @@ int cRoot::GetFurnaceFuelBurnTime(const cItem & a_Fuel)
cFurnaceRecipe * FR = Get()->GetFurnaceRecipe();
return FR->GetBurnTime(a_Fuel);
}
+
+
+
+
+
diff --git a/src/Root.h b/src/Root.h
index 81551a503..0eae21384 100644
--- a/src/Root.h
+++ b/src/Root.h
@@ -38,7 +38,7 @@ namespace Json
-/// The root of the object hierarchy
+/** The root of the object hierarchy */
// tolua_begin
class cRoot
{
@@ -69,7 +69,7 @@ public:
The dimension parameter is used to create a world with a specific dimension
a_OverworldName should be set for non-overworld dimensions if one wishes that world to link back to an overworld via portals
*/
- cWorld * CreateAndInitializeWorld(const AString & a_WorldName, eDimension a_Dimension = dimOverworld, const AString & a_OverworldName = "");
+ cWorld * CreateAndInitializeWorld(const AString & a_WorldName, eDimension a_Dimension = dimOverworld, const AString & a_OverworldName = "", bool a_InitSpawn = true);
/** Returns the up time of the server in seconds */
int GetServerUpTime(void)
@@ -217,6 +217,7 @@ private:
bool m_bRestart;
+
void LoadGlobalSettings();
/// Loads the worlds from settings.ini, creates the worldmap
@@ -238,3 +239,8 @@ private:
static void InputThread(cRoot & a_Params);
}; // tolua_export
+
+
+
+
+
diff --git a/src/SelfTests.cpp b/src/SelfTests.cpp
new file mode 100644
index 000000000..7e35e675e
--- /dev/null
+++ b/src/SelfTests.cpp
@@ -0,0 +1,71 @@
+
+// SelfTests.h
+
+// Implements the cSelfTests class representing the singleton used for registering self-tests
+// This class is only declared if SELF_TEST macro is defined.
+
+#include "Globals.h"
+#include "SelfTests.h"
+
+
+
+
+
+#ifdef SELF_TEST
+ cSelfTests::cSelfTests(void):
+ m_AllowRegistering(true)
+ {
+ }
+
+
+
+
+
+ cSelfTests & cSelfTests::Get(void)
+ {
+ static cSelfTests singleton;
+ return singleton;
+ }
+
+
+
+
+
+ void cSelfTests::Register(cSelfTests::SelfTestFunction a_FnToExecute, const AString & a_TestName)
+ {
+ ASSERT(Get().m_AllowRegistering);
+ Get().m_SelfTests.push_back(std::make_pair(a_FnToExecute, a_TestName));
+ }
+
+
+
+
+
+ void cSelfTests::ExecuteAll(void)
+ {
+ Get().m_AllowRegistering = false;
+ LOG("--- Performing self-tests ---");
+ for (auto & test: Get().m_SelfTests)
+ {
+ LOG("Performing self-test: %s", test.second.c_str());
+ try
+ {
+ test.first();
+ }
+ catch (const std::exception & exc)
+ {
+ LOGWARNING("Exception in test %s: %s", test.second.c_str(), exc.what());
+ }
+ catch (...)
+ {
+ LOGWARNING("Unknown exception in test %s", test.second.c_str());
+ }
+ } // for test - m_SelfTests[]
+ LOG("--- Self-tests finished ---");
+ }
+
+#endif // SELF_TEST
+
+
+
+
diff --git a/src/SelfTests.h b/src/SelfTests.h
new file mode 100644
index 000000000..03a3b5faa
--- /dev/null
+++ b/src/SelfTests.h
@@ -0,0 +1,51 @@
+
+// SelfTests.h
+
+// Declares the cSelfTests class representing the singleton used for registering self-tests
+// This class is only declared if SELF_TEST macro is defined.
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#ifdef SELF_TEST
+ /** Singleton containing registered self-tests.
+ Used to schedule self-tests to run after the logging framework is initialized (#2228). */
+ class cSelfTests
+ {
+ public:
+ /** Returns the singleton instance of this class. */
+ static cSelfTests & Get(void);
+
+ // typedef void (* SelfTestFunction)(void);
+ typedef std::function<void(void)> SelfTestFunction;
+
+ /** Registers a self-test to be executed once the logging framework is initialized. */
+ static void Register(SelfTestFunction a_FnToExecute, const AString & a_TestName);
+
+ /** Executes all the registered self-tests. */
+ static void ExecuteAll(void);
+
+ protected:
+ typedef std::vector<std::pair<SelfTestFunction, AString>> SelfTestFunctions;
+
+ /** Functions (registered self-tests) to call once the logging framework is initialized. */
+ SelfTestFunctions m_SelfTests;
+
+ /** If true, tests may be registered. Set to false once the tests are executed, to detect tests that are registered too late. */
+ bool m_AllowRegistering;
+
+
+ cSelfTests(void);
+ };
+#endif // SELF_TEST
+
+
+
+
diff --git a/src/World.cpp b/src/World.cpp
index 0ae115001..a1e392fd1 100644
--- a/src/World.cpp
+++ b/src/World.cpp
@@ -465,6 +465,10 @@ void cWorld::Start(void)
m_bCommandBlocksEnabled = IniFile.GetValueSetB("Mechanics", "CommandBlocksEnabled", false);
m_bEnabledPVP = IniFile.GetValueSetB("Mechanics", "PVPEnabled", true);
m_bUseChatPrefixes = IniFile.GetValueSetB("Mechanics", "UseChatPrefixes", true);
+ m_MinNetherPortalWidth = IniFile.GetValueSetI("Mechanics", "MinNetherPortalWidth", 2);
+ m_MaxNetherPortalWidth = IniFile.GetValueSetI("Mechanics", "MaxNetherPortalWidth", 21);
+ m_MinNetherPortalHeight = IniFile.GetValueSetI("Mechanics", "MinNetherPortalHeight", 3);
+ m_MaxNetherPortalHeight = IniFile.GetValueSetI("Mechanics", "MaxNetherPortalHeight", 21);
m_VillagersShouldHarvestCrops = IniFile.GetValueSetB("Monsters", "VillagersShouldHarvestCrops", true);
m_IsDaylightCycleEnabled = IniFile.GetValueSetB("General", "IsDaylightCycleEnabled", true);
int GameMode = IniFile.GetValueSetI("General", "Gamemode", (int)m_GameMode);
@@ -3080,7 +3084,11 @@ void cWorld::QueueTask(cTaskPtr a_Task)
}
-
+void cWorld::ScheduleTask(int a_DelayTicks, std::function<void (cWorld&)> a_Func)
+{
+ cTaskLambda task(a_Func);
+ ScheduleTask(a_DelayTicks, static_cast<cTaskPtr>(std::make_shared<cTaskLambda>(task)));
+}
void cWorld::ScheduleTask(int a_DelayTicks, cTaskPtr a_Task)
@@ -3583,8 +3591,10 @@ void cWorld::cTaskSendBlockToAllPlayers::Run(cWorld & a_World)
a_World.ForEachPlayer(PlayerCallback);
}
-
-
+void cWorld::cTaskLambda::Run(cWorld & a_World)
+{
+ m_func(a_World);
+}
////////////////////////////////////////////////////////////////////////////////
diff --git a/src/World.h b/src/World.h
index 078a25562..aeab7bfa5 100644
--- a/src/World.h
+++ b/src/World.h
@@ -103,8 +103,12 @@ public:
class cTask
{
public:
+ cTask(const cTask & other) = default;
virtual ~cTask() {}
virtual void Run(cWorld & a_World) = 0;
+
+ protected:
+ cTask() {}
} ;
typedef SharedPtr<cTask> cTaskPtr;
@@ -142,6 +146,21 @@ public:
std::vector<Vector3i> m_SendQueue;
};
+ class cTaskLambda :
+ public cTask
+ {
+
+ public:
+ cTaskLambda(std::function<void(cWorld&)> a_Func) :
+ m_func(a_Func)
+ { }
+
+ protected:
+ virtual void Run(cWorld & a_World) override;
+
+ std::function<void(cWorld&)> m_func;
+ };
+
static const char * GetClassStatic(void) // Needed for ManualBindings's ForEach templates
{
@@ -694,6 +713,18 @@ public:
AString GetLinkedOverworldName(void) const { return m_LinkedOverworldName; }
void SetLinkedOverworldName(const AString & a_Name) { m_LinkedOverworldName = a_Name; }
+ /** Returns or sets the minumim or maximum netherportal width */
+ virtual int GetMinNetherPortalWidth(void) const override { return m_MinNetherPortalWidth; }
+ virtual int GetMaxNetherPortalWidth(void) const override { return m_MaxNetherPortalWidth; }
+ virtual void SetMinNetherPortalWidth(int a_NewMinWidth) override { m_MinNetherPortalWidth = a_NewMinWidth; }
+ virtual void SetMaxNetherPortalWidth(int a_NewMaxWidth) override { m_MaxNetherPortalWidth = a_NewMaxWidth; }
+
+ /** Returns or sets the minumim or maximum netherportal height */
+ virtual int GetMinNetherPortalHeight(void) const override { return m_MinNetherPortalHeight; }
+ virtual int GetMaxNetherPortalHeight(void) const override { return m_MaxNetherPortalHeight; }
+ virtual void SetMinNetherPortalHeight(int a_NewMinHeight) override { m_MinNetherPortalHeight = a_NewMinHeight; }
+ virtual void SetMaxNetherPortalHeight(int a_NewMaxHeight) override { m_MaxNetherPortalHeight = a_NewMaxHeight; }
+
// tolua_end
/** Saves all chunks immediately. Dangerous interface, may deadlock, use QueueSaveAllChunks() instead */
@@ -705,6 +736,9 @@ public:
/** Queues a task onto the tick thread. The task object will be deleted once the task is finished */
void QueueTask(cTaskPtr a_Task); // Exported in ManualBindings.cpp
+ /** Queues a lambda task onto the tick thread, with the specified delay. */
+ void ScheduleTask(int a_DelayTicks, std::function<void(cWorld&)> a_Func);
+
/** Queues a task onto the tick thread, with the specified delay. */
void ScheduleTask(int a_DelayTicks, cTaskPtr a_Task);
@@ -920,6 +954,12 @@ private:
double m_SpawnY;
double m_SpawnZ;
+ // Variables defining the minimum and maximum size for a nether portal
+ int m_MinNetherPortalWidth;
+ int m_MaxNetherPortalWidth;
+ int m_MinNetherPortalHeight;
+ int m_MaxNetherPortalHeight;
+
bool m_BroadcastDeathMessages;
bool m_BroadcastAchievementMessages;
diff --git a/src/WorldStorage/CMakeLists.txt b/src/WorldStorage/CMakeLists.txt
index 074958191..017d85f27 100644
--- a/src/WorldStorage/CMakeLists.txt
+++ b/src/WorldStorage/CMakeLists.txt
@@ -14,7 +14,8 @@ SET (SRCS
ScoreboardSerializer.cpp
StatSerializer.cpp
WSSAnvil.cpp
- WorldStorage.cpp)
+ WorldStorage.cpp
+)
SET (HDRS
EnchantmentSerializer.h
@@ -26,7 +27,8 @@ SET (HDRS
ScoreboardSerializer.h
StatSerializer.h
WSSAnvil.h
- WorldStorage.h)
+ WorldStorage.h
+)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set_source_files_properties(EnchantmentSerializer.cpp PROPERTIES COMPILE_FLAGS "-Wno-error=old-style-cast")
diff --git a/src/WorldStorage/SchematicFileSerializer.cpp b/src/WorldStorage/SchematicFileSerializer.cpp
index fb881e290..3e9ed5bef 100644
--- a/src/WorldStorage/SchematicFileSerializer.cpp
+++ b/src/WorldStorage/SchematicFileSerializer.cpp
@@ -9,6 +9,7 @@
#include "FastNBT.h"
#include "SchematicFileSerializer.h"
#include "../StringCompression.h"
+#include "../SelfTests.h"
@@ -21,6 +22,11 @@ static class cSchematicStringSelfTest
public:
cSchematicStringSelfTest(void)
{
+ cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&Test), "Schematic-to-string serialization");
+ }
+
+ static void Test(void)
+ {
cBlockArea ba;
ba.Create(21, 256, 21);
ba.RelLine(0, 0, 0, 9, 8, 7, cBlockArea::baTypes | cBlockArea::baMetas, E_BLOCK_WOODEN_STAIRS, 1);
@@ -232,27 +238,27 @@ bool cSchematicFileSerializer::LoadFromSchematicNBT(cBlockArea & a_BlockArea, cP
}
// Copy the block types and metas:
- size_t NumBytes = a_BlockArea.GetBlockCount();
- if (a_NBT.GetDataLength(TBlockTypes) < NumBytes)
+ size_t NumTypeBytes = a_BlockArea.GetBlockCount();
+ if (a_NBT.GetDataLength(TBlockTypes) < NumTypeBytes)
{
- LOG("BlockTypes truncated in the schematic file (exp %d, got %d bytes). Loading partial.",
- (int)NumBytes, (int)a_NBT.GetDataLength(TBlockTypes)
+ LOG("BlockTypes truncated in the schematic file (exp %u, got %u bytes). Loading partial.",
+ static_cast<unsigned>(NumTypeBytes), static_cast<unsigned>(a_NBT.GetDataLength(TBlockTypes))
);
- NumBytes = a_NBT.GetDataLength(TBlockTypes);
+ NumTypeBytes = a_NBT.GetDataLength(TBlockTypes);
}
- memcpy(a_BlockArea.m_BlockTypes, a_NBT.GetData(TBlockTypes), NumBytes);
+ memcpy(a_BlockArea.m_BlockTypes, a_NBT.GetData(TBlockTypes), NumTypeBytes);
if (AreMetasPresent)
{
- size_t NumBytes = a_BlockArea.GetBlockCount();
- if (a_NBT.GetDataLength(TBlockMetas) < NumBytes)
+ size_t NumMetaBytes = a_BlockArea.GetBlockCount();
+ if (a_NBT.GetDataLength(TBlockMetas) < NumMetaBytes)
{
- LOG("BlockMetas truncated in the schematic file (exp %d, got %d bytes). Loading partial.",
- (int)NumBytes, (int)a_NBT.GetDataLength(TBlockMetas)
+ LOG("BlockMetas truncated in the schematic file (exp %u, got %u bytes). Loading partial.",
+ static_cast<unsigned>(NumMetaBytes), static_cast<unsigned>(a_NBT.GetDataLength(TBlockMetas))
);
- NumBytes = a_NBT.GetDataLength(TBlockMetas);
+ NumMetaBytes = a_NBT.GetDataLength(TBlockMetas);
}
- memcpy(a_BlockArea.m_BlockMetas, a_NBT.GetData(TBlockMetas), NumBytes);
+ memcpy(a_BlockArea.m_BlockMetas, a_NBT.GetData(TBlockMetas), NumMetaBytes);
}
return true;
diff --git a/src/WorldStorage/WorldStorage.cpp b/src/WorldStorage/WorldStorage.cpp
index c7a295175..7e6cadb7e 100644
--- a/src/WorldStorage/WorldStorage.cpp
+++ b/src/WorldStorage/WorldStorage.cpp
@@ -84,7 +84,7 @@ void cWorldStorage::Stop(void)
void cWorldStorage::WaitForFinish(void)
{
- LOG("Waiting for the world storage to finish saving");
+ LOGD("Waiting for the world storage to finish saving");
{
m_LoadQueue.Clear();
@@ -97,7 +97,7 @@ void cWorldStorage::WaitForFinish(void)
m_ShouldTerminate = true;
m_Event.Set(); // Wake up the thread if waiting
super::Wait();
- LOG("World storage thread finished");
+ LOGD("World storage thread finished");
}