From c51a4b9469fee0314d1b849206d1cf1c7c1240e4 Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Tue, 10 Apr 2012 11:22:11 +0000 Subject: Added the "/regeneratechunk" command that regenerates either current chunk or a chunk specified with x, z parameters. TODO: permissions - we don't want guests erasing our chunks! git-svn-id: http://mc-server.googlecode.com/svn/trunk@454 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cServer.cpp | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'source/cServer.cpp') diff --git a/source/cServer.cpp b/source/cServer.cpp index 23fcbdda0..eff4e9fc0 100644 --- a/source/cServer.cpp +++ b/source/cServer.cpp @@ -485,13 +485,40 @@ bool cServer::Command( cClientHandle & a_Client, const char* a_Cmd ) { if (split.size() != 2) { - a_Client.Send(cPacket_Chat(cChatColor::Green + "Invalid syntax, expected 1 parameter, the numebr of chunks to stream")); + a_Client.Send(cPacket_Chat(cChatColor::Green + "Invalid syntax, expected 1 parameter, the number of chunks to stream")); return false; } int dist = atol(split[1].c_str()); a_Client.SetViewDistance(dist); return true; } + + if (split[0].compare("/regeneratechunk") == 0) + { + int ChunkX, ChunkZ; + if (split.size() == 1) + { + // Regenerate current chunk + ChunkX = a_Client.GetPlayer()->GetChunkX(); + ChunkZ = a_Client.GetPlayer()->GetChunkZ(); + } + else if (split.size() == 3) + { + // Regenerate chunk in params + ChunkX = atoi(split[1].c_str()); + ChunkZ = atoi(split[2].c_str()); + } + else + { + a_Client.Send(cPacket_Chat(cChatColor::Green + "Invalid syntax, expected either 0 (current chunk) or 2 (x, z) parameters")); + return false; + } + AString Msg; + Printf(Msg, "Regenerating chunk [%d, %d]", ChunkX, ChunkZ); + a_Client.Send(cPacket_Chat(cChatColor::Green + Msg)); + a_Client.GetPlayer()->GetWorld()->RegenerateChunk(ChunkX, ChunkZ); + return true; + } return false; } -- cgit v1.2.3