diff --git a/MCServer/Plugins/ProtectionAreas/Config.lua b/MCServer/Plugins/ProtectionAreas/Config.lua index c9b131f5c..b6fe34535 100644 --- a/MCServer/Plugins/ProtectionAreas/Config.lua +++ b/MCServer/Plugins/ProtectionAreas/Config.lua @@ -8,13 +8,35 @@ cConfig = { - m_Wand = cItem(E_ITEM_STICK, 1, 1); -- TODO: Make this configurable by loading it from an INI file + m_Wand = cItem(E_ITEM_STICK, 1, 1); -- The item to be used as the selection wand + m_AllowInteractNoArea = true; -- If there's no area, is a player allowed to build / dig? }; +--- Initializes the cConfig object, loads the configuration from an INI file +function InitializeConfig() + local ini = cIniFile("ProtectionAreas.ini"); + if (not(ini:ReadFile())) then + LOGINFO(PluginPrefix .. "Cannot read ProtectionAreas.ini, all plugin configuration is set to defaults"); + end + local WandItem = cItem(); + if ( + StringToItem(ini:GetValueSet("ProtectionAreas", "WandItem", ItemToString(cConfig.m_Wand)), WandItem) and + IsValidItem(WandItem.m_ItemType) + ) then + cConfig.m_Wand = WandItem; + end + cConfig.m_AllowInteractNoArea = ini:GetValueSetB("ProtectionAreas", "AllowInteractNoArea", cConfig.m_AllowInteractNoArea); + ini:WriteFile(); +end + + + + + --- Returns true if a_Item is the wand tool item function cConfig:IsWand(a_Item) return ( diff --git a/MCServer/Plugins/ProtectionAreas/HookHandlers.lua b/MCServer/Plugins/ProtectionAreas/HookHandlers.lua index 8869775f7..db552067c 100644 --- a/MCServer/Plugins/ProtectionAreas/HookHandlers.lua +++ b/MCServer/Plugins/ProtectionAreas/HookHandlers.lua @@ -23,7 +23,6 @@ end --- Called by MCS when a player's connectino is lost - either they disconnected or timed out function OnDisconnect(a_Player, a_Reason) -- Remove the player's cProtectionArea object - -- TODO: What if there are two players with the same name? need to check g_PlayerAreas[a_Player:GetUniqueID()] = nil; -- If the player is a VIP, they had a command state, remove that as well diff --git a/MCServer/Plugins/ProtectionAreas/PlayerAreas.lua b/MCServer/Plugins/ProtectionAreas/PlayerAreas.lua index 4ff50d8ad..5627f4d5f 100644 --- a/MCServer/Plugins/ProtectionAreas/PlayerAreas.lua +++ b/MCServer/Plugins/ProtectionAreas/PlayerAreas.lua @@ -73,8 +73,7 @@ function cPlayerAreas:CanInteractWithBlock(a_BlockX, a_BlockZ) end -- The coords are not inside any area - -- TODO: Have a config saying whether a player can build in the non-areated space or not - return true; + return cConfig.m_AllowInteractNoArea; end diff --git a/MCServer/Plugins/ProtectionAreas/ProtectionAreas.lua b/MCServer/Plugins/ProtectionAreas/ProtectionAreas.lua index 6e8881b72..8c2db1387 100644 --- a/MCServer/Plugins/ProtectionAreas/ProtectionAreas.lua +++ b/MCServer/Plugins/ProtectionAreas/ProtectionAreas.lua @@ -25,6 +25,7 @@ function Initialize(a_Plugin) a_Plugin:SetName("ProtectionAreas"); a_Plugin:SetVersion(1); + InitializeConfig(); if (not(InitializeStorage())) then LOGWARNING(PluginPrefix .. "failed to initialize Storage, plugin is disabled"); return false;