diff options
Diffstat (limited to 'src')
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"); } |