summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfaketruth <faketruth@0a769ca7-a7f5-676a-18bf-c427514a06d6>2011-10-03 21:39:53 +0200
committerfaketruth <faketruth@0a769ca7-a7f5-676a-18bf-c427514a06d6>2011-10-03 21:39:53 +0200
commit7e010e7f8fc3983c3bd85fe17da27e06bdb4c7d9 (patch)
tree5ef154088135039dd0ea9430b4cbe608ef17d8ff
parentSource for additional projects (diff)
downloadcuberite-7e010e7f8fc3983c3bd85fe17da27e06bdb4c7d9.tar
cuberite-7e010e7f8fc3983c3bd85fe17da27e06bdb4c7d9.tar.gz
cuberite-7e010e7f8fc3983c3bd85fe17da27e06bdb4c7d9.tar.bz2
cuberite-7e010e7f8fc3983c3bd85fe17da27e06bdb4c7d9.tar.lz
cuberite-7e010e7f8fc3983c3bd85fe17da27e06bdb4c7d9.tar.xz
cuberite-7e010e7f8fc3983c3bd85fe17da27e06bdb4c7d9.tar.zst
cuberite-7e010e7f8fc3983c3bd85fe17da27e06bdb4c7d9.zip
-rw-r--r--Lua-LICENSE.txt21
-rw-r--r--Plugins/ChatLog.lua41
-rw-r--r--Plugins/Core.lua663
-rw-r--r--Plugins/Fire.lua149
-rw-r--r--Plugins/MagicCarpet.lua169
-rw-r--r--clean.bat21
-rw-r--r--furnace.txt64
-rw-r--r--groups.ini17
-rw-r--r--items.ini213
-rw-r--r--makefile1108
-rw-r--r--monsters.ini11
-rw-r--r--recipes.txt280
-rw-r--r--settings.ini24
-rw-r--r--terrain.ini8
-rw-r--r--users.ini8
-rw-r--r--webadmin.ini6
16 files changed, 2803 insertions, 0 deletions
diff --git a/Lua-LICENSE.txt b/Lua-LICENSE.txt
new file mode 100644
index 000000000..bc4f3973c
--- /dev/null
+++ b/Lua-LICENSE.txt
@@ -0,0 +1,21 @@
+Copyright (C) 1994-2008 Lua.org, PUC-Rio.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Plugins/ChatLog.lua b/Plugins/ChatLog.lua
new file mode 100644
index 000000000..9f86a7086
--- /dev/null
+++ b/Plugins/ChatLog.lua
@@ -0,0 +1,41 @@
+local ChatLogPlugin = {}
+ChatLogPlugin.__index = ChatLogPlugin
+
+function ChatLogPlugin:new()
+ local t = {}
+ setmetatable(t, ChatLogPlugin)
+ local w = Lua__cPlugin:new()
+ tolua.setpeer(w, t)
+ w:tolua__set_instance(w)
+ return w
+end
+
+function ChatLogPlugin:OnDisable()
+ Log( self:GetName() .. " v." .. self:GetVersion() .. " is shutting down..." )
+end
+
+function ChatLogPlugin:Initialize()
+ self:SetName( "ChatLog" )
+ self:SetVersion( 1 )
+
+ PluginManager = cRoot:Get():GetPluginManager()
+ PluginManager:AddHook( self, cPluginManager.E_PLUGIN_CHAT )
+
+ self.Logger = cMCLogger:new_local("ChatLog"..GetTime()..".txt")
+ self.Logger:LogSimple("--- ChatLog started ---", 1);
+
+ Log( "Initialized " .. self:GetName() .. " v." .. self:GetVersion() )
+ return true
+end
+
+function ChatLogPlugin:OnChat( Message, Player )
+ Server = cRoot:Get():GetServer()
+
+ -- Lets get loggin'
+ self.Logger:LogSimple(Player:GetName() .. ": " .. Message, 1);
+
+ return false
+end
+
+Plugin = ChatLogPlugin:new()
+cRoot:Get():GetPluginManager():AddPlugin( Plugin )
diff --git a/Plugins/Core.lua b/Plugins/Core.lua
new file mode 100644
index 000000000..e124a9261
--- /dev/null
+++ b/Plugins/Core.lua
@@ -0,0 +1,663 @@
+---- Some settings -----
+SHOW_PLUGIN_NAMES = true -- If true, plugin name will be shown before commands
+ -- This is overwritten in the Initialize() function
+------------------------
+
+local BannedPlayersIni = {}
+local WhiteListIni = {}
+
+CorePlugin = {}
+CorePlugin.__index = CorePlugin
+
+function CorePlugin:new()
+ local t = {}
+ setmetatable(t, CorePlugin)
+ local w = Lua__cPlugin:new()
+ tolua.setpeer(w, t)
+ w:tolua__set_instance(w)
+ return w
+end
+
+function CorePlugin:OnDisable()
+ LOG( self:GetName() .. " v." .. self:GetVersion() .. " is shutting down..." )
+end
+
+function CorePlugin:Initialize()
+ self:SetName( "Core" )
+ self:SetVersion( 6 )
+
+ PluginManager = cRoot:Get():GetPluginManager()
+ PluginManager:AddHook( self, cPluginManager.E_PLUGIN_PLAYER_JOIN )
+ PluginManager:AddHook( self, cPluginManager.E_PLUGIN_LOGIN )
+ PluginManager:AddHook( self, cPluginManager.E_PLUGIN_BLOCK_PLACE )
+ PluginManager:AddHook( self, cPluginManager.E_PLUGIN_KILLED )
+
+ self:AddCommand("/help", " - [Page] Show this message", "core.help")
+ self:AddCommand("/pluginlist", " - Show list of plugins", "core.pluginlist")
+ self:AddCommand("/tp", " - [Player] - Teleport yourself to a player", "core.teleport")
+ self:AddCommand("/item", " - [ItemID/Name] <Amount> - Spawn an item for yourself", "core.item")
+ self:AddCommand("/list", " - Shows list of connected players", "core.playerlist")
+ self:AddCommand("/motd", " - Show message of the day", "core.motd")
+ self:AddCommand("/reload", " - Reload all plugins", "core.reload")
+ self:AddCommand("/time", " - [Day/Night] - Sets the time of day", "core.time")
+ self:AddCommand("/spawn", " - Return to the spawn", "core.spawn")
+ self:AddCommand("/kick", " - [Player] - Kick a player", "core.kick")
+ self:AddCommand("/ban", " - [Player] - Ban a player", "core.ban")
+ self:AddCommand("/unban", " - [Player] - Unban a player", "core.unban")
+ self:AddCommand("/top", " - Teleport yourself to the top most block", "core.top")
+
+ self:BindCommand( "/help", "core.help", HandleHelpCommand )
+ self:BindCommand( "/pluginlist","core.pluginlist", HandlePluginListCommand )
+ self:BindCommand( "/tp", "core.teleport", HandleTPCommand )
+ self:BindCommand( "/item", "core.item", HandleItemCommand )
+ self:BindCommand( "/i", "core.item", HandleItemCommand )
+ self:BindCommand( "/list", "core.playerlist", HandlePlayerListCommand )
+ self:BindCommand( "/who", "core.playerlist", HandlePlayerListCommand )
+ self:BindCommand( "/playerlist","core.playerlist", HandlePlayerListCommand )
+ self:BindCommand( "/motd", "core.motd", HandleMOTDCommand )
+ self:BindCommand( "/reload", "core.reload", HandleReloadCommand )
+ self:BindCommand( "/time", "core.time", HandleTimeCommand )
+ self:BindCommand( "/spawn", "core.spawn", HandleSpawnCommand )
+ self:BindCommand( "/home", "core.spawn", HandleSpawnCommand )
+ self:BindCommand( "/kick", "core.kick", HandleKickCommand )
+ self:BindCommand( "/ban", "core.ban", HandleBanCommand )
+ self:BindCommand( "/unban", "core.unban", HandleUnbanCommand )
+ self:BindCommand( "/top", "core.top", HandleTopCommand )
+
+ local IniFile = cIniFile("settings.ini")
+ if ( IniFile:ReadFile() == true ) then
+ SHOW_PLUGIN_NAMES = IniFile:GetValueB("HelpPlugin", "ShowPluginNames", true )
+ end
+
+ itemsINI = cIniFile("items.ini")
+ if ( itemsINI:ReadFile() == true ) then
+ LOGINFO("Core: loaded " .. itemsINI:GetNumValues('Items') .. " item names.")
+ HAVE_ITEM_NAMES = true
+ end
+
+ -- Load whitelist, and add default values and stuff
+ WhiteListIni = cIniFile("whitelist.ini")
+ if ( WhiteListIni:ReadFile() == true ) then
+ if( WhiteListIni:GetValueB("WhiteListSettings", "WhiteListOn", false) == true ) then
+ if( WhiteListIni:GetNumValues("WhiteList") > 0 ) then
+ LOGINFO("Core: loaded " .. WhiteListIni:GetNumValues('WhiteList') .. " whitelisted players.")
+ else
+ LOGWARN("WARNING: WhiteList is on, but there are no people in the whitelist!")
+ end
+ end
+ else
+ WhiteListIni:SetValueB("WhiteListSettings", "WhiteListOn", false )
+ WhiteListIni:SetValue("WhiteList", "", "") -- So it adds an empty header
+ WhiteListIni:DeleteValue("WhiteList", "") -- And remove the value
+ WhiteListIni:KeyComment("WhiteList", "PlayerName=1")
+ if( WhiteListIni:WriteFile() == false ) then
+ LOGWARN("WARNING: Could not write to whitelist.ini")
+ end
+ end
+
+ -- Load banned players, and add default values and stuff
+ BannedPlayersIni = cIniFile("banned.ini")
+ if ( BannedPlayersIni:ReadFile() == true ) then
+ if( BannedPlayersIni:GetNumValues("Banned") > 0 ) then
+ LOGINFO("Core: loaded " .. BannedPlayersIni:GetNumValues("Banned") .. " banned players.")
+ end
+ else
+ BannedPlayersIni:SetValue("Banned", "", "") -- So it adds an empty header
+ BannedPlayersIni:DeleteValue("Banned", "") -- And remove the value
+ BannedPlayersIni:KeyComment("Banned", "PlayerName=1")
+ if( BannedPlayersIni:WriteFile() == false ) then
+ LOGWARN("WARNING: Could not write to banned.ini")
+ end
+ end
+
+ LOG( "Initialized " .. self:GetName() .. " v." .. self:GetVersion() )
+ return true
+end
+
+function HandleTopCommand( Split, Player )
+ local World = cRoot:Get():GetWorld()
+
+ local PlayerPos = Player:GetPosition()
+ local Height = World:GetHeight( math.floor(PlayerPos.x), math.floor(PlayerPos.z) )
+
+ Player:TeleportTo( PlayerPos.x, Height+1, PlayerPos.z )
+ Player:SendMessage("Teleported to the top block")
+
+ return true
+end
+
+function HandleKickCommand( Split, Player )
+ if( #Split < 2 ) then
+ Player:SendMessage( cChatColor.Green .. "Usage: /kick [Player] <Reason>" )
+ return true
+ end
+
+ local World = cRoot:Get():GetWorld()
+ local OtherPlayer = World:GetPlayer( Split[2] )
+ if( OtherPlayer == nil ) then
+ Player:SendMessage( cChatColor.Green .. "Could not find player " .. Split[2] )
+ return true
+ end
+
+ local Reason = "You have been kicked"
+ if( #Split > 2 ) then
+ Reason = table.concat(Split, " ", 3)
+ end
+
+ local Server = cRoot:Get():GetServer()
+ LOGINFO( Player:GetName() .. " is kicking " .. OtherPlayer:GetName() .. " ( "..Reason..") " )
+ Server:SendMessage( "Kicking " .. OtherPlayer:GetName() )
+
+ local ClientHandle = OtherPlayer:GetClientHandle()
+ ClientHandle:Kick( Reason )
+
+ return true
+end
+
+function HandleBanCommand( Split, Player )
+ if( #Split < 2 ) then
+ Player:SendMessage( cChatColor.Green .. "Usage: /ban [Player] <Reason>" )
+ return true
+ end
+
+ local World = cRoot:Get():GetWorld()
+ local OtherPlayer = World:GetPlayer( Split[2] )
+ if( OtherPlayer == nil ) then
+ Player:SendMessage( cChatColor.Green .. "Could not find player " .. Split[2] )
+ return true
+ end
+
+ local Reason = "You have been banned"
+ if( #Split > 2 ) then
+ Reason = table.concat(Split, " ", 3)
+ end
+
+ local Server = cRoot:Get():GetServer()
+ LOGINFO( Player:GetName() .. " is banning " .. OtherPlayer:GetName() .. " ( "..Reason..") " )
+ Server:SendMessage( "Banning " .. OtherPlayer:GetName() )
+
+ local ClientHandle = OtherPlayer:GetClientHandle()
+ ClientHandle:Kick( Reason )
+
+ BannedPlayersIni:SetValueB("Banned", OtherPlayer:GetName(), true)
+ BannedPlayersIni:WriteFile()
+
+ return true
+end
+
+function HandleUnbanCommand( Split, Player )
+ if( #Split < 2 ) then
+ Player:SendMessage( cChatColor.Green .. "Usage: /unban [Player]" )
+ return true
+ end
+
+ if( BannedPlayersIni:GetValueB("Banned", Split[2], false) == false ) then
+ Player:SendMessage( cChatColor.Green .. Split[2] .. " is not banned!" )
+ return true
+ end
+
+ BannedPlayersIni:SetValueB("Banned", Split[2], false, false)
+ BannedPlayersIni:WriteFile()
+
+ local Server = cRoot:Get():GetServer()
+ LOGINFO( Player:GetName() .. " is unbanning " .. Split[2] )
+ Server:SendMessage( "Unbanning " .. Split[2] )
+
+ return true
+end
+
+function HandleMOTDCommand( Split, Player )
+ ShowMOTDTo( Player )
+ return true
+end
+
+function ShowMOTDTo( Player )
+ Player:SendMessage( cChatColor.Gold .. "Welcome to the MCServer test server!" );
+ Player:SendMessage( cChatColor.Gold .. "http://mcserver.ae-c.net/" );
+ Player:SendMessage( cChatColor.Gold .. "Type /help for all commands" );
+end
+
+function HandleSpawnCommand( Split, Player )
+ World = cRoot:Get():GetWorld()
+ Player:TeleportTo( World:GetSpawnX(), World:GetSpawnY(), World:GetSpawnZ() )
+ LOGINFO( Player:GetName() .. " returned to spawn." )
+ return true
+end
+
+function HandleTimeCommand( Split, Player )
+ if( #Split ~= 2 ) then
+ Player:SendMessage( cChatColor.Green .. "Usage: /time [Day/Night]" )
+ return true;
+ end
+
+ local Server = cRoot:Get():GetServer()
+ if( string.upper( Split[2] ) == "DAY") then
+ cRoot:Get():GetWorld():SetWorldTime( 0 )
+ Server:SendMessage( cChatColor.Green .. Player:GetName() .. " set the time to Day.")
+ elseif( string.upper( Split[2] ) == "NIGHT") then
+ cRoot:Get():GetWorld():SetWorldTime( 12000 + 1000 )
+ Server:SendMessage( cChatColor.Green .. Player:GetName() .. " set the time to Night.")
+ else
+ Player:SendMessage( cChatColor.Green .. "Usage: /time [Day/Night]" )
+ end
+ return true
+end
+
+function HandleReloadCommand( Split, Player )
+ Server = cRoot:Get():GetServer()
+ Server:SendMessage( cChatColor.Green .. "Reloading all plugins." )
+ cRoot:Get():GetPluginManager():ReloadPlugins()
+ return true
+end
+
+function HandlePlayerListCommand( Split, Player )
+ local World = cRoot:Get():GetWorld()
+ local PlayerList = World:GetAllPlayers()
+
+ local Message = cChatColor.Green .. "Connected players: (".. cChatColor.White.. #PlayerList .. cChatColor.Green .. ")"
+ Player:SendMessage( Message )
+
+ local PlayerTable = {}
+ for i, TempPlayer in ipairs( PlayerList ) do
+ local PlayerName = TempPlayer:GetName()
+ table.insert(PlayerTable, PlayerName )
+ end
+
+ Player:SendMessage( table.concat(PlayerTable, " ") )
+ return true
+end
+
+function HandleHelpCommand( Split, Player )
+ local PluginManager = cRoot:Get():GetPluginManager()
+
+ local LinesPerPage = 9
+ local CurrentPage = 1
+ local CurrentLine = 0
+
+ if( #Split == 2 ) then
+ CurrentPage = tonumber(Split[2])
+ end
+
+ local Pages = {}
+
+ local PluginList = PluginManager:GetAllPlugins()
+ for i, Plugin in ipairs( PluginList ) do
+ local Commands = Plugin:GetCommands()
+ for i, v in ipairs( Commands ) do
+ if( Player:HasPermission( v.Permission ) ) then
+ local PageNum = math.floor( CurrentLine/LinesPerPage )+1
+ if( Pages[ PageNum ] == nil ) then Pages[ PageNum ] = {} end -- Create page
+
+ if( Pages[ PageNum ].ShownName ~= Plugin:GetName() and SHOW_PLUGIN_NAMES == true ) then
+ if( CurrentLine == LinesPerPage * PageNum -1 ) then -- Don't add if it's the last line of the page, it looks silly
+ -- Add it to the next page instead
+ CurrentLine = CurrentLine+1
+ PageNum = math.floor( CurrentLine/LinesPerPage )+1
+
+ if( Pages[ PageNum ] == nil ) then Pages[ PageNum ] = {} end -- Create page
+ table.insert( Pages[ PageNum ], cChatColor.Gold .. Plugin:GetName() )
+ else
+ Pages[ PageNum ].ShownName = Plugin:GetName()
+ table.insert( Pages[ PageNum ], cChatColor.Gold .. Plugin:GetName() )
+ end
+ CurrentLine = CurrentLine+1
+ PageNum = math.floor( CurrentLine/LinesPerPage )+1
+ if( Pages[ PageNum ] == nil ) then Pages[ PageNum ] = {} end -- Create page
+ end
+ local Message = cChatColor.Blue .. v.Command .. v.Description;
+ table.insert( Pages[ PageNum ], Message )
+ CurrentLine = CurrentLine+1
+ end
+ end
+ end
+
+ Player:SendMessage( cChatColor.Purple .. "- All commands - " .. cChatColor.Gold .. "[Page " .. (CurrentPage) .."/"..#Pages.."]" )
+
+ if( Pages[CurrentPage] ~= nil ) then
+ for i, v in ipairs(Pages[CurrentPage]) do
+ Player:SendMessage( v )
+ end
+ end
+
+ return true
+end
+
+function HandlePluginListCommand( Split, Player )
+ local PluginManager = cRoot:Get():GetPluginManager()
+ local PluginList = PluginManager:GetAllPlugins()
+
+ local PluginTable = {}
+ for i, Plugin in ipairs( PluginList ) do
+ table.insert(PluginTable, Plugin:GetName() )
+ end
+
+ Player:SendMessage( cChatColor.Green .. "Loaded plugins:" )
+ Player:SendMessage( cChatColor.Gold .. table.concat(PluginTable, cChatColor.Gold.." ") )
+ return true
+end
+
+function HandleItemCommand( Split, Player )
+ if( #Split ~= 2 and #Split ~=3 ) then
+ Player:SendMessage( cChatColor.Green .. "Usage: /item [ItemID/Name] <Amount>" )
+ return true
+ end
+
+ foundItem = false
+
+ ItemID = tonumber( Split[2] )
+ if( ItemID == nil or not isValidItem( ItemID ) ) then
+ -- nothing
+ else
+ foundItem = true
+ end
+
+ if not foundItem then
+ if ( HAVE_ITEM_NAMES == true ) then
+ itemValue = itemsINI:GetValueI('Items', ''..Split[2]..'', 0)
+ if itemValue ~= 0 then
+ ItemID = itemValue
+ if( ItemID == nil or not isValidItem( tonumber(itemValue) ) ) then
+ -- nothing
+ else
+ foundItem = true
+ end
+ end
+ end
+ end
+
+ if not foundItem then
+ Player:SendMessage( cChatColor.Green .. "Invalid Item ID / Name !" )
+ return true
+ end
+
+ local Amount = 1
+ if( #Split == 3 ) then
+ Amount = tonumber( Split[3] )
+ if( Amount == nil or Amount < 1 or Amount > 512 ) then
+ Player:SendMessage( cChatColor.Green .. "Invalid Amount !" )
+ return true
+ end
+ end
+
+ local NewItem = cItem( ItemID, Amount )
+ if( Player:GetInventory():AddItem( NewItem ) == true ) then
+ Player:SendMessage( cChatColor.Green .. "There you go !" )
+ LOG("Gave " .. Player:GetName() .. " " .. Amount .. " times " .. ItemID )
+ else
+ Player:SendMessage( cChatColor.Green .. "Not enough space in inventory !" )
+ end
+ return true
+end
+
+function HandleTPCommand( Split, Player )
+ if( #Split ~= 2 ) then
+ Player:SendMessage( cChatColor.Green .. "Usage: /tp [PlayerName]" )
+ return true
+ end
+ local World = cRoot:Get():GetWorld()
+ local OtherPlayer = World:GetPlayer( Split[2] )
+ if( OtherPlayer == nil ) then
+ Player:SendMessage( cChatColor.Green .. "Can't find player " .. Split[2] )
+ elseif( OtherPlayer == Player ) then
+ Player:SendMessage( cChatColor.Green .. "Already there :)" )
+ else
+ Player:TeleportTo( OtherPlayer )
+ Player:SendMessage( cChatColor.Green .. "You teleported to "..OtherPlayer:GetName().."!" )
+ OtherPlayer:SendMessage( cChatColor.Green .. Player:GetName().." teleported to you!" )
+ end
+ return true
+end
+
+function CorePlugin:OnPlayerJoin( Player )
+ ShowMOTDTo( Player )
+ return false
+end
+
+function CorePlugin:OnBlockPlace( Block, Player )
+
+ -- dont check if the direction is in the air
+ if Block.m_Direction ~= -1 then
+
+ local X = Block.m_PosX
+ local Y = Block.m_PosY
+ local Z = Block.m_PosZ
+ X, Y, Z = AddDirection( X, Y, Z, Block.m_Direction )
+ if( Y >= 128 or Y < 0 ) then
+ return true
+ end
+
+ local collision = false
+ local World = cRoot:Get():GetWorld()
+ local PlayerList = World:GetAllPlayers()
+
+ -- check if a player occupies the placement location
+ for i, Player in ipairs( PlayerList ) do
+
+ -- drop the decimals, we only care about the full block X,Y,Z
+ local PlayerX = math.floor(Player:GetPosX(), 0)
+ local PlayerY = math.floor(Player:GetPosY(), 0)
+ local PlayerZ = math.floor(Player:GetPosZ(), 0)
+
+ local BlockX = Block.m_PosX
+ local BlockY = Block.m_PosY
+ local BlockZ = Block.m_PosZ
+
+ -- player height is 2 blocks, so we check the position and then offset it up one
+ -- so they can't place a block on there face
+
+ if Block.m_Direction == 0 then if PlayerY == BlockY-2 and PlayerX == BlockX and PlayerZ == BlockZ then collision = true end end
+ if Block.m_Direction == 1 then if PlayerY == BlockY+1 and PlayerX == BlockX and PlayerZ == BlockZ then collision = true end end
+
+ if Block.m_Direction == 2 then if PlayerY == BlockY and PlayerX == BlockX and PlayerZ == BlockZ-1 then collision = true end end
+ if Block.m_Direction == 2 then if PlayerY+1 == BlockY and PlayerX == BlockX and PlayerZ == BlockZ-1 then collision = true end end
+
+ if Block.m_Direction == 3 then if PlayerY == BlockY and PlayerX == BlockX and PlayerZ == BlockZ+1 then collision = true end end
+ if Block.m_Direction == 3 then if PlayerY+1 == BlockY and PlayerX == BlockX and PlayerZ == BlockZ+1 then collision = true end end
+
+ if Block.m_Direction == 4 then if PlayerY == BlockY and PlayerX == BlockX-1 and PlayerZ == BlockZ then collision = true end end
+ if Block.m_Direction == 4 then if PlayerY+1 == BlockY and PlayerX == BlockX-1 and PlayerZ == BlockZ then collision = true end end
+
+ if Block.m_Direction == 5 then if PlayerY == BlockY and PlayerX == BlockX+1 and PlayerZ == BlockZ then collision = true end end
+ if Block.m_Direction == 5 then if PlayerY+1 == BlockY and PlayerX == BlockX+1 and PlayerZ == BlockZ then collision = true end end
+
+ end
+
+ if collision then
+ return true
+ else
+ return false
+ end
+
+ end
+
+ return false
+
+end
+
+function CorePlugin:OnKilled( Killed, Killer )
+ if( Killer == nil ) then
+ local KilledPlayer = tolua.cast( Killed, "cPlayer")
+ if( not KilledPlayer:IsA("cPlayer") or KilledPlayer == nil ) then
+ return false
+ end
+
+ local Server = cRoot:Get():GetServer()
+ Server:SendMessage( cChatColor.Red .. KilledPlayer:GetName() .. " died" )
+ else
+ local KilledPlayer = tolua.cast( Killed, "cPlayer")
+ if( not KilledPlayer:IsA("cPlayer") or KilledPlayer == nil ) then
+ return false
+ end
+ local KillerPlayer = tolua.cast( Killer, "cPlayer")
+ if( not KillerPlayer:IsA("cPlayer") or KillerPlayer == nil ) then
+ return false
+ end
+
+ local Server = cRoot:Get():GetServer()
+ Server:SendMessage( cChatColor.Red .. KilledPlayer:GetName() .. " was killed by " .. KillerPlayer:GetName() .. "!" )
+ end
+ return false
+end
+
+function CorePlugin:OnLogin( PacketData )
+ if( PacketData.m_Username ~= "" ) then
+ if( BannedPlayersIni:GetValueB("Banned", PacketData.m_Username, false) == true ) then
+ local Server = cRoot:Get():GetServer()
+ Server:SendMessage( PacketData.m_Username .. " tried to join, but is banned!" )
+ LOGINFO( PacketData.m_Username .. " tried to join, but is banned!")
+ return true -- Player is banned, return true to deny access
+ end
+ if( WhiteListIni:GetValueB("WhiteListSettings", "WhiteListOn", false ) == true ) then
+ if( WhiteListIni:GetValueB("WhiteList", PacketData.m_Username, false ) == false ) then -- not on whitelist
+ local Server = cRoot:Get():GetServer()
+ Server:SendMessage( PacketData.m_Username .. " tried to join, but is not on the whitelist." )
+ LOGINFO( PacketData.m_Username .. " tried to join, but is not on the whitelist." )
+ return true -- Deny access to the server
+ end
+ end
+ end
+
+ return false
+end
+
+Plugin = CorePlugin:new()
+cRoot:Get():GetPluginManager():AddPlugin( Plugin )
+
+------------------------------------------------
+-- Now some webadmin stuffs! --
+------------------------------------------------
+local PlayerListWeb = {}
+PlayerListWeb.__index = PlayerListWeb
+
+function PlayerListWeb:new()
+ local t = {}
+ setmetatable(t, PlayerListWeb)
+ local w = Lua__cWebPlugin:new()
+ tolua.setpeer(w, t)
+ w:tolua__set_instance(w)
+ return w
+end
+
+function PlayerListWeb:HandleRequest( Request )
+ local World = cRoot:Get():GetWorld()
+ local Content = ""
+ Content = Content .. "<br>Connected Players: <b>" .. World:GetNumPlayers() .. "</b><br>"
+ Content = Content .. "<ul>"
+
+ local PlayerList = World:GetAllPlayers()
+ for i, Player in ipairs( PlayerList ) do
+ Content = Content .. "<li>" .. Player:GetName()
+ end
+
+ Content = Content .. "</ul>"
+ return Content
+end
+
+WebPlugin = PlayerListWeb:new()
+WebPlugin:SetName("PlayerList")
+
+------------------------------------------------
+-- Reload web plugin --
+------------------------------------------------
+local ReloadWeb = {}
+ReloadWeb.__index = ReloadWeb
+
+function ReloadWeb:new()
+ local t = {}
+ setmetatable(t, ReloadWeb)
+ local w = Lua__cWebPlugin:new()
+ tolua.setpeer(w, t)
+ w:tolua__set_instance(w)
+ return w
+end
+
+function ReloadWeb:HandleRequest( Request )
+ local World = cRoot:Get():GetWorld()
+ local Content = ""
+
+ if( Request.Params:get("reload") ~= "" ) then
+ Content = Content .. "<head><meta http-equiv=\"refresh\" content=\"1;././\"></head>"
+ Content = Content .. "<br>Reloading plugins...<br>"
+ cRoot:Get():GetPluginManager():ReloadPlugins()
+ else
+ Content = Content .. "<br>Click the reload button to reload all plugins!<br>"
+ Content = Content .. "<form method=GET>"
+ Content = Content .. "<input type=\"submit\" name=\"reload\" value=\"Reload!\">"
+ Content = Content .. "</form>"
+ end
+ return Content
+end
+
+WebPlugin = ReloadWeb:new()
+WebPlugin:SetName("Reload")
+
+------------------------------------------------
+-- Whitelist web plugin --
+------------------------------------------------
+local WhiteListWeb = {}
+WhiteListWeb.__index = WhiteListWeb
+
+function WhiteListWeb:new()
+ local t = {}
+ setmetatable(t, WhiteListWeb)
+ local w = Lua__cWebPlugin:new()
+ tolua.setpeer(w, t)
+ w:tolua__set_instance(w)
+ return w
+end
+
+local function HTMLDeleteButton( name )
+ return "<form method=GET><input type=\"hidden\" name=\"whitelist-delete\" value=\"".. name .."\"><input type=\"submit\" value=\"Remove from whitelist\"></form>"
+end
+
+function WhiteListWeb:HandleRequest( Request )
+ local World = cRoot:Get():GetWorld()
+
+ local UpdateMessage = ""
+ if( Request.Params:get("whitelist-add") ~= "" ) then
+ local PlayerName = Request.Params:get("whitelist-add")
+
+ if( WhiteListIni:GetValueB("WhiteList", PlayerName, false) == true ) then
+ UpdateMessage = "<b>".. PlayerName.."</b> is already on the whitelist"
+ else
+ WhiteListIni:SetValueB("WhiteList", PlayerName, true )
+ UpdateMessage = "Added <b>" .. PlayerName .. "</b> to whitelist."
+ WhiteListIni:WriteFile()
+ end
+ elseif( Request.Params:get("whitelist-delete") ~= "" ) then
+ local PlayerName = Request.Params:get("whitelist-delete")
+ WhiteListIni:DeleteValue( "WhiteList", PlayerName )
+ UpdateMessage = "Removed <b>" .. PlayerName .. "</b> from whitelist."
+ WhiteListIni:WriteFile()
+ elseif( Request.Params:get("whitelist-reload") ~= "" ) then
+ WhiteListIni:Erase() -- Empty entire loaded ini first, otherwise weird shit goes down
+ WhiteListIni:ReadFile()
+ UpdateMessage = "Loaded from disk"
+ end
+
+
+ local Content = ""
+ Content = Content .. "<h4>Whitelisted players</h4>"
+ Content = Content .. "<table>"
+ local KeyNum = WhiteListIni:FindKey("WhiteList")
+ local NumValues = WhiteListIni:GetNumValues(KeyNum)
+ for Num = 0, NumValues-1 do
+ if( WhiteListIni:GetValue(KeyNum, Num, "0") == "1" ) then
+ local PlayerName = WhiteListIni:GetValueName(KeyNum, Num )
+ Content = Content .. "<tr><td>" .. PlayerName .. "</td><td>" .. HTMLDeleteButton( PlayerName ) .. "</td></tr>"
+ end
+ end
+ Content = Content .. "</table>"
+ Content = Content .. "<br><h4>Add player to whitelist</h4>"
+ Content = Content .. "<form method=\"GET\">"
+ Content = Content .. "<input type=\"text\" name=\"whitelist-add\"><input type=\"submit\" value=\"Add player\">"
+ Content = Content .. "</form>"
+ Content = Content .. "<form method=\"GET\">"
+ Content = Content .. "<input type=\"submit\" name=\"whitelist-reload\" value=\"Reload from disk\">"
+ Content = Content .. "</form>"
+ Content = Content .. "<br>"..UpdateMessage
+ return Content
+end
+
+WebPlugin = WhiteListWeb:new()
+WebPlugin:SetName("WhiteList") \ No newline at end of file
diff --git a/Plugins/Fire.lua b/Plugins/Fire.lua
new file mode 100644
index 000000000..88bff84da
--- /dev/null
+++ b/Plugins/Fire.lua
@@ -0,0 +1,149 @@
+local FirePlugin = {}
+FirePlugin.__index = FirePlugin
+
+FireBlocks = {}
+
+function FirePlugin:new()
+ local t = {}
+ setmetatable(t, FirePlugin)
+ local w = Lua__cPlugin:new()
+ tolua.setpeer(w, t)
+ w:tolua__set_instance(w)
+ return w
+end
+
+function IsForeverBurnable( BlockID )
+ if( BlockID == E_BLOCK_BLOODSTONE ) then
+ return true
+ end
+ return false
+end
+
+function IsBurnable( BlockID )
+ if( BlockID == E_BLOCK_LEAVES or BlockID == E_BLOCK_LOG ) then
+ return true
+ end
+
+ return false
+end
+
+function FindBurnableAround( X, Y, Z )
+ World = cRoot:Get():GetWorld()
+
+ ListBurnables = {}
+ if( IsBurnable( World:GetBlock(X-1, Y, Z) ) ) then
+ table.insert( ListBurnables, { ["x"] = X-1, ["y"] = Y, ["z"] = Z } )
+ end
+ if( IsBurnable( World:GetBlock(X+1, Y, Z) ) ) then
+ table.insert( ListBurnables, { ["x"] = X+1, ["y"] = Y, ["z"] = Z } )
+ end
+ if( IsBurnable( World:GetBlock(X, Y-1, Z) ) ) then
+ table.insert( ListBurnables, { ["x"] = X, ["y"] = Y-1, ["z"] = Z } )
+ end
+ if( IsBurnable( World:GetBlock(X, Y+1, Z) ) ) then
+ table.insert( ListBurnables, { ["x"] = X, ["y"] = Y+1, ["z"] = Z } )
+ end
+ if( IsBurnable( World:GetBlock(X, Y, Z-1) ) ) then
+ table.insert( ListBurnables, { ["x"] = X, ["y"] = Y, ["z"] = Z-1 } )
+ end
+ if( IsBurnable( World:GetBlock(X, Y, Z+1) ) ) then
+ table.insert( ListBurnables, { ["x"] = X, ["y"] = Y, ["z"] = Z+1 } )
+ end
+
+ return ListBurnables
+end
+
+function FirePlugin:OnDisable()
+ Log( self:GetName() .. " v." .. self:GetVersion() .. " is shutting down..." )
+end
+
+function FirePlugin:Initialize()
+ self:SetName( "Fire" )
+ self:SetVersion( 1 )
+
+ PluginManager = cRoot:Get():GetPluginManager()
+ PluginManager:AddHook( self, cPluginManager.E_PLUGIN_TICK )
+ PluginManager:AddHook( self, cPluginManager.E_PLUGIN_BLOCK_PLACE )
+ PluginManager:AddHook( self, cPluginManager.E_PLUGIN_BLOCK_DIG )
+
+ Log( "Initialized " .. self:GetName() .. " v." .. self:GetVersion() )
+ return true
+end
+
+function FirePlugin:OnBlockPlace( PacketData, Player )
+
+ if( PacketData.m_ItemType == E_BLOCK_FIRE or PacketData.m_ItemType == E_ITEM_FLINT_AND_STEEL ) then
+ if( PacketData.m_Direction > -1 ) then
+ local X = PacketData.m_PosX
+ local Y = PacketData.m_PosY
+ local Z = PacketData.m_PosZ
+
+ X, Y, Z = AddDirection( X, Y, Z, PacketData.m_Direction )
+
+ --Since flint and steel doesn't do anything on the server side yet
+ if( PacketData.m_ItemType == E_ITEM_FLINT_AND_STEEL ) then
+ local World = cRoot:Get():GetWorld()
+ World:SetBlock( X, Y, Z, E_BLOCK_FIRE, 0 )
+ end
+
+ if( not IsForeverBurnable( World:GetBlock( X, Y-1, Z ) ) ) then
+ table.insert( FireBlocks, { ["x"] = X, ["y"] = Y, ["z"] = Z } )
+ end
+ end
+ end
+
+ return false -- dont forbid placing the fire
+end
+
+-- To put out fires! :D
+function FirePlugin:OnBlockDig( PacketData, Player )
+ if( PacketData.m_Direction < 0 ) then
+ return false
+ end
+
+ local X = PacketData.m_PosX
+ local Y = PacketData.m_PosY
+ local Z = PacketData.m_PosZ
+
+ X, Y, Z = AddDirection( X, Y, Z, PacketData.m_Direction )
+
+ local World = cRoot:Get():GetWorld()
+ if( World:GetBlock( X, Y, Z ) == E_BLOCK_FIRE ) then
+ World:SetBlock( X, Y, Z, E_BLOCK_AIR, 0 )
+ end
+
+ return false
+end
+
+NumTicks = 0
+function FirePlugin:Tick( DeltaTime )
+ if( NumTicks < 10 ) then -- Only spread every 10 ticks, to make sure it doesnt happen too fast
+ NumTicks = NumTicks + 1
+ return
+ end
+ NumTicks = 0
+
+ World = cRoot:Get():GetWorld()
+
+ NewTable = {}
+ for key,val in pairs(FireBlocks) do
+ X = val["x"]
+ Y = val["y"]
+ Z = val["z"]
+ Burnables = FindBurnableAround(X, Y, Z)
+ if( math.random(10) > 5 ) then
+ table.insert( NewTable, val )
+ elseif( #Burnables > 0 ) then
+ ToBurn = Burnables[ math.random( #Burnables ) ]
+ World:SetBlock( ToBurn["x"], ToBurn["y"], ToBurn["z"], E_BLOCK_FIRE, 0 )
+ table.insert( NewTable, ToBurn )
+ table.insert( NewTable, val )
+ else
+ World:SetBlock( X, Y, Z, 0, 0 )
+ end
+ end
+ FireBlocks = NewTable
+end
+
+Plugin = FirePlugin:new()
+cRoot:Get():GetPluginManager():AddPlugin( Plugin )
diff --git a/Plugins/MagicCarpet.lua b/Plugins/MagicCarpet.lua
new file mode 100644
index 000000000..69ccd0d5c
--- /dev/null
+++ b/Plugins/MagicCarpet.lua
@@ -0,0 +1,169 @@
+-- Location object
+cLocation = {}
+function cLocation:new( x, y, z )
+ local object = { x = x, y = y, z = z }
+ setmetatable(object, { __index = cLocation })
+ return object
+end
+
+-- Offsets
+cFibers = { }
+function cFibers:new()
+ local object = {
+ cLocation:new( 2, -1, 2 ),
+ cLocation:new( 2, -1, 1 ),
+ cLocation:new( 2, -1, 0 ),
+ cLocation:new( 2, -1, -1 ),
+ cLocation:new( 2, -1, -2 ),
+ cLocation:new( 1, -1, 2 ),
+ cLocation:new( 1, -1, 1 ),
+ cLocation:new( 1, -1, 0 ),
+ cLocation:new( 1, -1, -1 ),
+ cLocation:new( 1, -1, -2 ),
+ cLocation:new( 0, -1, 2 ),
+ cLocation:new( 0, -1, 1 ),
+ cLocation:new( 0, -1, 0 ),
+ cLocation:new( 0, -1, -1 ),
+ cLocation:new( 0, -1, -2 ),
+ cLocation:new( -1, -1, 2 ),
+ cLocation:new( -1, -1, 1 ),
+ cLocation:new( -1, -1, 0 ),
+ cLocation:new( -1, -1, -1 ),
+ cLocation:new( -1, -1, -2 ),
+ cLocation:new( -2, -1, 2 ),
+ cLocation:new( -2, -1, 1 ),
+ cLocation:new( -2, -1, 0 ),
+ cLocation:new( -2, -1, -1 ),
+ cLocation:new( -2, -1, -2 ),
+ imadeit = false,
+ }
+ setmetatable(object, { __index = cFibers })
+ return object;
+end
+
+-- Carpet object
+cCarpet = {}
+function cCarpet:new()
+ local object = { Location = cLocation:new(0,0,0),
+ Fibers = cFibers:new(),
+ }
+ setmetatable(object, { __index = cCarpet })
+ return object
+end
+
+function cCarpet:remove()
+ local World = cRoot:Get():GetWorld()
+ for i, fib in ipairs( self.Fibers ) do
+ local x = self.Location.x + fib.x
+ local y = self.Location.y + fib.y
+ local z = self.Location.z + fib.z
+ local BlockID = World:GetBlock( x, y, z )
+ if( fib.imadeit == true and BlockID == E_BLOCK_GLASS ) then
+ World:SetBlock( x, y, z, 0, 0 )
+ fib.imadeit = false
+ end
+ end
+end
+
+function cCarpet:draw()
+ local World = cRoot:Get():GetWorld()
+ for i, fib in ipairs( self.Fibers ) do
+ local x = self.Location.x + fib.x
+ local y = self.Location.y + fib.y
+ local z = self.Location.z + fib.z
+ local BlockID = World:GetBlock( x, y, z )
+ if( BlockID == 0 ) then
+ fib.imadeit = true
+ World:SetBlock( x, y, z, E_BLOCK_GLASS, 0 )
+ else
+ fib.imadeit = false
+ end
+ end
+end
+
+function cCarpet:moveTo( NewPos )
+ local x = math.floor( NewPos.x )
+ local y = math.floor( NewPos.y )
+ local z = math.floor( NewPos.z )
+ if( self.Location.x ~= x or self.Location.y ~= y or self.Location.z ~= z ) then
+ self:remove()
+ self.Location = cLocation:new( x, y, z )
+ self:draw()
+ end
+end
+
+
+MagicCarpetPlugin = {}
+MagicCarpetPlugin.__index = MagicCarpetPlugin
+
+function MagicCarpetPlugin:new()
+ local t = {}
+ setmetatable(t, MagicCarpetPlugin)
+ local w = Lua__cPlugin:new()
+ tolua.setpeer(w, t)
+ w:tolua__set_instance(w)
+ return w
+end
+
+function MagicCarpetPlugin:Initialize()
+ self:SetName( "MagicCarpet" )
+ self:SetVersion( 1 )
+
+ PluginManager = cRoot:Get():GetPluginManager()
+ PluginManager:AddHook( self, cPluginManager.E_PLUGIN_PLAYER_MOVE)
+ PluginManager:AddHook( self, cPluginManager.E_PLUGIN_DISCONNECT)
+
+ self:AddCommand("/mc", " - Spawns a magical carpet!", "magiccarpet")
+ self:BindCommand( "/mc", "magiccarpet", HandleCarpetCommand )
+
+ self.Carpets = {}
+
+ Log( "Initialized " .. self:GetName() .. " v." .. self:GetVersion() )
+ return true
+end
+
+function MagicCarpetPlugin:OnDisable()
+ Log( self:GetName() .. " v." .. self:GetVersion() .. " is shutting down..." )
+ for i, Carpet in pairs( self.Carpets ) do
+ Carpet:remove()
+ end
+end
+
+function HandleCarpetCommand( Split, Player )
+ Carpet = self.Carpets[ Player ]
+ if( Carpet == nil ) then
+ self.Carpets[ Player ] = cCarpet:new()
+ Player:SendMessage("You're on a magic carpet!" )
+ else
+ Carpet:remove()
+ self.Carpets[ Player ] = nil
+ Player:SendMessage("The carpet vanished!" )
+ end
+
+ return true
+end
+
+function MagicCarpetPlugin:OnDisconnect( Reason, Player )
+ local Carpet = self.Carpets[ Player ]
+ if( Carpet ~= nil ) then
+ Carpet:remove()
+ end
+ self.Carpets[ Player ] = nil
+end
+
+function MagicCarpetPlugin:OnPlayerMove( Player )
+ local Carpet = self.Carpets[ Player ]
+ if( Carpet == nil ) then
+ return
+ end
+
+ if( Player:GetPitch() == 90 ) then
+ Carpet:moveTo( cLocation:new( Player:GetPosX(), Player:GetPosY()-1, Player:GetPosZ() ) )
+ else
+ Carpet:moveTo( cLocation:new( Player:GetPosX(), Player:GetPosY(), Player:GetPosZ() ) )
+ end
+end
+
+Plugin = MagicCarpetPlugin:new()
+cRoot:Get():GetPluginManager():AddPlugin( Plugin )
+
diff --git a/clean.bat b/clean.bat
new file mode 100644
index 000000000..31ed6cc9a
--- /dev/null
+++ b/clean.bat
@@ -0,0 +1,21 @@
+del *.ncb
+del *.ilk
+del *.lib
+del *.exp
+del *.map
+del *.pdb
+del MCServer.exe
+del MCServer_debug.exe
+del log.txt
+del *.bsc
+del applog.txt
+del *.suo /AH
+del *.user
+del debug\*.* /Q
+del release\*.* /Q
+rd release /Q
+rd debug /Q
+
+cd VC2010
+call clean.bat
+cd .. \ No newline at end of file
diff --git a/furnace.txt b/furnace.txt
new file mode 100644
index 000000000..c8e3cd0c7
--- /dev/null
+++ b/furnace.txt
@@ -0,0 +1,64 @@
+#**************************
+# Default Furnace Recipes #
+#*************************#
+#
+#
+#******************************************************#
+# Basic Notation Help
+#******************************************************#
+#
+# **** Item Definition ****
+# An Item is defined by an Item ID, an amount (and health)
+# The health is optional, and if not specified it's
+# assumed to be 0
+#
+# -Cactus Green:
+# 351 : 1 ( : 2 )
+# ItemID : Amount ( : Health )
+#
+#
+# **** Recipe and result ****
+#
+# 4:1@10000=1:1 -> Produces 1 smooth stone from
+# 1 cobblestone in 10 second
+#
+# 4 : 1 @ 10000 = 1 : 1
+# ItemID : Amount @ milliseconds = ItemID : Amount
+#
+# **** Burnable Materials / Fuel ****
+#
+# !17:1=15000 -> 1 Wood burns for 15000 milliseconds
+# (15 s)
+#
+# ! 17 : 1 = 15000
+# Fuel ItemID : Amount = milliseconds
+#
+#******************************************************#
+
+#--------------------------
+# Let's get cookin' :D
+
+4:1 @10000=1:1 #-> 1 Cobblestone -> 1 Rock
+15:1 @10000=265:1 #-> 1 Iron Ore -> 1 Iron Ingot
+14:1 @10000=266:1 #-> 1 Gold Ore -> 1 Gold Ingot
+12:1 @10000=20:1 #-> 1 Sand -> 1 Glass
+319:1@10000=320:1 #-> 1 Raw Pork -> 1 Cooked Pork
+337:1@10000=336:1 #-> 1 Clay -> 1 Clay Brick
+349:1@10000=350:1 #-> 1 Raw Fish -> 1 Cooked Fish
+17:1 @10000=263:1 #-> 1 Wood -> 1 Charcoal
+81:1 @10000=351:1:2 #-> 1 Cactus -> 1 Dye
+
+#--------------------------
+# Burn baby! Buuurn!
+
+!263:1 = 80000 #-> 1 Charcoal -> 80 sec
+!5:1 = 15000 #-> 1 Planks -> 15 sec
+!280:1 = 5000 #-> 1 Stick -> 5 sec
+!85:1 = 15000 #-> 1 Fence -> 15 sec
+!53:1 = 15000 #-> 1 Wooden Stairs -> 15 sec
+!58:1 = 15000 #-> 1 Crafting Table -> 15 sec
+!47:1 = 15000 #-> 1 Bookshelf -> 15 sec
+!54:1 = 15000 #-> 1 Chest -> 15 sec
+!84:1 = 15000 #-> 1 Jukebox -> 15 sec
+!327:1 = 1000000 #-> 1 Lava Bucket -> 1000 sec
+!17:1 = 15000 #-> 1 Wood -> 15 sec \ No newline at end of file
diff --git a/groups.ini b/groups.ini
new file mode 100644
index 000000000..2f03bc229
--- /dev/null
+++ b/groups.ini
@@ -0,0 +1,17 @@
+[Admins]
+Permissions=*
+Color=c
+
+[Mods]
+Color=5
+Inherits=Vips
+Permissions=core.time,core.item
+
+[Vips]
+Permissions=core.teleport
+Color=2
+Inherits=Default
+
+[Default]
+Permissions=core.help,core.playerlist,core.pluginlist,core.spawn
+Color=7
diff --git a/items.ini b/items.ini
new file mode 100644
index 000000000..393c5ef77
--- /dev/null
+++ b/items.ini
@@ -0,0 +1,213 @@
+[Items]
+rock=1
+stone=1
+grass=2
+dirt=3
+cobblestone=4
+cobble=4
+wood=5
+sapling=6
+adminium=7
+bedrock=7
+water=8
+stillwater=9
+swater=9
+lava=10
+stilllava=11
+slava=11
+sand=12
+gravel=13
+goldore=14
+ironore=15
+coalore=16
+tree=17
+log=17
+leaves=18
+sponge=19
+glass=20
+cloth=35
+flower=37
+rose=38
+brownmushroom=39
+redmushroom=40
+gold=41
+goldblock=41
+iron=42
+ironblock=42
+doublestair=43
+stair=44
+step=44
+brickblock=45
+brickwall=45
+tnt=46
+bookshelf=47
+bookcase=47
+mossycobblestone=48
+mossy=48
+obsidian=49
+torch=50
+fire=51
+mobspawner=52
+woodstairs=53
+chest=54
+redstonedust=55
+redstonewire=55
+diamondore=56
+diamondblock=57
+workbench=58
+crop=59
+crops=59
+soil=60
+furnace=61
+litfurnace=62
+signblock=63
+wooddoorblock=64
+ladder=65
+rails=66
+rail=66
+track=66
+tracks=66
+cobblestonestairs=67
+stairs=67
+signblocktop=68
+wallsign=68
+lever=69
+rockplate=70
+stoneplate=70
+irondoorblock=71
+woodplate=72
+redstoneore=73
+redstoneorealt=74
+redstonetorchoff=75
+redstonetorchon=76
+button=77
+snow=78
+ice=79
+snowblock=80
+cactus=81
+clayblock=82
+reedblock=83
+jukebox=84
+fence=85
+pumpkin=86
+netherstone=87
+slowsand=88
+lightstone=89
+portal=90
+jackolantern=91
+jacko=91
+ironshovel=256
+ironspade=256
+ironpickaxe=257
+ironpick=257
+ironaxe=258
+flintandsteel=259
+lighter=259
+apple=260
+bow=261
+arrow=262
+coal=263
+diamond=264
+ironbar=265
+goldbar=266
+ironsword=267
+woodsword=268
+woodshovel=269
+woodspade=269
+woodpickaxe=270
+woodpick=270
+woodaxe=271
+stonesword=272
+stoneshovel=273
+stonespade=273
+stonepickaxe=274
+stonepick=274
+stoneaxe=275
+diamondsword=276
+diamondshovel=277
+diamondspade=277
+diamondpickaxe=278
+diamondpick=278
+diamondaxe=279
+stick=280
+bowl=281
+bowlwithsoup=282
+soupbowl=282
+soup=282
+goldsword=283
+goldshovel=284
+goldspade=284
+goldpickaxe=285
+goldpick=285
+goldaxe=286
+string=287
+feather=288
+gunpowder=289
+woodhoe=290
+stonehoe=291
+ironhoe=292
+diamondhoe=293
+goldhoe=294
+seeds=295
+wheat=296
+bread=297
+leatherhelmet=298
+leatherchestplate=299
+leatherpants=300
+leatherboots=301
+chainmailhelmet=302
+chainmailchestplate=303
+chainmailpants=304
+chainmailboots=305
+ironhelmet=306
+ironchestplate=307
+ironpants=308
+ironboots=309
+diamondhelmet=310
+diamondchestplate=311
+diamondpants=312
+diamondboots=313
+goldhelmet=314
+goldchestplate=315
+goldpants=316
+goldboots=317
+flint=318
+meat=319
+pork=319
+cookedmeat=320
+cookedpork=320
+painting=321
+paintings=321
+goldenapple=322
+sign=323
+wooddoor=324
+bucket=325
+waterbucket=326
+lavabucket=327
+minecart=328
+saddle=329
+irondoor=330
+redstonedust=331
+snowball=332
+boat=333
+leather=334
+milkbucket=335
+brick=336
+clay=337
+reed=338
+paper=339
+book=340
+slimeorb=341
+storageminecart=342
+poweredminecart=343
+egg=344
+compass=345
+fishingrod=346
+watch=347
+lightstonedust=348
+lightdust=348
+rawfish=349
+fish=349
+cookedfish=350
+goldrecord=2256
+greenrecord=2257 \ No newline at end of file
diff --git a/makefile b/makefile
new file mode 100644
index 000000000..793221a62
--- /dev/null
+++ b/makefile
@@ -0,0 +1,1108 @@
+###################################################
+#
+# Makefile for MCServer
+# Creator [Xcode -> Makefile Ver: Feb 14 2007 09:18:41]
+# Created: [Thu Feb 24 19:53:17 2011]
+#
+###################################################
+
+#
+# Macros
+#
+
+CC = /usr/bin/g++
+CC_OPTIONS = -O2 -s
+CCE_OPTIONS = -O2 -s -x c
+LNK_OPTIONS = -lstdc++ -pthread
+
+
+#
+# INCLUDE directories for MCServer
+#
+
+INCLUDE = -I.\
+ -Isource\
+ -Isource/md5\
+ -IWebServer\
+ -Isource/packets\
+ -Itolua++-1.0.93/src/lib\
+ -Ilua-5.1.4/src\
+ -Izlib-1.2.5\
+ -IiniFile\
+ -Itolua++-1.0.93/include\
+ -Ijsoncpp-src-0.5.0/include\
+ -Ijsoncpp-src-0.5.0/src/lib_json
+
+
+#
+# Build MCServer
+#
+
+MCServer : \
+ build/json_reader.o\
+ build/json_value.o\
+ build/json_writer.o\
+ build/cMakeDir.o\
+ build/cGenSettings.o\
+ build/cCuboid.o\
+ build/cNoise.o\
+ build/cPacket_WindowClick.o\
+ build/cPacket_Login.o\
+ build/cPacket_Chat.o\
+ build/cTimer.o\
+ build/cSleep.o\
+ build/cPacket_Metadata.o\
+ build/cMonsterConfig.o\
+ build/cSpider.o\
+ build/cThread.o\
+ build/cBlockingTCPLink.o\
+ build/cAuthenticator.o\
+ build/cLuaCommandBinder.o\
+ build/cChicken.o\
+ build/md5.o\
+ build/cReferenceManager.o\
+ build/Bindings.o\
+ build/cBlockToPickup.o\
+ build/cChatColor.o\
+ build/cChestEntity.o\
+ build/cChunk.o\
+ build/cChunkMap.o\
+ build/cClientHandle.o\
+ build/cCraftingWindow.o\
+ build/cCriticalSection.o\
+ build/cEntity.o\
+ build/cEvent.o\
+ build/cFurnaceEntity.o\
+ build/cFurnaceRecipe.o\
+ build/cFurnaceWindow.o\
+ build/cGroup.o\
+ build/cGroupManager.o\
+ build/cInventory.o\
+ build/cLog.o\
+ build/cMonster.o\
+ build/cPawn.o\
+ build/cPickup.o\
+ build/cPlayer.o\
+ build/cPlugin_Lua.o\
+ build/cPlugin.o\
+ build/cPluginManager.o\
+ build/cRecipeChecker.o\
+ build/cRoot.o\
+ build/cSemaphore.o\
+ build/cServer.o\
+ build/cSignEntity.o\
+ build/cStringMap.o\
+ build/cWebAdmin.o\
+ build/cWebPlugin.o\
+ build/cWindow.o\
+ build/cWorld.o\
+ build/main.o\
+ build/ManualBindings.o\
+ build/Matrix4f.o\
+ build/PacketHeader.o\
+ build/Vector3d.o\
+ build/Vector3f.o\
+ build/Vector3i.o\
+ build/cHeartBeat.o\
+ build/cTCPLink.o\
+ build/cMCLogger.o\
+ build/cTracer.o\
+ build/cPacket_DestroyEntity.o\
+ build/cPacket_EntityLook.o\
+ build/cPacket_NamedEntitySpawn.o\
+ build/cPacket_PlayerPosition.o\
+ build/cPacket_RelativeEntityMove.o\
+ build/cPacket_RelativeEntityMoveLook.o\
+ build/cPacket_Respawn.o\
+ build/cPacket_SpawnMob.o\
+ build/cPacket_TeleportEntity.o\
+ build/cPacket_UpdateHealth.o\
+ build/cPacket.o\
+ build/base64.o\
+ build/Socket.o\
+ build/StdHelpers.o\
+ build/UrlHelper.o\
+ build/WebServer.o\
+ build/tolua_event.o\
+ build/tolua_is.o\
+ build/tolua_map.o\
+ build/tolua_push.o\
+ build/tolua_to.o\
+ build/lapi.o\
+ build/lauxlib.o\
+ build/lbaselib.o\
+ build/lcode.o\
+ build/ldblib.o\
+ build/ldebug.o\
+ build/ldo.o\
+ build/ldump.o\
+ build/lfunc.o\
+ build/lgc.o\
+ build/linit.o\
+ build/liolib.o\
+ build/llex.o\
+ build/lmathlib.o\
+ build/lmem.o\
+ build/loadlib.o\
+ build/lobject.o\
+ build/lopcodes.o\
+ build/loslib.o\
+ build/lparser.o\
+ build/lstate.o\
+ build/lstring.o\
+ build/lstrlib.o\
+ build/ltable.o\
+ build/ltablib.o\
+ build/ltm.o\
+ build/luac.o\
+ build/lundump.o\
+ build/lvm.o\
+ build/lzio.o\
+ build/print.o\
+ build/adler32.o\
+ build/compress.o\
+ build/crc32.o\
+ build/deflate.o\
+ build/gzclose.o\
+ build/gzlib.o\
+ build/gzread.o\
+ build/gzwrite.o\
+ build/infback.o\
+ build/inffast.o\
+ build/inflate.o\
+ build/inftrees.o\
+ build/trees.o\
+ build/uncompr.o\
+ build/zutil.o\
+ build/iniFile.o
+ $(CC) $(LNK_OPTIONS) \
+ build/json_reader.o\
+ build/json_value.o\
+ build/json_writer.o\
+ build/cMakeDir.o\
+ build/cGenSettings.o\
+ build/cCuboid.o\
+ build/cNoise.o\
+ build/cPacket_WindowClick.o\
+ build/cPacket_Login.o\
+ build/cPacket_Chat.o\
+ build/cTimer.o\
+ build/cSleep.o\
+ build/cPacket_Metadata.o\
+ build/cMonsterConfig.o\
+ build/cSpider.o\
+ build/cThread.o\
+ build/cBlockingTCPLink.o\
+ build/cAuthenticator.o\
+ build/cLuaCommandBinder.o\
+ build/cChicken.o\
+ build/md5.o\
+ build/cReferenceManager.o\
+ build/Bindings.o\
+ build/cBlockToPickup.o\
+ build/cChatColor.o\
+ build/cChestEntity.o\
+ build/cChunk.o\
+ build/cChunkMap.o\
+ build/cClientHandle.o\
+ build/cCraftingWindow.o\
+ build/cCriticalSection.o\
+ build/cEntity.o\
+ build/cEvent.o\
+ build/cFurnaceEntity.o\
+ build/cFurnaceRecipe.o\
+ build/cFurnaceWindow.o\
+ build/cGroup.o\
+ build/cGroupManager.o\
+ build/cInventory.o\
+ build/cLog.o\
+ build/cMonster.o\
+ build/cPawn.o\
+ build/cPickup.o\
+ build/cPlayer.o\
+ build/cPlugin_Lua.o\
+ build/cPlugin.o\
+ build/cPluginManager.o\
+ build/cRecipeChecker.o\
+ build/cRoot.o\
+ build/cSemaphore.o\
+ build/cServer.o\
+ build/cSignEntity.o\
+ build/cStringMap.o\
+ build/cWebAdmin.o\
+ build/cWebPlugin.o\
+ build/cWindow.o\
+ build/cWorld.o\
+ build/main.o\
+ build/ManualBindings.o\
+ build/Matrix4f.o\
+ build/PacketHeader.o\
+ build/Vector3d.o\
+ build/Vector3f.o\
+ build/Vector3i.o\
+ build/cHeartBeat.o\
+ build/cTCPLink.o\
+ build/cMCLogger.o\
+ build/cTracer.o\
+ build/cPacket_DestroyEntity.o\
+ build/cPacket_EntityLook.o\
+ build/cPacket_NamedEntitySpawn.o\
+ build/cPacket_PlayerPosition.o\
+ build/cPacket_RelativeEntityMove.o\
+ build/cPacket_RelativeEntityMoveLook.o\
+ build/cPacket_Respawn.o\
+ build/cPacket_SpawnMob.o\
+ build/cPacket_TeleportEntity.o\
+ build/cPacket_UpdateHealth.o\
+ build/cPacket.o\
+ build/base64.o\
+ build/Socket.o\
+ build/StdHelpers.o\
+ build/UrlHelper.o\
+ build/WebServer.o\
+ build/tolua_event.o\
+ build/tolua_is.o\
+ build/tolua_map.o\
+ build/tolua_push.o\
+ build/tolua_to.o\
+ build/lapi.o\
+ build/lauxlib.o\
+ build/lbaselib.o\
+ build/lcode.o\
+ build/ldblib.o\
+ build/ldebug.o\
+ build/ldo.o\
+ build/ldump.o\
+ build/lfunc.o\
+ build/lgc.o\
+ build/linit.o\
+ build/liolib.o\
+ build/llex.o\
+ build/lmathlib.o\
+ build/lmem.o\
+ build/loadlib.o\
+ build/lobject.o\
+ build/lopcodes.o\
+ build/loslib.o\
+ build/lparser.o\
+ build/lstate.o\
+ build/lstring.o\
+ build/lstrlib.o\
+ build/ltable.o\
+ build/ltablib.o\
+ build/ltm.o\
+ build/luac.o\
+ build/lundump.o\
+ build/lvm.o\
+ build/lzio.o\
+ build/print.o\
+ build/adler32.o\
+ build/compress.o\
+ build/crc32.o\
+ build/deflate.o\
+ build/gzclose.o\
+ build/gzlib.o\
+ build/gzread.o\
+ build/gzwrite.o\
+ build/infback.o\
+ build/inffast.o\
+ build/inflate.o\
+ build/inftrees.o\
+ build/trees.o\
+ build/uncompr.o\
+ build/zutil.o\
+ build/iniFile.o\
+ -o MCServer
+
+clean :
+ rm \
+ build/json_reader.o\
+ build/json_value.o\
+ build/json_writer.o\
+ build/cMakeDir.o\
+ build/cGenSettings.o\
+ build/cCuboid.o\
+ build/cNoise.o\
+ build/cPacket_WindowClick.o\
+ build/cPacket_Login.o\
+ build/cPacket_Chat.o\
+ build/cTimer.o\
+ build/cSleep.o\
+ build/cPacket_Metadata.o\
+ build/cMonsterConfig.o\
+ build/cSpider.o\
+ build/cThread.o\
+ build/cBlockingTCPLink.o\
+ build/cAuthenticator.o\
+ build/cLuaCommandBinder.o\
+ build/cChicken.o\
+ build/md5.o\
+ build/cReferenceManager.o\
+ build/Bindings.o\
+ build/cBlockToPickup.o\
+ build/cChatColor.o\
+ build/cChestEntity.o\
+ build/cChunk.o\
+ build/cChunkMap.o\
+ build/cClientHandle.o\
+ build/cCraftingWindow.o\
+ build/cCriticalSection.o\
+ build/cEntity.o\
+ build/cEvent.o\
+ build/cFurnaceEntity.o\
+ build/cFurnaceRecipe.o\
+ build/cFurnaceWindow.o\
+ build/cGroup.o\
+ build/cGroupManager.o\
+ build/cInventory.o\
+ build/cLog.o\
+ build/cMonster.o\
+ build/cPawn.o\
+ build/cPickup.o\
+ build/cPlayer.o\
+ build/cPlugin_Lua.o\
+ build/cPlugin.o\
+ build/cPluginManager.o\
+ build/cRecipeChecker.o\
+ build/cRoot.o\
+ build/cSemaphore.o\
+ build/cServer.o\
+ build/cSignEntity.o\
+ build/cStringMap.o\
+ build/cWebAdmin.o\
+ build/cWebPlugin.o\
+ build/cWindow.o\
+ build/cWorld.o\
+ build/main.o\
+ build/ManualBindings.o\
+ build/Matrix4f.o\
+ build/PacketHeader.o\
+ build/Vector3d.o\
+ build/Vector3f.o\
+ build/Vector3i.o\
+ build/cHeartBeat.o\
+ build/cTCPLink.o\
+ build/cMCLogger.o\
+ build/cTracer.o\
+ build/cPacket_DestroyEntity.o\
+ build/cPacket_EntityLook.o\
+ build/cPacket_NamedEntitySpawn.o\
+ build/cPacket_PlayerPosition.o\
+ build/cPacket_RelativeEntityMove.o\
+ build/cPacket_RelativeEntityMoveLook.o\
+ build/cPacket_Respawn.o\
+ build/cPacket_SpawnMob.o\
+ build/cPacket_TeleportEntity.o\
+ build/cPacket_UpdateHealth.o\
+ build/cPacket.o\
+ build/base64.o\
+ build/Socket.o\
+ build/StdHelpers.o\
+ build/UrlHelper.o\
+ build/WebServer.o\
+ build/tolua_event.o\
+ build/tolua_is.o\
+ build/tolua_map.o\
+ build/tolua_push.o\
+ build/tolua_to.o\
+ build/lapi.o\
+ build/lauxlib.o\
+ build/lbaselib.o\
+ build/lcode.o\
+ build/ldblib.o\
+ build/ldebug.o\
+ build/ldo.o\
+ build/ldump.o\
+ build/lfunc.o\
+ build/lgc.o\
+ build/linit.o\
+ build/liolib.o\
+ build/llex.o\
+ build/lmathlib.o\
+ build/lmem.o\
+ build/loadlib.o\
+ build/lobject.o\
+ build/lopcodes.o\
+ build/loslib.o\
+ build/lparser.o\
+ build/lstate.o\
+ build/lstring.o\
+ build/lstrlib.o\
+ build/ltable.o\
+ build/ltablib.o\
+ build/ltm.o\
+ build/luac.o\
+ build/lundump.o\
+ build/lvm.o\
+ build/lzio.o\
+ build/print.o\
+ build/adler32.o\
+ build/compress.o\
+ build/crc32.o\
+ build/deflate.o\
+ build/gzclose.o\
+ build/gzlib.o\
+ build/gzread.o\
+ build/gzwrite.o\
+ build/infback.o\
+ build/inffast.o\
+ build/inflate.o\
+ build/inftrees.o\
+ build/trees.o\
+ build/uncompr.o\
+ build/zutil.o\
+ build/iniFile.o\
+ MCServer
+
+install : MCServer
+ cp MCServer MCServer
+
+#
+# Build the parts of MCServer
+#
+
+
+# Item # 1 -- cLuaCommandBinder --
+build/cLuaCommandBinder.o : source/cLuaCommandBinder.cpp
+ $(CC) $(CC_OPTIONS) source/cLuaCommandBinder.cpp -c $(INCLUDE) -o build/cLuaCommandBinder.o
+
+
+# Item # 2 -- cChicken --
+build/cChicken.o : source/cChicken.cpp
+ $(CC) $(CC_OPTIONS) source/cChicken.cpp -c $(INCLUDE) -o build/cChicken.o
+
+
+# Item # 3 -- md5 --
+build/md5.o : source/md5/md5.cpp
+ $(CC) $(CC_OPTIONS) source/md5/md5.cpp -c $(INCLUDE) -o build/md5.o
+
+
+# Item # 4 -- cReferenceManager --
+build/cReferenceManager.o : source/cReferenceManager.cpp
+ $(CC) $(CC_OPTIONS) source/cReferenceManager.cpp -c $(INCLUDE) -o build/cReferenceManager.o
+
+
+# Item # 5 -- Bindings --
+build/Bindings.o : source/Bindings.cpp
+ $(CC) $(CC_OPTIONS) source/Bindings.cpp -c $(INCLUDE) -o build/Bindings.o
+
+
+# Item # 6 -- cBlockToPickup --
+build/cBlockToPickup.o : source/cBlockToPickup.cpp
+ $(CC) $(CC_OPTIONS) source/cBlockToPickup.cpp -c $(INCLUDE) -o build/cBlockToPickup.o
+
+
+# Item # 7 -- cChatColor --
+build/cChatColor.o : source/cChatColor.cpp
+ $(CC) $(CC_OPTIONS) source/cChatColor.cpp -c $(INCLUDE) -o build/cChatColor.o
+
+
+# Item # 8 -- cChestEntity --
+build/cChestEntity.o : source/cChestEntity.cpp
+ $(CC) $(CC_OPTIONS) source/cChestEntity.cpp -c $(INCLUDE) -o build/cChestEntity.o
+
+
+# Item # 9 -- cChunk --
+build/cChunk.o : source/cChunk.cpp
+ $(CC) $(CC_OPTIONS) source/cChunk.cpp -c $(INCLUDE) -o build/cChunk.o
+
+
+# Item # 10 -- cChunkMap --
+build/cChunkMap.o : source/cChunkMap.cpp
+ $(CC) $(CC_OPTIONS) source/cChunkMap.cpp -c $(INCLUDE) -o build/cChunkMap.o
+
+
+# Item # 11 -- cClientHandle --
+build/cClientHandle.o : source/cClientHandle.cpp
+ $(CC) $(CC_OPTIONS) source/cClientHandle.cpp -c $(INCLUDE) -o build/cClientHandle.o
+
+
+# Item # 12 -- cCraftingWindow --
+build/cCraftingWindow.o : source/cCraftingWindow.cpp
+ $(CC) $(CC_OPTIONS) source/cCraftingWindow.cpp -c $(INCLUDE) -o build/cCraftingWindow.o
+
+
+# Item # 13 -- cCriticalSection --
+build/cCriticalSection.o : source/cCriticalSection.cpp
+ $(CC) $(CC_OPTIONS) source/cCriticalSection.cpp -c $(INCLUDE) -o build/cCriticalSection.o
+
+
+# Item # 14 -- cEntity --
+build/cEntity.o : source/cEntity.cpp
+ $(CC) $(CC_OPTIONS) source/cEntity.cpp -c $(INCLUDE) -o build/cEntity.o
+
+
+# Item # 15 -- cEvent --
+build/cEvent.o : source/cEvent.cpp
+ $(CC) $(CC_OPTIONS) source/cEvent.cpp -c $(INCLUDE) -o build/cEvent.o
+
+
+# Item # 16 -- cFurnaceEntity --
+build/cFurnaceEntity.o : source/cFurnaceEntity.cpp
+ $(CC) $(CC_OPTIONS) source/cFurnaceEntity.cpp -c $(INCLUDE) -o build/cFurnaceEntity.o
+
+
+# Item # 17 -- cFurnaceRecipe --
+build/cFurnaceRecipe.o : source/cFurnaceRecipe.cpp
+ $(CC) $(CC_OPTIONS) source/cFurnaceRecipe.cpp -c $(INCLUDE) -o build/cFurnaceRecipe.o
+
+
+# Item # 18 -- cFurnaceWindow --
+build/cFurnaceWindow.o : source/cFurnaceWindow.cpp
+ $(CC) $(CC_OPTIONS) source/cFurnaceWindow.cpp -c $(INCLUDE) -o build/cFurnaceWindow.o
+
+
+# Item # 19 -- cGroup --
+build/cGroup.o : source/cGroup.cpp
+ $(CC) $(CC_OPTIONS) source/cGroup.cpp -c $(INCLUDE) -o build/cGroup.o
+
+
+# Item # 20 -- cGroupManager --
+build/cGroupManager.o : source/cGroupManager.cpp
+ $(CC) $(CC_OPTIONS) source/cGroupManager.cpp -c $(INCLUDE) -o build/cGroupManager.o
+
+
+# Item # 21 -- cInventory --
+build/cInventory.o : source/cInventory.cpp
+ $(CC) $(CC_OPTIONS) source/cInventory.cpp -c $(INCLUDE) -o build/cInventory.o
+
+
+# Item # 22 -- cLog --
+build/cLog.o : source/cLog.cpp
+ $(CC) $(CC_OPTIONS) source/cLog.cpp -c $(INCLUDE) -o build/cLog.o
+
+
+# Item # 23 -- cMonster --
+build/cMonster.o : source/cMonster.cpp
+ $(CC) $(CC_OPTIONS) source/cMonster.cpp -c $(INCLUDE) -o build/cMonster.o
+
+
+# Item # 25 -- cPawn --
+build/cPawn.o : source/cPawn.cpp
+ $(CC) $(CC_OPTIONS) source/cPawn.cpp -c $(INCLUDE) -o build/cPawn.o
+
+
+# Item # 26 -- cPickup --
+build/cPickup.o : source/cPickup.cpp
+ $(CC) $(CC_OPTIONS) source/cPickup.cpp -c $(INCLUDE) -o build/cPickup.o
+
+
+# Item # 27 -- cPlayer --
+build/cPlayer.o : source/cPlayer.cpp
+ $(CC) $(CC_OPTIONS) source/cPlayer.cpp -c $(INCLUDE) -o build/cPlayer.o
+
+
+# Item # 28 -- cPlugin_Lua --
+build/cPlugin_Lua.o : source/cPlugin_Lua.cpp
+ $(CC) $(CC_OPTIONS) source/cPlugin_Lua.cpp -c $(INCLUDE) -o build/cPlugin_Lua.o
+
+
+# Item # 29 -- cPlugin --
+build/cPlugin.o : source/cPlugin.cpp
+ $(CC) $(CC_OPTIONS) source/cPlugin.cpp -c $(INCLUDE) -o build/cPlugin.o
+
+
+# Item # 30 -- cPluginManager --
+build/cPluginManager.o : source/cPluginManager.cpp
+ $(CC) $(CC_OPTIONS) source/cPluginManager.cpp -c $(INCLUDE) -o build/cPluginManager.o
+
+
+# Item # 31 -- cRecipeChecker --
+build/cRecipeChecker.o : source/cRecipeChecker.cpp
+ $(CC) $(CC_OPTIONS) source/cRecipeChecker.cpp -c $(INCLUDE) -o build/cRecipeChecker.o
+
+
+# Item # 32 -- cRoot --
+build/cRoot.o : source/cRoot.cpp
+ $(CC) $(CC_OPTIONS) source/cRoot.cpp -c $(INCLUDE) -o build/cRoot.o
+
+
+# Item # 33 -- cSemaphore --
+build/cSemaphore.o : source/cSemaphore.cpp
+ $(CC) $(CC_OPTIONS) source/cSemaphore.cpp -c $(INCLUDE) -o build/cSemaphore.o
+
+
+# Item # 34 -- cServer --
+build/cServer.o : source/cServer.cpp
+ $(CC) $(CC_OPTIONS) source/cServer.cpp -c $(INCLUDE) -o build/cServer.o
+
+
+# Item # 35 -- cSignEntity --
+build/cSignEntity.o : source/cSignEntity.cpp
+ $(CC) $(CC_OPTIONS) source/cSignEntity.cpp -c $(INCLUDE) -o build/cSignEntity.o
+
+
+# Item # 36 -- cStringMap --
+build/cStringMap.o : source/cStringMap.cpp
+ $(CC) $(CC_OPTIONS) source/cStringMap.cpp -c $(INCLUDE) -o build/cStringMap.o
+
+
+# Item # 37 -- cWebAdmin --
+build/cWebAdmin.o : source/cWebAdmin.cpp
+ $(CC) $(CC_OPTIONS) source/cWebAdmin.cpp -c $(INCLUDE) -o build/cWebAdmin.o
+
+
+# Item # 38 -- cWebPlugin --
+build/cWebPlugin.o : source/cWebPlugin.cpp
+ $(CC) $(CC_OPTIONS) source/cWebPlugin.cpp -c $(INCLUDE) -o build/cWebPlugin.o
+
+
+# Item # 39 -- cWindow --
+build/cWindow.o : source/cWindow.cpp
+ $(CC) $(CC_OPTIONS) source/cWindow.cpp -c $(INCLUDE) -o build/cWindow.o
+
+
+# Item # 40 -- cWorld --
+build/cWorld.o : source/cWorld.cpp
+ $(CC) $(CC_OPTIONS) source/cWorld.cpp -c $(INCLUDE) -o build/cWorld.o
+
+
+# Item # 41 -- main --
+build/main.o : source/main.cpp
+ $(CC) $(CC_OPTIONS) source/main.cpp -c $(INCLUDE) -o build/main.o
+
+
+# Item # 42 -- ManualBindings --
+build/ManualBindings.o : source/ManualBindings.cpp
+ $(CC) $(CC_OPTIONS) source/ManualBindings.cpp -c $(INCLUDE) -o build/ManualBindings.o
+
+
+# Item # 43 -- Matrix4f --
+build/Matrix4f.o : source/Matrix4f.cpp
+ $(CC) $(CC_OPTIONS) source/Matrix4f.cpp -c $(INCLUDE) -o build/Matrix4f.o
+
+
+# Item # 44 -- PacketHeader --
+build/PacketHeader.o : source/PacketHeader.cpp
+ $(CC) $(CC_OPTIONS) source/PacketHeader.cpp -c $(INCLUDE) -o build/PacketHeader.o
+
+
+# Item # 45 -- Vector3d --
+build/Vector3d.o : source/Vector3d.cpp
+ $(CC) $(CC_OPTIONS) source/Vector3d.cpp -c $(INCLUDE) -o build/Vector3d.o
+
+
+# Item # 46 -- Vector3f --
+build/Vector3f.o : source/Vector3f.cpp
+ $(CC) $(CC_OPTIONS) source/Vector3f.cpp -c $(INCLUDE) -o build/Vector3f.o
+
+
+# Item # 47 -- Vector3i --
+build/Vector3i.o : source/Vector3i.cpp
+ $(CC) $(CC_OPTIONS) source/Vector3i.cpp -c $(INCLUDE) -o build/Vector3i.o
+
+
+# Item # 48 -- cHeartBeat --
+build/cHeartBeat.o : source/cHeartBeat.cpp
+ $(CC) $(CC_OPTIONS) source/cHeartBeat.cpp -c $(INCLUDE) -o build/cHeartBeat.o
+
+
+# Item # 49 -- cTCPLink --
+build/cTCPLink.o : source/cTCPLink.cpp
+ $(CC) $(CC_OPTIONS) source/cTCPLink.cpp -c $(INCLUDE) -o build/cTCPLink.o
+
+
+# Item # 50 -- cMCLogger --
+build/cMCLogger.o : source/cMCLogger.cpp
+ $(CC) $(CC_OPTIONS) source/cMCLogger.cpp -c $(INCLUDE) -o build/cMCLogger.o
+
+
+# Item # 51 -- cTracer --
+build/cTracer.o : source/cTracer.cpp
+ $(CC) $(CC_OPTIONS) source/cTracer.cpp -c $(INCLUDE) -o build/cTracer.o
+
+
+# Item # 52 -- cPacket_DestroyEntity --
+build/cPacket_DestroyEntity.o : source/packets/cPacket_DestroyEntity.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_DestroyEntity.cpp -c $(INCLUDE) -o build/cPacket_DestroyEntity.o
+
+
+# Item # 53 -- cPacket_EntityLook --
+build/cPacket_EntityLook.o : source/packets/cPacket_EntityLook.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_EntityLook.cpp -c $(INCLUDE) -o build/cPacket_EntityLook.o
+
+
+# Item # 54 -- cPacket_NamedEntitySpawn --
+build/cPacket_NamedEntitySpawn.o : source/packets/cPacket_NamedEntitySpawn.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_NamedEntitySpawn.cpp -c $(INCLUDE) -o build/cPacket_NamedEntitySpawn.o
+
+
+# Item # 55 -- cPacket_PlayerPosition --
+build/cPacket_PlayerPosition.o : source/packets/cPacket_PlayerPosition.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_PlayerPosition.cpp -c $(INCLUDE) -o build/cPacket_PlayerPosition.o
+
+
+# Item # 56 -- cPacket_RelativeEntityMove --
+build/cPacket_RelativeEntityMove.o : source/packets/cPacket_RelativeEntityMove.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_RelativeEntityMove.cpp -c $(INCLUDE) -o build/cPacket_RelativeEntityMove.o
+
+
+# Item # 57 -- cPacket_RelativeEntityMoveLook --
+build/cPacket_RelativeEntityMoveLook.o : source/packets/cPacket_RelativeEntityMoveLook.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_RelativeEntityMoveLook.cpp -c $(INCLUDE) -o build/cPacket_RelativeEntityMoveLook.o
+
+
+# Item # 58 -- cPacket_Respawn --
+build/cPacket_Respawn.o : source/packets/cPacket_Respawn.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_Respawn.cpp -c $(INCLUDE) -o build/cPacket_Respawn.o
+
+
+# Item # 59 -- cPacket_SpawnMob --
+build/cPacket_SpawnMob.o : source/packets/cPacket_SpawnMob.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_SpawnMob.cpp -c $(INCLUDE) -o build/cPacket_SpawnMob.o
+
+
+# Item # 60 -- cPacket_TeleportEntity --
+build/cPacket_TeleportEntity.o : source/packets/cPacket_TeleportEntity.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_TeleportEntity.cpp -c $(INCLUDE) -o build/cPacket_TeleportEntity.o
+
+
+# Item # 61 -- cPacket_UpdateHealth --
+build/cPacket_UpdateHealth.o : source/packets/cPacket_UpdateHealth.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_UpdateHealth.cpp -c $(INCLUDE) -o build/cPacket_UpdateHealth.o
+
+
+# Item # 62 -- cPacket --
+build/cPacket.o : source/packets/cPacket.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket.cpp -c $(INCLUDE) -o build/cPacket.o
+
+
+# Item # 63 -- base64 --
+build/base64.o : WebServer/base64.cpp
+ $(CC) $(CC_OPTIONS) WebServer/base64.cpp -c $(INCLUDE) -o build/base64.o
+
+
+# Item # 64 -- Socket --
+build/Socket.o : WebServer/Socket.cpp
+ $(CC) $(CC_OPTIONS) WebServer/Socket.cpp -c $(INCLUDE) -o build/Socket.o
+
+
+# Item # 65 -- StdHelpers --
+build/StdHelpers.o : WebServer/StdHelpers.cpp
+ $(CC) $(CC_OPTIONS) WebServer/StdHelpers.cpp -c $(INCLUDE) -o build/StdHelpers.o
+
+
+# Item # 66 -- UrlHelper --
+build/UrlHelper.o : WebServer/UrlHelper.cpp
+ $(CC) $(CC_OPTIONS) WebServer/UrlHelper.cpp -c $(INCLUDE) -o build/UrlHelper.o
+
+
+# Item # 67 -- WebServer --
+build/WebServer.o : WebServer/WebServer.cpp
+ $(CC) $(CC_OPTIONS) WebServer/WebServer.cpp -c $(INCLUDE) -o build/WebServer.o
+
+
+# Item # 68 -- tolua_event --
+build/tolua_event.o : tolua++-1.0.93/src/lib/tolua_event.c
+ $(CC) $(CCE_OPTIONS) tolua++-1.0.93/src/lib/tolua_event.c -c $(INCLUDE) -o build/tolua_event.o
+
+
+# Item # 69 -- tolua_is --
+build/tolua_is.o : tolua++-1.0.93/src/lib/tolua_is.c
+ $(CC) $(CCE_OPTIONS) tolua++-1.0.93/src/lib/tolua_is.c -c $(INCLUDE) -o build/tolua_is.o
+
+
+# Item # 70 -- tolua_map --
+build/tolua_map.o : tolua++-1.0.93/src/lib/tolua_map.c
+ $(CC) $(CCE_OPTIONS) tolua++-1.0.93/src/lib/tolua_map.c -c $(INCLUDE) -o build/tolua_map.o
+
+
+# Item # 71 -- tolua_push --
+build/tolua_push.o : tolua++-1.0.93/src/lib/tolua_push.c
+ $(CC) $(CCE_OPTIONS) tolua++-1.0.93/src/lib/tolua_push.c -c $(INCLUDE) -o build/tolua_push.o
+
+
+# Item # 72 -- tolua_to --
+build/tolua_to.o : tolua++-1.0.93/src/lib/tolua_to.c
+ $(CC) $(CCE_OPTIONS) tolua++-1.0.93/src/lib/tolua_to.c -c $(INCLUDE) -o build/tolua_to.o
+
+
+# Item # 73 -- lapi --
+build/lapi.o : lua-5.1.4/src/lapi.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lapi.c -c $(INCLUDE) -o build/lapi.o
+
+
+# Item # 74 -- lauxlib --
+build/lauxlib.o : lua-5.1.4/src/lauxlib.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lauxlib.c -c $(INCLUDE) -o build/lauxlib.o
+
+
+# Item # 75 -- lbaselib --
+build/lbaselib.o : lua-5.1.4/src/lbaselib.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lbaselib.c -c $(INCLUDE) -o build/lbaselib.o
+
+
+# Item # 76 -- lcode --
+build/lcode.o : lua-5.1.4/src/lcode.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lcode.c -c $(INCLUDE) -o build/lcode.o
+
+
+# Item # 77 -- ldblib --
+build/ldblib.o : lua-5.1.4/src/ldblib.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/ldblib.c -c $(INCLUDE) -o build/ldblib.o
+
+
+# Item # 78 -- ldebug --
+build/ldebug.o : lua-5.1.4/src/ldebug.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/ldebug.c -c $(INCLUDE) -o build/ldebug.o
+
+
+# Item # 79 -- ldo --
+build/ldo.o : lua-5.1.4/src/ldo.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/ldo.c -c $(INCLUDE) -o build/ldo.o
+
+
+# Item # 80 -- ldump --
+build/ldump.o : lua-5.1.4/src/ldump.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/ldump.c -c $(INCLUDE) -o build/ldump.o
+
+
+# Item # 81 -- lfunc --
+build/lfunc.o : lua-5.1.4/src/lfunc.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lfunc.c -c $(INCLUDE) -o build/lfunc.o
+
+
+# Item # 82 -- lgc --
+build/lgc.o : lua-5.1.4/src/lgc.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lgc.c -c $(INCLUDE) -o build/lgc.o
+
+
+# Item # 83 -- linit --
+build/linit.o : lua-5.1.4/src/linit.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/linit.c -c $(INCLUDE) -o build/linit.o
+
+
+# Item # 84 -- liolib --
+build/liolib.o : lua-5.1.4/src/liolib.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/liolib.c -c $(INCLUDE) -o build/liolib.o
+
+
+# Item # 85 -- llex --
+build/llex.o : lua-5.1.4/src/llex.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/llex.c -c $(INCLUDE) -o build/llex.o
+
+
+# Item # 86 -- lmathlib --
+build/lmathlib.o : lua-5.1.4/src/lmathlib.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lmathlib.c -c $(INCLUDE) -o build/lmathlib.o
+
+
+# Item # 87 -- lmem --
+build/lmem.o : lua-5.1.4/src/lmem.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lmem.c -c $(INCLUDE) -o build/lmem.o
+
+
+# Item # 88 -- loadlib --
+build/loadlib.o : lua-5.1.4/src/loadlib.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/loadlib.c -c $(INCLUDE) -o build/loadlib.o
+
+
+# Item # 89 -- lobject --
+build/lobject.o : lua-5.1.4/src/lobject.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lobject.c -c $(INCLUDE) -o build/lobject.o
+
+
+# Item # 90 -- lopcodes --
+build/lopcodes.o : lua-5.1.4/src/lopcodes.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lopcodes.c -c $(INCLUDE) -o build/lopcodes.o
+
+
+# Item # 91 -- loslib --
+build/loslib.o : lua-5.1.4/src/loslib.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/loslib.c -c $(INCLUDE) -o build/loslib.o
+
+
+# Item # 92 -- lparser --
+build/lparser.o : lua-5.1.4/src/lparser.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lparser.c -c $(INCLUDE) -o build/lparser.o
+
+
+# Item # 93 -- lstate --
+build/lstate.o : lua-5.1.4/src/lstate.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lstate.c -c $(INCLUDE) -o build/lstate.o
+
+
+# Item # 94 -- lstring --
+build/lstring.o : lua-5.1.4/src/lstring.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lstring.c -c $(INCLUDE) -o build/lstring.o
+
+
+# Item # 95 -- lstrlib --
+build/lstrlib.o : lua-5.1.4/src/lstrlib.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lstrlib.c -c $(INCLUDE) -o build/lstrlib.o
+
+
+# Item # 96 -- ltable --
+build/ltable.o : lua-5.1.4/src/ltable.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/ltable.c -c $(INCLUDE) -o build/ltable.o
+
+
+# Item # 97 -- ltablib --
+build/ltablib.o : lua-5.1.4/src/ltablib.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/ltablib.c -c $(INCLUDE) -o build/ltablib.o
+
+
+# Item # 98 -- ltm --
+build/ltm.o : lua-5.1.4/src/ltm.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/ltm.c -c $(INCLUDE) -o build/ltm.o
+
+
+# Item # 99 -- luac --
+build/luac.o : lua-5.1.4/src/luac.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/luac.c -c $(INCLUDE) -o build/luac.o
+
+
+# Item # 100 -- lundump --
+build/lundump.o : lua-5.1.4/src/lundump.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lundump.c -c $(INCLUDE) -o build/lundump.o
+
+
+# Item # 101 -- lvm --
+build/lvm.o : lua-5.1.4/src/lvm.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lvm.c -c $(INCLUDE) -o build/lvm.o
+
+
+# Item # 102 -- lzio --
+build/lzio.o : lua-5.1.4/src/lzio.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/lzio.c -c $(INCLUDE) -o build/lzio.o
+
+
+# Item # 103 -- print --
+build/print.o : lua-5.1.4/src/print.c
+ $(CC) $(CCE_OPTIONS) lua-5.1.4/src/print.c -c $(INCLUDE) -o build/print.o
+
+
+# Item # 104 -- adler32 --
+build/adler32.o : zlib-1.2.5/adler32.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/adler32.c -c $(INCLUDE) -o build/adler32.o
+
+
+# Item # 105 -- compress --
+build/compress.o : zlib-1.2.5/compress.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/compress.c -c $(INCLUDE) -o build/compress.o
+
+
+# Item # 106 -- crc32 --
+build/crc32.o : zlib-1.2.5/crc32.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/crc32.c -c $(INCLUDE) -o build/crc32.o
+
+
+# Item # 107 -- deflate --
+build/deflate.o : zlib-1.2.5/deflate.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/deflate.c -c $(INCLUDE) -o build/deflate.o
+
+
+# Item # 108 -- gzclose --
+build/gzclose.o : zlib-1.2.5/gzclose.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/gzclose.c -c $(INCLUDE) -o build/gzclose.o
+
+
+# Item # 109 -- gzlib --
+build/gzlib.o : zlib-1.2.5/gzlib.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/gzlib.c -c $(INCLUDE) -o build/gzlib.o
+
+
+# Item # 110 -- gzread --
+build/gzread.o : zlib-1.2.5/gzread.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/gzread.c -c $(INCLUDE) -o build/gzread.o
+
+
+# Item # 111 -- gzwrite --
+build/gzwrite.o : zlib-1.2.5/gzwrite.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/gzwrite.c -c $(INCLUDE) -o build/gzwrite.o
+
+
+# Item # 112 -- infback --
+build/infback.o : zlib-1.2.5/infback.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/infback.c -c $(INCLUDE) -o build/infback.o
+
+
+# Item # 113 -- inffast --
+build/inffast.o : zlib-1.2.5/inffast.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/inffast.c -c $(INCLUDE) -o build/inffast.o
+
+
+# Item # 114 -- inflate --
+build/inflate.o : zlib-1.2.5/inflate.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/inflate.c -c $(INCLUDE) -o build/inflate.o
+
+
+# Item # 115 -- inftrees --
+build/inftrees.o : zlib-1.2.5/inftrees.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/inftrees.c -c $(INCLUDE) -o build/inftrees.o
+
+
+# Item # 116 -- trees --
+build/trees.o : zlib-1.2.5/trees.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/trees.c -c $(INCLUDE) -o build/trees.o
+
+
+# Item # 117 -- uncompr --
+build/uncompr.o : zlib-1.2.5/uncompr.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/uncompr.c -c $(INCLUDE) -o build/uncompr.o
+
+
+# Item # 118 -- zutil --
+build/zutil.o : zlib-1.2.5/zutil.c
+ $(CC) $(CCE_OPTIONS) zlib-1.2.5/zutil.c -c $(INCLUDE) -o build/zutil.o
+
+
+# Item # 119 -- iniFile --
+build/iniFile.o : iniFile/iniFile.cpp
+ $(CC) $(CC_OPTIONS) iniFile/iniFile.cpp -c $(INCLUDE) -o build/iniFile.o
+
+# Item # 120 --Authenticator --
+build/cAuthenticator.o: source/cAuthenticator.cpp
+ $(CC) $(CC_OPTIONS) source/cAuthenticator.cpp -c $(INCLUDE) -o build/cAuthenticator.o
+
+build/cBlockingTCPLink.o: source/cBlockingTCPLink.cpp
+ $(CC) $(CC_OPTIONS) source/cBlockingTCPLink.cpp -c $(INCLUDE) -o build/cBlockingTCPLink.o
+
+build/cThread.o: source/cThread.cpp
+ $(CC) $(CC_OPTIONS) source/cThread.cpp -c $(INCLUDE) -o build/cThread.o
+
+build/cSpider.o: source/cSpider.cpp
+ $(CC) $(CC_OPTIONS) source/cSpider.cpp -c $(INCLUDE) -o build/cSpider.o
+
+build/cMonsterConfig.o: source/cMonsterConfig.cpp
+ $(CC) $(CC_OPTIONS) source/cMonsterConfig.cpp -c $(INCLUDE) -o build/cMonsterConfig.o
+
+build/cPacket_Metadata.o: source/packets/cPacket_Metadata.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_Metadata.cpp -c $(INCLUDE) -o build/cPacket_Metadata.o
+
+build/cSleep.o: source/cSleep.cpp
+ $(CC) $(CC_OPTIONS) source/cSleep.cpp -c $(INCLUDE) -o build/cSleep.o
+
+build/cTimer.o: source/cTimer.cpp
+ $(CC) $(CC_OPTIONS) source/cTimer.cpp -c $(INCLUDE) -o build/cTimer.o
+
+build/cPacket_Chat.o : source/packets/cPacket_Chat.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_Chat.cpp -c $(INCLUDE) -o build/cPacket_Chat.o
+
+build/cPacket_Login.o : source/packets/cPacket_Login.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_Login.cpp -c $(INCLUDE) -o build/cPacket_Login.o
+
+build/cPacket_WindowClick.o : source/packets/cPacket_WindowClick.cpp
+ $(CC) $(CC_OPTIONS) source/packets/cPacket_WindowClick.cpp -c $(INCLUDE) -o build/cPacket_WindowClick.o
+
+build/cNoise.o : source/cNoise.cpp
+ $(CC) $(CC_OPTIONS) source/cNoise.cpp -c $(INCLUDE) -o build/cNoise.o
+
+build/cCuboid.o : source/cCuboid.cpp
+ $(CC) $(CC_OPTIONS) source/cCuboid.cpp -c $(INCLUDE) -o build/cCuboid.o
+
+build/cGenSettings.o : source/cGenSettings.cpp
+ $(CC) $(CC_OPTIONS) source/cGenSettings.cpp -c $(INCLUDE) -o build/cGenSettings.o
+
+build/json_reader.o : jsoncpp-src-0.5.0/src/lib_json/json_reader.cpp
+ $(CC) $(CC_OPTIONS) jsoncpp-src-0.5.0/src/lib_json/json_reader.cpp -c $(INCLUDE) -o build/json_reader.o
+
+build/json_value.o : jsoncpp-src-0.5.0/src/lib_json/json_value.cpp
+ $(CC) $(CC_OPTIONS) jsoncpp-src-0.5.0/src/lib_json/json_value.cpp -c $(INCLUDE) -o build/json_value.o
+
+build/json_writer.o : jsoncpp-src-0.5.0/src/lib_json/json_writer.cpp
+ $(CC) $(CC_OPTIONS) jsoncpp-src-0.5.0/src/lib_json/json_writer.cpp -c $(INCLUDE) -o build/json_writer.o
+
+build/cMakeDir.o : source/cMakeDir.cpp
+ $(CC) $(CC_OPTIONS) source/cMakeDir.cpp -c $(INCLUDE) -o build/cMakeDir.o
+##### END RUN ####
diff --git a/monsters.ini b/monsters.ini
new file mode 100644
index 000000000..b04eb2c21
--- /dev/null
+++ b/monsters.ini
@@ -0,0 +1,11 @@
+[Spider]
+AttackRange=5.0
+AttackRate=1
+AttackDamage=1.0
+SightDistance=25.0
+
+[Chicken]
+AttackRange=5.0
+AttackRate=1
+AttackDamage=1.0
+SightDistance=25.0
diff --git a/recipes.txt b/recipes.txt
new file mode 100644
index 000000000..896c54283
--- /dev/null
+++ b/recipes.txt
@@ -0,0 +1,280 @@
+#***************************
+# Default Crafting Recipes #
+#**************************#
+# #
+# Coded by: FakeTruth #
+# Written by: Aelux #
+# #
+#**************************#
+#
+#
+#
+#******************************************************#
+# Basic Notation Help
+#******************************************************#
+#
+# 1x1,1:1:17:1@5:4 -> Produces 4 Planks
+#
+#
+# --How does the above notation work?
+#
+# Ans- Think about the crafting table as coordiantes
+# on a graph where you have an "X" axis and a
+# "Y" axis. The "X" is the horizantle axis and
+# the "Y" is the vertical axis.
+#
+# Syntax- <width>x<height>,x:y:<ItemID>:<Amount>@<ResultingItemID>:<Amount>
+#
+#
+#
+#--------------------Basic EXAMPLE---------------------#---------------Grid Abstraction EXAMPLE------------------#
+#
+# Example- 3x3,2:3:280:8@5:2 # Example- 1x1,1:1:280:8@5:2
+#
+# Recipe- w=3,h=3,x=2,y=3,Item=Stick,Amount=8 # Recipe- w=1,h=1,x=1,y=1,Item=Stick,Amount=8
+# Result- 2 Wood Planks (2 of ItemID 5) Result- 2 Wood Planks (2 of ItemID 5)
+# #
+# Table grid is set to 3 by 3 (O = empty,+ = full) Table grid is set to 1 by 1 (O = empty,+ = full)
+# ----- # ---
+# OOO +
+# OOO #
+# O+O --How does the above example compare to the Basic
+# # example?
+# --How does the above example work?
+# # Ans- This means, you can place a stack of 8 sticks
+# Ans- This means, if you place a stack of 8 sticks ANYwhere a 1x1 grid can fit. Obviously since a 1x1
+# at that exact location on the Work Bench, # grid is a single slot, it can be abstracted to fill
+# which is a 3x3 grid, you will recieve 2 Wood any single slot on any size grid.
+# Planks PER 8 sticks. #
+# There are 9 positions for the 1x1 grid in the
+# # work bench (3x3) and 4 positions within the
+# inventory grid (2x2).
+#******************************************************#********************************************************
+
+
+
+
+
+#
+# B a s i c C r a f t s
+#
+#
+1x1,1:1:17:1@5:4 #-> 4 Planks
+1x2,*:*:5:1@280:4 #-> 4 Sticks
+2x2,*:*:5:1@58:1 #-> Crafting bench
+3x3,2:2:5:-1@54:1 #-> Chest
+3x3,2:2:4:-1@61:1 #-> Furnace
+1x2,1:1:263:1,1:2:280:1@50:4 #-> Torch
+#******************************************************#
+
+
+
+
+
+#
+# F o o d
+#
+#
+3x1,*:3:296:1@297:1 #-> Bread
+3x2,1:2:5:1,3:2:5:1,2:3:5:1@281:4 #-> Bowl
+1x3,1:1:49:1,1:2:48:1,1:3:281:1@282:1 #-> Mushroom Stew
+3x3,2:2:41:-1,2:2:260:1@322:1 #-> Golden Apple
+#******************************************************#
+
+
+
+
+
+#
+# U t i l i t i e s
+#
+#
+3x2,1:2:265:1,2:3:265:1@325:1 #-> Bucket
+1x2,1:1:265:1,1:2:318:1@259:1 #-> Lighter
+3x3,1:3:280:1,2:2:280:1,3:1:280:1,3:2:287:1,3:3:287:1@346:1 #-> Fishing Rod
+3x3,1:2:265:1,2:1:265:1,2:2:331:1,3:2:265:1,2:3:265:1@345:1 #-> Compass
+3x3,1:2:266:1,2:1:266:1,2:2:331:1,3:2:266:1,2:3:266:1@345:1 #-> Watch
+3x3,1:*:287:1,2:1:280:1,3:2:280:1,2:3:280:1@261:1 #-> Bow
+1x3,1:1:318:1,1:2:280:1,1:3:288:1@262:4 #-> Arrow
+2x3,*:*:5:1@64:1 #-> Wooden Door
+3x3,*:1:280:-1@85:2 #-> Fence
+3x3,1:*:280:1,3:*:280:1,2:2:280:1@65:1 #-> Ladder
+3x2,*:*:5:1,2:3:280:1@323:1 #-> Sign
+#******************************************************#
+#
+# T r a v e l U t i l i t i e s
+#
+#
+3x3,1:*:265:1,3:*:265:1,2:2:280:1@66:16 #-> Rails
+3x2,1:2:265:1,3:2:265:1,*:3:265:1@328:1 #-> Minecart
+1x2,1:1:61:1,1:2:328:1@343:1 #-> Powered Minecart
+1x2,1:1:54:1,1:2:328:1@342:1 #-> Storage Minecart
+3x2,1:2:5:1,3:2:5:1,*:3:5:1@333:1 #-> Boat
+#******************************************************#
+#
+# C o n t r o l U t i l i t i e s
+#
+#
+1x2,1:1:331:1,1:2:280:1@76:1 #-> Redstone Torch
+1x2,1:1:280:1,1:2:4:1@69:1 #-> Lever
+2x1,*:*:5:1@72:1 #-> Wooden Preassure Plate
+2x1,*:*:4:1@70:1 #-> Stone Preassure Plate
+1x2,1:1:1:1,1:2:1:1@77:1 #-> Button
+2x3,*:*:265:1@71:1 #-> Iron Door
+#******************************************************#
+
+
+
+
+
+#
+# M a t e r i a l B l o c k s
+#
+#
+3x3,*:*:265:1@42:1 #-> Iron
+3x3,*:*:266:1@41:1 #-> Gold
+3x3,*:*:264:1@57:1 #-> Diamond
+2x2,*:*:287:1@35:1 #-> Cloth
+2x2,*:*:337:1@82:1 #-> Clay
+2x2,*:*:336:1@45:1 #-> Brick
+2x2,*:*:341:1@80:1 #-> Snow
+#******************************************************#
+#
+# S p e c i a l B l o c k s
+#
+#
+3x1,*:*:1:1@44:3 #-> Stone Step
+3x3,*:3:5:1,1:1:5:1,1:2:5:1,2:2:5:1@53:4 #-> Wood Stairs
+3x3,*:3:4:1,1:1:4:1,1:2:4:1,2:2:4:1@67:4 #-> Cobblestone Stairs
+3x3,1:1:289:1,3:1:289:1,2:2:289:1,1:3:289:1,3:3:289:1,2:1:12:1,1:2:12:1,3:2:12:1,2:3:12:1@46:1 #-> TNT
+3x3,2:2:5:-1,2:2:264:1@84:1 #-> Jukebox
+3x3,*:*:348:1@89:1 #-> Light Stone
+#******************************************************#
+#
+# B l o c k T o I n g o t
+#
+#
+1x1,1:1:42:1@265:9 #-> Iron
+1x1,1:1:41:1@266:9 #-> Gold
+1x1,1:1:57:1@264:9 #-> Diamond
+#******************************************************#
+
+
+
+
+
+#
+# S h o v e l
+#
+#
+1x3,1:1:5:1,1:2:280:1,1:3:280:1@269:1 #-> Wooden
+1x3,1:1:4:1,1:2:280:1,1:3:280:1@273:1 #-> Stone
+1x3,1:1:266:1,1:2:280:1,1:3:280:1@284:1 #-> Gold
+1x3,1:1:265:1,1:2:280:1,1:3:280:1@256:1 #-> Iron
+1x3,1:1:264:1,1:2:280:1,1:3:280:1@277:1 #-> Diamond
+#******************************************************#
+#
+# P i c k a x e
+#
+#
+3x3,*:1:5:1,2:2:280:1,2:3:280:1@270:1 #-> Wooden
+3x3,*:1:4:1,2:2:280:1,2:3:280:1@274:1 #-> Stone
+3x3,*:1:266:1,2:2:280:1,2:3:280:1@285:1 #-> Gold
+3x3,*:1:265:1,2:2:280:1,2:3:280:1@257:1 #-> Iron
+3x3,*:1:264:1,2:2:280:1,2:3:280:1@278:1 #-> Diamond
+#******************************************************#
+#
+# A x e
+#
+#
+2x2,2:2:5:-1,2:2:280:1,2:3:280:1@271:1 #-> Wooden (L)
+2x2,1:2:5:-1,1:2:280:1,1:3:280:1@271:1 #-> Wooden (R)
+2x2,2:2:4:-1,2:2:280:1,2:3:280:1@275:1 #-> Stone (L)
+2x2,1:2:4:-1,1:2:280:1,1:3:280:1@275:1 #-> Stone (R)
+2x2,2:2:256:-1,2:2:280:1,2:3:280:1@258:1#-> Iron (L)
+2x2,1:2:256:-1,1:2:280:1,1:3:280:1@258:1#-> Iron (R)
+2x2,2:2:264:-1,2:2:280:1,2:3:280:1@279:1#-> Diamond (L)
+2x2,1:2:264:-1,1:2:280:1,1:3:280:1@279:1#-> Diamond (R)
+#******************************************************#
+#
+# S w o r d
+#
+#
+1x2,*:*:5:1,1:3:280:1@268:1 #-> Wooden
+1x2,*:*:4:1,1:3:280:1@272:1 #-> Stone
+1x2,*:*:266:1,1:3:280:1@283:1 #-> Gold
+1x2,*:*:265:1,1:3:280:1@267:1 #-> Iron
+1x2,*:*:264:1,1:3:280:1@276:1 #-> Diamond
+#******************************************************#
+#
+# H o e
+#
+#
+2x1,*:*:5:1,2:2:280:1,2:3:280:1@290:1 #-> Wooden (L)
+2x1,*:*:5:1,1:2:280:1,1:3:280:1@290:1 #-> Wooden (R)
+2x1,*:*:4:1,2:2:280:1,2:3:280:1@291:1 #-> Stone (L)
+2x1,*:*:4:1,1:2:280:1,1:3:280:1@291:1 #-> Stone (R)
+2x1,*:*:266:1,2:2:280:1,2:3:280:1@294:1 #-> Gold (L)
+2x1,*:*:266:1,1:2:280:1,1:3:280:1@294:1 #-> Gold (R)
+2x1,*:*:265:1,2:2:280:1,2:3:280:1@292:1 #-> Iron (L)
+2x1,*:*:265:1,1:2:280:1,1:3:280:1@292:1 #-> Iron (R)
+2x1,*:*:264:1,2:2:280:1,2:3:280:1@293:1 #-> Diamond (L)
+2x1,*:*:264:1,1:2:280:1,1:3:280:1@293:1 #-> Diamond (R)
+#******************************************************#
+
+
+
+
+
+#
+# L e a t h e r A r m o r
+#
+#
+3x2,2:2:334:-1@298:1 #-> Helmet
+3x3,2:1:334:-1@299:1 #-> Chest Piece
+3x3,1:*:334:1,3:*:334:1,2:1:334:1@300:1 #-> Leggings
+3x2,2:*:334:-1@301:1 #-> Boots
+#*******************************************************#
+#
+# G o l d A r m o r
+#
+#
+3x2,2:2:266:-1@314:1 #-> Helmet
+3x3,2:1:266:-1@315:1 #-> Chest Piece
+3x3,1:*:266:1,3:*:266:1,2:1:266:1@316:1 #-> Leggings
+3x2,2:*:266:-1@317:1 #-> Boots
+#*******************************************************#
+#
+# I r o n A r m o r
+#
+#
+3x2,2:2:265:-1@306:1 #-> Helmet
+3x3,2:1:265:-1@307:1 #-> Chest Piece
+3x3,1:*:265:1,3:*:265:1,2:1:265:1@308:1 #-> Leggings
+3x2,2:*:265:-1@309:1 #-> Boots
+#*******************************************************#
+#
+# D i a m o n d A r m o r
+#
+#
+3x2,2:2:264:-1@310:1 #-> Helmet
+3x3,2:1:264:-1@311:1 #-> Chest Piece
+3x3,1:*:264:1,3:*:264:1,2:1:264:1@312:1 #-> Leggings
+3x2,2:*:264:-1@313:1 #-> Boots
+#*******************************************************#
+
+
+
+
+
+
+#
+# D e c o r a t i v e
+#
+#
+3x1,*:3:338:1@339:3 #-> Paper
+1x3,2:*:338:1@340:1 #-> Book
+3x3,*:1:5:1,*:2:349:1,*:3:5:1@47:1 #-> Book Shelf
+3x3,2:2:280:-1,2:2:35:1@321:1 #-> Painting
+1x2,1:1:86:1,1:2:50:1@91:1 #-> Jack-O-Lantern
+#*******************************************************# \ No newline at end of file
diff --git a/settings.ini b/settings.ini
new file mode 100644
index 000000000..9952dfb5a
--- /dev/null
+++ b/settings.ini
@@ -0,0 +1,24 @@
+[Server]
+Port=25565
+ServerID=-
+
+[Plugins]
+Plugin=Core
+Plugin=Fire
+Plugin=MagicCarpet
+
+[HelpPlugin]
+ShowPluginNames=1
+
+[Physics]
+Water=0
+
+[Monsters]
+AnimalsOn=1
+AnimalSpawnInterval=5
+Types=Chicken,Spider
+
+[Authentication]
+Server=www.minecraft.net
+Address=/game/checkserver.jsp?user=%USERNAME%&serverId=%SERVERID%
+Authenticate=0
diff --git a/terrain.ini b/terrain.ini
new file mode 100644
index 000000000..a917223f9
--- /dev/null
+++ b/terrain.ini
@@ -0,0 +1,8 @@
+[Terrain]
+HeightFreq1=0.100000
+HeightFreq2=1.000000
+HeightFreq3=2.000000
+HeightAmp1=1.000000
+HeightAmp2=0.500000
+HeightAmp3=0.500000
+
diff --git a/users.ini b/users.ini
new file mode 100644
index 000000000..f17f399a8
--- /dev/null
+++ b/users.ini
@@ -0,0 +1,8 @@
+[FakeTruth]
+Groups=Admins
+
+[Duralex]
+Groups=Admins
+
+[Player]
+Groups=Admins
diff --git a/webadmin.ini b/webadmin.ini
new file mode 100644
index 000000000..6ecbf7513
--- /dev/null
+++ b/webadmin.ini
@@ -0,0 +1,6 @@
+[WebAdmin]
+Enabled=1
+Port=8080
+
+[User:admin]
+Password=admin \ No newline at end of file