summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfaketruth <faketruth@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-01-26 23:44:37 +0100
committerfaketruth <faketruth@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-01-26 23:44:37 +0100
commit45e286fdcd64e4a68c616d705ec5ae5e2f9e00bf (patch)
treeea33c19161f5885896c21937204c21afaeba5eb9
parentNo longer hard coded Lua files in new plugin system (diff)
downloadcuberite-45e286fdcd64e4a68c616d705ec5ae5e2f9e00bf.tar
cuberite-45e286fdcd64e4a68c616d705ec5ae5e2f9e00bf.tar.gz
cuberite-45e286fdcd64e4a68c616d705ec5ae5e2f9e00bf.tar.bz2
cuberite-45e286fdcd64e4a68c616d705ec5ae5e2f9e00bf.tar.lz
cuberite-45e286fdcd64e4a68c616d705ec5ae5e2f9e00bf.tar.xz
cuberite-45e286fdcd64e4a68c616d705ec5ae5e2f9e00bf.tar.zst
cuberite-45e286fdcd64e4a68c616d705ec5ae5e2f9e00bf.zip
-rw-r--r--Plugins/NewTest/ban.lua30
-rw-r--r--Plugins/NewTest/gamemode.lua10
-rw-r--r--Plugins/NewTest/gotoworld.lua15
-rw-r--r--Plugins/NewTest/help.lua54
-rw-r--r--Plugins/NewTest/item.lua65
-rw-r--r--Plugins/NewTest/kick.lua27
-rw-r--r--Plugins/NewTest/main.lua41
-rw-r--r--Plugins/NewTest/motd.lua10
-rw-r--r--Plugins/NewTest/playerlist.lua16
-rw-r--r--Plugins/NewTest/pluginlist.lua13
-rw-r--r--Plugins/NewTest/reload.lua6
-rw-r--r--Plugins/NewTest/spawn.lua6
-rw-r--r--Plugins/NewTest/teleport.lua18
-rw-r--r--Plugins/NewTest/tick.lua5
-rw-r--r--Plugins/NewTest/time.lua18
-rw-r--r--Plugins/NewTest/top.lua11
-rw-r--r--Plugins/NewTest/unban.lua20
17 files changed, 359 insertions, 6 deletions
diff --git a/Plugins/NewTest/ban.lua b/Plugins/NewTest/ban.lua
new file mode 100644
index 000000000..a6a662c3c
--- /dev/null
+++ b/Plugins/NewTest/ban.lua
@@ -0,0 +1,30 @@
+function HandleBanCommand( Split, Player )
+ if( #Split < 2 ) then
+ Player:SendMessage( cChatColor.Green .. "Usage: /ban [Player] <Reason>" )
+ return true
+ end
+
+ local World = Player: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 \ No newline at end of file
diff --git a/Plugins/NewTest/gamemode.lua b/Plugins/NewTest/gamemode.lua
new file mode 100644
index 000000000..1e73b46fd
--- /dev/null
+++ b/Plugins/NewTest/gamemode.lua
@@ -0,0 +1,10 @@
+function HandleChangeGMCommand( Split, Player )
+ if( #Split ~= 2 ) then
+ Player:SendMessage( cChatColor.Green .. "Usage: /gm [GameMode (0|1)]" )
+ return true
+ end
+
+ Player:SetGameMode(Split[2])
+
+ return true
+end \ No newline at end of file
diff --git a/Plugins/NewTest/gotoworld.lua b/Plugins/NewTest/gotoworld.lua
new file mode 100644
index 000000000..d5113b667
--- /dev/null
+++ b/Plugins/NewTest/gotoworld.lua
@@ -0,0 +1,15 @@
+function HandleGotoWorldCommand( Split, Player )
+ if( #Split ~= 2 ) then
+ Player:SendMessage( cChatColor.Green .. "Usage: /gotoworld [WorldName]" )
+ return true
+ end
+
+ if( Player:MoveToWorld(Split[2]) == false ) then
+ Player:SendMessage( cChatColor.Green .. "Could not move to world '" .. Split[2] .. "'!" )
+ return true
+ end
+
+
+ Player:SendMessage( cChatColor.Green .. "Moved successfully to '" .. Split[2] .. "'! :D" )
+ return true
+end \ No newline at end of file
diff --git a/Plugins/NewTest/help.lua b/Plugins/NewTest/help.lua
new file mode 100644
index 000000000..02ef25ebd
--- /dev/null
+++ b/Plugins/NewTest/help.lua
@@ -0,0 +1,54 @@
+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 \ No newline at end of file
diff --git a/Plugins/NewTest/item.lua b/Plugins/NewTest/item.lua
new file mode 100644
index 000000000..942fa8ce6
--- /dev/null
+++ b/Plugins/NewTest/item.lua
@@ -0,0 +1,65 @@
+function HandleItemCommand( Split, Player )
+ if( #Split ~= 2 and #Split ~=3 ) then
+ Player:SendMessage( cChatColor.Green .. "Usage: /item [ItemID/Name:Dmg] <Amount>" )
+ return true
+ end
+
+ local FoundItem = false
+
+ local ItemSyntax = Split[2] -- Contains item string with optional metadata
+ local ItemData = StringSplit( Split[2], ":" )
+
+ -- Default item values
+ local ItemID = 0
+ local ItemMeta = 0
+ local ItemAmount = 1
+
+ if( #ItemData > 0 ) then
+ ItemID = ItemData[1]
+ end
+
+ if( tonumber(ItemID) ~= nil ) then -- Definitely a number
+ ItemID = tonumber(ItemID)
+ if( IsValidItem( ItemID ) ) then
+ FoundItem = true
+ end
+ end
+
+ if( FoundItem == false ) then
+ if ( HAVE_ITEM_NAMES == true ) then
+ local Item = ItemsTable[ ItemID ]
+ if( Item ~= nil ) then
+ ItemID = Item.m_ItemID
+ ItemMeta = Item.m_ItemHealth
+ FoundItem = true
+ end
+ end
+ end
+
+ -- Override metadata from item in list, if metadata was given
+ if( #ItemData > 1 and tonumber( ItemData[2] ) ~= nil ) then -- Metadata is given, and is a number
+ ItemMeta = tonumber( ItemData[2] )
+ end
+
+ if( FoundItem == false ) then
+ Player:SendMessage( cChatColor.Green .. "Invalid Item ID / Name !" )
+ return true
+ end
+
+ if( #Split == 3 ) then
+ ItemAmount = tonumber( Split[3] )
+ if( ItemAmount == nil or ItemAmount < 1 or ItemAmount > 512 ) then
+ Player:SendMessage( cChatColor.Green .. "Invalid Amount !" )
+ return true
+ end
+ end
+
+ local NewItem = cItem( ItemID, ItemAmount, ItemMeta )
+ if( Player:GetInventory():AddItem( NewItem ) == true ) then
+ Player:SendMessage( cChatColor.Green .. "There you go !" )
+ LOG("Gave " .. Player:GetName() .. " " .. ItemAmount .. " times " .. ItemID .. ":" .. ItemMeta)
+ else
+ Player:SendMessage( cChatColor.Green .. "Not enough space in inventory !" )
+ end
+ return true
+end \ No newline at end of file
diff --git a/Plugins/NewTest/kick.lua b/Plugins/NewTest/kick.lua
new file mode 100644
index 000000000..ff4f8a705
--- /dev/null
+++ b/Plugins/NewTest/kick.lua
@@ -0,0 +1,27 @@
+function HandleKickCommand( Split, Player )
+ if( #Split < 2 ) then
+ Player:SendMessage( cChatColor.Green .. "Usage: /kick [Player] <Reason>" )
+ return true
+ end
+
+ local World = Player: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 \ No newline at end of file
diff --git a/Plugins/NewTest/main.lua b/Plugins/NewTest/main.lua
index cd8df03e5..fedd430e5 100644
--- a/Plugins/NewTest/main.lua
+++ b/Plugins/NewTest/main.lua
@@ -9,7 +9,46 @@ function Initialize( Plugin )
Plugin:SetName("LOLOL new plugin!")
PluginManager = cRoot:Get():GetPluginManager()
- PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_TICK )
+ PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_PLAYER_JOIN )
+ PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_LOGIN )
+ PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_BLOCK_PLACE )
+ PluginManager:AddHook( Plugin, cPluginManager.E_PLUGIN_KILLED )
+
+ Plugin:AddCommand("/help", " - [Page] Show this message", "core.help")
+ Plugin:AddCommand("/pluginlist", " - Show list of plugins", "core.pluginlist")
+ Plugin:AddCommand("/tp", " - [Player] - Teleport yourself to a player", "core.teleport")
+ Plugin:AddCommand("/item", " - [ItemID/Name] <Amount> - Spawn an item for yourself", "core.item")
+ Plugin:AddCommand("/list", " - Shows list of connected players", "core.playerlist")
+ Plugin:AddCommand("/motd", " - Show message of the day", "core.motd")
+ Plugin:AddCommand("/reload", " - Reload all plugins", "core.reload")
+ Plugin:AddCommand("/time", " - [Day/Night] - Sets the time of day", "core.time")
+ Plugin:AddCommand("/spawn", " - Return to the spawn", "core.spawn")
+ Plugin:AddCommand("/kick", " - [Player] - Kick a player", "core.kick")
+ Plugin:AddCommand("/ban", " - [Player] - Ban a player", "core.ban")
+ Plugin:AddCommand("/unban", " - [Player] - Unban a player", "core.unban")
+ Plugin:AddCommand("/top", " - Teleport yourself to the top most block", "core.top")
+ Plugin:AddCommand("/gm", " - [Gamemode (0|1)] - Change your gamemode", "core.changegm")
+ Plugin:AddCommand("/gotoworld", " - Move to a different world!", "core.gotoworld")
+
+ Plugin:BindCommand( "/help", "core.help", HandleHelpCommand )
+ Plugin:BindCommand( "/pluginlist","core.pluginlist", HandlePluginListCommand )
+ Plugin:BindCommand( "/tp", "core.teleport", HandleTPCommand )
+ Plugin:BindCommand( "/item", "core.item", HandleItemCommand )
+ Plugin:BindCommand( "/i", "core.item", HandleItemCommand )
+ Plugin:BindCommand( "/list", "core.playerlist", HandlePlayerListCommand )
+ Plugin:BindCommand( "/who", "core.playerlist", HandlePlayerListCommand )
+ Plugin:BindCommand( "/playerlist","core.playerlist", HandlePlayerListCommand )
+ Plugin:BindCommand( "/motd", "core.motd", HandleMOTDCommand )
+ Plugin:BindCommand( "/reload", "core.reload", HandleReloadCommand )
+ Plugin:BindCommand( "/time", "core.time", HandleTimeCommand )
+ Plugin:BindCommand( "/spawn", "core.spawn", HandleSpawnCommand )
+ Plugin:BindCommand( "/home", "core.spawn", HandleSpawnCommand )
+ Plugin:BindCommand( "/kick", "core.kick", HandleKickCommand )
+ Plugin:BindCommand( "/ban", "core.ban", HandleBanCommand )
+ Plugin:BindCommand( "/unban", "core.unban", HandleUnbanCommand )
+ Plugin:BindCommand( "/top", "core.top", HandleTopCommand )
+ Plugin:BindCommand( "/gm", "core.changegm", HandleChangeGMCommand )
+ Plugin:BindCommand( "/gotoworld", "core.gotoworld", HandleGotoWorldCommand )
LOGINFO("Plugin name is: " .. Plugin:GetName() )
diff --git a/Plugins/NewTest/motd.lua b/Plugins/NewTest/motd.lua
new file mode 100644
index 000000000..49cdcecad
--- /dev/null
+++ b/Plugins/NewTest/motd.lua
@@ -0,0 +1,10 @@
+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 \ No newline at end of file
diff --git a/Plugins/NewTest/playerlist.lua b/Plugins/NewTest/playerlist.lua
new file mode 100644
index 000000000..c120f068f
--- /dev/null
+++ b/Plugins/NewTest/playerlist.lua
@@ -0,0 +1,16 @@
+function HandlePlayerListCommand( Split, Player )
+ local World = Player: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 \ No newline at end of file
diff --git a/Plugins/NewTest/pluginlist.lua b/Plugins/NewTest/pluginlist.lua
new file mode 100644
index 000000000..6cb767868
--- /dev/null
+++ b/Plugins/NewTest/pluginlist.lua
@@ -0,0 +1,13 @@
+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 \ No newline at end of file
diff --git a/Plugins/NewTest/reload.lua b/Plugins/NewTest/reload.lua
new file mode 100644
index 000000000..e2b338ba1
--- /dev/null
+++ b/Plugins/NewTest/reload.lua
@@ -0,0 +1,6 @@
+function HandleReloadCommand( Split, Player )
+ Server = cRoot:Get():GetServer()
+ Server:SendMessage( cChatColor.Green .. "Reloading all plugins." )
+ cRoot:Get():GetPluginManager():ReloadPlugins()
+ return true
+end \ No newline at end of file
diff --git a/Plugins/NewTest/spawn.lua b/Plugins/NewTest/spawn.lua
new file mode 100644
index 000000000..73034d9cf
--- /dev/null
+++ b/Plugins/NewTest/spawn.lua
@@ -0,0 +1,6 @@
+function HandleSpawnCommand( Split, Player )
+ World = Player:GetWorld()
+ Player:TeleportTo( World:GetSpawnX(), World:GetSpawnY(), World:GetSpawnZ() )
+ LOGINFO( Player:GetName() .. " returned to spawn." )
+ return true
+end \ No newline at end of file
diff --git a/Plugins/NewTest/teleport.lua b/Plugins/NewTest/teleport.lua
new file mode 100644
index 000000000..9fffec9a2
--- /dev/null
+++ b/Plugins/NewTest/teleport.lua
@@ -0,0 +1,18 @@
+function HandleTPCommand( Split, Player )
+ if( #Split ~= 2 ) then
+ Player:SendMessage( cChatColor.Green .. "Usage: /tp [PlayerName]" )
+ return true
+ end
+ local World = Player: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 \ No newline at end of file
diff --git a/Plugins/NewTest/tick.lua b/Plugins/NewTest/tick.lua
deleted file mode 100644
index 69de13c65..000000000
--- a/Plugins/NewTest/tick.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-LOGINFO("tick.lua!! ")
-
-function Tick( DeltaTime )
- LOGINFO("Tick in tick.lua; LOOLOL = " .. LOOLOL .. " Plugin name = " .. PLUGIN:GetName() )
-end \ No newline at end of file
diff --git a/Plugins/NewTest/time.lua b/Plugins/NewTest/time.lua
new file mode 100644
index 000000000..425d69e6a
--- /dev/null
+++ b/Plugins/NewTest/time.lua
@@ -0,0 +1,18 @@
+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
+ Player:GetWorld():SetWorldTime( 0 )
+ Server:SendMessage( cChatColor.Green .. Player:GetName() .. " set the time to Day.")
+ elseif( string.upper( Split[2] ) == "NIGHT") then
+ Player: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 \ No newline at end of file
diff --git a/Plugins/NewTest/top.lua b/Plugins/NewTest/top.lua
new file mode 100644
index 000000000..0f7a8f95f
--- /dev/null
+++ b/Plugins/NewTest/top.lua
@@ -0,0 +1,11 @@
+function HandleTopCommand( Split, Player )
+ local World = Player: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 \ No newline at end of file
diff --git a/Plugins/NewTest/unban.lua b/Plugins/NewTest/unban.lua
new file mode 100644
index 000000000..9defbe323
--- /dev/null
+++ b/Plugins/NewTest/unban.lua
@@ -0,0 +1,20 @@
+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 \ No newline at end of file