diff options
Diffstat (limited to 'MCServer')
-rw-r--r-- | MCServer/Plugins/APIDump/APIDesc.lua | 2 | ||||
-rw-r--r-- | MCServer/Plugins/APIDump/Hooks/OnPlayerPlacedBlock.lua | 10 | ||||
-rw-r--r-- | MCServer/Plugins/APIDump/Hooks/OnPlayerPlacingBlock.lua | 10 | ||||
-rw-r--r-- | MCServer/Plugins/APIDump/Hooks/OnServerPing.lua | 5 | ||||
-rw-r--r-- | MCServer/monsters.ini | 195 | ||||
-rw-r--r-- | MCServer/webadmin/template.lua | 2 |
6 files changed, 125 insertions, 99 deletions
diff --git a/MCServer/Plugins/APIDump/APIDesc.lua b/MCServer/Plugins/APIDump/APIDesc.lua index ba3763724..b2c7108e9 100644 --- a/MCServer/Plugins/APIDump/APIDesc.lua +++ b/MCServer/Plugins/APIDump/APIDesc.lua @@ -1840,7 +1840,9 @@ a_Player:OpenWindow(Window); MoveToWorld = { Params = "WorldName", Return = "bool", Return = "Moves the player to the specified world. Returns true if successful." }, OpenWindow = { Params = "{{cWindow|Window}}", Return = "", Notes = "Opens the specified UI window for the player." }, PermissionMatches = { Params = "Permission, Template", Return = "bool", Notes = "(STATIC) Returns true if the specified permission matches the specified template. The template may contain wildcards." }, + PlaceBlock = { Params = "BlockX, BlockY, BlockZ, BlockType, BlockMeta", Return = "bool", Notes = "Places a block while impersonating the player. The {{OnPlayerPlacingBlock|HOOK_PLAYER_PLACING_BLOCK}} hook is called before the placement, and if it succeeds, the block is placed and the {{OnPlayerPlacedBlock|HOOK_PLAYER_PLACED_BLOCK}} hook is called. Returns true iff the block is successfully placed. Assumes that the block is in a currently loaded chunk." }, Respawn = { Params = "", Return = "", Notes = "Restores the health, extinguishes fire, makes visible and sends the Respawn packet." }, + SendBlocksAround = { Params = "BlockX, BlockY, BlockZ, [Range]", Return = "", Notes = "Sends all the world's blocks in Range from the specified coords to the player, as a BlockChange packet. Range defaults to 1 (only one block sent)." }, SendMessage = { Params = "Message", Return = "", Notes = "Sends the specified message to the player." }, SendMessageFailure = { Params = "Message", Return = "", Notes = "Prepends Rose [INFO] / colours entire text (depending on ShouldUseChatPrefixes()) and sends message to player. For a command that failed to run because of insufficient permissions, etc." }, SendMessageFatal = { Params = "Message", Return = "", Notes = "Prepends Red [FATAL] / colours entire text (depending on ShouldUseChatPrefixes()) and sends message to player. For something serious, such as a plugin crash, etc." }, diff --git a/MCServer/Plugins/APIDump/Hooks/OnPlayerPlacedBlock.lua b/MCServer/Plugins/APIDump/Hooks/OnPlayerPlacedBlock.lua index 54888a6db..6445a76b4 100644 --- a/MCServer/Plugins/APIDump/Hooks/OnPlayerPlacedBlock.lua +++ b/MCServer/Plugins/APIDump/Hooks/OnPlayerPlacedBlock.lua @@ -12,7 +12,11 @@ return Use the {{cPlayer}}:GetWorld() function to get the world to which the block belongs.</p> <p> See also the {{OnPlayerPlacingBlock|HOOK_PLAYER_PLACING_BLOCK}} hook for a similar hook called - before the placement. + before the placement.</p> + <p> + If the client action results in multiple blocks being placed (such as a bed or a door), each separate + block is reported through this hook. All the blocks are already present in the world before the first + instance of this hook is called. ]], Params = { @@ -20,10 +24,6 @@ return { Name = "BlockX", Type = "number", Notes = "X-coord of the block" }, { Name = "BlockY", Type = "number", Notes = "Y-coord of the block" }, { Name = "BlockZ", Type = "number", Notes = "Z-coord of the block" }, - { Name = "BlockFace", Type = "number", Notes = "Face of the existing block upon which the player interacted. One of the BLOCK_FACE_ constants" }, - { Name = "CursorX", Type = "number", Notes = "X-coord of the cursor within the block face (0 .. 15)" }, - { Name = "CursorY", Type = "number", Notes = "Y-coord of the cursor within the block face (0 .. 15)" }, - { Name = "CursorZ", Type = "number", Notes = "Z-coord of the cursor within the block face (0 .. 15)" }, { Name = "BlockType", Type = "BLOCKTYPE", Notes = "The block type of the block" }, { Name = "BlockMeta", Type = "NIBBLETYPE", Notes = "The block meta of the block" }, }, diff --git a/MCServer/Plugins/APIDump/Hooks/OnPlayerPlacingBlock.lua b/MCServer/Plugins/APIDump/Hooks/OnPlayerPlacingBlock.lua index 2a928390b..4241a09aa 100644 --- a/MCServer/Plugins/APIDump/Hooks/OnPlayerPlacingBlock.lua +++ b/MCServer/Plugins/APIDump/Hooks/OnPlayerPlacingBlock.lua @@ -15,7 +15,11 @@ return Use the {{cPlayer}}:GetWorld() function to get the world to which the block belongs.</p> <p> See also the {{OnPlayerPlacedBlock|HOOK_PLAYER_PLACED_BLOCK}} hook for a similar hook called after - the placement. + the placement.</p> + <p> + If the client action results in multiple blocks being placed (such as a bed or a door), each separate + block is reported through this hook and only if all of them succeed, all the blocks are placed. If + any one of the calls are refused by the plugin, all the blocks are refused and reverted on the client. ]], Params = { @@ -23,10 +27,6 @@ return { Name = "BlockX", Type = "number", Notes = "X-coord of the block" }, { Name = "BlockY", Type = "number", Notes = "Y-coord of the block" }, { Name = "BlockZ", Type = "number", Notes = "Z-coord of the block" }, - { Name = "BlockFace", Type = "number", Notes = "Face of the existing block upon which the player is interacting. One of the BLOCK_FACE_ constants" }, - { Name = "CursorX", Type = "number", Notes = "X-coord of the cursor within the block face (0 .. 15)" }, - { Name = "CursorY", Type = "number", Notes = "Y-coord of the cursor within the block face (0 .. 15)" }, - { Name = "CursorZ", Type = "number", Notes = "Z-coord of the cursor within the block face (0 .. 15)" }, { Name = "BlockType", Type = "BLOCKTYPE", Notes = "The block type of the block" }, { Name = "BlockMeta", Type = "NIBBLETYPE", Notes = "The block meta of the block" }, }, diff --git a/MCServer/Plugins/APIDump/Hooks/OnServerPing.lua b/MCServer/Plugins/APIDump/Hooks/OnServerPing.lua index 76b6d1517..430465786 100644 --- a/MCServer/Plugins/APIDump/Hooks/OnServerPing.lua +++ b/MCServer/Plugins/APIDump/Hooks/OnServerPing.lua @@ -7,7 +7,10 @@ return Desc = [[ A plugin may implement an OnServerPing() function and register it as a Hook to process pings from clients in the server server list. It can change the logged in players and player capacity, as well - as the server description and the favicon, that are displayed to the client in the server list. + as the server description and the favicon, that are displayed to the client in the server list.</p> + <p> + The client handle already has its protocol version assigned to it, so the plugin can check that; however, + there's no username associated with the client yet, and no player object. ]], Params = { { Name = "ClientHandle", Type = "{{cClientHandle}}", Notes = "The client handle that pinged the server" }, diff --git a/MCServer/monsters.ini b/MCServer/monsters.ini index c4bc8c810..af1938e3e 100644 --- a/MCServer/monsters.ini +++ b/MCServer/monsters.ini @@ -1,44 +1,52 @@ -[Spider] +[Bat] AttackRange=2.0 AttackRate=1 -AttackDamage=2.0 +AttackDamage=0.0 SightDistance=25.0 -MaxHealth=16 +MaxHealth=6 -[Chicken] +[Blaze] +AttackRange=15.0 +AttackRate=1 +AttackDamage=6.0 +SightDistance=25.0 +MaxHealth=20 +IsFireproof=1 + +[CaveSpider] AttackRange=2.0 AttackRate=1 -AttackDamage=1.0 +AttackDamage=2.0 SightDistance=25.0 -MaxHealth=4 +MaxHealth=12 -[Cow] +[Chicken] AttackRange=2.0 AttackRate=1 -AttackDamage=1.0 +AttackDamage=0.0 SightDistance=25.0 -MaxHealth=10 +MaxHealth=4 -[Pig] +[Cow] AttackRange=2.0 AttackRate=1 -AttackDamage=1.0 +AttackDamage=0.0 SightDistance=25.0 MaxHealth=10 -[Sheep] -AttackRange=2.0 +[Creeper] +AttackRange=3.0 AttackRate=1 -AttackDamage=1.0 +AttackDamage=0.0 SightDistance=25.0 -MaxHealth=8 +MaxHealth=20 -[Squid] +[EnderDragon] AttackRange=2.0 AttackRate=1 -AttackDamage=1.0 +AttackDamage=6.0 SightDistance=25.0 -MaxHealth=10 +MaxHealth=200 [Enderman] AttackRange=2.0 @@ -47,27 +55,6 @@ AttackDamage=4.0 SightDistance=64.0 MaxHealth=40 -[ZombiePigman] -AttackRange=2.0 -AttackRate=1 -AttackDamage=7.0 -SightDistance=25.0 -MaxHealth=20 -IsFireproof=1 - -[CaveSpider] -AttackRange=2.0 -AttackRate=1 -AttackDamage=2.0 -SightDistance=25.0 -MaxHealth=12 - -[Creeper] -AttackRange=3.0 -AttackRate=1 -AttackDamage=0.0 -SightDistance=25.0 -MaxHealth=20 [Ghast] AttackRange=50.0 @@ -77,118 +64,150 @@ SightDistance=50.0 MaxHealth=10 IsFireproof=1 -[Silverfish] +[Giant] AttackRange=2.0 AttackRate=1 -AttackDamage=1.0 +AttackDamage=6.0 SightDistance=25.0 -MaxHealth=8 - -[Skeleton] -AttackRange=15.0 -AttackRate=1 -SightDistance=40.0 -MaxHealth=20 +MaxHealth=100 -[Slime] +[Guardian] AttackRange=2.0 -AttackRate=1 -AttackDamage=4.0 +AttackRate=1 +AttackDamage=9.0 SightDistance=25.0 -MaxHealth=16 +MaxHealth=30 -[Zombie] +[Horse] AttackRange=2.0 AttackRate=1 -AttackDamage=4.0 +AttackDamage=6.0 SightDistance=25.0 -MaxHealth=20 +MaxHealth=30 -[Wolf] +[IronGolem] AttackRange=2.0 AttackRate=1 -AttackDamage=4.0 +AttackDamage=6.0 SightDistance=25.0 -MaxHealth=20 +MaxHealth=100 -[Blaze] -AttackRange=15.0 +[MagmaCube] +AttackRange=2.0 AttackRate=1 AttackDamage=6.0 SightDistance=25.0 -MaxHealth=20 +MaxHealth=16 IsFireproof=1 -[Villager] +[Mooshroom] AttackRange=2.0 AttackRate=1 AttackDamage=0.0 SightDistance=25.0 -MaxHealth=20 -IsFireproof=0 +MaxHealth=10 -[Witch] +[Ocelot] AttackRange=2.0 AttackRate=1 AttackDamage=0.0 SightDistance=25.0 -MaxHealth=26 - +MaxHealth=10 -[Ocelot] +[Pig] AttackRange=2.0 AttackRate=1 AttackDamage=0.0 SightDistance=25.0 MaxHealth=10 -[Mooshroom] +[Rabbit] AttackRange=2.0 AttackRate=1 AttackDamage=0.0 SightDistance=25.0 MaxHealth=10 -[MagmaCube] +[Sheep] AttackRange=2.0 AttackRate=1 -AttackDamage=6.0 +AttackDamage=0.0 SightDistance=25.0 -MaxHealth=16 -IsFireproof=1 +MaxHealth=8 -[Horse] +[Silverfish] AttackRange=2.0 AttackRate=1 -AttackDamage=6.0 +AttackDamage=1.0 SightDistance=25.0 -MaxHealth=30 +MaxHealth=8 -[EnderDragon] +[Skeleton] +AttackRange=15.0 +AttackRate=1 +SightDistance=40.0 +MaxHealth=20 + +[Slime] AttackRange=2.0 AttackRate=1 -AttackDamage=6.0 +AttackDamage=4.0 SightDistance=25.0 -MaxHealth=200 +MaxHealth=16 -[Giant] +[SnowGolem] AttackRange=2.0 AttackRate=1 -AttackDamage=6.0 +AttackDamage=0.0 SightDistance=25.0 -MaxHealth=100 +MaxHealth=4 -[IronGolem] +[Spider] +AttackRange=2.0 +AttackRate=1 +AttackDamage=2.0 +SightDistance=25.0 +MaxHealth=16 + +[Squid] AttackRange=2.0 AttackRate=1 -AttackDamage=6.0 +AttackDamage=0.0 SightDistance=25.0 -MaxHealth=100 +MaxHealth=10 -[Bat] +[Villager] AttackRange=2.0 -AttackRate=1 +AttackRate=1 AttackDamage=0.0 SightDistance=25.0 -MaxHealth=6 +MaxHealth=20 +[Witch] +AttackRange=2.0 +AttackRate=1 +AttackDamage=0.0 +SightDistance=25.0 +MaxHealth=26 + +[Wolf] +AttackRange=2.0 +AttackRate=1 +AttackDamage=4.0 +SightDistance=25.0 +MaxHealth=20 + +[Zombie] +AttackRange=2.0 +AttackRate=1 +AttackDamage=4.0 +SightDistance=25.0 +MaxHealth=20 + +[ZombiePigman] +AttackRange=2.0 +AttackRate=1 +AttackDamage=7.0 +SightDistance=25.0 +MaxHealth=20 +IsFireproof=1 diff --git a/MCServer/webadmin/template.lua b/MCServer/webadmin/template.lua index 4d3934da8..6ea7b69bc 100644 --- a/MCServer/webadmin/template.lua +++ b/MCServer/webadmin/template.lua @@ -58,6 +58,7 @@ function ShowPage(WebAdmin, TemplateRequest) SiteContent = {} local BaseURL = WebAdmin:GetBaseURL(TemplateRequest.Request.Path) local Title = "MCServer WebAdmin" + local NumPlayers = cRoot:Get():GetServer():GetNumPlayers() local MemoryUsageKiB = cRoot:GetPhysicalRAMUsage() local NumChunks = cRoot:Get():GetTotalChunkCount() local PluginPage = WebAdmin:GetPage(TemplateRequest.Request) @@ -102,6 +103,7 @@ function ShowPage(WebAdmin, TemplateRequest) <div class="wrapper"> <ul class="menu top_links"> <li><a>Server Name: <strong>]] .. cRoot:Get():GetServer():GetServerID() .. [[</strong></a></li> + <li><a>Players online: <strong>]] .. NumPlayers .. [[</strong></a></li> <li><a>Memory: <strong>]] .. MemoryUsageKiB / 1024 .. [[MB</strong></a></li> <li><a>Chunks: <strong>]] .. NumChunks .. [[</strong></a></li> </ul> |