diff options
author | Tycho <work.tycho+git@gmail.com> | 2014-01-20 18:21:47 +0100 |
---|---|---|
committer | Tycho <work.tycho+git@gmail.com> | 2014-01-20 18:21:47 +0100 |
commit | 16375f6aad355333d1d3aff6140cdb4439a9b62f (patch) | |
tree | eb4192092b928e90aebaf914288d12c9cafaf5a5 /MCServer/Plugins/Debuggers/Debuggers.lua | |
parent | Added Inifile and OSSupport Linking (diff) | |
parent | APIDump: Added notes about objects across cWorld's task execution. (diff) | |
download | cuberite-16375f6aad355333d1d3aff6140cdb4439a9b62f.tar cuberite-16375f6aad355333d1d3aff6140cdb4439a9b62f.tar.gz cuberite-16375f6aad355333d1d3aff6140cdb4439a9b62f.tar.bz2 cuberite-16375f6aad355333d1d3aff6140cdb4439a9b62f.tar.lz cuberite-16375f6aad355333d1d3aff6140cdb4439a9b62f.tar.xz cuberite-16375f6aad355333d1d3aff6140cdb4439a9b62f.tar.zst cuberite-16375f6aad355333d1d3aff6140cdb4439a9b62f.zip |
Diffstat (limited to 'MCServer/Plugins/Debuggers/Debuggers.lua')
-rw-r--r-- | MCServer/Plugins/Debuggers/Debuggers.lua | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/MCServer/Plugins/Debuggers/Debuggers.lua b/MCServer/Plugins/Debuggers/Debuggers.lua index 8512fbd5f..2d2d2736d 100644 --- a/MCServer/Plugins/Debuggers/Debuggers.lua +++ b/MCServer/Plugins/Debuggers/Debuggers.lua @@ -52,6 +52,7 @@ function Initialize(Plugin) PM:BindCommand("/fill", "debuggers", HandleFill, "- Fills all block entities in current chunk with junk"); PM:BindCommand("/fr", "debuggers", HandleFurnaceRecipe, "- Shows the furnace recipe for the currently held item"); PM:BindCommand("/ff", "debuggers", HandleFurnaceFuel, "- Shows how long the currently held item would burn in a furnace"); + PM:BindCommand("/sched", "debuggers", HandleSched, "- Schedules a simple countdown using cWorld:ScheduleTask()"); Plugin:AddWebTab("Debuggers", HandleRequest_Debuggers); @@ -955,6 +956,45 @@ end +function HandleSched(a_Split, a_Player) + local World = a_Player:GetWorld() + + -- Schedule a broadcast of a countdown message: + for i = 1, 10 do + World:ScheduleTask(i * 20, + function(a_World) + a_World:BroadcastChat("Countdown: " .. 11 - i) + end + ) + end + + -- Schedule a broadcast of the final message and a note to the originating player + -- Note that we CANNOT us the a_Player in the callback - what if the player disconnected? + -- Therefore we store the player's EntityID + local PlayerID = a_Player:GetUniqueID() + World:ScheduleTask(220, + function(a_World) + a_World:BroadcastChat("Countdown: BOOM") + a_World:DoWithEntityByID(PlayerID, + function(a_Entity) + if (a_Entity:IsPlayer()) then + -- Although unlikely, it is possible that this player is not the originating player + -- However, I leave this as an excercise to you to fix this "bug" + local Player = tolua.cast(a_Entity, "cPlayer") + Player:SendMessage("Countdown finished") + end + end + ) + end + ) + + return true +end + + + + + function HandleRequest_Debuggers(a_Request) local FolderContents = cFile:GetFolderContents("./"); return "<p>The following objects have been returned by cFile:GetFolderContents():<ul><li>" .. table.concat(FolderContents, "</li><li>") .. "</li></ul></p>"; |