Merge pull request #1954 from mc-server/MoreStyleCheck
More style checking.
This commit is contained in:
commit
ca949447ee
@ -19,13 +19,13 @@ extern "C"
|
|||||||
#include "../Entities/Entity.h"
|
#include "../Entities/Entity.h"
|
||||||
#include "../BlockEntities/BlockEntity.h"
|
#include "../BlockEntities/BlockEntity.h"
|
||||||
|
|
||||||
// fwd: SQLite/lsqlite3.c
|
// fwd: "SQLite/lsqlite3.c"
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
int luaopen_lsqlite3(lua_State * L);
|
int luaopen_lsqlite3(lua_State * L);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fwd: LuaExpat/lxplib.c:
|
// fwd: "LuaExpat/lxplib.c":
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
int luaopen_lxp(lua_State * L);
|
int luaopen_lxp(lua_State * L);
|
||||||
|
@ -159,7 +159,7 @@ void cLuaWindow::Destroy(void)
|
|||||||
m_Plugin->Unreference(m_LuaRef);
|
m_Plugin->Unreference(m_LuaRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lua will take care of this object, it will garbage-collect it, so we *must not* delete it!
|
// Lua will take care of this object, it will garbage-collect it, so we must not delete it!
|
||||||
m_IsDestroyed = false;
|
m_IsDestroyed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,10 +167,10 @@ void cLuaWindow::Destroy(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cLuaWindow::DistributeStack(cItem & a_ItemStack, int a_Slot, cPlayer& a_Player, cSlotArea * a_ClickedArea, bool a_ShouldApply)
|
void cLuaWindow::DistributeStack(cItem & a_ItemStack, int a_Slot, cPlayer & a_Player, cSlotArea * a_ClickedArea, bool a_ShouldApply)
|
||||||
{
|
{
|
||||||
cSlotAreas Areas;
|
cSlotAreas Areas;
|
||||||
for (auto Area : m_SlotAreas)
|
for (auto && Area : m_SlotAreas)
|
||||||
{
|
{
|
||||||
if (Area != a_ClickedArea)
|
if (Area != a_ClickedArea)
|
||||||
{
|
{
|
||||||
|
@ -2557,8 +2557,8 @@ static int tolua_push_StringStringMap(lua_State* tolua_S, std::map< std::string,
|
|||||||
|
|
||||||
for (std::map<std::string, std::string>::iterator it = a_StringStringMap.begin(); it != a_StringStringMap.end(); ++it)
|
for (std::map<std::string, std::string>::iterator it = a_StringStringMap.begin(); it != a_StringStringMap.end(); ++it)
|
||||||
{
|
{
|
||||||
const char* key = it->first.c_str();
|
const char * key = it->first.c_str();
|
||||||
const char* value = it->second.c_str();
|
const char * value = it->second.c_str();
|
||||||
lua_pushstring(tolua_S, key);
|
lua_pushstring(tolua_S, key);
|
||||||
lua_pushstring(tolua_S, value);
|
lua_pushstring(tolua_S, value);
|
||||||
lua_settable(tolua_S, top);
|
lua_settable(tolua_S, top);
|
||||||
@ -2573,7 +2573,7 @@ static int tolua_push_StringStringMap(lua_State* tolua_S, std::map< std::string,
|
|||||||
|
|
||||||
static int tolua_get_HTTPRequest_Params(lua_State* tolua_S)
|
static int tolua_get_HTTPRequest_Params(lua_State* tolua_S)
|
||||||
{
|
{
|
||||||
HTTPRequest* self = (HTTPRequest*) tolua_tousertype(tolua_S, 1, nullptr);
|
HTTPRequest * self = reinterpret_cast<HTTPRequest *>(tolua_tousertype(tolua_S, 1, nullptr));
|
||||||
return tolua_push_StringStringMap(tolua_S, self->Params);
|
return tolua_push_StringStringMap(tolua_S, self->Params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2583,7 +2583,7 @@ static int tolua_get_HTTPRequest_Params(lua_State* tolua_S)
|
|||||||
|
|
||||||
static int tolua_get_HTTPRequest_PostParams(lua_State* tolua_S)
|
static int tolua_get_HTTPRequest_PostParams(lua_State* tolua_S)
|
||||||
{
|
{
|
||||||
HTTPRequest* self = (HTTPRequest*) tolua_tousertype(tolua_S, 1, nullptr);
|
HTTPRequest * self = reinterpret_cast<HTTPRequest *>(tolua_tousertype(tolua_S, 1, nullptr));
|
||||||
return tolua_push_StringStringMap(tolua_S, self->PostParams);
|
return tolua_push_StringStringMap(tolua_S, self->PostParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2593,8 +2593,8 @@ static int tolua_get_HTTPRequest_PostParams(lua_State* tolua_S)
|
|||||||
|
|
||||||
static int tolua_get_HTTPRequest_FormData(lua_State* tolua_S)
|
static int tolua_get_HTTPRequest_FormData(lua_State* tolua_S)
|
||||||
{
|
{
|
||||||
HTTPRequest* self = (HTTPRequest*) tolua_tousertype(tolua_S, 1, nullptr);
|
HTTPRequest * self = reinterpret_cast<HTTPRequest *>(tolua_tousertype(tolua_S, 1, nullptr));
|
||||||
std::map< std::string, HTTPFormData >& FormData = self->FormData;
|
std::map<std::string, HTTPFormData> & FormData = self->FormData;
|
||||||
|
|
||||||
lua_newtable(tolua_S);
|
lua_newtable(tolua_S);
|
||||||
int top = lua_gettop(tolua_S);
|
int top = lua_gettop(tolua_S);
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// fwd: UI/Window.h
|
// fwd: "UI/Window.h"
|
||||||
class cWindow;
|
class cWindow;
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
// MobHeadEntity.cpp
|
// MobHeadEntity.cpp
|
||||||
|
|
||||||
// Implements the cMobHeadEntity class representing a single skull/head in the world
|
// Implements the cMobHeadEntity class representing a single skull / head in the world
|
||||||
|
|
||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
#include "MobHeadEntity.h"
|
#include "MobHeadEntity.h"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// MobHeadEntity.h
|
// MobHeadEntity.h
|
||||||
|
|
||||||
// Declares the cMobHeadEntity class representing a single skull/head in the world
|
// Declares the cMobHeadEntity class representing a single skull / head in the world
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ public:
|
|||||||
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ) override
|
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ) override
|
||||||
{
|
{
|
||||||
NIBBLETYPE Meta = a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ);
|
NIBBLETYPE Meta = a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ);
|
||||||
Meta ^= 0x04; // Toggle 3rd (addition/subtraction) bit with XOR
|
Meta ^= 0x04; // Toggle 3rd (addition / subtraction) bit with XOR
|
||||||
a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta);
|
a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ NIBBLETYPE cBlockDoorHandler::MetaMirrorXY(NIBBLETYPE a_Meta)
|
|||||||
return a_Meta;
|
return a_Meta;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Holds open/closed meta data. 0x0C == 1100.
|
// Holds open / closed meta data. 0x0C == 1100.
|
||||||
NIBBLETYPE OtherMeta = a_Meta & 0x0C;
|
NIBBLETYPE OtherMeta = a_Meta & 0x0C;
|
||||||
|
|
||||||
// Mirrors according to a table. 0x03 == 0011.
|
// Mirrors according to a table. 0x03 == 0011.
|
||||||
@ -152,7 +152,7 @@ NIBBLETYPE cBlockDoorHandler::MetaMirrorXY(NIBBLETYPE a_Meta)
|
|||||||
|
|
||||||
NIBBLETYPE cBlockDoorHandler::MetaMirrorYZ(NIBBLETYPE a_Meta)
|
NIBBLETYPE cBlockDoorHandler::MetaMirrorYZ(NIBBLETYPE a_Meta)
|
||||||
{
|
{
|
||||||
// Top bit (0x08) contains door panel type (Top/Bottom panel) Only Bottom panels contain position data
|
// Top bit (0x08) contains door panel type (Top / Bottom panel) Only Bottom panels contain position data
|
||||||
// Return a_Meta if panel is a top panel (0x08 bit is set to 1)
|
// Return a_Meta if panel is a top panel (0x08 bit is set to 1)
|
||||||
|
|
||||||
// Note: Currently, you can not properly mirror the hinges on a double door. The orientation of the door is stored
|
// Note: Currently, you can not properly mirror the hinges on a double door. The orientation of the door is stored
|
||||||
@ -165,7 +165,7 @@ NIBBLETYPE cBlockDoorHandler::MetaMirrorYZ(NIBBLETYPE a_Meta)
|
|||||||
return a_Meta;
|
return a_Meta;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Holds open/closed meta data. 0x0C == 1100.
|
// Holds open / closed meta data. 0x0C == 1100.
|
||||||
NIBBLETYPE OtherMeta = a_Meta & 0x0C;
|
NIBBLETYPE OtherMeta = a_Meta & 0x0C;
|
||||||
|
|
||||||
// Mirrors according to a table. 0x03 == 0011.
|
// Mirrors according to a table. 0x03 == 0011.
|
||||||
|
@ -106,7 +106,7 @@ public:
|
|||||||
void FindAndSetPortalFrame(int X, int Y, int Z, cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface)
|
void FindAndSetPortalFrame(int X, int Y, int Z, cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface)
|
||||||
{
|
{
|
||||||
int MaxY = FindObsidianCeiling(X, Y, Z, a_ChunkInterface); // Get topmost obsidian block as reference for all other checks
|
int MaxY = FindObsidianCeiling(X, Y, Z, a_ChunkInterface); // Get topmost obsidian block as reference for all other checks
|
||||||
int X1 = X + 1, Z1 = Z + 1, X2 = X - 1, Z2 = Z - 1; // Duplicate XZ values, add/subtract one as we've checked the original already the line above
|
int X1 = X + 1, Z1 = Z + 1, X2 = X - 1, Z2 = Z - 1; // Duplicate XZ values, add / subtract one as we've checked the original already the line above
|
||||||
|
|
||||||
if (MaxY == 0) // Oh noes! Not a portal coordinate :(
|
if (MaxY == 0) // Oh noes! Not a portal coordinate :(
|
||||||
{
|
{
|
||||||
@ -139,7 +139,7 @@ public:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Evaluates if coordinates are a portal going XP/XM; returns true if so, and writes boundaries to variable
|
/** Evaluates if coordinates are a portal going XP / XM; returns true if so, and writes boundaries to variable
|
||||||
Takes coordinates of base block and Y coord of target obsidian ceiling */
|
Takes coordinates of base block and Y coord of target obsidian ceiling */
|
||||||
bool FindPortalSliceX(int X1, int X2, int Y, int Z, int MaxY, cChunkInterface & a_ChunkInterface)
|
bool FindPortalSliceX(int X1, int X2, int Y, int Z, int MaxY, cChunkInterface & a_ChunkInterface)
|
||||||
{
|
{
|
||||||
@ -179,7 +179,7 @@ public:
|
|||||||
return (FoundFrameXP && FoundFrameXM);
|
return (FoundFrameXP && FoundFrameXM);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Evaluates if coords are a portal going ZP/ZM; returns true if so, and writes boundaries to variable
|
/// Evaluates if coords are a portal going ZP / ZM; returns true if so, and writes boundaries to variable
|
||||||
bool FindPortalSliceZ(int X, int Y, int Z1, int Z2, int MaxY, cChunkInterface & a_ChunkInterface)
|
bool FindPortalSliceZ(int X, int Y, int Z1, int Z2, int MaxY, cChunkInterface & a_ChunkInterface)
|
||||||
{
|
{
|
||||||
Dir = 2;
|
Dir = 2;
|
||||||
|
@ -19,7 +19,7 @@ public:
|
|||||||
|
|
||||||
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ) override
|
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ) override
|
||||||
{
|
{
|
||||||
// Flip the ON bit on/off using the XOR bitwise operation
|
// Flip the ON bit on / off using the XOR bitwise operation
|
||||||
NIBBLETYPE Meta = (a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) ^ 0x08);
|
NIBBLETYPE Meta = (a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) ^ 0x08);
|
||||||
|
|
||||||
a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta);
|
a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta);
|
||||||
|
@ -108,7 +108,7 @@ private:
|
|||||||
case E_BLOCK_ENCHANTMENT_TABLE:
|
case E_BLOCK_ENCHANTMENT_TABLE:
|
||||||
case E_BLOCK_END_PORTAL:
|
case E_BLOCK_END_PORTAL:
|
||||||
case E_BLOCK_END_PORTAL_FRAME:
|
case E_BLOCK_END_PORTAL_FRAME:
|
||||||
// Notice the lack of an E_BLOCK_ENDER_CHEST here; its because ender chests can totally be pushed/pulled in MCS :)
|
// Notice the lack of an E_BLOCK_ENDER_CHEST here; its because ender chests can totally be pushed / pulled in MCS :)
|
||||||
case E_BLOCK_FURNACE:
|
case E_BLOCK_FURNACE:
|
||||||
case E_BLOCK_LIT_FURNACE:
|
case E_BLOCK_LIT_FURNACE:
|
||||||
case E_BLOCK_INVERTED_DAYLIGHT_SENSOR:
|
case E_BLOCK_INVERTED_DAYLIGHT_SENSOR:
|
||||||
|
@ -502,11 +502,11 @@ public:
|
|||||||
// Save powered rail flag.
|
// Save powered rail flag.
|
||||||
NIBBLETYPE OtherMeta = a_Meta & 0x08;
|
NIBBLETYPE OtherMeta = a_Meta & 0x08;
|
||||||
// Rotates according to table; 0x07 == 0111.
|
// Rotates according to table; 0x07 == 0111.
|
||||||
// Rails can either be flat (North/South) or Ascending (Asc. East)
|
// Rails can either be flat (North / South) or Ascending (Asc. East)
|
||||||
switch (a_Meta & 0x07)
|
switch (a_Meta & 0x07)
|
||||||
{
|
{
|
||||||
case 0x00: return 0x01 + OtherMeta; // North/South -> East/West
|
case 0x00: return 0x01 + OtherMeta; // North / South -> East / West
|
||||||
case 0x01: return 0x00 + OtherMeta; // East/West -> North/South
|
case 0x01: return 0x00 + OtherMeta; // East / West -> North / South
|
||||||
|
|
||||||
case 0x02: return 0x04 + OtherMeta; // Asc. East -> Asc. North
|
case 0x02: return 0x04 + OtherMeta; // Asc. East -> Asc. North
|
||||||
case 0x04: return 0x03 + OtherMeta; // Asc. North -> Asc. West
|
case 0x04: return 0x03 + OtherMeta; // Asc. North -> Asc. West
|
||||||
@ -538,11 +538,11 @@ public:
|
|||||||
// Save powered rail flag.
|
// Save powered rail flag.
|
||||||
NIBBLETYPE OtherMeta = a_Meta & 0x08;
|
NIBBLETYPE OtherMeta = a_Meta & 0x08;
|
||||||
// Rotates according to table; 0x07 == 0111.
|
// Rotates according to table; 0x07 == 0111.
|
||||||
// Rails can either be flat (North/South) or Ascending (Asc. East)
|
// Rails can either be flat (North / South) or Ascending (Asc. East)
|
||||||
switch (a_Meta & 0x07)
|
switch (a_Meta & 0x07)
|
||||||
{
|
{
|
||||||
case 0x00: return 0x01 + OtherMeta; // North/South -> East/West
|
case 0x00: return 0x01 + OtherMeta; // North / South -> East / West
|
||||||
case 0x01: return 0x00 + OtherMeta; // East/West -> North/South
|
case 0x01: return 0x00 + OtherMeta; // East / West -> North / South
|
||||||
|
|
||||||
case 0x02: return 0x05 + OtherMeta; // Asc. East -> Asc. South
|
case 0x02: return 0x05 + OtherMeta; // Asc. East -> Asc. South
|
||||||
case 0x05: return 0x03 + OtherMeta; // Asc. South -> Asc. West
|
case 0x05: return 0x03 + OtherMeta; // Asc. South -> Asc. West
|
||||||
@ -574,7 +574,7 @@ public:
|
|||||||
// Save powered rail flag.
|
// Save powered rail flag.
|
||||||
NIBBLETYPE OtherMeta = a_Meta & 0x08;
|
NIBBLETYPE OtherMeta = a_Meta & 0x08;
|
||||||
// Mirrors according to table; 0x07 == 0111.
|
// Mirrors according to table; 0x07 == 0111.
|
||||||
// Rails can either be flat (North/South) or Ascending (Asc. East)
|
// Rails can either be flat (North / South) or Ascending (Asc. East)
|
||||||
switch (a_Meta & 0x07)
|
switch (a_Meta & 0x07)
|
||||||
{
|
{
|
||||||
case 0x05: return 0x04 + OtherMeta; // Asc. South -> Asc. North
|
case 0x05: return 0x04 + OtherMeta; // Asc. South -> Asc. North
|
||||||
@ -605,7 +605,7 @@ public:
|
|||||||
// Save powered rail flag.
|
// Save powered rail flag.
|
||||||
NIBBLETYPE OtherMeta = a_Meta & 0x08;
|
NIBBLETYPE OtherMeta = a_Meta & 0x08;
|
||||||
// Mirrors according to table; 0x07 == 0111.
|
// Mirrors according to table; 0x07 == 0111.
|
||||||
// Rails can either be flat (North/South) or Ascending (Asc. East)
|
// Rails can either be flat (North / South) or Ascending (Asc. East)
|
||||||
switch (a_Meta & 0x07)
|
switch (a_Meta & 0x07)
|
||||||
{
|
{
|
||||||
case 0x02: return 0x03 + OtherMeta; // Asc. East -> Asc. West
|
case 0x02: return 0x03 + OtherMeta; // Asc. East -> Asc. West
|
||||||
|
@ -35,7 +35,7 @@ public:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Flip the ON bit on/off using the XOR bitwise operation
|
// Flip the ON bit on / off using the XOR bitwise operation
|
||||||
NIBBLETYPE Meta = (a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) ^ 0x04);
|
NIBBLETYPE Meta = (a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) ^ 0x04);
|
||||||
a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta);
|
a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta);
|
||||||
|
|
||||||
|
@ -57,10 +57,10 @@ public:
|
|||||||
/// Returns true if a boundingbox specified by a_Min and a_Max is inside this bounding box
|
/// Returns true if a boundingbox specified by a_Min and a_Max is inside this bounding box
|
||||||
bool IsInside(const Vector3d & a_Min, const Vector3d & a_Max);
|
bool IsInside(const Vector3d & a_Min, const Vector3d & a_Max);
|
||||||
|
|
||||||
/// Returns true if the specified point is inside the bounding box specified by its min/max corners
|
/// Returns true if the specified point is inside the bounding box specified by its min / max corners
|
||||||
static bool IsInside(const Vector3d & a_Min, const Vector3d & a_Max, const Vector3d & a_Point);
|
static bool IsInside(const Vector3d & a_Min, const Vector3d & a_Max, const Vector3d & a_Point);
|
||||||
|
|
||||||
/// Returns true if the specified point is inside the bounding box specified by its min/max corners
|
/// Returns true if the specified point is inside the bounding box specified by its min / max corners
|
||||||
static bool IsInside(const Vector3d & a_Min, const Vector3d & a_Max, double a_X, double a_Y, double a_Z);
|
static bool IsInside(const Vector3d & a_Min, const Vector3d & a_Max, double a_X, double a_Y, double a_Z);
|
||||||
|
|
||||||
/** Returns true if this bounding box is intersected by the line specified by its two points
|
/** Returns true if this bounding box is intersected by the line specified by its two points
|
||||||
|
@ -149,6 +149,39 @@ local g_ViolationPatterns =
|
|||||||
|
|
||||||
-- No space before a closing parenthesis:
|
-- No space before a closing parenthesis:
|
||||||
{" %)", "Remove the space before \")\""},
|
{" %)", "Remove the space before \")\""},
|
||||||
|
|
||||||
|
-- Check spaces around "+":
|
||||||
|
{"^[a-zA-Z0-9]+%+[a-zA-Z0-9]+", "Add space around +"},
|
||||||
|
{"[!@#$%%%^&*() %[%]\t][a-zA-Z0-9]+%+[a-zA-Z0-9]+", "Add space around +"},
|
||||||
|
--[[
|
||||||
|
-- Cannot check these because of text such as "X+" and "+2" appearing in some comments.
|
||||||
|
{"^[a-zA-Z0-9]+ %+[a-zA-Z0-9]+", "Add space after +"},
|
||||||
|
{"[!@#$%%%^&*() %[%]\t][a-zA-Z0-9]+ %+[a-zA-Z0-9]+", "Add space after +"},
|
||||||
|
{"^[a-zA-Z0-9]+%+ [a-zA-Z0-9]+", "Add space before +"},
|
||||||
|
{"[!@#$%%%^&*() %[%]\t][a-zA-Z0-9]+%+ [a-zA-Z0-9]+", "Add space before +"},
|
||||||
|
--]]
|
||||||
|
|
||||||
|
-- Cannot check spaces around "-", because the minus is sometimes used as a hyphen between-words
|
||||||
|
|
||||||
|
-- Check spaces around "*":
|
||||||
|
{"^[a-zA-Z0-9]+%*[a-zA-Z0-9]+", "Add space around *"},
|
||||||
|
{"^[^\"]*[!@#$%%%^&*() %[%]\t][a-zA-Z0-9]+%*[a-zA-Z0-9]+", "Add space around *"},
|
||||||
|
{"^[a-zB-Z0-9]+%* [a-zA-Z0-9]+", "Add space before *"},
|
||||||
|
{"^[^\"]*[!@#$%%%^&*() %[%]\t][a-zB-Z0-9]+%* [a-zA-Z0-9]+", "Add space before *"},
|
||||||
|
|
||||||
|
-- Check spaces around "/":
|
||||||
|
{"^[a-zA-Z0-9]+%/[a-zA-Z0-9]+", "Add space around /"},
|
||||||
|
{"^[^\"]*[!@#$%%%^&*() %[%]\t][a-zA-Z0-9]+%/[a-zA-Z0-9]+", "Add space around /"},
|
||||||
|
|
||||||
|
-- Check spaces around "&":
|
||||||
|
{"^[a-zA-Z0-9]+%&[a-zA-Z0-9]+", "Add space around /"},
|
||||||
|
{"^[^\"]*[!@#$%%%^&*() %[%]\t][a-zA-Z0-9]+%&[a-zA-Z0-9]+", "Add space around /"},
|
||||||
|
{"^[a-zA-Z0-9]+%& [a-zA-Z0-9]+", "Add space before &"},
|
||||||
|
{"^[^\"]*[!@#$%%%^&*() %[%]\t][a-zA-Z0-9]+%& [a-zA-Z0-9]+", "Add space before &"},
|
||||||
|
|
||||||
|
-- We don't like "Type const *" and "Type const &". Use "const Type *" and "const Type &" instead:
|
||||||
|
{"const %&", "Use 'const Type &' instead of 'Type const &'"},
|
||||||
|
{"const %*", "Use 'const Type *' instead of 'Type const *'"},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -472,26 +472,26 @@ void cChunk::Stay(bool a_Stay)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunk::CollectMobCensus(cMobCensus& toFill)
|
void cChunk::CollectMobCensus(cMobCensus & toFill)
|
||||||
{
|
{
|
||||||
toFill.CollectSpawnableChunk(*this);
|
toFill.CollectSpawnableChunk(*this);
|
||||||
std::list<const Vector3d*> playerPositions;
|
std::list<const Vector3d *> playerPositions;
|
||||||
cPlayer* currentPlayer;
|
cPlayer * currentPlayer;
|
||||||
for (cClientHandleList::iterator itr = m_LoadedByClient.begin(), end = m_LoadedByClient.end(); itr != end; ++itr)
|
for (auto itr = m_LoadedByClient.begin(), end = m_LoadedByClient.end(); itr != end; ++itr)
|
||||||
{
|
{
|
||||||
currentPlayer = (*itr)->GetPlayer();
|
currentPlayer = (*itr)->GetPlayer();
|
||||||
playerPositions.push_back(&(currentPlayer->GetPosition()));
|
playerPositions.push_back(&(currentPlayer->GetPosition()));
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3d currentPosition;
|
Vector3d currentPosition;
|
||||||
for (cEntityList::iterator itr = m_Entities.begin(); itr != m_Entities.end(); ++itr)
|
for (auto itr = m_Entities.begin(); itr != m_Entities.end(); ++itr)
|
||||||
{
|
{
|
||||||
// LOGD("Counting entity #%i (%s)", (*itr)->GetUniqueID(), (*itr)->GetClass());
|
// LOGD("Counting entity #%i (%s)", (*itr)->GetUniqueID(), (*itr)->GetClass());
|
||||||
if ((*itr)->IsMob())
|
if ((*itr)->IsMob())
|
||||||
{
|
{
|
||||||
cMonster& Monster = (cMonster&)(**itr);
|
auto & Monster = reinterpret_cast<cMonster &>(**itr);
|
||||||
currentPosition = Monster.GetPosition();
|
currentPosition = Monster.GetPosition();
|
||||||
for (std::list<const Vector3d*>::const_iterator itr2 = playerPositions.begin(); itr2 != playerPositions.end(); ++itr2)
|
for (auto itr2 = playerPositions.cbegin(); itr2 != playerPositions.cend(); ++itr2)
|
||||||
{
|
{
|
||||||
toFill.CollectMob(Monster, *this, (currentPosition - **itr2).SqrLength());
|
toFill.CollectMob(Monster, *this, (currentPosition - **itr2).SqrLength());
|
||||||
}
|
}
|
||||||
@ -531,7 +531,7 @@ void cChunk::GetRandomBlockCoords(int & a_X, int & a_Y, int & a_Z)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunk::SpawnMobs(cMobSpawner& a_MobSpawner)
|
void cChunk::SpawnMobs(cMobSpawner & a_MobSpawner)
|
||||||
{
|
{
|
||||||
int CenterX, CenterY, CenterZ;
|
int CenterX, CenterY, CenterZ;
|
||||||
GetRandomBlockCoords(CenterX, CenterY, CenterZ);
|
GetRandomBlockCoords(CenterX, CenterY, CenterZ);
|
||||||
@ -737,7 +737,7 @@ void cChunk::ProcessQueuedSetBlocks(void)
|
|||||||
{
|
{
|
||||||
if (GetBlock(itr->m_RelX, itr->m_RelY, itr->m_RelZ) == itr->m_PreviousType)
|
if (GetBlock(itr->m_RelX, itr->m_RelY, itr->m_RelZ) == itr->m_PreviousType)
|
||||||
{
|
{
|
||||||
// Current world age is bigger than/equal to target world age - delay time reached AND
|
// Current world age is bigger than / equal to target world age - delay time reached AND
|
||||||
// Previous block type was the same as current block type (to prevent duplication)
|
// Previous block type was the same as current block type (to prevent duplication)
|
||||||
SetBlock(itr->m_RelX, itr->m_RelY, itr->m_RelZ, itr->m_BlockType, itr->m_BlockMeta); // SetMeta doesn't send to client
|
SetBlock(itr->m_RelX, itr->m_RelY, itr->m_RelZ, itr->m_BlockType, itr->m_BlockMeta); // SetMeta doesn't send to client
|
||||||
itr = m_SetBlockQueue.erase(itr);
|
itr = m_SetBlockQueue.erase(itr);
|
||||||
@ -751,7 +751,7 @@ void cChunk::ProcessQueuedSetBlocks(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Current world age is bigger than/equal to target world age - delay time reached
|
// Current world age is bigger than / equal to target world age - delay time reached
|
||||||
SetBlock(itr->m_RelX, itr->m_RelY, itr->m_RelZ, itr->m_BlockType, itr->m_BlockMeta);
|
SetBlock(itr->m_RelX, itr->m_RelY, itr->m_RelZ, itr->m_BlockType, itr->m_BlockMeta);
|
||||||
itr = m_SetBlockQueue.erase(itr);
|
itr = m_SetBlockQueue.erase(itr);
|
||||||
LOGD("Successfully set queued block - previous type ignored");
|
LOGD("Successfully set queued block - previous type ignored");
|
||||||
@ -1026,7 +1026,7 @@ void cChunk::GrowMelonPumpkin(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE a_Bl
|
|||||||
case E_BLOCK_FARMLAND:
|
case E_BLOCK_FARMLAND:
|
||||||
{
|
{
|
||||||
// DEBUG: This is here to catch FS #349 - melons growing over other crops.
|
// DEBUG: This is here to catch FS #349 - melons growing over other crops.
|
||||||
LOG("Growing melon/pumpkin overwriting %s, growing on %s",
|
LOG("Growing melon / pumpkin overwriting %s, growing on %s",
|
||||||
ItemTypeToString(BlockType[CheckType]).c_str(),
|
ItemTypeToString(BlockType[CheckType]).c_str(),
|
||||||
ItemTypeToString(Soil).c_str()
|
ItemTypeToString(Soil).c_str()
|
||||||
);
|
);
|
||||||
@ -1839,7 +1839,7 @@ bool cChunk::SetSignLines(int a_PosX, int a_PosY, int a_PosZ, const AString & a_
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunk::RemoveBlockEntity( cBlockEntity* a_BlockEntity)
|
void cChunk::RemoveBlockEntity(cBlockEntity * a_BlockEntity)
|
||||||
{
|
{
|
||||||
MarkDirty();
|
MarkDirty();
|
||||||
m_BlockEntities.remove(a_BlockEntity);
|
m_BlockEntities.remove(a_BlockEntity);
|
||||||
|
@ -155,10 +155,10 @@ public:
|
|||||||
void Stay(bool a_Stay = true);
|
void Stay(bool a_Stay = true);
|
||||||
|
|
||||||
/** Recence all mobs proximities to players in order to know what to do with them */
|
/** Recence all mobs proximities to players in order to know what to do with them */
|
||||||
void CollectMobCensus(cMobCensus& toFill);
|
void CollectMobCensus(cMobCensus & toFill);
|
||||||
|
|
||||||
/** Try to Spawn Monsters inside chunk */
|
/** Try to Spawn Monsters inside chunk */
|
||||||
void SpawnMobs(cMobSpawner& a_MobSpawner);
|
void SpawnMobs(cMobSpawner & a_MobSpawner);
|
||||||
|
|
||||||
void Tick(std::chrono::milliseconds a_Dt);
|
void Tick(std::chrono::milliseconds a_Dt);
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ cChunkMap::~cChunkMap()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunkMap::RemoveLayer( cChunkLayer* a_Layer)
|
void cChunkMap::RemoveLayer(cChunkLayer * a_Layer)
|
||||||
{
|
{
|
||||||
cCSLock Lock(m_CSLayers);
|
cCSLock Lock(m_CSLayers);
|
||||||
m_Layers.remove(a_Layer);
|
m_Layers.remove(a_Layer);
|
||||||
@ -2716,12 +2716,12 @@ void cChunkMap::SetNextBlockTick(int a_BlockX, int a_BlockY, int a_BlockZ)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunkMap::CollectMobCensus(cMobCensus& a_ToFill)
|
void cChunkMap::CollectMobCensus(cMobCensus & a_ToFill)
|
||||||
{
|
{
|
||||||
cCSLock Lock(m_CSLayers);
|
cCSLock Lock(m_CSLayers);
|
||||||
for (cChunkLayerList::iterator itr = m_Layers.begin(); itr != m_Layers.end(); ++itr)
|
for (auto && layer: m_Layers)
|
||||||
{
|
{
|
||||||
(*itr)->CollectMobCensus(a_ToFill);
|
layer->CollectMobCensus(a_ToFill);
|
||||||
} // for itr - m_Layers
|
} // for itr - m_Layers
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2730,12 +2730,12 @@ void cChunkMap::CollectMobCensus(cMobCensus& a_ToFill)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunkMap::SpawnMobs(cMobSpawner& a_MobSpawner)
|
void cChunkMap::SpawnMobs(cMobSpawner & a_MobSpawner)
|
||||||
{
|
{
|
||||||
cCSLock Lock(m_CSLayers);
|
cCSLock Lock(m_CSLayers);
|
||||||
for (cChunkLayerList::iterator itr = m_Layers.begin(); itr != m_Layers.end(); ++itr)
|
for (auto && layer: m_Layers)
|
||||||
{
|
{
|
||||||
(*itr)->SpawnMobs(a_MobSpawner);
|
layer->SpawnMobs(a_MobSpawner);
|
||||||
} // for itr - m_Layers
|
} // for itr - m_Layers
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2936,7 +2936,7 @@ cChunk * cChunkMap::cChunkLayer::FindChunk(int a_ChunkX, int a_ChunkZ)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunkMap::cChunkLayer::CollectMobCensus(cMobCensus& a_ToFill)
|
void cChunkMap::cChunkLayer::CollectMobCensus(cMobCensus & a_ToFill)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < ARRAYCOUNT(m_Chunks); i++)
|
for (size_t i = 0; i < ARRAYCOUNT(m_Chunks); i++)
|
||||||
{
|
{
|
||||||
@ -2955,7 +2955,7 @@ void cChunkMap::cChunkLayer::CollectMobCensus(cMobCensus& a_ToFill)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunkMap::cChunkLayer::SpawnMobs(cMobSpawner& a_MobSpawner)
|
void cChunkMap::cChunkLayer::SpawnMobs(cMobSpawner & a_MobSpawner)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < ARRAYCOUNT(m_Chunks); i++)
|
for (size_t i = 0; i < ARRAYCOUNT(m_Chunks); i++)
|
||||||
{
|
{
|
||||||
|
@ -64,7 +64,7 @@ public:
|
|||||||
|
|
||||||
static const int LAYER_SIZE = 32;
|
static const int LAYER_SIZE = 32;
|
||||||
|
|
||||||
cChunkMap(cWorld* a_World);
|
cChunkMap(cWorld * a_World);
|
||||||
~cChunkMap();
|
~cChunkMap();
|
||||||
|
|
||||||
// Broadcast respective packets to all clients of the chunk where the event is taking place
|
// Broadcast respective packets to all clients of the chunk where the event is taking place
|
||||||
@ -364,11 +364,11 @@ public:
|
|||||||
/** Sets the blockticking to start at the specified block. Only one blocktick per chunk may be set, second call overwrites the first call */
|
/** Sets the blockticking to start at the specified block. Only one blocktick per chunk may be set, second call overwrites the first call */
|
||||||
void SetNextBlockTick(int a_BlockX, int a_BlockY, int a_BlockZ);
|
void SetNextBlockTick(int a_BlockX, int a_BlockY, int a_BlockZ);
|
||||||
|
|
||||||
/** Make a Mob census, of all mobs, their family, their chunk and theyr distance to closest player */
|
/** Make a Mob census, of all mobs, their family, their chunk and their distance to closest player */
|
||||||
void CollectMobCensus(cMobCensus& a_ToFill);
|
void CollectMobCensus(cMobCensus & a_ToFill);
|
||||||
|
|
||||||
/** Try to Spawn Monsters inside all Chunks */
|
/** Try to Spawn Monsters inside all Chunks */
|
||||||
void SpawnMobs(cMobSpawner& a_MobSpawner);
|
void SpawnMobs(cMobSpawner & a_MobSpawner);
|
||||||
|
|
||||||
void Tick(std::chrono::milliseconds a_Dt);
|
void Tick(std::chrono::milliseconds a_Dt);
|
||||||
|
|
||||||
@ -433,9 +433,10 @@ private:
|
|||||||
void UnloadUnusedChunks(void);
|
void UnloadUnusedChunks(void);
|
||||||
|
|
||||||
/** Collect a mob census, of all mobs, their megatype, their chunk and their distance o closest player */
|
/** Collect a mob census, of all mobs, their megatype, their chunk and their distance o closest player */
|
||||||
void CollectMobCensus(cMobCensus& a_ToFill);
|
void CollectMobCensus(cMobCensus & a_ToFill);
|
||||||
|
|
||||||
/** Try to Spawn Monsters inside all Chunks */
|
/** Try to Spawn Monsters inside all Chunks */
|
||||||
void SpawnMobs(cMobSpawner& a_MobSpawner);
|
void SpawnMobs(cMobSpawner & a_MobSpawner);
|
||||||
|
|
||||||
void Tick(std::chrono::milliseconds a_Dt);
|
void Tick(std::chrono::milliseconds a_Dt);
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ And once they do, it requests the chunk data and sends it all away, either
|
|||||||
sends to a specific client (QueueSendChunkTo)
|
sends to a specific client (QueueSendChunkTo)
|
||||||
Chunk data is queried using the cChunkDataCallback interface.
|
Chunk data is queried using the cChunkDataCallback interface.
|
||||||
It is cached inside the ChunkSender object during the query and then processed after the query ends.
|
It is cached inside the ChunkSender object during the query and then processed after the query ends.
|
||||||
Note that the data needs to be compressed only *after* the query finishes,
|
Note that the data needs to be compressed only after the query finishes,
|
||||||
because the query callbacks run with ChunkMap's CS locked.
|
because the query callbacks run with ChunkMap's CS locked.
|
||||||
|
|
||||||
A client may remove itself from all direct requests(QueueSendChunkTo()) by calling RemoveClient();
|
A client may remove itself from all direct requests(QueueSendChunkTo()) by calling RemoveClient();
|
||||||
|
@ -436,7 +436,7 @@ bool cClientHandle::StreamNextChunk(void)
|
|||||||
{
|
{
|
||||||
Vector3d Vector = Position + LookVector * cChunkDef::Width * Range;
|
Vector3d Vector = Position + LookVector * cChunkDef::Width * Range;
|
||||||
|
|
||||||
// Get the chunk from the x/z coords.
|
// Get the chunk from the x / z coords.
|
||||||
int RangeX, RangeZ = 0;
|
int RangeX, RangeZ = 0;
|
||||||
cChunkDef::BlockToChunk(FloorC(Vector.x), FloorC(Vector.z), RangeX, RangeZ);
|
cChunkDef::BlockToChunk(FloorC(Vector.x), FloorC(Vector.z), RangeX, RangeZ);
|
||||||
|
|
||||||
@ -454,7 +454,7 @@ bool cClientHandle::StreamNextChunk(void)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the chunk already loading/loaded -> skip
|
// If the chunk already loading / loaded -> skip
|
||||||
if (
|
if (
|
||||||
(std::find(m_ChunksToSend.begin(), m_ChunksToSend.end(), Coords) != m_ChunksToSend.end()) ||
|
(std::find(m_ChunksToSend.begin(), m_ChunksToSend.end(), Coords) != m_ChunksToSend.end()) ||
|
||||||
(std::find(m_LoadedChunks.begin(), m_LoadedChunks.end(), Coords) != m_LoadedChunks.end())
|
(std::find(m_LoadedChunks.begin(), m_LoadedChunks.end(), Coords) != m_LoadedChunks.end())
|
||||||
@ -492,7 +492,7 @@ bool cClientHandle::StreamNextChunk(void)
|
|||||||
{
|
{
|
||||||
cChunkCoords Coords = *itr;
|
cChunkCoords Coords = *itr;
|
||||||
|
|
||||||
// If the chunk already loading/loaded -> skip
|
// If the chunk already loading / loaded -> skip
|
||||||
if (
|
if (
|
||||||
(std::find(m_ChunksToSend.begin(), m_ChunksToSend.end(), Coords) != m_ChunksToSend.end()) ||
|
(std::find(m_ChunksToSend.begin(), m_ChunksToSend.end(), Coords) != m_ChunksToSend.end()) ||
|
||||||
(std::find(m_LoadedChunks.begin(), m_LoadedChunks.end(), Coords) != m_LoadedChunks.end())
|
(std::find(m_LoadedChunks.begin(), m_LoadedChunks.end(), Coords) != m_LoadedChunks.end())
|
||||||
@ -1154,7 +1154,7 @@ void cClientHandle::HandleBlockDigStarted(int a_BlockX, int a_BlockY, int a_Bloc
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the last digging coords to the block being dug, so that they can be checked in DIG_FINISHED to avoid dig/aim bug in the client:
|
// Set the last digging coords to the block being dug, so that they can be checked in DIG_FINISHED to avoid dig / aim bug in the client:
|
||||||
m_HasStartedDigging = true;
|
m_HasStartedDigging = true;
|
||||||
m_LastDigBlockX = a_BlockX;
|
m_LastDigBlockX = a_BlockX;
|
||||||
m_LastDigBlockY = a_BlockY;
|
m_LastDigBlockY = a_BlockY;
|
||||||
@ -1201,7 +1201,7 @@ void cClientHandle::HandleBlockDigFinished(int a_BlockX, int a_BlockY, int a_Blo
|
|||||||
(m_LastDigBlockZ != a_BlockZ)
|
(m_LastDigBlockZ != a_BlockZ)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
LOGD("Prevented a dig/aim bug in the client (finish {%d, %d, %d} vs start {%d, %d, %d}, HSD: %s)",
|
LOGD("Prevented a dig / aim bug in the client (finish {%d, %d, %d} vs start {%d, %d, %d}, HSD: %s)",
|
||||||
a_BlockX, a_BlockY, a_BlockZ,
|
a_BlockX, a_BlockY, a_BlockZ,
|
||||||
m_LastDigBlockX, m_LastDigBlockY, m_LastDigBlockZ,
|
m_LastDigBlockX, m_LastDigBlockY, m_LastDigBlockZ,
|
||||||
(m_HasStartedDigging ? "True" : "False")
|
(m_HasStartedDigging ? "True" : "False")
|
||||||
@ -1359,7 +1359,7 @@ void cClientHandle::HandleRightClick(int a_BlockX, int a_BlockY, int a_BlockZ, e
|
|||||||
|
|
||||||
if (!CheckBlockInteractionsRate())
|
if (!CheckBlockInteractionsRate())
|
||||||
{
|
{
|
||||||
Kick("Too many blocks were placed/interacted with per unit time - hacked client?");
|
Kick("Too many blocks were placed / interacted with per unit time - hacked client?");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -391,7 +391,7 @@ private:
|
|||||||
|
|
||||||
cPlayer * m_Player;
|
cPlayer * m_Player;
|
||||||
|
|
||||||
bool m_HasSentDC; ///< True if a D/C packet has been sent in either direction
|
bool m_HasSentDC; ///< True if a Disconnect packet has been sent in either direction
|
||||||
|
|
||||||
// Chunk position when the last StreamChunks() was called; used to avoid re-streaming while in the same chunk
|
// Chunk position when the last StreamChunks() was called; used to avoid re-streaming while in the same chunk
|
||||||
int m_LastStreamedChunkX;
|
int m_LastStreamedChunkX;
|
||||||
@ -416,7 +416,7 @@ private:
|
|||||||
int m_BlockDigAnimY;
|
int m_BlockDigAnimY;
|
||||||
int m_BlockDigAnimZ;
|
int m_BlockDigAnimZ;
|
||||||
|
|
||||||
// To avoid dig/aim bug in the client, store the last position given in a DIG_START packet and compare to that when processing the DIG_FINISH packet:
|
// To avoid dig / aim bug in the client, store the last position given in a DIG_START packet and compare to that when processing the DIG_FINISH packet:
|
||||||
bool m_HasStartedDigging;
|
bool m_HasStartedDigging;
|
||||||
int m_LastDigBlockX;
|
int m_LastDigBlockX;
|
||||||
int m_LastDigBlockY;
|
int m_LastDigBlockY;
|
||||||
|
@ -229,7 +229,7 @@ inline const char * ClickActionToString(eClickAction a_ClickAction)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** Returns a blockface mirrored around the Y axis (doesn't change up/down). */
|
/** Returns a blockface mirrored around the Y axis (doesn't change up / down). */
|
||||||
inline eBlockFace MirrorBlockFaceY(eBlockFace a_BlockFace)
|
inline eBlockFace MirrorBlockFaceY(eBlockFace a_BlockFace)
|
||||||
{
|
{
|
||||||
switch (a_BlockFace)
|
switch (a_BlockFace)
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// fwd: WorldStorage/FastNBT.h
|
// fwd: "WorldStorage/FastNBT.h"
|
||||||
class cFastNBTWriter;
|
class cFastNBTWriter;
|
||||||
class cParsedNBT;
|
class cParsedNBT;
|
||||||
|
|
||||||
@ -138,10 +138,10 @@ public:
|
|||||||
bool operator !=(const cEnchantments & a_Other) const;
|
bool operator !=(const cEnchantments & a_Other) const;
|
||||||
|
|
||||||
/** Writes the enchantments into the specified NBT writer; begins with the LIST tag of the specified name ("ench" or "StoredEnchantments") */
|
/** Writes the enchantments into the specified NBT writer; begins with the LIST tag of the specified name ("ench" or "StoredEnchantments") */
|
||||||
friend void EnchantmentSerializer::WriteToNBTCompound(cEnchantments const& a_Enchantments, cFastNBTWriter & a_Writer, const AString & a_ListTagName);
|
friend void EnchantmentSerializer::WriteToNBTCompound(const cEnchantments & a_Enchantments, cFastNBTWriter & a_Writer, const AString & a_ListTagName);
|
||||||
|
|
||||||
/** Reads the enchantments from the specified NBT list tag (ench or StoredEnchantments) */
|
/** Reads the enchantments from the specified NBT list tag (ench or StoredEnchantments) */
|
||||||
friend void EnchantmentSerializer::ParseFromNBT(cEnchantments& a_Enchantments, const cParsedNBT & a_NBT, int a_EnchListTagIdx);
|
friend void EnchantmentSerializer::ParseFromNBT(cEnchantments & a_Enchantments, const cParsedNBT & a_NBT, int a_EnchListTagIdx);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** Maps enchantment ID -> enchantment level */
|
/** Maps enchantment ID -> enchantment level */
|
||||||
|
@ -21,7 +21,7 @@ inline UInt64 HostToNetwork8(const void * a_Value)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
inline UInt32 HostToNetwork4(const void* a_Value)
|
inline UInt32 HostToNetwork4(const void * a_Value)
|
||||||
{
|
{
|
||||||
UInt32 buf;
|
UInt32 buf;
|
||||||
memcpy( &buf, a_Value, sizeof( buf));
|
memcpy( &buf, a_Value, sizeof( buf));
|
||||||
|
@ -1309,7 +1309,8 @@ bool cEntity::DetectPortal()
|
|||||||
|
|
||||||
if (IsPlayer())
|
if (IsPlayer())
|
||||||
{
|
{
|
||||||
((cPlayer *)this)->GetClientHandle()->SendRespawn(dimOverworld); // Send a respawn packet before world is loaded/generated so the client isn't left in limbo
|
// Send a respawn packet before world is loaded / generated so the client isn't left in limbo
|
||||||
|
((cPlayer *)this)->GetClientHandle()->SendRespawn(dimOverworld);
|
||||||
}
|
}
|
||||||
|
|
||||||
return MoveToWorld(cRoot::Get()->CreateAndInitializeWorld(GetWorld()->GetLinkedOverworldName()), false);
|
return MoveToWorld(cRoot::Get()->CreateAndInitializeWorld(GetWorld()->GetLinkedOverworldName()), false);
|
||||||
@ -1688,8 +1689,8 @@ void cEntity::BroadcastMovementUpdate(const cClientHandle * a_Exclude)
|
|||||||
{
|
{
|
||||||
m_World->BroadcastEntityRelMove(*this, (char)DiffX, (char)DiffY, (char)DiffZ, a_Exclude);
|
m_World->BroadcastEntityRelMove(*this, (char)DiffX, (char)DiffY, (char)DiffZ, a_Exclude);
|
||||||
}
|
}
|
||||||
// Clients seem to store two positions, one for the velocity packet and one for the teleport/relmove packet
|
// Clients seem to store two positions, one for the velocity packet and one for the teleport / relmove packet
|
||||||
// The latter is only changed with a relmove/teleport, and m_LastPos stores this position
|
// The latter is only changed with a relmove / teleport, and m_LastPos stores this position
|
||||||
m_LastPos = GetPosition();
|
m_LastPos = GetPosition();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -474,7 +474,7 @@ protected:
|
|||||||
static cCriticalSection m_CSCount;
|
static cCriticalSection m_CSCount;
|
||||||
static UInt32 m_EntityCount;
|
static UInt32 m_EntityCount;
|
||||||
|
|
||||||
/** Measured in meter/second (m/s) */
|
/** Measured in meters / second (m / s) */
|
||||||
Vector3d m_Speed;
|
Vector3d m_Speed;
|
||||||
|
|
||||||
/** The ID of the entity that is guaranteed to be unique within a single run of the server.
|
/** The ID of the entity that is guaranteed to be unique within a single run of the server.
|
||||||
@ -494,7 +494,7 @@ protected:
|
|||||||
/** Stores whether head yaw has been set manually */
|
/** Stores whether head yaw has been set manually */
|
||||||
bool m_bDirtyHead;
|
bool m_bDirtyHead;
|
||||||
|
|
||||||
/** Stores whether our yaw/pitch/roll (body orientation) has been set manually */
|
/** Stores whether our yaw / pitch / roll (body orientation) has been set manually */
|
||||||
bool m_bDirtyOrientation;
|
bool m_bDirtyOrientation;
|
||||||
|
|
||||||
/** Stores whether we have sent a Velocity packet with a speed of zero (no speed) to the client
|
/** Stores whether we have sent a Velocity packet with a speed of zero (no speed) to the client
|
||||||
|
@ -102,11 +102,11 @@ int cEntityEffect::GetPotionEffectDuration(short a_ItemDamage)
|
|||||||
// If potion is level II, half the duration. If not, stays the same
|
// If potion is level II, half the duration. If not, stays the same
|
||||||
TierCoeff = (GetPotionEffectIntensity(a_ItemDamage) > 0) ? 0.5 : 1;
|
TierCoeff = (GetPotionEffectIntensity(a_ItemDamage) > 0) ? 0.5 : 1;
|
||||||
|
|
||||||
// If potion is extended, multiply duration by 8/3. If not, stays the same
|
// If potion is extended, multiply duration by 8 / 3. If not, stays the same
|
||||||
// Extended potion if sixth lowest bit is set
|
// Extended potion if sixth lowest bit is set
|
||||||
ExtCoeff = (a_ItemDamage & 0x40) ? (8.0 / 3.0) : 1;
|
ExtCoeff = (a_ItemDamage & 0x40) ? (8.0 / 3.0) : 1;
|
||||||
|
|
||||||
// If potion is splash potion, multiply duration by 3/4. If not, stays the same
|
// If potion is splash potion, multiply duration by 3 / 4. If not, stays the same
|
||||||
SplashCoeff = IsPotionDrinkable(a_ItemDamage) ? 1 : 0.75;
|
SplashCoeff = IsPotionDrinkable(a_ItemDamage) ? 1 : 0.75;
|
||||||
|
|
||||||
// Ref.:
|
// Ref.:
|
||||||
|
@ -905,7 +905,7 @@ bool cMinecart::TestEntityCollision(NIBBLETYPE a_RailMeta)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Check to which side the minecart is to be pushed.
|
/* Check to which side the minecart is to be pushed.
|
||||||
Let's consider a z-x-coordinate system where the minecart is the center (0/0).
|
Let's consider a z-x-coordinate system where the minecart is the center (0, 0).
|
||||||
The minecart moves along the line x = -z, the perpendicular line to this is x = z.
|
The minecart moves along the line x = -z, the perpendicular line to this is x = z.
|
||||||
In order to decide to which side the minecart is to be pushed, it must be checked on what side of the perpendicular line the pushing entity is located. */
|
In order to decide to which side the minecart is to be pushed, it must be checked on what side of the perpendicular line the pushing entity is located. */
|
||||||
if (
|
if (
|
||||||
@ -954,7 +954,7 @@ bool cMinecart::TestEntityCollision(NIBBLETYPE a_RailMeta)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Check to which side the minecart is to be pushed.
|
/* Check to which side the minecart is to be pushed.
|
||||||
Let's consider a z-x-coordinate system where the minecart is the center (0/0).
|
Let's consider a z-x-coordinate system where the minecart is the center (0, 0).
|
||||||
The minecart moves along the line x = z, the perpendicular line to this is x = -z.
|
The minecart moves along the line x = z, the perpendicular line to this is x = -z.
|
||||||
In order to decide to which side the minecart is to be pushed, it must be checked on what side of the perpendicular line the pushing entity is located. */
|
In order to decide to which side the minecart is to be pushed, it must be checked on what side of the perpendicular line the pushing entity is located. */
|
||||||
if (
|
if (
|
||||||
|
@ -29,7 +29,7 @@ public:
|
|||||||
enum ePayload
|
enum ePayload
|
||||||
{
|
{
|
||||||
mpNone = 0, // Empty minecart, ridable by player or mobs
|
mpNone = 0, // Empty minecart, ridable by player or mobs
|
||||||
mpChest = 1, // Minecart-with-chest, can store a grid of 3*8 items
|
mpChest = 1, // Minecart-with-chest, can store a grid of 3 * 8 items
|
||||||
mpFurnace = 2, // Minecart-with-furnace, can be powered
|
mpFurnace = 2, // Minecart-with-furnace, can be powered
|
||||||
mpTNT = 3, // Minecart-with-TNT, can be blown up with activator rail
|
mpTNT = 3, // Minecart-with-TNT, can be blown up with activator rail
|
||||||
mpHopper = 5, // Minecart-with-hopper, can be hopper
|
mpHopper = 5, // Minecart-with-hopper, can be hopper
|
||||||
@ -54,8 +54,7 @@ protected:
|
|||||||
cMinecart(ePayload a_Payload, double a_X, double a_Y, double a_Z);
|
cMinecart(ePayload a_Payload, double a_X, double a_Y, double a_Z);
|
||||||
|
|
||||||
/** Handles physics on normal rails
|
/** Handles physics on normal rails
|
||||||
For each tick, slow down on flat rails, speed up or slow down on ascending/descending rails (depending on direction), and turn on curved rails
|
For each tick, slow down on flat rails, speed up or slow down on ascending / descending rails (depending on direction), and turn on curved rails. */
|
||||||
*/
|
|
||||||
void HandleRailPhysics(NIBBLETYPE a_RailMeta, std::chrono::milliseconds a_Dt);
|
void HandleRailPhysics(NIBBLETYPE a_RailMeta, std::chrono::milliseconds a_Dt);
|
||||||
|
|
||||||
/** Handles powered rail physics
|
/** Handles powered rail physics
|
||||||
|
@ -355,7 +355,7 @@ float cPlayer::GetXpPercentage()
|
|||||||
int currentLevel_XpBase = XpForLevel(currentLevel);
|
int currentLevel_XpBase = XpForLevel(currentLevel);
|
||||||
|
|
||||||
return static_cast<float>(m_CurrentXp - currentLevel_XpBase) /
|
return static_cast<float>(m_CurrentXp - currentLevel_XpBase) /
|
||||||
static_cast<float>(XpForLevel(1+currentLevel) - currentLevel_XpBase);
|
static_cast<float>(XpForLevel(1 + currentLevel) - currentLevel_XpBase);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -364,7 +364,7 @@ float cPlayer::GetXpPercentage()
|
|||||||
|
|
||||||
bool cPlayer::SetCurrentExperience(int a_CurrentXp)
|
bool cPlayer::SetCurrentExperience(int a_CurrentXp)
|
||||||
{
|
{
|
||||||
if (!(a_CurrentXp >= 0) || (a_CurrentXp > (std::numeric_limits<int>().max() - m_LifetimeTotalXp)))
|
if (!(a_CurrentXp >= 0) || (a_CurrentXp > (std::numeric_limits<int>::max() - m_LifetimeTotalXp)))
|
||||||
{
|
{
|
||||||
LOGWARNING("Tried to update experiece with an invalid Xp value: %d", a_CurrentXp);
|
LOGWARNING("Tried to update experiece with an invalid Xp value: %d", a_CurrentXp);
|
||||||
return false; // oops, they gave us a dodgey number
|
return false; // oops, they gave us a dodgey number
|
||||||
@ -403,7 +403,7 @@ int cPlayer::DeltaExperience(int a_Xp_delta)
|
|||||||
m_LifetimeTotalXp += a_Xp_delta;
|
m_LifetimeTotalXp += a_Xp_delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOGD("Player \"%s\" gained/lost %d experience, total is now: %d", GetName().c_str(), a_Xp_delta, m_CurrentXp);
|
LOGD("Player \"%s\" gained / lost %d experience, total is now: %d", GetName().c_str(), a_Xp_delta, m_CurrentXp);
|
||||||
|
|
||||||
// Set experience to be updated
|
// Set experience to be updated
|
||||||
m_bDirtyExperience = true;
|
m_bDirtyExperience = true;
|
||||||
@ -1771,7 +1771,7 @@ bool cPlayer::LoadFromFile(const AString & a_FileName, cWorldPtr & a_World)
|
|||||||
m_LastBedPos.z = root.get("SpawnZ", a_World->GetSpawnZ()).asInt();
|
m_LastBedPos.z = root.get("SpawnZ", a_World->GetSpawnZ()).asInt();
|
||||||
|
|
||||||
// Load the player stats.
|
// Load the player stats.
|
||||||
// We use the default world name (like bukkit) because stats are shared between dimensions/worlds.
|
// We use the default world name (like bukkit) because stats are shared between dimensions / worlds.
|
||||||
cStatSerializer StatSerializer(cRoot::Get()->GetDefaultWorld()->GetName(), GetName(), &m_Stats);
|
cStatSerializer StatSerializer(cRoot::Get()->GetDefaultWorld()->GetName(), GetName(), &m_Stats);
|
||||||
StatSerializer.Load();
|
StatSerializer.Load();
|
||||||
|
|
||||||
@ -1868,7 +1868,7 @@ bool cPlayer::SaveToDisk()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Save the player stats.
|
// Save the player stats.
|
||||||
// We use the default world name (like bukkit) because stats are shared between dimensions/worlds.
|
// We use the default world name (like bukkit) because stats are shared between dimensions / worlds.
|
||||||
cStatSerializer StatSerializer(cRoot::Get()->GetDefaultWorld()->GetName(), GetName(), &m_Stats);
|
cStatSerializer StatSerializer(cRoot::Get()->GetDefaultWorld()->GetName(), GetName(), &m_Stats);
|
||||||
if (!StatSerializer.Save())
|
if (!StatSerializer.Save())
|
||||||
{
|
{
|
||||||
@ -2076,7 +2076,7 @@ void cPlayer::UpdateMovementStats(const Vector3d & a_DeltaPos)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Value >= 25) // Ignore small/slow movement
|
if (Value >= 25) // Ignore small / slow movement
|
||||||
{
|
{
|
||||||
m_Stats.AddValue(statDistFlown, Value);
|
m_Stats.AddValue(statDistFlown, Value);
|
||||||
}
|
}
|
||||||
|
@ -644,7 +644,7 @@ protected:
|
|||||||
|
|
||||||
virtual void Destroyed(void);
|
virtual void Destroyed(void);
|
||||||
|
|
||||||
/** Filters out damage for creative mode/friendly fire */
|
/** Filters out damage for creative mode / friendly fire */
|
||||||
virtual bool DoTakeDamage(TakeDamageInfo & TDI) override;
|
virtual bool DoTakeDamage(TakeDamageInfo & TDI) override;
|
||||||
|
|
||||||
/** Stops players from burning in creative mode */
|
/** Stops players from burning in creative mode */
|
||||||
|
@ -109,7 +109,7 @@ protected:
|
|||||||
eKind m_ProjectileKind;
|
eKind m_ProjectileKind;
|
||||||
|
|
||||||
/** The structure for containing the entity ID and name who has created this projectile
|
/** The structure for containing the entity ID and name who has created this projectile
|
||||||
The ID and/or name may be nullptr (e.g. for dispensers/mobs). */
|
The ID and / or name may be nullptr (e.g. for dispensers / mobs). */
|
||||||
CreatorData m_CreatorData;
|
CreatorData m_CreatorData;
|
||||||
|
|
||||||
/** True if the projectile has hit the ground and is stuck there */
|
/** True if the projectile has hit the ground and is stuck there */
|
||||||
|
@ -237,7 +237,7 @@ bool cCaveTunnel::RefineDefPoints(const cCaveDefPoints & a_Src, cCaveDefPoints &
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Smoothing: for each line segment, add points on its 1/4 lengths
|
// Smoothing: for each line segment, add points on its 1 / 4 lengths
|
||||||
bool res = false;
|
bool res = false;
|
||||||
size_t Num = a_Src.size() - 2; // this many intermediary points
|
size_t Num = a_Src.size() - 2; // this many intermediary points
|
||||||
a_Dst.clear();
|
a_Dst.clear();
|
||||||
@ -488,7 +488,7 @@ void cCaveTunnel::ProcessChunk(
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Carve out a sphere around the xyz point, m_Radius in diameter; skip 3/7 off the top and bottom:
|
// Carve out a sphere around the xyz point, m_Radius in diameter; skip 3 / 7 off the top and bottom:
|
||||||
int DifX = itr->m_BlockX - BlockStartX; // substitution for faster calc
|
int DifX = itr->m_BlockX - BlockStartX; // substitution for faster calc
|
||||||
int DifY = itr->m_BlockY;
|
int DifY = itr->m_BlockY;
|
||||||
int DifZ = itr->m_BlockZ - BlockStartZ; // substitution for faster calc
|
int DifZ = itr->m_BlockZ - BlockStartZ; // substitution for faster calc
|
||||||
@ -529,7 +529,7 @@ void cCaveTunnel::ProcessChunk(
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
// For debugging purposes, outline the shape of the cave using glowstone, *after* carving the entire cave:
|
// For debugging purposes, outline the shape of the cave using glowstone, after carving the entire cave:
|
||||||
for (cCaveDefPoints::const_iterator itr = m_Points.begin(), end = m_Points.end(); itr != end; ++itr)
|
for (cCaveDefPoints::const_iterator itr = m_Points.begin(), end = m_Points.end(); itr != end; ++itr)
|
||||||
{
|
{
|
||||||
int DifX = itr->m_BlockX - BlockStartX; // substitution for faster calc
|
int DifX = itr->m_BlockX - BlockStartX; // substitution for faster calc
|
||||||
|
@ -209,7 +209,7 @@ void cChunkGenerator::Execute(void)
|
|||||||
{
|
{
|
||||||
if ((NumChunksGenerated > 16) && (clock() - LastReportTick > CLOCKS_PER_SEC))
|
if ((NumChunksGenerated > 16) && (clock() - LastReportTick > CLOCKS_PER_SEC))
|
||||||
{
|
{
|
||||||
LOG("Chunk generator performance: %.2f ch/s (%d ch total)",
|
LOG("Chunk generator performance: %.2f ch / sec (%d ch total)",
|
||||||
(double)NumChunksGenerated * CLOCKS_PER_SEC/ (clock() - GenerationStart),
|
(double)NumChunksGenerated * CLOCKS_PER_SEC/ (clock() - GenerationStart),
|
||||||
NumChunksGenerated
|
NumChunksGenerated
|
||||||
);
|
);
|
||||||
@ -241,7 +241,7 @@ void cChunkGenerator::Execute(void)
|
|||||||
// Display perf info once in a while:
|
// Display perf info once in a while:
|
||||||
if ((NumChunksGenerated > 16) && (clock() - LastReportTick > 2 * CLOCKS_PER_SEC))
|
if ((NumChunksGenerated > 16) && (clock() - LastReportTick > 2 * CLOCKS_PER_SEC))
|
||||||
{
|
{
|
||||||
LOG("Chunk generator performance: %.2f ch/s (%d ch total)",
|
LOG("Chunk generator performance: %.2f ch / sec (%d ch total)",
|
||||||
(double)NumChunksGenerated * CLOCKS_PER_SEC / (clock() - GenerationStart),
|
(double)NumChunksGenerated * CLOCKS_PER_SEC / (clock() - GenerationStart),
|
||||||
NumChunksGenerated
|
NumChunksGenerated
|
||||||
);
|
);
|
||||||
|
@ -195,7 +195,7 @@ void cFinishGenGlowStone::GenFinish(cChunkDesc & a_ChunkDesc)
|
|||||||
// The maximum size for a string of glowstone can get 3 - 5 blocks long
|
// The maximum size for a string of glowstone can get 3 - 5 blocks long
|
||||||
int Size = 3 + m_Noise.IntNoise3DInt(ChunkX, i, ChunkZ) % 3;
|
int Size = 3 + m_Noise.IntNoise3DInt(ChunkX, i, ChunkZ) % 3;
|
||||||
|
|
||||||
// Generate X/Z coordinates.
|
// Generate X / Z coordinates.
|
||||||
int X = Size + (m_Noise.IntNoise2DInt(i, Size) % (cChunkDef::Width - Size * 2));
|
int X = Size + (m_Noise.IntNoise2DInt(i, Size) % (cChunkDef::Width - Size * 2));
|
||||||
int Z = Size + (m_Noise.IntNoise2DInt(X, i) % (cChunkDef::Width - Size * 2));
|
int Z = Size + (m_Noise.IntNoise2DInt(X, i) % (cChunkDef::Width - Size * 2));
|
||||||
|
|
||||||
|
@ -667,7 +667,7 @@ public:
|
|||||||
|
|
||||||
virtual void GenHeightMap(int a_ChunkX, int a_ChunkZ, cChunkDef::HeightMap & a_HeightMap)
|
virtual void GenHeightMap(int a_ChunkX, int a_ChunkZ, cChunkDef::HeightMap & a_HeightMap)
|
||||||
{
|
{
|
||||||
// Generate the biomes for the 3*3 neighbors:
|
// Generate the biomes for the 3 * 3 neighbors:
|
||||||
cChunkDef::BiomeMap neighborBiomes[3][3];
|
cChunkDef::BiomeMap neighborBiomes[3][3];
|
||||||
for (int z = 0; z < 3; z++) for (int x = 0; x < 3; x++)
|
for (int z = 0; z < 3; z++) for (int x = 0; x < 3; x++)
|
||||||
{
|
{
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
The integers generated may be interpreted in several ways:
|
The integers generated may be interpreted in several ways:
|
||||||
- land/see designators
|
- land / sea designators
|
||||||
- 0 = ocean
|
- 0 = ocean
|
||||||
- >0 = land
|
- >0 = land
|
||||||
- biome group
|
- biome group
|
||||||
@ -310,7 +310,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy from Cache into a_Values; take into account the even/odd offsets in a_Min:
|
// Copy from Cache into a_Values; take into account the even / odd offsets in a_Min:
|
||||||
for (int z = 0; z < SizeZ; ++z)
|
for (int z = 0; z < SizeZ; ++z)
|
||||||
{
|
{
|
||||||
memcpy(a_Values + z * SizeX, cache + (z + (a_MinZ & 1)) * lowStepX + (a_MinX & 1), SizeX * sizeof(int));
|
memcpy(a_Values + z * SizeX, cache + (z + (a_MinZ & 1)) * lowStepX + (a_MinX & 1), SizeX * sizeof(int));
|
||||||
|
@ -680,7 +680,7 @@ void cBiomalNoise3DComposable::GenerateNoiseArrayIfNeeded(int a_ChunkX, int a_Ch
|
|||||||
|
|
||||||
void cBiomalNoise3DComposable::CalcBiomeParamArrays(int a_ChunkX, int a_ChunkZ, ChunkParam & a_HeightAmp, ChunkParam & a_MidPoint)
|
void cBiomalNoise3DComposable::CalcBiomeParamArrays(int a_ChunkX, int a_ChunkZ, ChunkParam & a_HeightAmp, ChunkParam & a_MidPoint)
|
||||||
{
|
{
|
||||||
// Generate the 3*3 chunks of biomes around this chunk:
|
// Generate the 3 * 3 chunks of biomes around this chunk:
|
||||||
cChunkDef::BiomeMap neighborBiomes[3 * 3];
|
cChunkDef::BiomeMap neighborBiomes[3 * 3];
|
||||||
for (int z = 0; z < 3; z++)
|
for (int z = 0; z < 3; z++)
|
||||||
{
|
{
|
||||||
|
@ -229,7 +229,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy from Cache into a_Values; take into account the even/odd offsets in a_Min:
|
// Copy from Cache into a_Values; take into account the even / odd offsets in a_Min:
|
||||||
for (int z = 0; z < a_SizeZ; ++z)
|
for (int z = 0; z < a_SizeZ; ++z)
|
||||||
{
|
{
|
||||||
memcpy(a_Values + z * a_SizeX, cache + (z + (a_MinZ & 1)) * lowStepX + (a_MinX & 1), a_SizeX * sizeof(int));
|
memcpy(a_Values + z * a_SizeX, cache + (z + (a_MinZ & 1)) * lowStepX + (a_MinX & 1), a_SizeX * sizeof(int));
|
||||||
|
@ -61,7 +61,7 @@ protected:
|
|||||||
/** The noise used as a pseudo-random generator */
|
/** The noise used as a pseudo-random generator */
|
||||||
cNoise m_Noise;
|
cNoise m_Noise;
|
||||||
|
|
||||||
/** Maximum size, in X/Z blocks, of the village (radius from the origin) */
|
/** Maximum size, in X / Z blocks, of the village (radius from the origin) */
|
||||||
int m_MaxSize;
|
int m_MaxSize;
|
||||||
|
|
||||||
/** Borders of the vilalge - no item may reach out of this cuboid. */
|
/** Borders of the vilalge - no item may reach out of this cuboid. */
|
||||||
|
@ -34,7 +34,7 @@ protected:
|
|||||||
/** Maximum depth of the generator tree*/
|
/** Maximum depth of the generator tree*/
|
||||||
int m_MaxDepth;
|
int m_MaxDepth;
|
||||||
|
|
||||||
/** Maximum size, in X/Z blocks, of the base (radius from the origin) */
|
/** Maximum size, in X / Z blocks, of the structure (radius from the origin) */
|
||||||
int m_MaxSize;
|
int m_MaxSize;
|
||||||
|
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ cStructGenRavines::cRavine::cRavine(int a_GridX, int a_GridZ, int a_OriginX, int
|
|||||||
|
|
||||||
void cStructGenRavines::cRavine::GenerateBaseDefPoints(int a_BlockX, int a_BlockZ, int a_Size, cNoise & a_Noise)
|
void cStructGenRavines::cRavine::GenerateBaseDefPoints(int a_BlockX, int a_BlockZ, int a_Size, cNoise & a_Noise)
|
||||||
{
|
{
|
||||||
// Modify the size slightly to have different-sized ravines (1/2 to 1/1 of a_Size):
|
// Modify the size slightly to have different-sized ravines (1 / 2 to 1 / 1 of a_Size):
|
||||||
a_Size = (512 + ((a_Noise.IntNoise3DInt(19 * a_BlockX, 11 * a_BlockZ, a_BlockX + a_BlockZ) / 17) % 512)) * a_Size / 1024;
|
a_Size = (512 + ((a_Noise.IntNoise3DInt(19 * a_BlockX, 11 * a_BlockZ, a_BlockX + a_BlockZ) / 17) % 512)) * a_Size / 1024;
|
||||||
|
|
||||||
// The complete offset of the ravine from its cellpoint, up to 2 * a_Size in each direction
|
// The complete offset of the ravine from its cellpoint, up to 2 * a_Size in each direction
|
||||||
@ -177,7 +177,7 @@ void cStructGenRavines::cRavine::RefineDefPoints(const cRavDefPoints & a_Src, cR
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Smoothing: for each line segment, add points on its 1/4 lengths
|
// Smoothing: for each line segment, add points on its 1 / 4 lengths
|
||||||
size_t Num = a_Src.size() - 2; // this many intermediary points
|
size_t Num = a_Src.size() - 2; // this many intermediary points
|
||||||
a_Dst.clear();
|
a_Dst.clear();
|
||||||
a_Dst.reserve(Num * 2 + 2);
|
a_Dst.reserve(Num * 2 + 2);
|
||||||
|
@ -311,7 +311,7 @@ void cStructGenOreNests::GenerateOre(int a_ChunkX, int a_ChunkZ, BLOCKTYPE a_Ore
|
|||||||
rnd /= cChunkDef::Width;
|
rnd /= cChunkDef::Width;
|
||||||
int BaseY = rnd % a_MaxHeight;
|
int BaseY = rnd % a_MaxHeight;
|
||||||
rnd /= a_MaxHeight;
|
rnd /= a_MaxHeight;
|
||||||
int NestSize = a_NestSize + (rnd % (a_NestSize / 4)); // The actual nest size may be up to 1/4 larger
|
int NestSize = a_NestSize + (rnd % (a_NestSize / 4)); // The actual nest size may be up to 1 / 4 larger
|
||||||
int Num = 0;
|
int Num = 0;
|
||||||
while (Num < NestSize)
|
while (Num < NestSize)
|
||||||
{
|
{
|
||||||
|
@ -61,7 +61,7 @@ protected:
|
|||||||
/** The noise used as a pseudo-random generator */
|
/** The noise used as a pseudo-random generator */
|
||||||
cNoise m_Noise;
|
cNoise m_Noise;
|
||||||
|
|
||||||
/** Maximum size, in X/Z blocks, of the structure (radius from the origin) */
|
/** Maximum size, in X / Z blocks, of the structure (radius from the origin) */
|
||||||
int m_MaxSize;
|
int m_MaxSize;
|
||||||
|
|
||||||
/** Borders of the structure - no item may reach out of this cuboid. */
|
/** Borders of the structure - no item may reach out of this cuboid. */
|
||||||
|
@ -31,10 +31,10 @@ protected:
|
|||||||
/** The noise used for generating random numbers */
|
/** The noise used for generating random numbers */
|
||||||
cNoise m_Noise;
|
cNoise m_Noise;
|
||||||
|
|
||||||
/** Maximum depth of the generator tree*/
|
/** Maximum depth of the generator tree */
|
||||||
int m_MaxDepth;
|
int m_MaxDepth;
|
||||||
|
|
||||||
/** Maximum size, in X/Z blocks, of the base (radius from the origin) */
|
/** Maximum size, in X / Z blocks, of the structure (radius from the origin) */
|
||||||
int m_MaxSize;
|
int m_MaxSize;
|
||||||
|
|
||||||
|
|
||||||
|
@ -499,7 +499,7 @@ void GetBirchTreeImage(int a_BlockX, int a_BlockY, int a_BlockZ, cNoise & a_Nois
|
|||||||
PushCornerBlocks(a_BlockX, h, a_BlockZ, a_Seq, a_Noise, 0x5fffffff, a_OtherBlocks, 1, E_BLOCK_LEAVES, E_META_LEAVES_BIRCH);
|
PushCornerBlocks(a_BlockX, h, a_BlockZ, a_Seq, a_Noise, 0x5fffffff, a_OtherBlocks, 1, E_BLOCK_LEAVES, E_META_LEAVES_BIRCH);
|
||||||
h--;
|
h--;
|
||||||
|
|
||||||
// Third and fourth layers - BigO2 and maybe 2*Corners:
|
// Third and fourth layers - BigO2 and maybe 2 * Corners:
|
||||||
for (int Row = 0; Row < 2; Row++)
|
for (int Row = 0; Row < 2; Row++)
|
||||||
{
|
{
|
||||||
PushCoordBlocks (a_BlockX, h, a_BlockZ, a_OtherBlocks, BigO2, ARRAYCOUNT(BigO2), E_BLOCK_LEAVES, E_META_LEAVES_BIRCH);
|
PushCoordBlocks (a_BlockX, h, a_BlockZ, a_OtherBlocks, BigO2, ARRAYCOUNT(BigO2), E_BLOCK_LEAVES, E_META_LEAVES_BIRCH);
|
||||||
@ -673,7 +673,7 @@ void GetTallBirchTreeImage(int a_BlockX, int a_BlockY, int a_BlockZ, cNoise & a_
|
|||||||
PushCornerBlocks(a_BlockX, h, a_BlockZ, a_Seq, a_Noise, 0x5fffffff, a_OtherBlocks, 1, E_BLOCK_LEAVES, E_META_LEAVES_BIRCH);
|
PushCornerBlocks(a_BlockX, h, a_BlockZ, a_Seq, a_Noise, 0x5fffffff, a_OtherBlocks, 1, E_BLOCK_LEAVES, E_META_LEAVES_BIRCH);
|
||||||
h--;
|
h--;
|
||||||
|
|
||||||
// Third and fourth layers - BigO2 and maybe 2*Corners:
|
// Third and fourth layers - BigO2 and maybe 2 * Corners:
|
||||||
for (int Row = 0; Row < 2; Row++)
|
for (int Row = 0; Row < 2; Row++)
|
||||||
{
|
{
|
||||||
PushCoordBlocks (a_BlockX, h, a_BlockZ, a_OtherBlocks, BigO2, ARRAYCOUNT(BigO2), E_BLOCK_LEAVES, E_META_LEAVES_BIRCH);
|
PushCoordBlocks (a_BlockX, h, a_BlockZ, a_OtherBlocks, BigO2, ARRAYCOUNT(BigO2), E_BLOCK_LEAVES, E_META_LEAVES_BIRCH);
|
||||||
|
@ -61,7 +61,7 @@ protected:
|
|||||||
/** The noise used as a pseudo-random generator */
|
/** The noise used as a pseudo-random generator */
|
||||||
cNoise m_Noise;
|
cNoise m_Noise;
|
||||||
|
|
||||||
/** Maximum size, in X/Z blocks, of the village (radius from the origin) */
|
/** Maximum size, in X / Z blocks, of the base (radius from the origin) */
|
||||||
int m_MaxSize;
|
int m_MaxSize;
|
||||||
|
|
||||||
/** Borders of the vilalge - no item may reach out of this cuboid. */
|
/** Borders of the vilalge - no item may reach out of this cuboid. */
|
||||||
|
@ -34,7 +34,7 @@ protected:
|
|||||||
/** Maximum depth of the generator tree*/
|
/** Maximum depth of the generator tree*/
|
||||||
int m_MaxDepth;
|
int m_MaxDepth;
|
||||||
|
|
||||||
/** Maximum size, in X/Z blocks, of the base (radius from the origin) */
|
/** Maximum size, in X / Z blocks, of the structure (radius from the origin) */
|
||||||
int m_MaxSize;
|
int m_MaxSize;
|
||||||
|
|
||||||
/** The underlying biome generator that defines whether the base is created or not */
|
/** The underlying biome generator that defines whether the base is created or not */
|
||||||
|
@ -162,7 +162,7 @@ protected:
|
|||||||
/** The noise used as a pseudo-random generator */
|
/** The noise used as a pseudo-random generator */
|
||||||
cNoise m_Noise;
|
cNoise m_Noise;
|
||||||
|
|
||||||
/** Maximum size, in X/Z blocks, of the village (radius from the origin) */
|
/** Maximum size, in X / Z blocks, of the village (radius from the origin) */
|
||||||
int m_MaxSize;
|
int m_MaxSize;
|
||||||
|
|
||||||
/** The density for this village. Used to refrain from populating all house connectors. Range [0, 100] */
|
/** The density for this village. Used to refrain from populating all house connectors. Range [0, 100] */
|
||||||
|
@ -32,7 +32,7 @@ protected:
|
|||||||
/** Maximum depth of the generator tree*/
|
/** Maximum depth of the generator tree*/
|
||||||
int m_MaxDepth;
|
int m_MaxDepth;
|
||||||
|
|
||||||
/** Maximum size, in X/Z blocks, of the village (radius from the origin) */
|
/** Maximum size, in X / Z blocks, of the village (radius from the origin) */
|
||||||
int m_MaxSize;
|
int m_MaxSize;
|
||||||
|
|
||||||
/** Minimum density - percentage of allowed house connections. Range [0, 100] */
|
/** Minimum density - percentage of allowed house connections. Range [0, 100] */
|
||||||
|
@ -18,9 +18,9 @@
|
|||||||
|
|
||||||
// Useful warnings from warning level 4:
|
// Useful warnings from warning level 4:
|
||||||
#pragma warning(3 : 4189) // Local variable is initialized but not referenced
|
#pragma warning(3 : 4189) // Local variable is initialized but not referenced
|
||||||
#pragma warning(3 : 4245) // Conversion from 'type1' to 'type2', signed/unsigned mismatch
|
#pragma warning(3 : 4245) // Conversion from 'type1' to 'type2', signed / unsigned mismatch
|
||||||
#pragma warning(3 : 4310) // Cast truncates constant value
|
#pragma warning(3 : 4310) // Cast truncates constant value
|
||||||
#pragma warning(3 : 4389) // Signed/unsigned mismatch
|
#pragma warning(3 : 4389) // Signed / unsigned mismatch
|
||||||
#pragma warning(3 : 4505) // Unreferenced local function has been removed
|
#pragma warning(3 : 4505) // Unreferenced local function has been removed
|
||||||
#pragma warning(3 : 4701) // Potentially unitialized local variable used
|
#pragma warning(3 : 4701) // Potentially unitialized local variable used
|
||||||
#pragma warning(3 : 4702) // Unreachable code
|
#pragma warning(3 : 4702) // Unreachable code
|
||||||
|
@ -61,7 +61,7 @@ public:
|
|||||||
AString m_LastValue;
|
AString m_LastValue;
|
||||||
|
|
||||||
|
|
||||||
/** Notifies the callback of the key/value stored in m_LastKey/m_LastValue, then erases them */
|
/** Notifies the callback of the key / value stored in m_LastKey / m_LastValue, then erases them */
|
||||||
void NotifyLast(void);
|
void NotifyLast(void);
|
||||||
|
|
||||||
/** Parses one line of header data. Returns true if successful */
|
/** Parses one line of header data. Returns true if successful */
|
||||||
|
@ -202,7 +202,7 @@ size_t cHTTPRequest::ParseRequestLine(const char * a_Data, size_t a_Size)
|
|||||||
m_IsValid = false;
|
m_IsValid = false;
|
||||||
return AString::npos;
|
return AString::npos;
|
||||||
}
|
}
|
||||||
// Check that there's HTTP/version at the end
|
// Check that there's HTTP / version at the end
|
||||||
if (strncmp(m_IncomingHeaderData.c_str() + URLEnd + 1, "HTTP/1.", 7) != 0)
|
if (strncmp(m_IncomingHeaderData.c_str() + URLEnd + 1, "HTTP/1.", 7) != 0)
|
||||||
{
|
{
|
||||||
m_IsValid = false;
|
m_IsValid = false;
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
// IniFile.cpp: Implementation of the CIniFile class.
|
// IniFile.cpp: Implementation of the CIniFile class.
|
||||||
// Written by: Adam Clauss
|
// Written by: Adam Clauss
|
||||||
// Email: cabadam@houston.rr.com
|
// Email: cabadam@houston.rr.com
|
||||||
// You may use this class/code as you wish in your programs. Feel free to distribute it, and
|
// You may use this class / code as you wish in your programs. Feel free to distribute it, and
|
||||||
// email suggested changes to me.
|
// email suggested changes to me.
|
||||||
//
|
//
|
||||||
// Rewritten by: Shane Hill
|
// Rewritten by: Shane Hill
|
||||||
// Date: 21/08/2001
|
// Date: 2001-08-21
|
||||||
// Email: Shane.Hill@dsto.defence.gov.au
|
// Email: Shane.Hill@dsto.defence.gov.au
|
||||||
// Reason: Remove dependancy on MFC. Code should compile on any
|
// Reason: Remove dependancy on MFC. Code should compile on any
|
||||||
// platform.
|
// platform.
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
// IniFile.cpp: Implementation of the CIniFile class.
|
// IniFile.cpp: Implementation of the CIniFile class.
|
||||||
// Written by: Adam Clauss
|
// Written by: Adam Clauss
|
||||||
// Email: cabadam@tamu.edu
|
// Email: cabadam@tamu.edu
|
||||||
// You may use this class/code as you wish in your programs. Feel free to distribute it, and
|
// You may use this class / code as you wish in your programs. Feel free to distribute it, and
|
||||||
// email suggested changes to me.
|
// email suggested changes to me.
|
||||||
//
|
//
|
||||||
// Rewritten by: Shane Hill
|
// Rewritten by: Shane Hill
|
||||||
// Date: 21/08/2001
|
// Date: 2001-08-21
|
||||||
// Email: Shane.Hill@dsto.defence.gov.au
|
// Email: Shane.Hill@dsto.defence.gov.au
|
||||||
// Reason: Remove dependancy on MFC. Code should compile on any
|
// Reason: Remove dependancy on MFC. Code should compile on any
|
||||||
// platform. Tested on Windows/Linux/Irix
|
// platform. Tested on Windows / Linux / Irix
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -108,7 +108,7 @@ public:
|
|||||||
|
|
||||||
// Gets value of [keyname] valuename =.
|
// Gets value of [keyname] valuename =.
|
||||||
// Overloaded to return string, int, and double.
|
// Overloaded to return string, int, and double.
|
||||||
// Returns defValue if key/value not found.
|
// Returns defValue if key / value not found.
|
||||||
AString GetValue (const AString & keyname, const AString & valuename, const AString & defValue = "") const;
|
AString GetValue (const AString & keyname, const AString & valuename, const AString & defValue = "") const;
|
||||||
AString GetValue (const int keyID, const int valueID, const AString & defValue = "") const;
|
AString GetValue (const int keyID, const int valueID, const AString & defValue = "") const;
|
||||||
double GetValueF(const AString & keyname, const AString & valuename, const double defValue = 0) const;
|
double GetValueF(const AString & keyname, const AString & valuename, const double defValue = 0) const;
|
||||||
@ -217,7 +217,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** Reads the list of ports from the INI file, possibly upgrading from IPv4/IPv6-specific values into new version-agnostic value.
|
/** Reads the list of ports from the INI file, possibly upgrading from IPv4 / IPv6-specific values into new version-agnostic value.
|
||||||
Reads the list of ports from a_PortsValueName. If that value doesn't exist or is empty, the list is combined from values
|
Reads the list of ports from a_PortsValueName. If that value doesn't exist or is empty, the list is combined from values
|
||||||
in a_OldIPv4ValueName and a_OldIPv6ValueName; in this case the old values are removed from the INI file.
|
in a_OldIPv4ValueName and a_OldIPv6ValueName; in this case the old values are removed from the INI file.
|
||||||
If there is none of the three values or they are all empty, the default is used and stored in the Ports value. */
|
If there is none of the three values or they are all empty, the default is used and stored in the Ports value. */
|
||||||
|
@ -499,7 +499,7 @@ int cInventory::ArmorSlotNumToEntityEquipmentID(short a_ArmorSlotNum)
|
|||||||
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
bool cInventory::AddToBar( cItem & a_Item, const int a_Offset, const int a_Size, bool* a_bChangedSlots, int a_Mode /* = 0 */)
|
bool cInventory::AddToBar(cItem & a_Item, const int a_Offset, const int a_Size, bool * a_bChangedSlots, int a_Mode /* = 0 */)
|
||||||
{
|
{
|
||||||
// Fill already present stacks
|
// Fill already present stacks
|
||||||
if (a_Mode < 2)
|
if (a_Mode < 2)
|
||||||
|
@ -171,7 +171,7 @@ public:
|
|||||||
bool LoadFromJson(Json::Value & a_Value);
|
bool LoadFromJson(Json::Value & a_Value);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool AddToBar( cItem & a_Item, const int a_Offset, const int a_Size, bool* a_bChangedSlots, int a_Mode = 0);
|
bool AddToBar(cItem & a_Item, const int a_Offset, const int a_Size, bool * a_bChangedSlots, int a_Mode = 0);
|
||||||
|
|
||||||
cItemGrid m_ArmorSlots;
|
cItemGrid m_ArmorSlots;
|
||||||
cItemGrid m_InventorySlots;
|
cItemGrid m_InventorySlots;
|
||||||
|
@ -78,7 +78,7 @@ public:
|
|||||||
!BlockHandler(PlaceBlock)->DoesIgnoreBuildCollision(&a_Player, PlaceMeta)
|
!BlockHandler(PlaceBlock)->DoesIgnoreBuildCollision(&a_Player, PlaceMeta)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Tried to place a block *into* another?
|
// Tried to place a block into another?
|
||||||
// Happens when you place a block aiming at side of block with a torch on it or stem beside it
|
// Happens when you place a block aiming at side of block with a torch on it or stem beside it
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -362,7 +362,7 @@ bool cItemHandler::OnPlayerPlace(
|
|||||||
!BlockHandler(PlaceBlock)->DoesIgnoreBuildCollision(&a_Player, PlaceMeta)
|
!BlockHandler(PlaceBlock)->DoesIgnoreBuildCollision(&a_Player, PlaceMeta)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Tried to place a block *into* another?
|
// Tried to place a block into another?
|
||||||
// Happens when you place a block aiming at side of block with a torch on it or stem beside it
|
// Happens when you place a block aiming at side of block with a torch on it or stem beside it
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ public:
|
|||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
// Light a fire next to/on top of the block if air:
|
// Light a fire next to / on top of the block if air:
|
||||||
AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_BlockFace);
|
AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_BlockFace);
|
||||||
if ((a_BlockY < 0) || (a_BlockY >= cChunkDef::Height))
|
if ((a_BlockY < 0) || (a_BlockY >= cChunkDef::Height))
|
||||||
{
|
{
|
||||||
|
@ -71,7 +71,7 @@ public:
|
|||||||
cBlockInfo::FullyOccupiesVoxel(a_CBBlockType)
|
cBlockInfo::FullyOccupiesVoxel(a_CBBlockType)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Can't place lilypad on air/in another block!
|
// Can't place lilypad on air / in another block!
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
m_HasHitFluid = true;
|
m_HasHitFluid = true;
|
||||||
|
@ -46,10 +46,10 @@ private:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern void LOG(const char* a_Format, ...) FORMATSTRING(1, 2);
|
extern void LOG (const char * a_Format, ...) FORMATSTRING(1, 2);
|
||||||
extern void LOGINFO(const char* a_Format, ...) FORMATSTRING(1, 2);
|
extern void LOGINFO (const char * a_Format, ...) FORMATSTRING(1, 2);
|
||||||
extern void LOGWARN(const char* a_Format, ...) FORMATSTRING(1, 2);
|
extern void LOGWARN (const char * a_Format, ...) FORMATSTRING(1, 2);
|
||||||
extern void LOGERROR(const char* a_Format, ...) FORMATSTRING(1, 2);
|
extern void LOGERROR(const char * a_Format, ...) FORMATSTRING(1, 2);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -591,7 +591,7 @@ void cMap::SendTo(cClientHandle & a_Client)
|
|||||||
|
|
||||||
for (unsigned int i = 0; i < m_Width; ++i)
|
for (unsigned int i = 0; i < m_Width; ++i)
|
||||||
{
|
{
|
||||||
const Byte* Colors = &m_Data[i * m_Height];
|
const Byte * Colors = &m_Data[i * m_Height];
|
||||||
|
|
||||||
a_Client.SendMapColumn(m_ID, i, 0, Colors, m_Height, m_Scale);
|
a_Client.SendMapColumn(m_ID, i, 0, Colors, m_Height, m_Scale);
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ public:
|
|||||||
/** Update a circular region around the specified player. */
|
/** Update a circular region around the specified player. */
|
||||||
void UpdateRadius(cPlayer & a_Player, unsigned int a_Radius);
|
void UpdateRadius(cPlayer & a_Player, unsigned int a_Radius);
|
||||||
|
|
||||||
/** Send next update packet to the specified player and remove invalid decorators/clients. */
|
/** Send next update packet to the specified player and remove invalid decorators / clients. */
|
||||||
void UpdateClient(cPlayer * a_Player);
|
void UpdateClient(cPlayer * a_Player);
|
||||||
|
|
||||||
// tolua_begin
|
// tolua_begin
|
||||||
|
@ -19,8 +19,8 @@ void cMobCensus::CollectMob(cMonster & a_Monster, cChunk & a_Chunk, double a_Dis
|
|||||||
|
|
||||||
bool cMobCensus::IsCapped(cMonster::eFamily a_MobFamily)
|
bool cMobCensus::IsCapped(cMonster::eFamily a_MobFamily)
|
||||||
{
|
{
|
||||||
const int ratio = 319; // This should be 256 as we are only supposed to take account from chunks that are in 17x17 from a player
|
const int ratio = 319; // This should be 256 as we are only supposed to take account from chunks that are in 17 x 17 from a player
|
||||||
// but for now, we use all chunks loaded by players. that means 19 x 19 chunks. That's why we use 256 * (19*19) / (17*17) = 319
|
// but for now, we use all chunks loaded by players. that means 19 x 19 chunks. That's why we use 256 * (19 * 19) / (17 * 17) = 319
|
||||||
// MG TODO : code the correct count
|
// MG TODO : code the correct count
|
||||||
if ((GetCapMultiplier(a_MobFamily) * GetNumChunks()) / ratio >= m_MobFamilyCollecter.GetNumberOfCollectedMobs(a_MobFamily))
|
if ((GetCapMultiplier(a_MobFamily) * GetNumChunks()) / ratio >= m_MobFamilyCollecter.GetNumberOfCollectedMobs(a_MobFamily))
|
||||||
{
|
{
|
||||||
|
@ -32,8 +32,8 @@ public:
|
|||||||
// MG TODO : code the correct rule (not loaded chunk but short distant from players)
|
// MG TODO : code the correct rule (not loaded chunk but short distant from players)
|
||||||
void CollectSpawnableChunk(cChunk & a_Chunk);
|
void CollectSpawnableChunk(cChunk & a_Chunk);
|
||||||
|
|
||||||
/// Collect a mob - it's distance to player, it's family ...
|
/// Collect a mob - its distance to player, its family ...
|
||||||
void CollectMob(cMonster& a_Monster, cChunk& a_Chunk, double a_Distance);
|
void CollectMob(cMonster & a_Monster, cChunk & a_Chunk, double a_Distance);
|
||||||
|
|
||||||
/// Returns true if the family is capped (i.e. there are more mobs of this family than max)
|
/// Returns true if the family is capped (i.e. there are more mobs of this family than max)
|
||||||
bool IsCapped(cMonster::eFamily a_MobFamily);
|
bool IsCapped(cMonster::eFamily a_MobFamily);
|
||||||
|
@ -6,7 +6,11 @@
|
|||||||
#include "Entities/Entity.h"
|
#include "Entities/Entity.h"
|
||||||
#include "Chunk.h"
|
#include "Chunk.h"
|
||||||
|
|
||||||
void cMobProximityCounter::CollectMob(cEntity& a_Monster, cChunk& a_Chunk, double a_Distance)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void cMobProximityCounter::CollectMob(cEntity & a_Monster, cChunk & a_Chunk, double a_Distance)
|
||||||
{
|
{
|
||||||
// LOGD("Collecting monster %s, with distance %f", a_Monster->GetClass(), a_Distance);
|
// LOGD("Collecting monster %s, with distance %f", a_Monster->GetClass(), a_Distance);
|
||||||
tMonsterToDistance::iterator it = m_MonsterToDistance.find(&a_Monster);
|
tMonsterToDistance::iterator it = m_MonsterToDistance.find(&a_Monster);
|
||||||
|
@ -16,19 +16,19 @@ protected :
|
|||||||
// structs used for later maps (see m_MonsterToDistance and m_DistanceToMonster)
|
// structs used for later maps (see m_MonsterToDistance and m_DistanceToMonster)
|
||||||
struct sDistanceAndChunk
|
struct sDistanceAndChunk
|
||||||
{
|
{
|
||||||
sDistanceAndChunk(double a_Distance, cChunk& a_Chunk) : m_Distance(a_Distance), m_Chunk(&a_Chunk) {}
|
sDistanceAndChunk(double a_Distance, cChunk & a_Chunk) : m_Distance(a_Distance), m_Chunk(&a_Chunk) {}
|
||||||
double m_Distance;
|
double m_Distance;
|
||||||
cChunk* m_Chunk;
|
cChunk * m_Chunk;
|
||||||
};
|
};
|
||||||
struct sMonsterAndChunk
|
struct sMonsterAndChunk
|
||||||
{
|
{
|
||||||
sMonsterAndChunk(cEntity& a_Monster, cChunk& a_Chunk) : m_Monster(a_Monster), m_Chunk(a_Chunk) {}
|
sMonsterAndChunk(cEntity & a_Monster, cChunk & a_Chunk) : m_Monster(a_Monster), m_Chunk(a_Chunk) {}
|
||||||
cEntity& m_Monster;
|
cEntity & m_Monster;
|
||||||
cChunk& m_Chunk;
|
cChunk & m_Chunk;
|
||||||
};
|
};
|
||||||
|
|
||||||
public :
|
public :
|
||||||
typedef std::map<cEntity*, sDistanceAndChunk> tMonsterToDistance;
|
typedef std::map<cEntity *, sDistanceAndChunk> tMonsterToDistance;
|
||||||
typedef std::multimap<double, sMonsterAndChunk> tDistanceToMonster;
|
typedef std::multimap<double, sMonsterAndChunk> tDistanceToMonster;
|
||||||
|
|
||||||
protected :
|
protected :
|
||||||
@ -50,7 +50,7 @@ public :
|
|||||||
// count a mob on a specified chunk with specified distance to an unkown player
|
// count a mob on a specified chunk with specified distance to an unkown player
|
||||||
// if the distance is shortest than the one collected, this become the new closest
|
// if the distance is shortest than the one collected, this become the new closest
|
||||||
// distance and the chunk become the "hosting" chunk (that is the one that will perform the action)
|
// distance and the chunk become the "hosting" chunk (that is the one that will perform the action)
|
||||||
void CollectMob(cEntity& a_Monster, cChunk& a_Chunk, double a_Distance);
|
void CollectMob(cEntity & a_Monster, cChunk & a_Chunk, double a_Distance);
|
||||||
|
|
||||||
// return the mobs that are within the range of distance of the closest player they are
|
// return the mobs that are within the range of distance of the closest player they are
|
||||||
// that means that if a mob is 30 m from a player and 150 m from another one. It will be
|
// that means that if a mob is 30 m from a player and 150 m from another one. It will be
|
||||||
|
@ -321,9 +321,9 @@ bool cMobSpawner::CanSpawnHere(cChunk * a_Chunk, int a_RelX, int a_RelY, int a_R
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
cMonster* cMobSpawner::TryToSpawnHere(cChunk * a_Chunk, int a_RelX, int a_RelY, int a_RelZ, EMCSBiome a_Biome, int& a_MaxPackSize)
|
cMonster * cMobSpawner::TryToSpawnHere(cChunk * a_Chunk, int a_RelX, int a_RelY, int a_RelZ, EMCSBiome a_Biome, int & a_MaxPackSize)
|
||||||
{
|
{
|
||||||
cMonster* toReturn = nullptr;
|
cMonster * toReturn = nullptr;
|
||||||
if (m_NewPack)
|
if (m_NewPack)
|
||||||
{
|
{
|
||||||
m_MobType = ChooseMobType(a_Biome);
|
m_MobType = ChooseMobType(a_Biome);
|
||||||
|
@ -39,7 +39,7 @@ public :
|
|||||||
// if this is the first of a Pack : determine the type of monster
|
// if this is the first of a Pack : determine the type of monster
|
||||||
// BlockType & BlockMeta are used to decide what kind of Mob can Spawn here
|
// BlockType & BlockMeta are used to decide what kind of Mob can Spawn here
|
||||||
// MaxPackSize is set to the maximal size for a pack this type of mob
|
// MaxPackSize is set to the maximal size for a pack this type of mob
|
||||||
cMonster * TryToSpawnHere(cChunk * a_Chunk, int A_RelX, int a_RelY, int a_RelZ, EMCSBiome a_Biome, int& a_MaxPackSize);
|
cMonster * TryToSpawnHere(cChunk * a_Chunk, int A_RelX, int a_RelY, int a_RelZ, EMCSBiome a_Biome, int & a_MaxPackSize);
|
||||||
|
|
||||||
// mark the beginning of a new Pack
|
// mark the beginning of a new Pack
|
||||||
// all mobs of the same Pack are the same type
|
// all mobs of the same Pack are the same type
|
||||||
|
@ -224,7 +224,7 @@ protected:
|
|||||||
Calls ResetPathFinding and sets m_IsFollowingPath to false */
|
Calls ResetPathFinding and sets m_IsFollowingPath to false */
|
||||||
void StopMovingToPosition();
|
void StopMovingToPosition();
|
||||||
|
|
||||||
/** Sets the body yaw and head yaw/pitch based on next/ultimate destinations */
|
/** Sets the body yaw and head yaw / pitch based on next / ultimate destinations */
|
||||||
void SetPitchAndYawFromDestination(void);
|
void SetPitchAndYawFromDestination(void);
|
||||||
|
|
||||||
virtual void HandleFalling(void);
|
virtual void HandleFalling(void);
|
||||||
|
@ -12,7 +12,7 @@ Put this in your .cpp:
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef COMPILING_PATHFIND_DEBUGGER
|
#ifdef COMPILING_PATHFIND_DEBUGGER
|
||||||
/* Note: the COMPILING_PATHFIND_DEBUGGER flag is used by Native/WiseOldMan95 to debug
|
/* Note: the COMPILING_PATHFIND_DEBUGGER flag is used by Native / WiseOldMan95 to debug
|
||||||
this class outside of MCServer. This preprocessor flag is never set when compiling MCServer. */
|
this class outside of MCServer. This preprocessor flag is never set when compiling MCServer. */
|
||||||
#include "PathFinderIrrlicht_Head.h"
|
#include "PathFinderIrrlicht_Head.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -23,7 +23,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
struct sAttributesStruct;
|
struct sAttributesStruct;
|
||||||
struct sMonsterConfigState;
|
struct sMonsterConfigState;
|
||||||
sMonsterConfigState* m_pState;
|
sMonsterConfigState * m_pState;
|
||||||
void Initialize();
|
void Initialize();
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
@ -633,10 +633,10 @@ NOISE_DATATYPE cNoise::CubicNoise3D(NOISE_DATATYPE a_X, NOISE_DATATYPE a_Y, NOIS
|
|||||||
};
|
};
|
||||||
|
|
||||||
const NOISE_DATATYPE FracX = (a_X) - BaseX;
|
const NOISE_DATATYPE FracX = (a_X) - BaseX;
|
||||||
const NOISE_DATATYPE x1interp1 = CubicInterpolate( points1[0][0], points1[0][1], points1[0][2], points1[0][3], FracX);
|
const NOISE_DATATYPE x1interp1 = CubicInterpolate(points1[0][0], points1[0][1], points1[0][2], points1[0][3], FracX);
|
||||||
const NOISE_DATATYPE x1interp2 = CubicInterpolate( points1[1][0], points1[1][1], points1[1][2], points1[1][3], FracX);
|
const NOISE_DATATYPE x1interp2 = CubicInterpolate(points1[1][0], points1[1][1], points1[1][2], points1[1][3], FracX);
|
||||||
const NOISE_DATATYPE x1interp3 = CubicInterpolate( points1[2][0], points1[2][1], points1[2][2], points1[2][3], FracX);
|
const NOISE_DATATYPE x1interp3 = CubicInterpolate(points1[2][0], points1[2][1], points1[2][2], points1[2][3], FracX);
|
||||||
const NOISE_DATATYPE x1interp4 = CubicInterpolate( points1[3][0], points1[3][1], points1[3][2], points1[3][3], FracX);
|
const NOISE_DATATYPE x1interp4 = CubicInterpolate(points1[3][0], points1[3][1], points1[3][2], points1[3][3], FracX);
|
||||||
|
|
||||||
const NOISE_DATATYPE points2[4][4] =
|
const NOISE_DATATYPE points2[4][4] =
|
||||||
{
|
{
|
||||||
@ -646,45 +646,45 @@ NOISE_DATATYPE cNoise::CubicNoise3D(NOISE_DATATYPE a_X, NOISE_DATATYPE a_Y, NOIS
|
|||||||
{ IntNoise3D(BaseX - 1, BaseY + 2, BaseZ), IntNoise3D(BaseX, BaseY + 2, BaseZ), IntNoise3D(BaseX + 1, BaseY + 2, BaseZ), IntNoise3D(BaseX + 2, BaseY + 2, BaseZ), },
|
{ IntNoise3D(BaseX - 1, BaseY + 2, BaseZ), IntNoise3D(BaseX, BaseY + 2, BaseZ), IntNoise3D(BaseX + 1, BaseY + 2, BaseZ), IntNoise3D(BaseX + 2, BaseY + 2, BaseZ), },
|
||||||
};
|
};
|
||||||
|
|
||||||
const NOISE_DATATYPE x2interp1 = CubicInterpolate( points2[0][0], points2[0][1], points2[0][2], points2[0][3], FracX);
|
const NOISE_DATATYPE x2interp1 = CubicInterpolate(points2[0][0], points2[0][1], points2[0][2], points2[0][3], FracX);
|
||||||
const NOISE_DATATYPE x2interp2 = CubicInterpolate( points2[1][0], points2[1][1], points2[1][2], points2[1][3], FracX);
|
const NOISE_DATATYPE x2interp2 = CubicInterpolate(points2[1][0], points2[1][1], points2[1][2], points2[1][3], FracX);
|
||||||
const NOISE_DATATYPE x2interp3 = CubicInterpolate( points2[2][0], points2[2][1], points2[2][2], points2[2][3], FracX);
|
const NOISE_DATATYPE x2interp3 = CubicInterpolate(points2[2][0], points2[2][1], points2[2][2], points2[2][3], FracX);
|
||||||
const NOISE_DATATYPE x2interp4 = CubicInterpolate( points2[3][0], points2[3][1], points2[3][2], points2[3][3], FracX);
|
const NOISE_DATATYPE x2interp4 = CubicInterpolate(points2[3][0], points2[3][1], points2[3][2], points2[3][3], FracX);
|
||||||
|
|
||||||
const NOISE_DATATYPE points3[4][4] =
|
const NOISE_DATATYPE points3[4][4] =
|
||||||
{
|
{
|
||||||
{ IntNoise3D( BaseX-1, BaseY-1, BaseZ+1), IntNoise3D( BaseX, BaseY-1, BaseZ+1), IntNoise3D( BaseX+1, BaseY-1, BaseZ+1), IntNoise3D( BaseX+2, BaseY-1, BaseZ + 1), },
|
{ IntNoise3D(BaseX - 1, BaseY - 1, BaseZ + 1), IntNoise3D(BaseX, BaseY - 1, BaseZ + 1), IntNoise3D(BaseX + 1, BaseY - 1, BaseZ + 1), IntNoise3D(BaseX + 2, BaseY - 1, BaseZ + 1), },
|
||||||
{ IntNoise3D( BaseX-1, BaseY, BaseZ+1), IntNoise3D( BaseX, BaseY, BaseZ+1), IntNoise3D( BaseX+1, BaseY, BaseZ+1), IntNoise3D( BaseX+2, BaseY, BaseZ + 1), },
|
{ IntNoise3D(BaseX - 1, BaseY, BaseZ + 1), IntNoise3D(BaseX, BaseY, BaseZ + 1), IntNoise3D(BaseX + 1, BaseY, BaseZ + 1), IntNoise3D(BaseX + 2, BaseY, BaseZ + 1), },
|
||||||
{ IntNoise3D( BaseX-1, BaseY+1, BaseZ+1), IntNoise3D( BaseX, BaseY+1, BaseZ+1), IntNoise3D( BaseX+1, BaseY+1, BaseZ+1), IntNoise3D( BaseX+2, BaseY+1, BaseZ + 1), },
|
{ IntNoise3D(BaseX - 1, BaseY + 1, BaseZ + 1), IntNoise3D(BaseX, BaseY + 1, BaseZ + 1), IntNoise3D(BaseX + 1, BaseY + 1, BaseZ + 1), IntNoise3D(BaseX + 2, BaseY + 1, BaseZ + 1), },
|
||||||
{ IntNoise3D( BaseX-1, BaseY+2, BaseZ+1), IntNoise3D( BaseX, BaseY+2, BaseZ+1), IntNoise3D( BaseX+1, BaseY+2, BaseZ+1), IntNoise3D( BaseX+2, BaseY+2, BaseZ + 1), },
|
{ IntNoise3D(BaseX - 1, BaseY + 2, BaseZ + 1), IntNoise3D(BaseX, BaseY + 2, BaseZ + 1), IntNoise3D(BaseX + 1, BaseY + 2, BaseZ + 1), IntNoise3D(BaseX + 2, BaseY + 2, BaseZ + 1), },
|
||||||
};
|
};
|
||||||
|
|
||||||
const NOISE_DATATYPE x3interp1 = CubicInterpolate( points3[0][0], points3[0][1], points3[0][2], points3[0][3], FracX);
|
const NOISE_DATATYPE x3interp1 = CubicInterpolate(points3[0][0], points3[0][1], points3[0][2], points3[0][3], FracX);
|
||||||
const NOISE_DATATYPE x3interp2 = CubicInterpolate( points3[1][0], points3[1][1], points3[1][2], points3[1][3], FracX);
|
const NOISE_DATATYPE x3interp2 = CubicInterpolate(points3[1][0], points3[1][1], points3[1][2], points3[1][3], FracX);
|
||||||
const NOISE_DATATYPE x3interp3 = CubicInterpolate( points3[2][0], points3[2][1], points3[2][2], points3[2][3], FracX);
|
const NOISE_DATATYPE x3interp3 = CubicInterpolate(points3[2][0], points3[2][1], points3[2][2], points3[2][3], FracX);
|
||||||
const NOISE_DATATYPE x3interp4 = CubicInterpolate( points3[3][0], points3[3][1], points3[3][2], points3[3][3], FracX);
|
const NOISE_DATATYPE x3interp4 = CubicInterpolate(points3[3][0], points3[3][1], points3[3][2], points3[3][3], FracX);
|
||||||
|
|
||||||
const NOISE_DATATYPE points4[4][4] =
|
const NOISE_DATATYPE points4[4][4] =
|
||||||
{
|
{
|
||||||
{ IntNoise3D( BaseX-1, BaseY-1, BaseZ+2), IntNoise3D( BaseX, BaseY-1, BaseZ+2), IntNoise3D( BaseX+1, BaseY-1, BaseZ+2), IntNoise3D( BaseX+2, BaseY-1, BaseZ+2), },
|
{ IntNoise3D(BaseX - 1, BaseY - 1, BaseZ + 2), IntNoise3D(BaseX, BaseY - 1, BaseZ + 2), IntNoise3D(BaseX + 1, BaseY - 1, BaseZ + 2), IntNoise3D(BaseX + 2, BaseY - 1, BaseZ + 2), },
|
||||||
{ IntNoise3D( BaseX-1, BaseY, BaseZ+2), IntNoise3D( BaseX, BaseY, BaseZ+2), IntNoise3D( BaseX+1, BaseY, BaseZ+2), IntNoise3D( BaseX+2, BaseY, BaseZ+2), },
|
{ IntNoise3D(BaseX - 1, BaseY, BaseZ + 2), IntNoise3D(BaseX, BaseY, BaseZ + 2), IntNoise3D(BaseX + 1, BaseY, BaseZ + 2), IntNoise3D(BaseX + 2, BaseY, BaseZ + 2), },
|
||||||
{ IntNoise3D( BaseX-1, BaseY+1, BaseZ+2), IntNoise3D( BaseX, BaseY+1, BaseZ+2), IntNoise3D( BaseX+1, BaseY+1, BaseZ+2), IntNoise3D( BaseX+2, BaseY+1, BaseZ+2), },
|
{ IntNoise3D(BaseX - 1, BaseY + 1, BaseZ + 2), IntNoise3D(BaseX, BaseY + 1, BaseZ + 2), IntNoise3D(BaseX + 1, BaseY + 1, BaseZ + 2), IntNoise3D(BaseX + 2, BaseY + 1, BaseZ + 2), },
|
||||||
{ IntNoise3D( BaseX-1, BaseY+2, BaseZ+2), IntNoise3D( BaseX, BaseY+2, BaseZ+2), IntNoise3D( BaseX+1, BaseY+2, BaseZ+2), IntNoise3D( BaseX+2, BaseY+2, BaseZ+2), },
|
{ IntNoise3D(BaseX - 1, BaseY + 2, BaseZ + 2), IntNoise3D(BaseX, BaseY + 2, BaseZ + 2), IntNoise3D(BaseX + 1, BaseY + 2, BaseZ + 2), IntNoise3D(BaseX + 2, BaseY + 2, BaseZ + 2), },
|
||||||
};
|
};
|
||||||
|
|
||||||
const NOISE_DATATYPE x4interp1 = CubicInterpolate( points4[0][0], points4[0][1], points4[0][2], points4[0][3], FracX);
|
const NOISE_DATATYPE x4interp1 = CubicInterpolate(points4[0][0], points4[0][1], points4[0][2], points4[0][3], FracX);
|
||||||
const NOISE_DATATYPE x4interp2 = CubicInterpolate( points4[1][0], points4[1][1], points4[1][2], points4[1][3], FracX);
|
const NOISE_DATATYPE x4interp2 = CubicInterpolate(points4[1][0], points4[1][1], points4[1][2], points4[1][3], FracX);
|
||||||
const NOISE_DATATYPE x4interp3 = CubicInterpolate( points4[2][0], points4[2][1], points4[2][2], points4[2][3], FracX);
|
const NOISE_DATATYPE x4interp3 = CubicInterpolate(points4[2][0], points4[2][1], points4[2][2], points4[2][3], FracX);
|
||||||
const NOISE_DATATYPE x4interp4 = CubicInterpolate( points4[3][0], points4[3][1], points4[3][2], points4[3][3], FracX);
|
const NOISE_DATATYPE x4interp4 = CubicInterpolate(points4[3][0], points4[3][1], points4[3][2], points4[3][3], FracX);
|
||||||
|
|
||||||
const NOISE_DATATYPE FracY = (a_Y) - BaseY;
|
const NOISE_DATATYPE FracY = (a_Y) - BaseY;
|
||||||
const NOISE_DATATYPE yinterp1 = CubicInterpolate( x1interp1, x1interp2, x1interp3, x1interp4, FracY);
|
const NOISE_DATATYPE yinterp1 = CubicInterpolate(x1interp1, x1interp2, x1interp3, x1interp4, FracY);
|
||||||
const NOISE_DATATYPE yinterp2 = CubicInterpolate( x2interp1, x2interp2, x2interp3, x2interp4, FracY);
|
const NOISE_DATATYPE yinterp2 = CubicInterpolate(x2interp1, x2interp2, x2interp3, x2interp4, FracY);
|
||||||
const NOISE_DATATYPE yinterp3 = CubicInterpolate( x3interp1, x3interp2, x3interp3, x3interp4, FracY);
|
const NOISE_DATATYPE yinterp3 = CubicInterpolate(x3interp1, x3interp2, x3interp3, x3interp4, FracY);
|
||||||
const NOISE_DATATYPE yinterp4 = CubicInterpolate( x4interp1, x4interp2, x4interp3, x4interp4, FracY);
|
const NOISE_DATATYPE yinterp4 = CubicInterpolate(x4interp1, x4interp2, x4interp3, x4interp4, FracY);
|
||||||
|
|
||||||
const NOISE_DATATYPE FracZ = (a_Z) - BaseZ;
|
const NOISE_DATATYPE FracZ = (a_Z) - BaseZ;
|
||||||
return CubicInterpolate( yinterp1, yinterp2, yinterp3, yinterp4, FracZ);
|
return CubicInterpolate(yinterp1, yinterp2, yinterp3, yinterp4, FracZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ public:
|
|||||||
void Lock(void);
|
void Lock(void);
|
||||||
void Unlock(void);
|
void Unlock(void);
|
||||||
|
|
||||||
// IsLocked/IsLockedByCurrentThread are only used in ASSERT statements, but because of the changes with ASSERT they must always be defined
|
// IsLocked / IsLockedByCurrentThread are only used in ASSERT statements, but because of the changes with ASSERT they must always be defined
|
||||||
// The fake versions (in Release) will not effect the program in any way
|
// The fake versions (in Release) will not effect the program in any way
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
cCriticalSection(void);
|
cCriticalSection(void);
|
||||||
|
@ -62,7 +62,7 @@ public:
|
|||||||
{
|
{
|
||||||
fmRead, // Read-only. If the file doesn't exist, object will not be valid
|
fmRead, // Read-only. If the file doesn't exist, object will not be valid
|
||||||
fmWrite, // Write-only. If the file already exists, it will be overwritten
|
fmWrite, // Write-only. If the file already exists, it will be overwritten
|
||||||
fmReadWrite, // Read/write. If the file already exists, it will be left intact; writing will overwrite the data from the beginning
|
fmReadWrite, // Read / write. If the file already exists, it will be left intact; writing will overwrite the data from the beginning
|
||||||
fmAppend // Write-only. If the file already exists cursor will be moved to the end of the file
|
fmAppend // Write-only. If the file already exists cursor will be moved to the end of the file
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
@ -162,7 +162,7 @@ public:
|
|||||||
/** Returns the local port to which the underlying socket is bound. */
|
/** Returns the local port to which the underlying socket is bound. */
|
||||||
virtual UInt16 GetPort(void) const = 0;
|
virtual UInt16 GetPort(void) const = 0;
|
||||||
|
|
||||||
/** Sends the specified payload in a single UDP datagram to the specified host+port combination.
|
/** Sends the specified payload in a single UDP datagram to the specified host + port combination.
|
||||||
Note that in order to send to a broadcast address, you need to call EnableBroadcasts() first. */
|
Note that in order to send to a broadcast address, you need to call EnableBroadcasts() first. */
|
||||||
virtual bool Send(const AString & a_Payload, const AString & a_Host, UInt16 a_Port) = 0;
|
virtual bool Send(const AString & a_Payload, const AString & a_Host, UInt16 a_Port) = 0;
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ public:
|
|||||||
void Wait();
|
void Wait();
|
||||||
void Signal();
|
void Signal();
|
||||||
private:
|
private:
|
||||||
void* m_Handle; // HANDLE pointer
|
void * m_Handle; // HANDLE pointer
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
bool m_bNamed;
|
bool m_bNamed;
|
||||||
|
@ -68,7 +68,7 @@ const AString & cChunkDataSerializer::Serialize(int a_Version, int a_ChunkX, int
|
|||||||
|
|
||||||
void cChunkDataSerializer::Serialize29(AString & a_Data)
|
void cChunkDataSerializer::Serialize29(AString & a_Data)
|
||||||
{
|
{
|
||||||
// TODO: Do not copy data and then compress it; rather, compress partial blocks of data (zlib *can* stream)
|
// TODO: Do not copy data and then compress it; rather, compress partial blocks of data (zlib can stream)
|
||||||
|
|
||||||
const int BiomeDataSize = cChunkDef::Width * cChunkDef::Width;
|
const int BiomeDataSize = cChunkDef::Width * cChunkDef::Width;
|
||||||
const int MetadataOffset = sizeof(m_BlockTypes);
|
const int MetadataOffset = sizeof(m_BlockTypes);
|
||||||
@ -126,7 +126,7 @@ void cChunkDataSerializer::Serialize29(AString & a_Data)
|
|||||||
|
|
||||||
void cChunkDataSerializer::Serialize39(AString & a_Data)
|
void cChunkDataSerializer::Serialize39(AString & a_Data)
|
||||||
{
|
{
|
||||||
// TODO: Do not copy data and then compress it; rather, compress partial blocks of data (zlib *can* stream)
|
// TODO: Do not copy data and then compress it; rather, compress partial blocks of data (zlib can stream)
|
||||||
|
|
||||||
const int BiomeDataSize = cChunkDef::Width * cChunkDef::Width;
|
const int BiomeDataSize = cChunkDef::Width * cChunkDef::Width;
|
||||||
const int MetadataOffset = sizeof(m_BlockTypes);
|
const int MetadataOffset = sizeof(m_BlockTypes);
|
||||||
|
@ -659,7 +659,7 @@ void cMojangAPI::QueryNamesToUUIDs(AStringVector & a_NamesToQuery)
|
|||||||
a_NamesToQuery.erase(a_NamesToQuery.begin(), itr);
|
a_NamesToQuery.erase(a_NamesToQuery.begin(), itr);
|
||||||
Json::FastWriter Writer;
|
Json::FastWriter Writer;
|
||||||
AString RequestBody = Writer.write(root);
|
AString RequestBody = Writer.write(root);
|
||||||
|
|
||||||
// Create the HTTP request:
|
// Create the HTTP request:
|
||||||
AString Request;
|
AString Request;
|
||||||
Request += "POST " + m_NameToUUIDAddress + " HTTP/1.0\r\n"; // We need to use HTTP 1.0 because we don't handle Chunked transfer encoding
|
Request += "POST " + m_NameToUUIDAddress + " HTTP/1.0\r\n"; // We need to use HTTP 1.0 because we don't handle Chunked transfer encoding
|
||||||
@ -667,7 +667,7 @@ void cMojangAPI::QueryNamesToUUIDs(AStringVector & a_NamesToQuery)
|
|||||||
Request += "User-Agent: MCServer\r\n";
|
Request += "User-Agent: MCServer\r\n";
|
||||||
Request += "Connection: close\r\n";
|
Request += "Connection: close\r\n";
|
||||||
Request += "Content-Type: application/json\r\n";
|
Request += "Content-Type: application/json\r\n";
|
||||||
Request += Printf("Content-Length: %u\r\n", (unsigned)RequestBody.length());
|
Request += Printf("Content-Length: %u\r\n", static_cast<unsigned>(RequestBody.length()));
|
||||||
Request += "\r\n";
|
Request += "\r\n";
|
||||||
Request += RequestBody;
|
Request += RequestBody;
|
||||||
|
|
||||||
|
@ -492,7 +492,7 @@ void cProtocol172::SendEntityVelocity(const cEntity & a_Entity)
|
|||||||
|
|
||||||
cPacketizer Pkt(*this, 0x12); // Entity Velocity packet
|
cPacketizer Pkt(*this, 0x12); // Entity Velocity packet
|
||||||
Pkt.WriteBEUInt32(a_Entity.GetUniqueID());
|
Pkt.WriteBEUInt32(a_Entity.GetUniqueID());
|
||||||
// 400 = 8000 / 20 ... Conversion from our speed in m/s to 8000 m/tick
|
// 400 = 8000 / 20 ... Conversion from our speed in m / s to 8000 m / tick
|
||||||
Pkt.WriteBEInt16(static_cast<short>(a_Entity.GetSpeedX() * 400));
|
Pkt.WriteBEInt16(static_cast<short>(a_Entity.GetSpeedX() * 400));
|
||||||
Pkt.WriteBEInt16(static_cast<short>(a_Entity.GetSpeedY() * 400));
|
Pkt.WriteBEInt16(static_cast<short>(a_Entity.GetSpeedY() * 400));
|
||||||
Pkt.WriteBEInt16(static_cast<short>(a_Entity.GetSpeedZ() * 400));
|
Pkt.WriteBEInt16(static_cast<short>(a_Entity.GetSpeedZ() * 400));
|
||||||
@ -2514,7 +2514,7 @@ void cProtocol172::ParseItemMetadata(cItem & a_Item, const AString & a_Metadata)
|
|||||||
|
|
||||||
for (int loretag = NBT.GetFirstChild(displaytag); loretag >= 0; loretag = NBT.GetNextSibling(loretag)) // Loop through array of strings
|
for (int loretag = NBT.GetFirstChild(displaytag); loretag >= 0; loretag = NBT.GetNextSibling(loretag)) // Loop through array of strings
|
||||||
{
|
{
|
||||||
AppendPrintf(Lore, "%s`", NBT.GetString(loretag).c_str()); // Append the lore with a grave accent/backtick, used internally by MCS to display a new line in the client; don't forget to c_str ;)
|
AppendPrintf(Lore, "%s`", NBT.GetString(loretag).c_str()); // Append the lore with a grave accent / backtick, used internally by MCS to display a new line in the client; don't forget to c_str ;)
|
||||||
}
|
}
|
||||||
|
|
||||||
a_Item.m_Lore = Lore;
|
a_Item.m_Lore = Lore;
|
||||||
|
@ -479,7 +479,7 @@ void cProtocol180::SendEntityVelocity(const cEntity & a_Entity)
|
|||||||
|
|
||||||
cPacketizer Pkt(*this, 0x12); // Entity Velocity packet
|
cPacketizer Pkt(*this, 0x12); // Entity Velocity packet
|
||||||
Pkt.WriteVarInt32(a_Entity.GetUniqueID());
|
Pkt.WriteVarInt32(a_Entity.GetUniqueID());
|
||||||
// 400 = 8000 / 20 ... Conversion from our speed in m/s to 8000 m/tick
|
// 400 = 8000 / 20 ... Conversion from our speed in m / s to 8000 m / tick
|
||||||
Pkt.WriteBEInt16((short)(a_Entity.GetSpeedX() * 400));
|
Pkt.WriteBEInt16((short)(a_Entity.GetSpeedX() * 400));
|
||||||
Pkt.WriteBEInt16((short)(a_Entity.GetSpeedY() * 400));
|
Pkt.WriteBEInt16((short)(a_Entity.GetSpeedY() * 400));
|
||||||
Pkt.WriteBEInt16((short)(a_Entity.GetSpeedZ() * 400));
|
Pkt.WriteBEInt16((short)(a_Entity.GetSpeedZ() * 400));
|
||||||
@ -2754,7 +2754,7 @@ void cProtocol180::ParseItemMetadata(cItem & a_Item, const AString & a_Metadata)
|
|||||||
|
|
||||||
for (int loretag = NBT.GetFirstChild(displaytag); loretag >= 0; loretag = NBT.GetNextSibling(loretag)) // Loop through array of strings
|
for (int loretag = NBT.GetFirstChild(displaytag); loretag >= 0; loretag = NBT.GetNextSibling(loretag)) // Loop through array of strings
|
||||||
{
|
{
|
||||||
AppendPrintf(Lore, "%s`", NBT.GetString(loretag).c_str()); // Append the lore with a grave accent/backtick, used internally by MCS to display a new line in the client; don't forget to c_str ;)
|
AppendPrintf(Lore, "%s`", NBT.GetString(loretag).c_str()); // Append the lore with a grave accent / backtick, used internally by MCS to display a new line in the client; don't forget to c_str ;)
|
||||||
}
|
}
|
||||||
|
|
||||||
a_Item.m_Lore = Lore;
|
a_Item.m_Lore = Lore;
|
||||||
|
@ -2153,7 +2153,7 @@ void cRankManager::ClearPlayerRanks(void)
|
|||||||
}
|
}
|
||||||
catch (SQLite::Exception & ex)
|
catch (SQLite::Exception & ex)
|
||||||
{
|
{
|
||||||
LOGWARNING("%s: Failed to remove/clear all players: %s", __FUNCTION__, ex.what());
|
LOGWARNING("%s: Failed to remove / clear all players: %s", __FUNCTION__, ex.what());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,8 +311,8 @@ void cRoot::LoadWorlds(cIniFile & IniFile)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
FoundAdditionalWorlds = true;
|
FoundAdditionalWorlds = true;
|
||||||
cWorld* NewWorld = new cWorld( WorldName.c_str());
|
cWorld * NewWorld = new cWorld(WorldName.c_str());
|
||||||
m_WorldsByName[ WorldName ] = NewWorld;
|
m_WorldsByName[WorldName] = NewWorld;
|
||||||
} // for i - Worlds
|
} // for i - Worlds
|
||||||
|
|
||||||
if (!FoundAdditionalWorlds)
|
if (!FoundAdditionalWorlds)
|
||||||
|
@ -218,7 +218,7 @@ private:
|
|||||||
/// Does the actual work of executing a command
|
/// Does the actual work of executing a command
|
||||||
void DoExecuteConsoleCommand(const AString & a_Cmd);
|
void DoExecuteConsoleCommand(const AString & a_Cmd);
|
||||||
|
|
||||||
static cRoot* s_Root;
|
static cRoot * s_Root;
|
||||||
|
|
||||||
static void InputThread(cRoot & a_Params);
|
static void InputThread(cRoot & a_Params);
|
||||||
}; // tolua_export
|
}; // tolua_export
|
||||||
|
@ -286,7 +286,7 @@ cScoreboard::cScoreboard(cWorld * a_World) : m_World(a_World)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
cObjective* cScoreboard::RegisterObjective(const AString & a_Name, const AString & a_DisplayName, cObjective::eType a_Type)
|
cObjective * cScoreboard::RegisterObjective(const AString & a_Name, const AString & a_DisplayName, cObjective::eType a_Type)
|
||||||
{
|
{
|
||||||
cObjective Objective(a_Name, a_DisplayName, a_Type, m_World);
|
cObjective Objective(a_Name, a_DisplayName, a_Type, m_World);
|
||||||
|
|
||||||
@ -471,7 +471,7 @@ cObjective * cScoreboard::GetObjectiveIn(eDisplaySlot a_Slot)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool cScoreboard::ForEachObjectiveWith(cObjective::eType a_Type, cObjectiveCallback& a_Callback)
|
bool cScoreboard::ForEachObjectiveWith(cObjective::eType a_Type, cObjectiveCallback & a_Callback)
|
||||||
{
|
{
|
||||||
cCSLock Lock(m_CSObjectives);
|
cCSLock Lock(m_CSObjectives);
|
||||||
|
|
||||||
@ -493,7 +493,7 @@ bool cScoreboard::ForEachObjectiveWith(cObjective::eType a_Type, cObjectiveCallb
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool cScoreboard::ForEachObjective(cObjectiveCallback& a_Callback)
|
bool cScoreboard::ForEachObjective(cObjectiveCallback & a_Callback)
|
||||||
{
|
{
|
||||||
cCSLock Lock(m_CSObjectives);
|
cCSLock Lock(m_CSObjectives);
|
||||||
|
|
||||||
@ -512,7 +512,7 @@ bool cScoreboard::ForEachObjective(cObjectiveCallback& a_Callback)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool cScoreboard::ForEachTeam(cTeamCallback& a_Callback)
|
bool cScoreboard::ForEachTeam(cTeamCallback & a_Callback)
|
||||||
{
|
{
|
||||||
cCSLock Lock(m_CSTeams);
|
cCSLock Lock(m_CSTeams);
|
||||||
|
|
||||||
|
@ -262,19 +262,16 @@ public:
|
|||||||
cTeam * QueryPlayerTeam(const AString & a_Name); // WARNING: O(n logn)
|
cTeam * QueryPlayerTeam(const AString & a_Name); // WARNING: O(n logn)
|
||||||
|
|
||||||
/** Execute callback for each objective with the specified type
|
/** Execute callback for each objective with the specified type
|
||||||
Returns true if all objectives processed, false if the callback aborted by returning true.
|
Returns true if all objectives processed, false if the callback aborted by returning true. */
|
||||||
*/
|
bool ForEachObjectiveWith(cObjective::eType a_Type, cObjectiveCallback & a_Callback);
|
||||||
bool ForEachObjectiveWith(cObjective::eType a_Type, cObjectiveCallback& a_Callback);
|
|
||||||
|
|
||||||
/** Execute callback for each objective.
|
/** Execute callback for each objective.
|
||||||
Returns true if all objectives have been processed, false if the callback aborted by returning true.
|
Returns true if all objectives have been processed, false if the callback aborted by returning true. */
|
||||||
*/
|
bool ForEachObjective(cObjectiveCallback & a_Callback); // Exported in ManualBindings.cpp
|
||||||
bool ForEachObjective(cObjectiveCallback& a_Callback); // Exported in ManualBindings.cpp
|
|
||||||
|
|
||||||
/** Execute callback for each team.
|
/** Execute callback for each team.
|
||||||
Returns true if all teams have been processed, false if the callback aborted by returning true.
|
Returns true if all teams have been processed, false if the callback aborted by returning true. */
|
||||||
*/
|
bool ForEachTeam(cTeamCallback & a_Callback); // Exported in ManualBindings.cpp
|
||||||
bool ForEachTeam(cTeamCallback& a_Callback); // Exported in ManualBindings.cpp
|
|
||||||
|
|
||||||
void SetDisplay(cObjective * a_Objective, eDisplaySlot a_Slot);
|
void SetDisplay(cObjective * a_Objective, eDisplaySlot a_Slot);
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ protected:
|
|||||||
/** Checks if there are enough neighbors to create a source at the coords specified; turns into source and returns true if so. */
|
/** Checks if there are enough neighbors to create a source at the coords specified; turns into source and returns true if so. */
|
||||||
bool CheckNeighborsForSource(cChunk * a_Chunk, int a_RelX, int a_RelY, int a_RelZ);
|
bool CheckNeighborsForSource(cChunk * a_Chunk, int a_RelX, int a_RelY, int a_RelZ);
|
||||||
|
|
||||||
/** Checks if the specified block should harden (Water/Lava interaction) and if so, converts it to a suitable block.
|
/** Checks if the specified block should harden (Water / Lava interaction) and if so, converts it to a suitable block.
|
||||||
Returns whether the block was changed or not. */
|
Returns whether the block was changed or not. */
|
||||||
bool HardenBlock(cChunk * a_Chunk, int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta);
|
bool HardenBlock(cChunk * a_Chunk, int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta);
|
||||||
|
|
||||||
|
@ -366,7 +366,7 @@ void cIncrementalRedstoneSimulator::HandleRedstoneTorch(int a_RelBlockX, int a_R
|
|||||||
if (i + 1 < ARRAYCOUNT(gCrossCoords)) // Sides of torch, not top (top is last)
|
if (i + 1 < ARRAYCOUNT(gCrossCoords)) // Sides of torch, not top (top is last)
|
||||||
{
|
{
|
||||||
if (
|
if (
|
||||||
IsMechanism(Type) && // Is it a mechanism? Not block/other torch etc.
|
IsMechanism(Type) && // Is it a mechanism? Not block / other torch etc.
|
||||||
(!Vector3i(a_RelBlockX + gCrossCoords[i].x, a_RelBlockY + gCrossCoords[i].y, a_RelBlockZ + gCrossCoords[i].z).Equals(Vector3i(X, Y, Z))) // CAN'T power block is that it is on
|
(!Vector3i(a_RelBlockX + gCrossCoords[i].x, a_RelBlockY + gCrossCoords[i].y, a_RelBlockZ + gCrossCoords[i].z).Equals(Vector3i(X, Y, Z))) // CAN'T power block is that it is on
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -1600,7 +1600,7 @@ bool cIncrementalRedstoneSimulator::IsRepeaterLocked(int a_RelBlockX, int a_RelB
|
|||||||
if ((OtherRepeaterDir & 0x03) == 0x3)
|
if ((OtherRepeaterDir & 0x03) == 0x3)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
} // If so, I am latched/locked
|
} // If so, I am latched / locked
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if western(left) neighbor is a powered on repeater who is facing us
|
// Check if western(left) neighbor is a powered on repeater who is facing us
|
||||||
@ -1612,7 +1612,7 @@ bool cIncrementalRedstoneSimulator::IsRepeaterLocked(int a_RelBlockX, int a_RelB
|
|||||||
if ((OtherRepeaterDir & 0x03) == 0x1)
|
if ((OtherRepeaterDir & 0x03) == 0x1)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
} // If so, I am latched/locked
|
} // If so, I am latched / locked
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -1634,7 +1634,7 @@ bool cIncrementalRedstoneSimulator::IsRepeaterLocked(int a_RelBlockX, int a_RelB
|
|||||||
if ((OtherRepeaterDir & 0x30) == 0x00)
|
if ((OtherRepeaterDir & 0x30) == 0x00)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
} // If so, am latched/locked
|
} // If so, I am latched / locked
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if northern(up) neighbor is a powered on repeater who is facing us
|
// Check if northern(up) neighbor is a powered on repeater who is facing us
|
||||||
@ -1646,7 +1646,7 @@ bool cIncrementalRedstoneSimulator::IsRepeaterLocked(int a_RelBlockX, int a_RelB
|
|||||||
if ((OtherRepeaterDir & 0x03) == 0x02)
|
if ((OtherRepeaterDir & 0x03) == 0x02)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
} // If so, I am latched/locked
|
} // If so, I am latched / locked
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -75,7 +75,7 @@ extern int NoCaseCompare(const AString & s1, const AString & s2); // tolua_expo
|
|||||||
/** Case-insensitive string comparison that returns a rating of equal-ness between [0 - s1.length()]. */
|
/** Case-insensitive string comparison that returns a rating of equal-ness between [0 - s1.length()]. */
|
||||||
extern size_t RateCompareString(const AString & s1, const AString & s2);
|
extern size_t RateCompareString(const AString & s1, const AString & s2);
|
||||||
|
|
||||||
/** Replaces *each* occurence of iNeedle in iHayStack with iReplaceWith */
|
/** Replaces each occurence of iNeedle in iHayStack with iReplaceWith */
|
||||||
extern void ReplaceString(AString & iHayStack, const AString & iNeedle, const AString & iReplaceWith); // tolua_export
|
extern void ReplaceString(AString & iHayStack, const AString & iNeedle, const AString & iReplaceWith); // tolua_export
|
||||||
|
|
||||||
/** Converts a stream of BE shorts into UTF-8 string; returns a_UTF8. */
|
/** Converts a stream of BE shorts into UTF-8 string; returns a_UTF8. */
|
||||||
|
@ -64,8 +64,9 @@ private:
|
|||||||
int GetHitNormal( const Vector3f & start, const Vector3f & end, const Vector3i & a_BlockPos);
|
int GetHitNormal( const Vector3f & start, const Vector3f & end, const Vector3i & a_BlockPos);
|
||||||
|
|
||||||
/// Signum function
|
/// Signum function
|
||||||
int SigNum( float a_Num);
|
int SigNum(float a_Num);
|
||||||
cWorld* m_World;
|
|
||||||
|
cWorld * m_World;
|
||||||
|
|
||||||
static const std::array<const Vector3f, 6> & m_NormalTable(void);
|
static const std::array<const Vector3f, 6> & m_NormalTable(void);
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
// DropSpenserWindow.cpp
|
// DropSpenserWindow.cpp
|
||||||
|
|
||||||
// Representing the UI window for the dropper/dispenser block
|
// Representing the UI window for the dropper / dispenser block
|
||||||
|
|
||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
#include "DropSpenserWindow.h"
|
#include "DropSpenserWindow.h"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
// DropSpenserWindow.h
|
// DropSpenserWindow.h
|
||||||
|
|
||||||
// Representing the UI window for the dropper/dispenser block
|
// Representing the UI window for the dropper / dispenser block
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ void cFurnaceWindow::DistributeStack(cItem & a_ItemStack, int a_Slot, cPlayer &
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Furnace Input/Fuel Slot
|
// Furnace Input / Fuel Slot
|
||||||
AreasInOrder.push_back(m_SlotAreas[1]); /* Inventory */
|
AreasInOrder.push_back(m_SlotAreas[1]); /* Inventory */
|
||||||
AreasInOrder.push_back(m_SlotAreas[2]); /* Hotbar */
|
AreasInOrder.push_back(m_SlotAreas[2]); /* Hotbar */
|
||||||
super::DistributeStackToAreas(a_ItemStack, a_Player, AreasInOrder, a_ShouldApply, false);
|
super::DistributeStackToAreas(a_ItemStack, a_Player, AreasInOrder, a_ShouldApply, false);
|
||||||
|
@ -33,7 +33,7 @@ public:
|
|||||||
a_ChestCart->GetWorld()->BroadcastSoundEffect("random.chestopen", a_ChestCart->GetPosX(), a_ChestCart->GetPosY(), a_ChestCart->GetPosZ(), 1, 1);
|
a_ChestCart->GetWorld()->BroadcastSoundEffect("random.chestopen", a_ChestCart->GetPosX(), a_ChestCart->GetPosY(), a_ChestCart->GetPosZ(), 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void DistributeStack(cItem & a_ItemStack, int a_Slot, cPlayer & a_Player, cSlotArea* a_ClickedArea, bool a_ShouldApply) override
|
virtual void DistributeStack(cItem & a_ItemStack, int a_Slot, cPlayer & a_Player, cSlotArea * a_ClickedArea, bool a_ShouldApply) override
|
||||||
{
|
{
|
||||||
cSlotAreas AreasInOrder;
|
cSlotAreas AreasInOrder;
|
||||||
|
|
||||||
|
@ -306,7 +306,7 @@ public:
|
|||||||
void UpdateResult(cPlayer & a_Player);
|
void UpdateResult(cPlayer & a_Player);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** The maximum cost of repairing/renaming in the anvil. */
|
/** The maximum cost of repairing / renaming in the anvil. */
|
||||||
int m_MaximumCost;
|
int m_MaximumCost;
|
||||||
|
|
||||||
/** The stack size of the second item where was used for repair */
|
/** The stack size of the second item where was used for repair */
|
||||||
|
@ -59,7 +59,7 @@ protected:
|
|||||||
cNoise m_Noise2;
|
cNoise m_Noise2;
|
||||||
cNoise m_Noise3;
|
cNoise m_Noise3;
|
||||||
|
|
||||||
/** Size of the Voronoi cells (avg X/Y distance between the seeds). Expected to be at least 2. */
|
/** Size of the Voronoi cells (avg X / Y distance between the seeds). Expected to be at least 2. */
|
||||||
int m_CellSize;
|
int m_CellSize;
|
||||||
|
|
||||||
/** The amount that the cell seeds may be offset from the grid.
|
/** The amount that the cell seeds may be offset from the grid.
|
||||||
|
@ -531,7 +531,7 @@ AString cWebAdmin::GetDefaultPage(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
AString cWebAdmin::GetBaseURL( const AString& a_URL)
|
AString cWebAdmin::GetBaseURL(const AString & a_URL)
|
||||||
{
|
{
|
||||||
return GetBaseURL(StringSplit(a_URL, "/"));
|
return GetBaseURL(StringSplit(a_URL, "/"));
|
||||||
}
|
}
|
||||||
|
@ -176,7 +176,7 @@ protected:
|
|||||||
{
|
{
|
||||||
float PercentDone = static_cast<float>(m_NumPrepared * 100) / m_MaxIdx;
|
float PercentDone = static_cast<float>(m_NumPrepared * 100) / m_MaxIdx;
|
||||||
float ChunkSpeed = static_cast<float>((m_NumPrepared - m_LastReportChunkCount) * 1000) / std::chrono::duration_cast<std::chrono::milliseconds>(Now - m_LastReportTime).count();
|
float ChunkSpeed = static_cast<float>((m_NumPrepared - m_LastReportChunkCount) * 1000) / std::chrono::duration_cast<std::chrono::milliseconds>(Now - m_LastReportTime).count();
|
||||||
LOG("Preparing spawn (%s): %.02f%% (%d/%d; %.02f chunks/s)",
|
LOG("Preparing spawn (%s): %.02f%% (%d/%d; %.02f chunks / sec)",
|
||||||
m_World.GetName().c_str(), PercentDone, m_NumPrepared, m_MaxIdx, ChunkSpeed
|
m_World.GetName().c_str(), PercentDone, m_NumPrepared, m_MaxIdx, ChunkSpeed
|
||||||
);
|
);
|
||||||
m_LastReportTime = Now;
|
m_LastReportTime = Now;
|
||||||
@ -767,7 +767,7 @@ eWeather cWorld::ChooseNewWeather()
|
|||||||
|
|
||||||
case eWeather_Rain:
|
case eWeather_Rain:
|
||||||
{
|
{
|
||||||
// 1/8 chance of turning into a thunderstorm
|
// 1 / 8 chance of turning into a thunderstorm
|
||||||
return ((m_TickRand.randInt() % 256) < 32) ? eWeather_ThunderStorm : eWeather_Sunny;
|
return ((m_TickRand.randInt() % 256) < 32) ? eWeather_ThunderStorm : eWeather_Sunny;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1351,7 +1351,7 @@ bool cWorld::DoWithBlockEntityAt(int a_BlockX, int a_BlockY, int a_BlockZ, cBloc
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool cWorld::DoWithBeaconAt(int a_BlockX, int a_BlockY, int a_BlockZ, cBeaconCallback& a_Callback)
|
bool cWorld::DoWithBeaconAt(int a_BlockX, int a_BlockY, int a_BlockZ, cBeaconCallback & a_Callback)
|
||||||
{
|
{
|
||||||
return m_ChunkMap->DoWithBeaconAt(a_BlockX, a_BlockY, a_BlockZ, a_Callback);
|
return m_ChunkMap->DoWithBeaconAt(a_BlockX, a_BlockY, a_BlockZ, a_Callback);
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user