Merge branch 'master' into globals
Conflicts: SetFlags.cmake
This commit is contained in:
commit
683e2f4840
6
MCServer/.gitignore
vendored
6
MCServer/.gitignore
vendored
@ -19,10 +19,8 @@ schematics
|
||||
*.pdb
|
||||
memdump*
|
||||
*.grab
|
||||
Galleries.cfg
|
||||
Galleries.example.cfg
|
||||
Galleries.sqlite
|
||||
ProtectionAreas.sqlite
|
||||
*.cfg
|
||||
*.sqlite
|
||||
helgrind.log
|
||||
valgrind.log
|
||||
motd.txt
|
||||
|
@ -53,7 +53,7 @@ return
|
||||
{
|
||||
Desc = [[
|
||||
cCuboid offers some native support for integral-boundary cuboids. A cuboid internally consists of
|
||||
two {{Vector3i}}s. By default the cuboid doesn't make any assumptions about the defining points,
|
||||
two {{Vector3i}}-s. By default the cuboid doesn't make any assumptions about the defining points,
|
||||
but for most of the operations in the cCuboid class, the p1 member variable is expected to be the
|
||||
minima and the p2 variable the maxima. The Sort() function guarantees this condition.</p>
|
||||
<p>
|
||||
@ -63,12 +63,17 @@ return
|
||||
{
|
||||
constructor =
|
||||
{
|
||||
{ Params = "OtheCuboid", Return = "cCuboid", Notes = "Creates a new Cuboid object as a copy of OtherCuboid" },
|
||||
{ Params = "", Return = "cCuboid", Notes = "Creates a new Cuboid object with all-zero coords" },
|
||||
{ Params = "OtherCuboid", Return = "cCuboid", Notes = "Creates a new Cuboid object as a copy of OtherCuboid" },
|
||||
{ Params = "{{Vector3i|Point1}}, {{Vector3i|Point2}}", Return = "cCuboid", Notes = "Creates a new Cuboid object with the specified points as its corners." },
|
||||
{ Params = "X, Y, Z", Return = "cCuboid", Notes = "Creates a new Cuboid object with the specified point as both its corners (the cuboid has a size of 1 in each direction)." },
|
||||
{ Params = "X1, Y1, Z1, X2, Y2, Z2", Return = "cCuboid", Notes = "Creates a new Cuboid object with the specified points as its corners." },
|
||||
},
|
||||
Assign = { Params = "X1, Y1, Z1, X2, Y2, Z2", Return = "", Notes = "Assigns all the coords stored in the cuboid. Sort-state is ignored." },
|
||||
Assign =
|
||||
{
|
||||
{ Params = "SrcCuboid", Return = "", Notes = "Copies all the coords from the src cuboid to this cuboid. Sort-state is ignored." },
|
||||
{ Params = "X1, Y1, Z1, X2, Y2, Z2", Return = "", Notes = "Assigns all the coords to the specified values. Sort-state is ignored." },
|
||||
},
|
||||
ClampX = { Params = "MinX, MaxX", Return = "", Notes = "Clamps both X coords into the range provided. Sortedness-agnostic." },
|
||||
ClampY = { Params = "MinY, MaxY", Return = "", Notes = "Clamps both Y coords into the range provided. Sortedness-agnostic." },
|
||||
ClampZ = { Params = "MinZ, MaxZ", Return = "", Notes = "Clamps both Z coords into the range provided. Sortedness-agnostic." },
|
||||
|
@ -9,22 +9,6 @@
|
||||
-- Global variables:
|
||||
g_Plugin = nil;
|
||||
g_PluginFolder = "";
|
||||
g_TrackedPages = {}; -- List of tracked pages, to be checked later whether they exist. Each item is an array of referring pagenames.
|
||||
g_Stats = -- Statistics about the documentation
|
||||
{
|
||||
NumTotalClasses = 0,
|
||||
NumUndocumentedClasses = 0,
|
||||
NumTotalFunctions = 0,
|
||||
NumUndocumentedFunctions = 0,
|
||||
NumTotalConstants = 0,
|
||||
NumUndocumentedConstants = 0,
|
||||
NumTotalVariables = 0,
|
||||
NumUndocumentedVariables = 0,
|
||||
NumTotalHooks = 0,
|
||||
NumUndocumentedHooks = 0,
|
||||
NumTrackedLinks = 0,
|
||||
NumInvalidLinks = 0,
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -33,15 +17,35 @@ g_Stats = -- Statistics about the documentation
|
||||
|
||||
function Initialize(Plugin)
|
||||
g_Plugin = Plugin;
|
||||
|
||||
Plugin:SetName("APIDump");
|
||||
Plugin:SetVersion(1);
|
||||
g_PluginFolder = Plugin:GetLocalFolder();
|
||||
|
||||
LOG("Initialising " .. Plugin:GetName() .. " v." .. Plugin:GetVersion())
|
||||
|
||||
g_PluginFolder = Plugin:GetLocalFolder();
|
||||
cPluginManager:BindConsoleCommand("api", HandleCmdApi, "Dumps the Lua API docs into the API/ subfolder")
|
||||
g_Plugin:AddWebTab("APIDump", HandleWebAdminDump)
|
||||
-- TODO: Add a WebAdmin tab that has a Dump button
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function HandleCmdApi(a_Split)
|
||||
DumpApi()
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function DumpApi()
|
||||
LOG("Dumping the API...")
|
||||
|
||||
-- Load the API descriptions from the Classes and Hooks subfolders:
|
||||
-- This needs to be done each time the command is invoked because the export modifies the tables' contents
|
||||
dofile(g_PluginFolder .. "/APIDesc.lua")
|
||||
if (g_APIDesc.Classes == nil) then
|
||||
g_APIDesc.Classes = {};
|
||||
end
|
||||
@ -51,6 +55,24 @@ function Initialize(Plugin)
|
||||
LoadAPIFiles("/Classes/", g_APIDesc.Classes);
|
||||
LoadAPIFiles("/Hooks/", g_APIDesc.Hooks);
|
||||
|
||||
-- Reset the stats:
|
||||
g_TrackedPages = {}; -- List of tracked pages, to be checked later whether they exist. Each item is an array of referring pagenames.
|
||||
g_Stats = -- Statistics about the documentation
|
||||
{
|
||||
NumTotalClasses = 0,
|
||||
NumUndocumentedClasses = 0,
|
||||
NumTotalFunctions = 0,
|
||||
NumUndocumentedFunctions = 0,
|
||||
NumTotalConstants = 0,
|
||||
NumUndocumentedConstants = 0,
|
||||
NumTotalVariables = 0,
|
||||
NumUndocumentedVariables = 0,
|
||||
NumTotalHooks = 0,
|
||||
NumUndocumentedHooks = 0,
|
||||
NumTrackedLinks = 0,
|
||||
NumInvalidLinks = 0,
|
||||
}
|
||||
|
||||
-- dump all available API functions and objects:
|
||||
-- DumpAPITxt();
|
||||
|
||||
@ -58,7 +80,6 @@ function Initialize(Plugin)
|
||||
DumpAPIHtml();
|
||||
|
||||
LOG("APIDump finished");
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
@ -67,6 +88,9 @@ end
|
||||
|
||||
|
||||
function LoadAPIFiles(a_Folder, a_DstTable)
|
||||
assert(type(a_Folder) == "string")
|
||||
assert(type(a_DstTable) == "table")
|
||||
|
||||
local Folder = g_PluginFolder .. a_Folder;
|
||||
for idx, fnam in ipairs(cFile:GetFolderContents(Folder)) do
|
||||
local FileName = Folder .. fnam;
|
||||
@ -317,6 +341,11 @@ end
|
||||
function DumpAPIHtml()
|
||||
LOG("Dumping all available functions and constants to API subfolder...");
|
||||
|
||||
-- Create the output folder
|
||||
if not(cFile:IsFolder("API")) then
|
||||
cFile:CreateFolder("API");
|
||||
end
|
||||
|
||||
LOG("Copying static files..");
|
||||
cFile:CreateFolder("API/Static");
|
||||
local localFolder = g_Plugin:GetLocalFolder();
|
||||
@ -366,11 +395,6 @@ function DumpAPIHtml()
|
||||
ReadDescriptions(API);
|
||||
ReadHooks(Hooks);
|
||||
|
||||
-- Create the output folder
|
||||
if not(cFile:IsFolder("API")) then
|
||||
cFile:CreateFolder("API");
|
||||
end
|
||||
|
||||
-- Create a "class index" file, write each class as a link to that file,
|
||||
-- then dump class contents into class-specific file
|
||||
LOG("Writing HTML files...");
|
||||
@ -1428,3 +1452,18 @@ end
|
||||
|
||||
|
||||
|
||||
|
||||
function HandleWebAdminDump(a_Request)
|
||||
if (a_Request.PostParams["Dump"] ~= nil) then
|
||||
DumpApi()
|
||||
end
|
||||
return
|
||||
[[
|
||||
<p>Pressing the button will generate the API dump on the server. Note that this can take some time.</p>
|
||||
<form method="POST"><input type="submit" name="Dump" value="Dump the API"/></form>
|
||||
]]
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -56,7 +56,8 @@ function Initialize(Plugin)
|
||||
PM:BindCommand("/sched", "debuggers", HandleSched, "- Schedules a simple countdown using cWorld:ScheduleTask()");
|
||||
PM:BindCommand("/cs", "debuggers", HandleChunkStay, "- Tests the ChunkStay Lua integration for the specified chunk coords");
|
||||
PM:BindCommand("/compo", "debuggers", HandleCompo, "- Tests the cCompositeChat bindings")
|
||||
PM:BindCommand("/sb", "debuggers", HandleSetBiome, "- Sets the biome around you to the specified one");
|
||||
PM:BindCommand("/sb", "debuggers", HandleSetBiome, "- Sets the biome around you to the specified one")
|
||||
PM:BindCommand("/wesel", "debuggers", HandleWESel, "- Expands the current WE selection by 1 block in X/Z")
|
||||
|
||||
Plugin:AddWebTab("Debuggers", HandleRequest_Debuggers)
|
||||
Plugin:AddWebTab("StressTest", HandleRequest_StressTest)
|
||||
@ -1298,6 +1299,43 @@ end
|
||||
|
||||
|
||||
|
||||
function HandleWESel(a_Split, a_Player)
|
||||
-- Check if the selection is a cuboid:
|
||||
local IsCuboid = cPluginManager:CallPlugin("WorldEdit", "IsPlayerSelectionCuboid")
|
||||
if (IsCuboid == nil) then
|
||||
a_Player:SendMessage(cCompositeChat():SetMessageType(mtFailure):AddTextPart("Cannot adjust selection, WorldEdit is not loaded"))
|
||||
return true
|
||||
elseif (IsCuboid == false) then
|
||||
a_Player:SendMessage(cCompositeChat():SetMessageType(mtFailure):AddTextPart("Cannot adjust selection, the selection is not a cuboid"))
|
||||
return true
|
||||
end
|
||||
|
||||
-- Get the selection:
|
||||
local SelCuboid = cCuboid()
|
||||
local IsSuccess = cPluginManager:CallPlugin("WorldEdit", "GetPlayerCuboidSelection", a_Player, SelCuboid)
|
||||
if not(IsSuccess) then
|
||||
a_Player:SendMessage(cCompositeChat():SetMessageType(mtFailure):AddTextPart("Cannot adjust selection, WorldEdit reported failure while getting current selection"))
|
||||
return true
|
||||
end
|
||||
|
||||
-- Adjust the selection:
|
||||
local NumBlocks = tonumber(a_Split[2] or "1") or 1
|
||||
SelCuboid:Expand(NumBlocks, NumBlocks, 0, 0, NumBlocks, NumBlocks)
|
||||
|
||||
-- Set the selection:
|
||||
local IsSuccess = cPluginManager:CallPlugin("WorldEdit", "SetPlayerCuboidSelection", a_Player, SelCuboid)
|
||||
if not(IsSuccess) then
|
||||
a_Player:SendMessage(cCompositeChat():SetMessageType(mtFailure):AddTextPart("Cannot adjust selection, WorldEdit reported failure while setting new selection"))
|
||||
return true
|
||||
end
|
||||
a_Player:SendMessage(cCompositeChat():SetMessageType(mtInformation):AddTextPart("Successfully adjusted the selection by " .. NumBlocks .. " block(s)"))
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function OnPlayerJoined(a_Player)
|
||||
-- Test composite chat chaining:
|
||||
a_Player:SendMessage(cCompositeChat()
|
||||
|
@ -196,9 +196,9 @@ macro(set_exe_flags)
|
||||
add_flags_cxx("-Wno-error=deprecated -Wno-error=weak-vtables -Wno-error=float-equal")
|
||||
add_flags_cxx("-Wno-error=missing-prototypes -Wno-error=non-virtual-dtor")
|
||||
add_flags_cxx("-Wno-error=covered-switch-default -Wno-error=shadow")
|
||||
add_flags_cxx("-Wno-exit-time-destructors -Wno-error=missing-variable-declarations")
|
||||
add_flags_cxx("-Wno-global-constructors -Wno-implicit-fallthrough")
|
||||
add_flags_cxx("-Wno-missing-noreturn -Wno-error=unreachable-code")
|
||||
add_flags_cxx("-Wno-error=exit-time-destructors -Wno-error=missing-variable-declarations")
|
||||
add_flags_cxx("-Wno-error=global-constructors -Wno-implicit-fallthrough")
|
||||
add_flags_cxx("-Wno-error=unreachable-code")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -200,7 +200,7 @@ public:
|
||||
void Push(const HTTPTemplateRequest * a_Request);
|
||||
void Push(cTNTEntity * a_TNTEntity);
|
||||
void Push(Vector3i * a_Vector);
|
||||
void Push(void * a_Ptr);
|
||||
NORETURNDEBUG void Push(void * a_Ptr);
|
||||
void Push(cHopperEntity * a_Hopper);
|
||||
void Push(cBlockEntity * a_BlockEntity);
|
||||
|
||||
|
@ -248,7 +248,7 @@ bool cPluginManager::CallHookChat(cPlayer * a_Player, AString & a_Message)
|
||||
{
|
||||
AStringVector Split(StringSplit(a_Message, " "));
|
||||
ASSERT(!Split.empty()); // This should not happen - we know there's at least one char in the message so the split needs to be at least one item long
|
||||
a_Player->SendMessageInfo(Printf("Unknown command: \"%s\"", Split[0].c_str()));
|
||||
a_Player->SendMessageInfo(Printf("Unknown command: \"%s\"", a_Message.c_str()));
|
||||
LOGINFO("Player %s issued an unknown command: \"%s\"", a_Player->GetName().c_str(), a_Message.c_str());
|
||||
return true; // Cancel sending
|
||||
}
|
||||
|
@ -38,6 +38,20 @@ void cCuboid::Assign(int a_X1, int a_Y1, int a_Z1, int a_X2, int a_Y2, int a_Z2)
|
||||
|
||||
|
||||
|
||||
void cCuboid::Assign(const cCuboid & a_SrcCuboid)
|
||||
{
|
||||
p1.x = a_SrcCuboid.p1.x;
|
||||
p1.y = a_SrcCuboid.p1.y;
|
||||
p1.z = a_SrcCuboid.p1.z;
|
||||
p2.x = a_SrcCuboid.p2.x;
|
||||
p2.y = a_SrcCuboid.p2.y;
|
||||
p2.z = a_SrcCuboid.p2.z;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cCuboid::Sort(void)
|
||||
{
|
||||
if (p1.x > p2.x)
|
||||
|
@ -21,6 +21,7 @@ public:
|
||||
cCuboid(int a_X1, int a_Y1, int a_Z1, int a_X2, int a_Y2, int a_Z2) : p1(a_X1, a_Y1, a_Z1), p2(a_X2, a_Y2, a_Z2) {}
|
||||
|
||||
void Assign(int a_X1, int a_Y1, int a_Z1, int a_X2, int a_Y2, int a_Z2);
|
||||
void Assign(const cCuboid & a_SrcCuboid);
|
||||
|
||||
void Sort(void);
|
||||
|
||||
|
@ -60,7 +60,7 @@ protected:
|
||||
void CheckWorldAge(const AString & a_WorldName, Int64 a_Age);
|
||||
|
||||
/// Called when a deadlock is detected. Aborts the server.
|
||||
void DeadlockDetected(void);
|
||||
NORETURN void DeadlockDetected(void);
|
||||
} ;
|
||||
|
||||
|
||||
|
@ -45,6 +45,8 @@
|
||||
#define SIZE_T_FMT "%Iu"
|
||||
#define SIZE_T_FMT_PRECISION(x) "%" #x "Iu"
|
||||
#define SIZE_T_FMT_HEX "%Ix"
|
||||
|
||||
#define NORETURN __declspec(noreturn)
|
||||
|
||||
#elif defined(__GNUC__)
|
||||
|
||||
@ -69,6 +71,8 @@
|
||||
#define SIZE_T_FMT "%zu"
|
||||
#define SIZE_T_FMT_PRECISION(x) "%" #x "zu"
|
||||
#define SIZE_T_FMT_HEX "%zx"
|
||||
|
||||
#define NORETURN __attribute((__noreturn__))
|
||||
|
||||
#else
|
||||
|
||||
@ -94,6 +98,13 @@
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define NORETURNDEBUG NORETURN
|
||||
#else
|
||||
#define NORETURNDEBUG
|
||||
#endif
|
||||
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user