Merge branch 'master' into playerimprovements
Conflicts: MCServer/Plugins/APIDump/APIDesc.lua
This commit is contained in:
commit
f86f066615
@ -208,6 +208,7 @@ if (NOT MSVC)
|
|||||||
string(REPLACE "-w" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
|
string(REPLACE "-w" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
|
||||||
string(REPLACE "-w" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
string(REPLACE "-w" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
||||||
string(REPLACE "-w" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
|
string(REPLACE "-w" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
|
||||||
|
add_flags_cxx("-Wall")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(${BUILD_TOOLS})
|
if(${BUILD_TOOLS})
|
||||||
|
@ -1105,8 +1105,10 @@ These ItemGrids are available in the API and can be manipulated by the plugins,
|
|||||||
IsDamageable = { Params = "", Return = "bool", Notes = "Returns true if this item does account for its damage" },
|
IsDamageable = { Params = "", Return = "bool", Notes = "Returns true if this item does account for its damage" },
|
||||||
IsEmpty = { Params = "", Return = "bool", Notes = "Returns true if this object represents an empty item (zero count or invalid ID)" },
|
IsEmpty = { Params = "", Return = "bool", Notes = "Returns true if this object represents an empty item (zero count or invalid ID)" },
|
||||||
IsEqual = { Params = "cItem", Return = "bool", Notes = "Returns true if the item in the parameter is the same as the one stored in the object (type, damage, lore, name and enchantments)" },
|
IsEqual = { Params = "cItem", Return = "bool", Notes = "Returns true if the item in the parameter is the same as the one stored in the object (type, damage, lore, name and enchantments)" },
|
||||||
|
IsEnchantable = { Params = "", Return = "bool", Notes = "Returns true if the item is enchantable" },
|
||||||
IsFullStack = { Params = "", Return = "bool", Notes = "Returns true if the item is stacked up to its maximum stacking" },
|
IsFullStack = { Params = "", Return = "bool", Notes = "Returns true if the item is stacked up to its maximum stacking" },
|
||||||
IsSameType = { Params = "cItem", Return = "bool", Notes = "Returns true if the item in the parameter is of the same ItemType as the one stored in the object. This is true even if the two items have different enchantments" },
|
IsSameType = { Params = "cItem", Return = "bool", Notes = "Returns true if the item in the parameter is of the same ItemType as the one stored in the object. This is true even if the two items have different enchantments" },
|
||||||
|
IsStackableWith = { Params = "cItem", Return = "bool", Notes = "Returns true if the item in the parameter is stackable with the one stored in the object. Two items with different enchantments cannot be stacked" },
|
||||||
},
|
},
|
||||||
Variables =
|
Variables =
|
||||||
{
|
{
|
||||||
@ -1479,6 +1481,7 @@ a_Player:OpenWindow(Window);
|
|||||||
GetMobType = { Params = "", Return = "{{cMonster#MobType|MobType}}", Notes = "Returns the type of this mob ({{cMonster#MobType|mtXXX}} constant)" },
|
GetMobType = { Params = "", Return = "{{cMonster#MobType|MobType}}", Notes = "Returns the type of this mob ({{cMonster#MobType|mtXXX}} constant)" },
|
||||||
GetSpawnDelay = { Params = "{{cMonster#MobFamily|MobFamily}}", Return = "number", Notes = "(STATIC) Returns the spawn delay - the number of game ticks between spawn attempts - for the specified mob family." },
|
GetSpawnDelay = { Params = "{{cMonster#MobFamily|MobFamily}}", Return = "number", Notes = "(STATIC) Returns the spawn delay - the number of game ticks between spawn attempts - for the specified mob family." },
|
||||||
MobTypeToString = { Params = "{{cMonster#MobType|MobType}}", Return = "string", Notes = "(STATIC) Returns the string representing the given mob type ({{cMonster#MobType|mtXXX}} constant), or empty string if unknown type." },
|
MobTypeToString = { Params = "{{cMonster#MobType|MobType}}", Return = "string", Notes = "(STATIC) Returns the string representing the given mob type ({{cMonster#MobType|mtXXX}} constant), or empty string if unknown type." },
|
||||||
|
MoveToPosition = { Params = "Position", Return = "", Notes = "Moves mob to the specified position" },
|
||||||
StringToMobType = { Params = "string", Return = "{{cMonster#MobType|MobType}}", Notes = "(STATIC) Returns the mob type ({{cMonster#MobType|mtXXX}} constant) parsed from the string type (\"creeper\"), or mtInvalidType if unrecognized." },
|
StringToMobType = { Params = "string", Return = "{{cMonster#MobType|MobType}}", Notes = "(STATIC) Returns the mob type ({{cMonster#MobType|mtXXX}} constant) parsed from the string type (\"creeper\"), or mtInvalidType if unrecognized." },
|
||||||
},
|
},
|
||||||
Constants =
|
Constants =
|
||||||
|
@ -149,7 +149,7 @@ local function GetCommandRefForum(a_Command)
|
|||||||
if (type(a_Command) == "string") then
|
if (type(a_Command) == "string") then
|
||||||
return "[color=blue]" .. a_Command .. "[/color]";
|
return "[color=blue]" .. a_Command .. "[/color]";
|
||||||
end
|
end
|
||||||
return "[color=blue]" .. a_Command.Name .. "[/color] [color=green]" .. a_Command.Params .. "[/color]";
|
return "[color=blue]" .. a_Command.Name .. "[/color] [color=green]" .. (a_Command.Params or "") .. "[/color]";
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -169,7 +169,7 @@ local function WriteCommandParameterCombinationsForum(a_CmdString, a_ParameterCo
|
|||||||
|
|
||||||
f:write("The following parameter combinations are recognized:\n");
|
f:write("The following parameter combinations are recognized:\n");
|
||||||
for idx, combination in ipairs(a_ParameterCombinations) do
|
for idx, combination in ipairs(a_ParameterCombinations) do
|
||||||
f:write("[color=blue]", a_CmdString, "[/color] [color=green]", combination.Params, "[/color]");
|
f:write("[color=blue]", a_CmdString, "[/color] [color=green]", combination.Params or "", "[/color]");
|
||||||
if (combination.Help ~= nil) then
|
if (combination.Help ~= nil) then
|
||||||
f:write(" - ", ForumizeString(combination.Help));
|
f:write(" - ", ForumizeString(combination.Help));
|
||||||
end
|
end
|
||||||
|
@ -78,7 +78,7 @@ bool cBiomeRenderer::Render(cPixmap & a_Pixmap)
|
|||||||
{
|
{
|
||||||
for (int i = 0; i < ARRAYCOUNT(CurBiomes); i++)
|
for (int i = 0; i < ARRAYCOUNT(CurBiomes); i++)
|
||||||
{
|
{
|
||||||
CurBiomes[i] = (EMCSBiome)-1;
|
CurBiomes[i] = biInvalidBiome;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1018,9 +1018,7 @@ void cLuaState::LogStackTrace(lua_State * a_LuaState)
|
|||||||
int depth = 0;
|
int depth = 0;
|
||||||
while (lua_getstack(a_LuaState, depth, &entry))
|
while (lua_getstack(a_LuaState, depth, &entry))
|
||||||
{
|
{
|
||||||
int status = lua_getinfo(a_LuaState, "Sln", &entry);
|
lua_getinfo(a_LuaState, "Sln", &entry);
|
||||||
assert(status);
|
|
||||||
|
|
||||||
LOGWARNING(" %s(%d): %s", entry.short_src, entry.currentline, entry.name ? entry.name : "(no name)");
|
LOGWARNING(" %s(%d): %s", entry.short_src, entry.currentline, entry.name ? entry.name : "(no name)");
|
||||||
depth++;
|
depth++;
|
||||||
}
|
}
|
||||||
@ -1066,11 +1064,13 @@ int cLuaState::CallFunctionWithForeignParams(
|
|||||||
{
|
{
|
||||||
// Something went wrong, fix the stack and exit
|
// Something went wrong, fix the stack and exit
|
||||||
lua_pop(m_LuaState, 2);
|
lua_pop(m_LuaState, 2);
|
||||||
|
m_NumCurrentFunctionArgs = -1;
|
||||||
|
m_CurrentFunctionName.clear();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call the function, with an error handler:
|
// Call the function, with an error handler:
|
||||||
int s = lua_pcall(m_LuaState, a_SrcParamEnd - a_SrcParamStart + 1, LUA_MULTRET, OldTop);
|
int s = lua_pcall(m_LuaState, a_SrcParamEnd - a_SrcParamStart + 1, LUA_MULTRET, OldTop + 1);
|
||||||
if (ReportErrors(s))
|
if (ReportErrors(s))
|
||||||
{
|
{
|
||||||
LOGWARN("Error while calling function '%s' in '%s'", a_FunctionName.c_str(), m_SubsystemName.c_str());
|
LOGWARN("Error while calling function '%s' in '%s'", a_FunctionName.c_str(), m_SubsystemName.c_str());
|
||||||
@ -1081,11 +1081,19 @@ int cLuaState::CallFunctionWithForeignParams(
|
|||||||
{
|
{
|
||||||
lua_pop(m_LuaState, CurTop - OldTop);
|
lua_pop(m_LuaState, CurTop - OldTop);
|
||||||
}
|
}
|
||||||
return -1;
|
|
||||||
|
// Reset the internal checking mechanisms:
|
||||||
|
m_NumCurrentFunctionArgs = -1;
|
||||||
|
m_CurrentFunctionName.clear();
|
||||||
|
|
||||||
|
// Make Lua think everything is okay and return 0 values, so that plugins continue executing.
|
||||||
|
// The failure is indicated by the zero return values.
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset the internal checking mechanisms:
|
// Reset the internal checking mechanisms:
|
||||||
m_NumCurrentFunctionArgs = -1;
|
m_NumCurrentFunctionArgs = -1;
|
||||||
|
m_CurrentFunctionName.clear();
|
||||||
|
|
||||||
// Remove the error handler from the stack:
|
// Remove the error handler from the stack:
|
||||||
lua_remove(m_LuaState, OldTop + 1);
|
lua_remove(m_LuaState, OldTop + 1);
|
||||||
@ -1152,6 +1160,7 @@ int cLuaState::CopyStackFrom(cLuaState & a_SrcLuaState, int a_SrcStart, int a_Sr
|
|||||||
// Copy the value:
|
// Copy the value:
|
||||||
void * ud = tolua_touserdata(a_SrcLuaState, i, NULL);
|
void * ud = tolua_touserdata(a_SrcLuaState, i, NULL);
|
||||||
tolua_pushusertype(m_LuaState, ud, type);
|
tolua_pushusertype(m_LuaState, ud, type);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
|
@ -1593,9 +1593,9 @@ static int tolua_cPluginManager_CallPlugin(lua_State * tolua_S)
|
|||||||
int m_NumReturns;
|
int m_NumReturns;
|
||||||
|
|
||||||
cCallback(const AString & a_FunctionName, cLuaState & a_SrcLuaState) :
|
cCallback(const AString & a_FunctionName, cLuaState & a_SrcLuaState) :
|
||||||
|
m_NumReturns(0),
|
||||||
m_FunctionName(a_FunctionName),
|
m_FunctionName(a_FunctionName),
|
||||||
m_SrcLuaState(a_SrcLuaState),
|
m_SrcLuaState(a_SrcLuaState)
|
||||||
m_NumReturns(0)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
protected:
|
protected:
|
||||||
|
@ -13,9 +13,17 @@ EMCSBiome StringToBiome(const AString & a_BiomeString)
|
|||||||
int res = atoi(a_BiomeString.c_str());
|
int res = atoi(a_BiomeString.c_str());
|
||||||
if ((res != 0) || (a_BiomeString.compare("0") == 0))
|
if ((res != 0) || (a_BiomeString.compare("0") == 0))
|
||||||
{
|
{
|
||||||
// It was a valid number
|
if ((res >= biFirstBiome) && (res < biNumBiomes))
|
||||||
|
{
|
||||||
return (EMCSBiome)res;
|
return (EMCSBiome)res;
|
||||||
}
|
}
|
||||||
|
else if ((res >= biFirstVariantBiome) && (res < biNumVariantBiomes))
|
||||||
|
{
|
||||||
|
return (EMCSBiome)res;
|
||||||
|
}
|
||||||
|
// It was an invalid number
|
||||||
|
return biInvalidBiome;
|
||||||
|
}
|
||||||
|
|
||||||
// Convert using the built-in map:
|
// Convert using the built-in map:
|
||||||
static struct {
|
static struct {
|
||||||
@ -100,7 +108,7 @@ EMCSBiome StringToBiome(const AString & a_BiomeString)
|
|||||||
return BiomeMap[i].m_Biome;
|
return BiomeMap[i].m_Biome;
|
||||||
}
|
}
|
||||||
} // for i - BiomeMap[]
|
} // for i - BiomeMap[]
|
||||||
return (EMCSBiome)-1;
|
return biInvalidBiome;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,6 +20,9 @@ BiomeIDs over 255 are used by MCServer internally and are translated to MC biome
|
|||||||
*/
|
*/
|
||||||
enum EMCSBiome
|
enum EMCSBiome
|
||||||
{
|
{
|
||||||
|
biInvalidBiome = -1,
|
||||||
|
|
||||||
|
biFirstBiome = 0,
|
||||||
biOcean = 0,
|
biOcean = 0,
|
||||||
biPlains = 1,
|
biPlains = 1,
|
||||||
biDesert = 2,
|
biDesert = 2,
|
||||||
@ -74,6 +77,7 @@ enum EMCSBiome
|
|||||||
biVariant = 128,
|
biVariant = 128,
|
||||||
|
|
||||||
// Release 1.7 biome variants:
|
// Release 1.7 biome variants:
|
||||||
|
biFirstVariantBiome = 129,
|
||||||
biSunflowerPlains = 129,
|
biSunflowerPlains = 129,
|
||||||
biDesertM = 130,
|
biDesertM = 130,
|
||||||
biExtremeHillsM = 131,
|
biExtremeHillsM = 131,
|
||||||
@ -95,9 +99,12 @@ enum EMCSBiome
|
|||||||
biMesaBryce = 165,
|
biMesaBryce = 165,
|
||||||
biMesaPlateauFM = 166,
|
biMesaPlateauFM = 166,
|
||||||
biMesaPlateauM = 167,
|
biMesaPlateauM = 167,
|
||||||
|
// Automatically capture the maximum consecutive biome value into biVarientMaxBiome:
|
||||||
|
biNumVariantBiomes, // True number of biomes, since they are zero-based
|
||||||
|
biMaxVariantBiome = biNumVariantBiomes - 1, // The maximum biome value
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
/// Translates a biome string to biome enum. Takes either a number or a biome alias (built-in). Returns -1 on failure.
|
/// Translates a biome string to biome enum. Takes either a number or a biome alias (built-in). Returns biInvalidBiome on failure.
|
||||||
extern EMCSBiome StringToBiome(const AString & a_BiomeString);
|
extern EMCSBiome StringToBiome(const AString & a_BiomeString);
|
||||||
|
|
||||||
/// Returns true if the biome has no downfall - deserts and savannas
|
/// Returns true if the biome has no downfall - deserts and savannas
|
||||||
|
@ -500,6 +500,11 @@ enum
|
|||||||
E_META_PLANKS_BIRCH = 2,
|
E_META_PLANKS_BIRCH = 2,
|
||||||
E_META_PLANKS_JUNGLE = 3,
|
E_META_PLANKS_JUNGLE = 3,
|
||||||
|
|
||||||
|
// E_BLOCK_QUARTZ_BLOCK metas:
|
||||||
|
E_META_QUARTZ_NORMAL = 0,
|
||||||
|
E_META_QUARTZ_CHISELLED = 1,
|
||||||
|
E_META_QUARTZ_PILLAR = 2,
|
||||||
|
|
||||||
// E_BLOCK_RAIL metas
|
// E_BLOCK_RAIL metas
|
||||||
E_META_RAIL_ZM_ZP = 0,
|
E_META_RAIL_ZM_ZP = 0,
|
||||||
E_META_RAIL_XM_XP = 1,
|
E_META_RAIL_XM_XP = 1,
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
void cBlockBedHandler::OnPlacedByPlayer(
|
void cBlockBedHandler::OnPlacedByPlayer(
|
||||||
cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta
|
BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta
|
||||||
)
|
)
|
||||||
@ -51,7 +51,7 @@ void cBlockBedHandler::OnDestroyed(cChunkInterface & a_ChunkInterface, cWorldInt
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cBlockBedHandler::OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ)
|
void cBlockBedHandler::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)
|
||||||
{
|
{
|
||||||
if (a_WorldInterface.GetDimension() != dimOverworld)
|
if (a_WorldInterface.GetDimension() != dimOverworld)
|
||||||
{
|
{
|
||||||
|
@ -20,9 +20,9 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual void OnPlacedByPlayer(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) override;
|
virtual void OnPlacedByPlayer(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, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) override;
|
||||||
virtual void OnDestroyed(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, int a_BlockX, int a_BlockY, int a_BlockZ) override;
|
virtual void OnDestroyed(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, int a_BlockX, int a_BlockY, int a_BlockZ) override;
|
||||||
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char 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;
|
||||||
|
|
||||||
|
|
||||||
virtual bool IsUseable(void) override
|
virtual bool IsUseable(void) override
|
||||||
|
@ -16,7 +16,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char 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
|
||||||
{
|
{
|
||||||
// Set p the ON bit to on
|
// Set p the ON bit to on
|
||||||
NIBBLETYPE Meta = (a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) | 0x08);
|
NIBBLETYPE Meta = (a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) | 0x08);
|
||||||
@ -44,7 +44,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
@ -61,7 +61,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline static NIBBLETYPE BlockFaceToMetaData(char a_BlockFace)
|
inline static NIBBLETYPE BlockFaceToMetaData(eBlockFace a_BlockFace)
|
||||||
{
|
{
|
||||||
switch (a_BlockFace)
|
switch (a_BlockFace)
|
||||||
{
|
{
|
||||||
@ -77,7 +77,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static NIBBLETYPE BlockMetaDataToBlockFace(NIBBLETYPE a_Meta)
|
inline static eBlockFace BlockMetaDataToBlockFace(NIBBLETYPE a_Meta)
|
||||||
{
|
{
|
||||||
switch (a_Meta & 0x7)
|
switch (a_Meta & 0x7)
|
||||||
{
|
{
|
||||||
|
@ -32,7 +32,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -21,7 +21,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
@ -67,7 +67,7 @@ public:
|
|||||||
|
|
||||||
virtual void OnPlacedByPlayer(
|
virtual void OnPlacedByPlayer(
|
||||||
cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta
|
BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta
|
||||||
) override
|
) override
|
||||||
@ -110,9 +110,11 @@ public:
|
|||||||
return "step.wood";
|
return "step.wood";
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool CanBeAt(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ, const cChunk & a_Chunk) override
|
virtual bool CanBeAt(cChunkInterface & a_ChunkInterface, int a_RelX, int a_RelY, int a_RelZ, const cChunk & a_Chunk) override
|
||||||
{
|
{
|
||||||
return CanBeAt(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ);
|
int BlockX = a_RelX + a_Chunk.GetPosX() * cChunkDef::Width;
|
||||||
|
int BlockZ = a_RelZ + a_Chunk.GetPosZ() * cChunkDef::Width;
|
||||||
|
return CanBeAt(a_ChunkInterface, BlockX, a_RelY, BlockZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char 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
|
||||||
@ -47,7 +47,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -43,7 +43,7 @@ void cBlockDoorHandler::OnDestroyed(cChunkInterface & a_ChunkInterface, cWorldIn
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cBlockDoorHandler::OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ)
|
void cBlockDoorHandler::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)
|
||||||
{
|
{
|
||||||
if (a_ChunkInterface.GetBlock(a_BlockX, a_BlockY, a_BlockZ) == E_BLOCK_WOODEN_DOOR)
|
if (a_ChunkInterface.GetBlock(a_BlockX, a_BlockY, a_BlockZ) == E_BLOCK_WOODEN_DOOR)
|
||||||
{
|
{
|
||||||
@ -57,7 +57,7 @@ void cBlockDoorHandler::OnUse(cChunkInterface & a_ChunkInterface, cWorldInterfac
|
|||||||
|
|
||||||
void cBlockDoorHandler::OnPlacedByPlayer(
|
void cBlockDoorHandler::OnPlacedByPlayer(
|
||||||
cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta
|
BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta
|
||||||
)
|
)
|
||||||
|
@ -15,13 +15,13 @@ public:
|
|||||||
cBlockDoorHandler(BLOCKTYPE a_BlockType);
|
cBlockDoorHandler(BLOCKTYPE a_BlockType);
|
||||||
|
|
||||||
virtual void OnDestroyed(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, int a_BlockX, int a_BlockY, int a_BlockZ) override;
|
virtual void OnDestroyed(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, int a_BlockX, int a_BlockY, int a_BlockZ) override;
|
||||||
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char 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;
|
||||||
virtual const char * GetStepSound(void) override;
|
virtual const char * GetStepSound(void) override;
|
||||||
|
|
||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
@ -54,7 +54,7 @@ public:
|
|||||||
|
|
||||||
virtual void OnPlacedByPlayer(
|
virtual void OnPlacedByPlayer(
|
||||||
cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta
|
BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta
|
||||||
) override;
|
) override;
|
||||||
|
@ -23,7 +23,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -24,7 +24,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -15,7 +15,7 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer *a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char 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
|
||||||
{
|
{
|
||||||
a_ChunkInterface.UseBlockEntity(a_Player, a_BlockX, a_BlockY, a_BlockZ);
|
a_ChunkInterface.UseBlockEntity(a_Player, a_BlockX, a_BlockY, a_BlockZ);
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
@ -30,7 +30,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char 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 OldMetaData = a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ);
|
NIBBLETYPE OldMetaData = a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ);
|
||||||
NIBBLETYPE NewMetaData = PlayerYawToMetaData(a_Player->GetYaw());
|
NIBBLETYPE NewMetaData = PlayerYawToMetaData(a_Player->GetYaw());
|
||||||
|
@ -27,7 +27,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
#include "BlockPlanks.h"
|
#include "BlockPlanks.h"
|
||||||
#include "BlockPortal.h"
|
#include "BlockPortal.h"
|
||||||
#include "BlockPumpkin.h"
|
#include "BlockPumpkin.h"
|
||||||
|
#include "BlockQuartz.h"
|
||||||
#include "BlockRail.h"
|
#include "BlockRail.h"
|
||||||
#include "BlockRedstone.h"
|
#include "BlockRedstone.h"
|
||||||
#include "BlockRedstoneLamp.h"
|
#include "BlockRedstoneLamp.h"
|
||||||
@ -56,6 +57,7 @@
|
|||||||
#include "BlockRedstoneTorch.h"
|
#include "BlockRedstoneTorch.h"
|
||||||
#include "BlockSand.h"
|
#include "BlockSand.h"
|
||||||
#include "BlockSapling.h"
|
#include "BlockSapling.h"
|
||||||
|
#include "BlockSideways.h"
|
||||||
#include "BlockSign.h"
|
#include "BlockSign.h"
|
||||||
#include "BlockSlab.h"
|
#include "BlockSlab.h"
|
||||||
#include "BlockSnow.h"
|
#include "BlockSnow.h"
|
||||||
@ -67,7 +69,6 @@
|
|||||||
#include "BlockTorch.h"
|
#include "BlockTorch.h"
|
||||||
#include "BlockTrapdoor.h"
|
#include "BlockTrapdoor.h"
|
||||||
#include "BlockVine.h"
|
#include "BlockVine.h"
|
||||||
#include "BlockWood.h"
|
|
||||||
#include "BlockWorkbench.h"
|
#include "BlockWorkbench.h"
|
||||||
|
|
||||||
|
|
||||||
@ -144,6 +145,7 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
|
|||||||
case E_BLOCK_GLASS: return new cBlockGlassHandler (a_BlockType);
|
case E_BLOCK_GLASS: return new cBlockGlassHandler (a_BlockType);
|
||||||
case E_BLOCK_GRASS: return new cBlockDirtHandler (a_BlockType);
|
case E_BLOCK_GRASS: return new cBlockDirtHandler (a_BlockType);
|
||||||
case E_BLOCK_GRAVEL: return new cBlockGravelHandler (a_BlockType);
|
case E_BLOCK_GRAVEL: return new cBlockGravelHandler (a_BlockType);
|
||||||
|
case E_BLOCK_HAY_BALE: return new cBlockSidewaysHandler (a_BlockType);
|
||||||
case E_BLOCK_HOPPER: return new cBlockHopperHandler (a_BlockType);
|
case E_BLOCK_HOPPER: return new cBlockHopperHandler (a_BlockType);
|
||||||
case E_BLOCK_ICE: return new cBlockIceHandler (a_BlockType);
|
case E_BLOCK_ICE: return new cBlockIceHandler (a_BlockType);
|
||||||
case E_BLOCK_INACTIVE_COMPARATOR: return new cBlockComparatorHandler (a_BlockType);
|
case E_BLOCK_INACTIVE_COMPARATOR: return new cBlockComparatorHandler (a_BlockType);
|
||||||
@ -158,14 +160,14 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
|
|||||||
case E_BLOCK_LAVA: return new cBlockLavaHandler (a_BlockType);
|
case E_BLOCK_LAVA: return new cBlockLavaHandler (a_BlockType);
|
||||||
case E_BLOCK_LEAVES: return new cBlockLeavesHandler (a_BlockType);
|
case E_BLOCK_LEAVES: return new cBlockLeavesHandler (a_BlockType);
|
||||||
case E_BLOCK_LIT_FURNACE: return new cBlockFurnaceHandler (a_BlockType);
|
case E_BLOCK_LIT_FURNACE: return new cBlockFurnaceHandler (a_BlockType);
|
||||||
case E_BLOCK_LOG: return new cBlockWoodHandler (a_BlockType);
|
case E_BLOCK_LOG: return new cBlockSidewaysHandler (a_BlockType);
|
||||||
case E_BLOCK_MELON: return new cBlockMelonHandler (a_BlockType);
|
case E_BLOCK_MELON: return new cBlockMelonHandler (a_BlockType);
|
||||||
case E_BLOCK_MELON_STEM: return new cBlockStemsHandler (a_BlockType);
|
case E_BLOCK_MELON_STEM: return new cBlockStemsHandler (a_BlockType);
|
||||||
case E_BLOCK_MYCELIUM: return new cBlockMyceliumHandler (a_BlockType);
|
case E_BLOCK_MYCELIUM: return new cBlockMyceliumHandler (a_BlockType);
|
||||||
case E_BLOCK_NETHER_BRICK_STAIRS: return new cBlockStairsHandler (a_BlockType);
|
case E_BLOCK_NETHER_BRICK_STAIRS: return new cBlockStairsHandler (a_BlockType);
|
||||||
case E_BLOCK_NETHER_PORTAL: return new cBlockPortalHandler (a_BlockType);
|
case E_BLOCK_NETHER_PORTAL: return new cBlockPortalHandler (a_BlockType);
|
||||||
case E_BLOCK_NETHER_WART: return new cBlockNetherWartHandler (a_BlockType);
|
case E_BLOCK_NETHER_WART: return new cBlockNetherWartHandler (a_BlockType);
|
||||||
case E_BLOCK_NEW_LOG: return new cBlockWoodHandler (a_BlockType);
|
case E_BLOCK_NEW_LOG: return new cBlockSidewaysHandler (a_BlockType);
|
||||||
case E_BLOCK_NOTE_BLOCK: return new cBlockNoteHandler (a_BlockType);
|
case E_BLOCK_NOTE_BLOCK: return new cBlockNoteHandler (a_BlockType);
|
||||||
case E_BLOCK_PISTON: return new cBlockPistonHandler (a_BlockType);
|
case E_BLOCK_PISTON: return new cBlockPistonHandler (a_BlockType);
|
||||||
case E_BLOCK_PISTON_EXTENSION: return new cBlockPistonHeadHandler ( );
|
case E_BLOCK_PISTON_EXTENSION: return new cBlockPistonHeadHandler ( );
|
||||||
@ -174,6 +176,7 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
|
|||||||
case E_BLOCK_POWERED_RAIL: return new cBlockRailHandler (a_BlockType);
|
case E_BLOCK_POWERED_RAIL: return new cBlockRailHandler (a_BlockType);
|
||||||
case E_BLOCK_PUMPKIN: return new cBlockPumpkinHandler (a_BlockType);
|
case E_BLOCK_PUMPKIN: return new cBlockPumpkinHandler (a_BlockType);
|
||||||
case E_BLOCK_PUMPKIN_STEM: return new cBlockStemsHandler (a_BlockType);
|
case E_BLOCK_PUMPKIN_STEM: return new cBlockStemsHandler (a_BlockType);
|
||||||
|
case E_BLOCK_QUARTZ_BLOCK: return new cBlockQuartzHandler (a_BlockType);
|
||||||
case E_BLOCK_QUARTZ_STAIRS: return new cBlockStairsHandler (a_BlockType);
|
case E_BLOCK_QUARTZ_STAIRS: return new cBlockStairsHandler (a_BlockType);
|
||||||
case E_BLOCK_RAIL: return new cBlockRailHandler (a_BlockType);
|
case E_BLOCK_RAIL: return new cBlockRailHandler (a_BlockType);
|
||||||
case E_BLOCK_REDSTONE_LAMP_ON: return new cBlockRedstoneLampHandler (a_BlockType); // We need this to change pickups to an off lamp; else 1.7+ clients crash
|
case E_BLOCK_REDSTONE_LAMP_ON: return new cBlockRedstoneLampHandler (a_BlockType); // We need this to change pickups to an off lamp; else 1.7+ clients crash
|
||||||
@ -247,7 +250,7 @@ cBlockHandler::cBlockHandler(BLOCKTYPE a_BlockType)
|
|||||||
|
|
||||||
bool cBlockHandler::GetPlacementBlockTypeMeta(
|
bool cBlockHandler::GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
)
|
)
|
||||||
@ -270,7 +273,7 @@ void cBlockHandler::OnUpdate(cChunkInterface & cChunkInterface, cWorldInterface
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cBlockHandler::OnPlacedByPlayer(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta)
|
void cBlockHandler::OnPlacedByPlayer(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, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -344,7 +347,7 @@ void cBlockHandler::OnDigging(cChunkInterface & a_ChunkInterface, cWorldInterfac
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cBlockHandler::OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer *a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ)
|
void cBlockHandler::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)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
);
|
);
|
||||||
@ -46,7 +46,7 @@ public:
|
|||||||
/// Called by cClientHandle::HandlePlaceBlock() after the player has placed a new block. Called after OnPlaced().
|
/// Called by cClientHandle::HandlePlaceBlock() after the player has placed a new block. Called after OnPlaced().
|
||||||
virtual void OnPlacedByPlayer(
|
virtual void OnPlacedByPlayer(
|
||||||
cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta
|
BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta
|
||||||
);
|
);
|
||||||
@ -67,7 +67,7 @@ public:
|
|||||||
virtual void OnDigging(cChunkInterface & cChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ);
|
virtual void OnDigging(cChunkInterface & cChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ);
|
||||||
|
|
||||||
/// Called if the user right clicks the block and the block is useable
|
/// Called if the user right clicks the block and the block is useable
|
||||||
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ);
|
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);
|
||||||
|
|
||||||
/// <summary>Called when the item is mined to convert it into pickups. Pickups may specify multiple items. Appends items to a_Pickups, preserves its original contents</summary>
|
/// <summary>Called when the item is mined to convert it into pickups. Pickups may specify multiple items. Appends items to a_Pickups, preserves its original contents</summary>
|
||||||
virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta);
|
virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta);
|
||||||
|
@ -19,7 +19,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -20,7 +20,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
@ -41,37 +41,38 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static NIBBLETYPE DirectionToMetaData(char a_Direction) // tolua_export
|
static NIBBLETYPE DirectionToMetaData(eBlockFace a_Direction) // tolua_export
|
||||||
{ // tolua_export
|
{ // tolua_export
|
||||||
switch (a_Direction)
|
switch (a_Direction)
|
||||||
{
|
{
|
||||||
case 0x2: return 0x2;
|
case BLOCK_FACE_ZM: return 0x2;
|
||||||
case 0x3: return 0x3;
|
case BLOCK_FACE_ZP: return 0x3;
|
||||||
case 0x4: return 0x4;
|
case BLOCK_FACE_XM: return 0x4;
|
||||||
case 0x5: return 0x5;
|
case BLOCK_FACE_XP: return 0x5;
|
||||||
default: return 0x2;
|
default: return 0x2;
|
||||||
}
|
}
|
||||||
} // tolua_export
|
} // tolua_export
|
||||||
|
|
||||||
|
|
||||||
static char MetaDataToDirection(NIBBLETYPE a_MetaData) // tolua_export
|
static eBlockFace MetaDataToDirection(NIBBLETYPE a_MetaData) // tolua_export
|
||||||
{ // tolua_export
|
{ // tolua_export
|
||||||
switch (a_MetaData)
|
switch (a_MetaData)
|
||||||
{
|
{
|
||||||
case 0x2: return 0x2;
|
case 0x2: return BLOCK_FACE_ZM;
|
||||||
case 0x3: return 0x3;
|
case 0x3: return BLOCK_FACE_ZP;
|
||||||
case 0x4: return 0x4;
|
case 0x4: return BLOCK_FACE_XM;
|
||||||
case 0x5: return 0x5;
|
case 0x5: return BLOCK_FACE_XP;
|
||||||
default: return 0x2;
|
default: return BLOCK_FACE_ZM;
|
||||||
}
|
}
|
||||||
} // tolua_export
|
} // tolua_export
|
||||||
|
|
||||||
|
|
||||||
/// Finds a suitable Direction for the Ladder. Returns BLOCK_FACE_BOTTOM on failure
|
/// Finds a suitable Direction for the Ladder. Returns BLOCK_FACE_BOTTOM on failure
|
||||||
static char FindSuitableBlockFace(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ)
|
static eBlockFace FindSuitableBlockFace(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ)
|
||||||
{
|
{
|
||||||
for (int Face = 2; Face <= 5; Face++)
|
for (int FaceInt = BLOCK_FACE_ZM; FaceInt <= BLOCK_FACE_XP; FaceInt++)
|
||||||
{
|
{
|
||||||
|
eBlockFace Face = static_cast<eBlockFace>(FaceInt);
|
||||||
if (LadderCanBePlacedAt(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ, Face))
|
if (LadderCanBePlacedAt(a_ChunkInterface, a_BlockX, a_BlockY, a_BlockZ, Face))
|
||||||
{
|
{
|
||||||
return Face;
|
return Face;
|
||||||
@ -81,7 +82,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool LadderCanBePlacedAt(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace)
|
static bool LadderCanBePlacedAt(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace)
|
||||||
{
|
{
|
||||||
if ((a_BlockFace == BLOCK_FACE_BOTTOM) || (a_BlockFace == BLOCK_FACE_TOP))
|
if ((a_BlockFace == BLOCK_FACE_BOTTOM) || (a_BlockFace == BLOCK_FACE_TOP))
|
||||||
{
|
{
|
||||||
@ -97,7 +98,7 @@ public:
|
|||||||
virtual bool CanBeAt(cChunkInterface & a_ChunkInterface,int a_RelX, int a_RelY, int a_RelZ, const cChunk & a_Chunk) override
|
virtual bool CanBeAt(cChunkInterface & a_ChunkInterface,int a_RelX, int a_RelY, int a_RelZ, const cChunk & a_Chunk) override
|
||||||
{
|
{
|
||||||
// TODO: Use AdjustCoordsByMeta(), then cChunk::UnboundedRelGetBlock() and finally some comparison
|
// TODO: Use AdjustCoordsByMeta(), then cChunk::UnboundedRelGetBlock() and finally some comparison
|
||||||
char BlockFace = MetaDataToDirection(a_Chunk.GetMeta(a_RelX, a_RelY, a_RelZ));
|
eBlockFace BlockFace = MetaDataToDirection(a_Chunk.GetMeta(a_RelX, a_RelY, a_RelZ));
|
||||||
int BlockX = a_RelX + a_Chunk.GetPosX() * cChunkDef::Width;
|
int BlockX = a_RelX + a_Chunk.GetPosX() * cChunkDef::Width;
|
||||||
int BlockZ = a_RelZ + a_Chunk.GetPosZ() * cChunkDef::Width;
|
int BlockZ = a_RelZ + a_Chunk.GetPosZ() * cChunkDef::Width;
|
||||||
return LadderCanBePlacedAt(a_ChunkInterface, BlockX, a_RelY, BlockZ, BlockFace);
|
return LadderCanBePlacedAt(a_ChunkInterface, BlockX, a_RelY, BlockZ, BlockFace);
|
||||||
|
@ -15,7 +15,7 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char 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);
|
||||||
@ -40,7 +40,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
@ -51,7 +51,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline static NIBBLETYPE LeverDirectionToMetaData(char a_Dir)
|
inline static NIBBLETYPE LeverDirectionToMetaData(eBlockFace a_Dir)
|
||||||
{
|
{
|
||||||
// Determine lever direction:
|
// Determine lever direction:
|
||||||
switch (a_Dir)
|
switch (a_Dir)
|
||||||
@ -73,7 +73,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline static NIBBLETYPE BlockMetaDataToBlockFace(NIBBLETYPE a_Meta)
|
inline static eBlockFace BlockMetaDataToBlockFace(NIBBLETYPE a_Meta)
|
||||||
{
|
{
|
||||||
switch (a_Meta & 0x7)
|
switch (a_Meta & 0x7)
|
||||||
{
|
{
|
||||||
|
@ -54,7 +54,7 @@ void cBlockPistonHandler::OnDestroyed(cChunkInterface & a_ChunkInterface, cWorld
|
|||||||
|
|
||||||
bool cBlockPistonHandler::GetPlacementBlockTypeMeta(
|
bool cBlockPistonHandler::GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
)
|
)
|
||||||
|
@ -17,7 +17,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override;
|
) override;
|
||||||
|
@ -18,7 +18,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -18,7 +18,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -14,7 +14,7 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void OnPlacedByPlayer(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) override
|
virtual void OnPlacedByPlayer(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, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) override
|
||||||
{
|
{
|
||||||
// Check whether the pumpkin is a part of a golem or a snowman
|
// Check whether the pumpkin is a part of a golem or a snowman
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
67
src/Blocks/BlockQuartz.h
Normal file
67
src/Blocks/BlockQuartz.h
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "BlockHandler.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class cBlockQuartzHandler : public cBlockHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
cBlockQuartzHandler(BLOCKTYPE a_BlockType)
|
||||||
|
: cBlockHandler(a_BlockType)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
|
) override
|
||||||
|
{
|
||||||
|
a_BlockType = m_BlockType;
|
||||||
|
NIBBLETYPE Meta = (NIBBLETYPE)(a_Player->GetEquippedItem().m_ItemDamage);
|
||||||
|
if (Meta != E_META_QUARTZ_PILLAR) // Check if the block is a pillar block.
|
||||||
|
{
|
||||||
|
a_BlockMeta = Meta;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
a_BlockMeta = BlockFaceToMetaData(a_BlockFace, Meta);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static NIBBLETYPE BlockFaceToMetaData(eBlockFace a_BlockFace, NIBBLETYPE a_QuartzMeta)
|
||||||
|
{
|
||||||
|
switch (a_BlockFace)
|
||||||
|
{
|
||||||
|
case BLOCK_FACE_YM:
|
||||||
|
case BLOCK_FACE_YP:
|
||||||
|
{
|
||||||
|
return a_QuartzMeta; // Top or bottom, just return original
|
||||||
|
}
|
||||||
|
|
||||||
|
case BLOCK_FACE_ZP:
|
||||||
|
case BLOCK_FACE_ZM:
|
||||||
|
{
|
||||||
|
return 0x4; // North or south
|
||||||
|
}
|
||||||
|
|
||||||
|
case BLOCK_FACE_XP:
|
||||||
|
case BLOCK_FACE_XM:
|
||||||
|
{
|
||||||
|
return 0x3; // East or west
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
ASSERT(!"Unhandled block face!");
|
||||||
|
return a_QuartzMeta; // No idea, give a special meta (all sides the same)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ;
|
@ -31,7 +31,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
@ -344,7 +344,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool IsNotConnected(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, char a_Pure = 0)
|
bool IsNotConnected(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, char a_Pure = 0)
|
||||||
{
|
{
|
||||||
AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, false);
|
AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, false);
|
||||||
NIBBLETYPE Meta;
|
NIBBLETYPE Meta;
|
||||||
|
@ -20,7 +20,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
@ -31,7 +31,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char 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
|
||||||
{
|
{
|
||||||
a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, ((a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) + 0x04) & 0x0f));
|
a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, ((a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) + 0x04) & 0x0f));
|
||||||
}
|
}
|
||||||
|
@ -7,10 +7,10 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
class cBlockWoodHandler : public cBlockHandler
|
class cBlockSidewaysHandler : public cBlockHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
cBlockWoodHandler(BLOCKTYPE a_BlockType)
|
cBlockSidewaysHandler(BLOCKTYPE a_BlockType)
|
||||||
: cBlockHandler(a_BlockType)
|
: cBlockHandler(a_BlockType)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -18,7 +18,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
@ -30,7 +30,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline static NIBBLETYPE BlockFaceToMetaData(char a_BlockFace, NIBBLETYPE a_WoodMeta)
|
inline static NIBBLETYPE BlockFaceToMetaData(eBlockFace a_BlockFace, NIBBLETYPE a_WoodMeta)
|
||||||
{
|
{
|
||||||
switch (a_BlockFace)
|
switch (a_BlockFace)
|
||||||
{
|
{
|
@ -45,7 +45,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static char DirectionToMetaData(char a_Direction)
|
static char DirectionToMetaData(eBlockFace a_Direction)
|
||||||
{
|
{
|
||||||
switch (a_Direction)
|
switch (a_Direction)
|
||||||
{
|
{
|
||||||
@ -64,7 +64,7 @@ public:
|
|||||||
|
|
||||||
virtual void OnPlacedByPlayer(
|
virtual void OnPlacedByPlayer(
|
||||||
cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta
|
BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -34,7 +34,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -19,7 +19,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -20,7 +20,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -19,7 +19,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
@ -57,7 +57,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline static NIBBLETYPE DirectionToMetaData(char a_Direction)
|
inline static NIBBLETYPE DirectionToMetaData(eBlockFace a_Direction)
|
||||||
{
|
{
|
||||||
switch (a_Direction)
|
switch (a_Direction)
|
||||||
{
|
{
|
||||||
@ -77,7 +77,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline static char MetaDataToDirection(NIBBLETYPE a_MetaData)
|
inline static eBlockFace MetaDataToDirection(NIBBLETYPE a_MetaData)
|
||||||
{
|
{
|
||||||
switch (a_MetaData)
|
switch (a_MetaData)
|
||||||
{
|
{
|
||||||
@ -93,11 +93,11 @@ public:
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return BLOCK_FACE_TOP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool CanBePlacedOn(BLOCKTYPE a_BlockType, char a_BlockFace)
|
static bool CanBePlacedOn(BLOCKTYPE a_BlockType, eBlockFace a_BlockFace)
|
||||||
{
|
{
|
||||||
if ( !g_BlockFullyOccupiesVoxel[a_BlockType] )
|
if ( !g_BlockFullyOccupiesVoxel[a_BlockType] )
|
||||||
{
|
{
|
||||||
@ -111,11 +111,12 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
/// Finds a suitable face to place the torch, returning BLOCK_FACE_NONE on failure
|
/// Finds a suitable face to place the torch, returning BLOCK_FACE_NONE on failure
|
||||||
static char FindSuitableFace(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ)
|
static eBlockFace FindSuitableFace(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ)
|
||||||
{
|
{
|
||||||
for (int i = BLOCK_FACE_YM; i <= BLOCK_FACE_XP; i++) // Loop through all directions
|
for (int i = BLOCK_FACE_YM; i <= BLOCK_FACE_XP; i++) // Loop through all directions
|
||||||
{
|
{
|
||||||
AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, i, true);
|
eBlockFace Face = static_cast<eBlockFace>(i);
|
||||||
|
AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, Face, true);
|
||||||
BLOCKTYPE BlockInQuestion = a_ChunkInterface.GetBlock(a_BlockX, a_BlockY, a_BlockZ);
|
BLOCKTYPE BlockInQuestion = a_ChunkInterface.GetBlock(a_BlockX, a_BlockY, a_BlockZ);
|
||||||
|
|
||||||
if ( // If on a block that can only hold a torch if torch is standing on it, return that face
|
if ( // If on a block that can only hold a torch if torch is standing on it, return that face
|
||||||
@ -123,20 +124,20 @@ public:
|
|||||||
(BlockInQuestion == E_BLOCK_FENCE) ||
|
(BlockInQuestion == E_BLOCK_FENCE) ||
|
||||||
(BlockInQuestion == E_BLOCK_NETHER_BRICK_FENCE) ||
|
(BlockInQuestion == E_BLOCK_NETHER_BRICK_FENCE) ||
|
||||||
(BlockInQuestion == E_BLOCK_COBBLESTONE_WALL)) &&
|
(BlockInQuestion == E_BLOCK_COBBLESTONE_WALL)) &&
|
||||||
(i == BLOCK_FACE_TOP)
|
(Face == BLOCK_FACE_TOP)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return i;
|
return Face;
|
||||||
}
|
}
|
||||||
else if ((g_BlockFullyOccupiesVoxel[BlockInQuestion]) && (i != BLOCK_FACE_BOTTOM))
|
else if ((g_BlockFullyOccupiesVoxel[BlockInQuestion]) && (i != BLOCK_FACE_BOTTOM))
|
||||||
{
|
{
|
||||||
// Otherwise, if block in that direction is torch placeable and we haven't gotten to it via the bottom face, return that face
|
// Otherwise, if block in that direction is torch placeable and we haven't gotten to it via the bottom face, return that face
|
||||||
return i;
|
return Face;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Reset coords in preparation for next iteration
|
// Reset coords in preparation for next iteration
|
||||||
AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, i, false);
|
AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, Face, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return BLOCK_FACE_NONE;
|
return BLOCK_FACE_NONE;
|
||||||
@ -145,7 +146,7 @@ public:
|
|||||||
|
|
||||||
virtual bool CanBeAt(cChunkInterface & a_ChunkInterface, int a_RelX, int a_RelY, int a_RelZ, const cChunk & a_Chunk) override
|
virtual bool CanBeAt(cChunkInterface & a_ChunkInterface, int a_RelX, int a_RelY, int a_RelZ, const cChunk & a_Chunk) override
|
||||||
{
|
{
|
||||||
char Face = MetaDataToDirection(a_Chunk.GetMeta(a_RelX, a_RelY, a_RelZ));
|
eBlockFace Face = MetaDataToDirection(a_Chunk.GetMeta(a_RelX, a_RelY, a_RelZ));
|
||||||
|
|
||||||
AddFaceDirection(a_RelX, a_RelY, a_RelZ, Face, true);
|
AddFaceDirection(a_RelX, a_RelY, a_RelZ, Face, true);
|
||||||
BLOCKTYPE BlockInQuestion;
|
BLOCKTYPE BlockInQuestion;
|
||||||
|
@ -32,7 +32,7 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char 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) ^ 0x04);
|
NIBBLETYPE Meta = (a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ) ^ 0x04);
|
||||||
@ -42,7 +42,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
@ -57,7 +57,7 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static NIBBLETYPE BlockFaceToMetaData(char a_BlockFace)
|
inline static NIBBLETYPE BlockFaceToMetaData(eBlockFace a_BlockFace)
|
||||||
{
|
{
|
||||||
switch (a_BlockFace)
|
switch (a_BlockFace)
|
||||||
{
|
{
|
||||||
@ -73,7 +73,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static NIBBLETYPE BlockMetaDataToBlockFace(NIBBLETYPE a_Meta)
|
inline static eBlockFace BlockMetaDataToBlockFace(NIBBLETYPE a_Meta)
|
||||||
{
|
{
|
||||||
switch (a_Meta & 0x3)
|
switch (a_Meta & 0x3)
|
||||||
{
|
{
|
||||||
|
@ -19,7 +19,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
cChunkInterface & a_ChunkInterface, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -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, char 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
|
||||||
{
|
{
|
||||||
cWindow * Window = new cCraftingWindow(a_BlockX, a_BlockY, a_BlockZ);
|
cWindow * Window = new cCraftingWindow(a_BlockX, a_BlockY, a_BlockZ);
|
||||||
a_Player->OpenWindow(Window);
|
a_Player->OpenWindow(Window);
|
||||||
|
@ -228,7 +228,7 @@ bool cBoundingBox::IsInside(const Vector3d & a_Min, const Vector3d & a_Max, doub
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool cBoundingBox::CalcLineIntersection(const Vector3d & a_Line1, const Vector3d & a_Line2, double & a_LineCoeff, char & a_Face)
|
bool cBoundingBox::CalcLineIntersection(const Vector3d & a_Line1, const Vector3d & a_Line2, double & a_LineCoeff, eBlockFace & a_Face)
|
||||||
{
|
{
|
||||||
return CalcLineIntersection(m_Min, m_Max, a_Line1, a_Line2, a_LineCoeff, a_Face);
|
return CalcLineIntersection(m_Min, m_Max, a_Line1, a_Line2, a_LineCoeff, a_Face);
|
||||||
}
|
}
|
||||||
@ -237,7 +237,7 @@ bool cBoundingBox::CalcLineIntersection(const Vector3d & a_Line1, const Vector3d
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool cBoundingBox::CalcLineIntersection(const Vector3d & a_Min, const Vector3d & a_Max, const Vector3d & a_Line1, const Vector3d & a_Line2, double & a_LineCoeff, char & a_Face)
|
bool cBoundingBox::CalcLineIntersection(const Vector3d & a_Min, const Vector3d & a_Max, const Vector3d & a_Line1, const Vector3d & a_Line2, double & a_LineCoeff, eBlockFace & a_Face)
|
||||||
{
|
{
|
||||||
if (IsInside(a_Min, a_Max, a_Line1))
|
if (IsInside(a_Min, a_Max, a_Line1))
|
||||||
{
|
{
|
||||||
@ -247,7 +247,7 @@ bool cBoundingBox::CalcLineIntersection(const Vector3d & a_Min, const Vector3d &
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
char Face = BLOCK_FACE_NONE;
|
eBlockFace Face = BLOCK_FACE_NONE;
|
||||||
double Coeff = Vector3d::NO_INTERSECTION;
|
double Coeff = Vector3d::NO_INTERSECTION;
|
||||||
|
|
||||||
// Check each individual bbox face for intersection with the line, remember the one with the lowest coeff
|
// Check each individual bbox face for intersection with the line, remember the one with the lowest coeff
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "Vector3d.h"
|
#include "Vector3d.h"
|
||||||
|
#include "Defines.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -66,13 +67,13 @@ public:
|
|||||||
Also calculates the distance along the line in which the intersection occurs (0 .. 1)
|
Also calculates the distance along the line in which the intersection occurs (0 .. 1)
|
||||||
Only forward collisions (a_LineCoeff >= 0) are returned.
|
Only forward collisions (a_LineCoeff >= 0) are returned.
|
||||||
*/
|
*/
|
||||||
bool CalcLineIntersection(const Vector3d & a_Line1, const Vector3d & a_Line2, double & a_LineCoeff, char & a_Face);
|
bool CalcLineIntersection(const Vector3d & a_Line1, const Vector3d & a_Line2, double & a_LineCoeff, eBlockFace & a_Face);
|
||||||
|
|
||||||
/** Returns true if the specified bounding box is intersected by the line specified by its two points
|
/** Returns true if the specified bounding box is intersected by the line specified by its two points
|
||||||
Also calculates the distance along the line in which the intersection occurs (0 .. 1) and the face hit (BLOCK_FACE_ constants)
|
Also calculates the distance along the line in which the intersection occurs (0 .. 1) and the face hit (BLOCK_FACE_ constants)
|
||||||
Only forward collisions (a_LineCoeff >= 0) are returned.
|
Only forward collisions (a_LineCoeff >= 0) are returned.
|
||||||
*/
|
*/
|
||||||
static bool CalcLineIntersection(const Vector3d & a_Min, const Vector3d & a_Max, const Vector3d & a_Line1, const Vector3d & a_Line2, double & a_LineCoeff, char & a_Face);
|
static bool CalcLineIntersection(const Vector3d & a_Min, const Vector3d & a_Max, const Vector3d & a_Line1, const Vector3d & a_Line2, double & a_LineCoeff, eBlockFace & a_Face);
|
||||||
|
|
||||||
// tolua_end
|
// tolua_end
|
||||||
|
|
||||||
|
@ -1808,7 +1808,7 @@ void cChunkMap::DoExplosionAt(double a_ExplosionSize, double a_BlockX, double a_
|
|||||||
if (FinalDamage > a_Entity->GetMaxHealth())
|
if (FinalDamage > a_Entity->GetMaxHealth())
|
||||||
FinalDamage = a_Entity->GetMaxHealth();
|
FinalDamage = a_Entity->GetMaxHealth();
|
||||||
else if (FinalDamage < 0)
|
else if (FinalDamage < 0)
|
||||||
return false;
|
FinalDamage = 0;
|
||||||
|
|
||||||
if (!a_Entity->IsTNT()) // Don't apply damage to other TNT entities, they should be invincible
|
if (!a_Entity->IsTNT()) // Don't apply damage to other TNT entities, they should be invincible
|
||||||
{
|
{
|
||||||
|
@ -620,7 +620,7 @@ void cClientHandle::HandleCommandBlockMessage(const char* a_Data, unsigned int a
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cClientHandle::HandleLeftClick(int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, char a_Status)
|
void cClientHandle::HandleLeftClick(int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, char a_Status)
|
||||||
{
|
{
|
||||||
LOGD("HandleLeftClick: {%i, %i, %i}; Face: %i; Stat: %i",
|
LOGD("HandleLeftClick: {%i, %i, %i}; Face: %i; Stat: %i",
|
||||||
a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_Status
|
a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_Status
|
||||||
@ -721,7 +721,7 @@ void cClientHandle::HandleLeftClick(int a_BlockX, int a_BlockY, int a_BlockZ, ch
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cClientHandle::HandleBlockDigStarted(int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, BLOCKTYPE a_OldBlock, NIBBLETYPE a_OldMeta)
|
void cClientHandle::HandleBlockDigStarted(int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, BLOCKTYPE a_OldBlock, NIBBLETYPE a_OldMeta)
|
||||||
{
|
{
|
||||||
if (
|
if (
|
||||||
m_HasStartedDigging &&
|
m_HasStartedDigging &&
|
||||||
@ -795,7 +795,7 @@ void cClientHandle::HandleBlockDigStarted(int a_BlockX, int a_BlockY, int a_Bloc
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cClientHandle::HandleBlockDigFinished(int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, BLOCKTYPE a_OldBlock, NIBBLETYPE a_OldMeta)
|
void cClientHandle::HandleBlockDigFinished(int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, BLOCKTYPE a_OldBlock, NIBBLETYPE a_OldMeta)
|
||||||
{
|
{
|
||||||
if (
|
if (
|
||||||
!m_HasStartedDigging || // Hasn't received the DIG_STARTED packet
|
!m_HasStartedDigging || // Hasn't received the DIG_STARTED packet
|
||||||
@ -844,7 +844,7 @@ void cClientHandle::HandleBlockDigFinished(int a_BlockX, int a_BlockY, int a_Blo
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cClientHandle::HandleRightClick(int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, const cItem & a_HeldItem)
|
void cClientHandle::HandleRightClick(int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, const cItem & a_HeldItem)
|
||||||
{
|
{
|
||||||
LOGD("HandleRightClick: {%d, %d, %d}, face %d, HeldItem: %s",
|
LOGD("HandleRightClick: {%d, %d, %d}, face %d, HeldItem: %s",
|
||||||
a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, ItemToFullString(a_HeldItem).c_str()
|
a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, ItemToFullString(a_HeldItem).c_str()
|
||||||
@ -946,7 +946,7 @@ void cClientHandle::HandleRightClick(int a_BlockX, int a_BlockY, int a_BlockZ, c
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cClientHandle::HandlePlaceBlock(int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, cItemHandler & a_ItemHandler)
|
void cClientHandle::HandlePlaceBlock(int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, cItemHandler & a_ItemHandler)
|
||||||
{
|
{
|
||||||
if (a_BlockFace < 0)
|
if (a_BlockFace < 0)
|
||||||
{
|
{
|
||||||
|
@ -181,7 +181,7 @@ public:
|
|||||||
bool HandleHandshake (const AString & a_Username);
|
bool HandleHandshake (const AString & a_Username);
|
||||||
|
|
||||||
void HandleKeepAlive (int a_KeepAliveID);
|
void HandleKeepAlive (int a_KeepAliveID);
|
||||||
void HandleLeftClick (int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, char a_Status);
|
void HandleLeftClick (int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, char a_Status);
|
||||||
void HandlePing (void);
|
void HandlePing (void);
|
||||||
void HandlePlayerAbilities (bool a_CanFly, bool a_IsFlying, float FlyingSpeed, float WalkingSpeed);
|
void HandlePlayerAbilities (bool a_CanFly, bool a_IsFlying, float FlyingSpeed, float WalkingSpeed);
|
||||||
void HandlePlayerLook (float a_Rotation, float a_Pitch, bool a_IsOnGround);
|
void HandlePlayerLook (float a_Rotation, float a_Pitch, bool a_IsOnGround);
|
||||||
@ -189,7 +189,7 @@ public:
|
|||||||
void HandlePlayerPos (double a_PosX, double a_PosY, double a_PosZ, double a_Stance, bool a_IsOnGround);
|
void HandlePlayerPos (double a_PosX, double a_PosY, double a_PosZ, double a_Stance, bool a_IsOnGround);
|
||||||
void HandlePluginMessage (const AString & a_Channel, const AString & a_Message);
|
void HandlePluginMessage (const AString & a_Channel, const AString & a_Message);
|
||||||
void HandleRespawn (void);
|
void HandleRespawn (void);
|
||||||
void HandleRightClick (int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, const cItem & a_HeldItem);
|
void HandleRightClick (int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, const cItem & a_HeldItem);
|
||||||
void HandleSlotSelected (short a_SlotNum);
|
void HandleSlotSelected (short a_SlotNum);
|
||||||
void HandleSteerVehicle (float Forward, float Sideways);
|
void HandleSteerVehicle (float Forward, float Sideways);
|
||||||
void HandleTabCompletion (const AString & a_Text);
|
void HandleTabCompletion (const AString & a_Text);
|
||||||
@ -214,7 +214,7 @@ public:
|
|||||||
void MoveToWorld(cWorld & a_World, bool a_SendRespawnPacket);
|
void MoveToWorld(cWorld & a_World, bool a_SendRespawnPacket);
|
||||||
|
|
||||||
/// Handles the block placing packet when it is a real block placement (not block-using, item-using or eating)
|
/// Handles the block placing packet when it is a real block placement (not block-using, item-using or eating)
|
||||||
void HandlePlaceBlock(int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, cItemHandler & a_ItemHandler);
|
void HandlePlaceBlock(int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, cItemHandler & a_ItemHandler);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -316,10 +316,10 @@ private:
|
|||||||
void StreamChunk(int a_ChunkX, int a_ChunkZ);
|
void StreamChunk(int a_ChunkX, int a_ChunkZ);
|
||||||
|
|
||||||
/// Handles the DIG_STARTED dig packet:
|
/// Handles the DIG_STARTED dig packet:
|
||||||
void HandleBlockDigStarted (int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, BLOCKTYPE a_OldBlock, NIBBLETYPE a_OldMeta);
|
void HandleBlockDigStarted (int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, BLOCKTYPE a_OldBlock, NIBBLETYPE a_OldMeta);
|
||||||
|
|
||||||
/// Handles the DIG_FINISHED dig packet:
|
/// Handles the DIG_FINISHED dig packet:
|
||||||
void HandleBlockDigFinished(int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, BLOCKTYPE a_OldBlock, NIBBLETYPE a_OldMeta);
|
void HandleBlockDigFinished(int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, BLOCKTYPE a_OldBlock, NIBBLETYPE a_OldMeta);
|
||||||
|
|
||||||
/// Handles the "MC|AdvCdm" plugin message
|
/// Handles the "MC|AdvCdm" plugin message
|
||||||
void HandleCommandBlockMessage(const char* a_Data, unsigned int a_Length);
|
void HandleCommandBlockMessage(const char* a_Data, unsigned int a_Length);
|
||||||
|
@ -327,7 +327,7 @@ inline bool IsBlockTypeOfDirt(BLOCKTYPE a_BlockType)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
inline void AddFaceDirection(int & a_BlockX, int & a_BlockY, int & a_BlockZ, char a_BlockFace, bool a_bInverse = false) // tolua_export
|
inline void AddFaceDirection(int & a_BlockX, int & a_BlockY, int & a_BlockZ, eBlockFace a_BlockFace, bool a_bInverse = false) // tolua_export
|
||||||
{ // tolua_export
|
{ // tolua_export
|
||||||
if (!a_bInverse)
|
if (!a_bInverse)
|
||||||
{
|
{
|
||||||
@ -371,7 +371,7 @@ inline void AddFaceDirection(int & a_BlockX, int & a_BlockY, int & a_BlockZ, cha
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
inline void AddFaceDirection(int & a_BlockX, unsigned char & a_BlockY, int & a_BlockZ, char a_BlockFace, bool a_bInverse = false)
|
inline void AddFaceDirection(int & a_BlockX, unsigned char & a_BlockY, int & a_BlockZ, eBlockFace a_BlockFace, bool a_bInverse = false)
|
||||||
{
|
{
|
||||||
int Y = a_BlockY;
|
int Y = a_BlockY;
|
||||||
AddFaceDirection(a_BlockX, Y, a_BlockZ, a_BlockFace, a_bInverse);
|
AddFaceDirection(a_BlockX, Y, a_BlockZ, a_BlockFace, a_bInverse);
|
||||||
@ -391,8 +391,6 @@ inline void AddFaceDirection(int & a_BlockX, unsigned char & a_BlockY, int & a_B
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define PI 3.14159265358979323846264338327950288419716939937510582097494459072381640628620899862803482534211706798f
|
#define PI 3.14159265358979323846264338327950288419716939937510582097494459072381640628620899862803482534211706798f
|
||||||
|
|
||||||
inline void EulerToVector(double a_Pan, double a_Pitch, double & a_X, double & a_Y, double & a_Z)
|
inline void EulerToVector(double a_Pan, double a_Pitch, double & a_X, double & a_Y, double & a_Z)
|
||||||
|
@ -35,7 +35,7 @@ public:
|
|||||||
cBoundingBox EntBox(a_Entity->GetPosition(), a_Entity->GetWidth() / 2, a_Entity->GetHeight());
|
cBoundingBox EntBox(a_Entity->GetPosition(), a_Entity->GetWidth() / 2, a_Entity->GetHeight());
|
||||||
|
|
||||||
double LineCoeff;
|
double LineCoeff;
|
||||||
char Face;
|
eBlockFace Face;
|
||||||
EntBox.Expand(m_Floater->GetWidth() / 2, m_Floater->GetHeight() / 2, m_Floater->GetWidth() / 2);
|
EntBox.Expand(m_Floater->GetWidth() / 2, m_Floater->GetHeight() / 2, m_Floater->GetWidth() / 2);
|
||||||
if (!EntBox.CalcLineIntersection(m_Pos, m_NextPos, LineCoeff, Face))
|
if (!EntBox.CalcLineIntersection(m_Pos, m_NextPos, LineCoeff, Face))
|
||||||
{
|
{
|
||||||
|
@ -63,7 +63,7 @@ protected:
|
|||||||
Vector3d Line1 = m_Projectile->GetPosition();
|
Vector3d Line1 = m_Projectile->GetPosition();
|
||||||
Vector3d Line2 = Line1 + m_Projectile->GetSpeed();
|
Vector3d Line2 = Line1 + m_Projectile->GetSpeed();
|
||||||
double LineCoeff = 0;
|
double LineCoeff = 0;
|
||||||
char Face;
|
eBlockFace Face;
|
||||||
if (bb.CalcLineIntersection(Line1, Line2, LineCoeff, Face))
|
if (bb.CalcLineIntersection(Line1, Line2, LineCoeff, Face))
|
||||||
{
|
{
|
||||||
Vector3d Intersection = Line1 + m_Projectile->GetSpeed() * LineCoeff;
|
Vector3d Intersection = Line1 + m_Projectile->GetSpeed() * LineCoeff;
|
||||||
@ -138,7 +138,7 @@ public:
|
|||||||
// Instead of colliding the bounding box with another bounding box in motion, we collide an enlarged bounding box with a hairline.
|
// Instead of colliding the bounding box with another bounding box in motion, we collide an enlarged bounding box with a hairline.
|
||||||
// The results should be good enough for our purposes
|
// The results should be good enough for our purposes
|
||||||
double LineCoeff;
|
double LineCoeff;
|
||||||
char Face;
|
eBlockFace Face;
|
||||||
EntBox.Expand(m_Projectile->GetWidth() / 2, m_Projectile->GetHeight() / 2, m_Projectile->GetWidth() / 2);
|
EntBox.Expand(m_Projectile->GetWidth() / 2, m_Projectile->GetHeight() / 2, m_Projectile->GetWidth() / 2);
|
||||||
if (!EntBox.CalcLineIntersection(m_Pos, m_NextPos, LineCoeff, Face))
|
if (!EntBox.CalcLineIntersection(m_Pos, m_NextPos, LineCoeff, Face))
|
||||||
{
|
{
|
||||||
@ -243,7 +243,7 @@ cProjectileEntity * cProjectileEntity::Create(eKind a_Kind, cEntity * a_Creator,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cProjectileEntity::OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace)
|
void cProjectileEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace)
|
||||||
{
|
{
|
||||||
// Set the position based on what face was hit:
|
// Set the position based on what face was hit:
|
||||||
SetPosition(a_HitPos);
|
SetPosition(a_HitPos);
|
||||||
@ -446,7 +446,7 @@ bool cArrowEntity::CanPickup(const cPlayer & a_Player) const
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cArrowEntity::OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace)
|
void cArrowEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace)
|
||||||
{
|
{
|
||||||
if (a_HitFace == BLOCK_FACE_NONE) { return; }
|
if (a_HitFace == BLOCK_FACE_NONE) { return; }
|
||||||
|
|
||||||
@ -590,7 +590,7 @@ cThrownEggEntity::cThrownEggEntity(cEntity * a_Creator, double a_X, double a_Y,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cThrownEggEntity::OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace)
|
void cThrownEggEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace)
|
||||||
{
|
{
|
||||||
if (m_World->GetTickRandomNumber(7) == 1)
|
if (m_World->GetTickRandomNumber(7) == 1)
|
||||||
{
|
{
|
||||||
@ -623,7 +623,7 @@ cThrownEnderPearlEntity::cThrownEnderPearlEntity(cEntity * a_Creator, double a_X
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cThrownEnderPearlEntity::OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace)
|
void cThrownEnderPearlEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace)
|
||||||
{
|
{
|
||||||
// Teleport the creator here, make them take 5 damage:
|
// Teleport the creator here, make them take 5 damage:
|
||||||
if (m_Creator != NULL)
|
if (m_Creator != NULL)
|
||||||
@ -653,7 +653,7 @@ cThrownSnowballEntity::cThrownSnowballEntity(cEntity * a_Creator, double a_X, do
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cThrownSnowballEntity::OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace)
|
void cThrownSnowballEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace)
|
||||||
{
|
{
|
||||||
// TODO: Apply damage to certain mobs (blaze etc.) and anger all mobs
|
// TODO: Apply damage to certain mobs (blaze etc.) and anger all mobs
|
||||||
|
|
||||||
@ -677,7 +677,7 @@ super(pkExpBottle, a_Creator, a_X, a_Y, a_Z, 0.25, 0.25)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cExpBottleEntity::OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace)
|
void cExpBottleEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace)
|
||||||
{
|
{
|
||||||
// Spawn an experience orb with a reward between 3 and 11.
|
// Spawn an experience orb with a reward between 3 and 11.
|
||||||
m_World->SpawnExperienceOrb(GetPosX(), GetPosY(), GetPosZ(), 3 + m_World->GetTickRandomNumber(8));
|
m_World->SpawnExperienceOrb(GetPosX(), GetPosY(), GetPosZ(), 3 + m_World->GetTickRandomNumber(8));
|
||||||
@ -701,7 +701,7 @@ super(pkFirework, a_Creator, a_X, a_Y, a_Z, 0.25, 0.25)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cFireworkEntity::OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace)
|
void cFireworkEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace)
|
||||||
{
|
{
|
||||||
if ((a_HitFace != BLOCK_FACE_BOTTOM) && (a_HitFace != BLOCK_FACE_NONE))
|
if ((a_HitFace != BLOCK_FACE_BOTTOM) && (a_HitFace != BLOCK_FACE_NONE))
|
||||||
{
|
{
|
||||||
@ -784,7 +784,7 @@ void cGhastFireballEntity::Explode(int a_BlockX, int a_BlockY, int a_BlockZ)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cGhastFireballEntity::OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace)
|
void cGhastFireballEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace)
|
||||||
{
|
{
|
||||||
Destroy();
|
Destroy();
|
||||||
Explode((int)floor(a_HitPos.x), (int)floor(a_HitPos.y), (int)floor(a_HitPos.z));
|
Explode((int)floor(a_HitPos.x), (int)floor(a_HitPos.y), (int)floor(a_HitPos.z));
|
||||||
@ -830,7 +830,7 @@ void cFireChargeEntity::Explode(int a_BlockX, int a_BlockY, int a_BlockZ)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cFireChargeEntity::OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace)
|
void cFireChargeEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace)
|
||||||
{
|
{
|
||||||
Destroy();
|
Destroy();
|
||||||
Explode((int)floor(a_HitPos.x), (int)floor(a_HitPos.y), (int)floor(a_HitPos.z));
|
Explode((int)floor(a_HitPos.x), (int)floor(a_HitPos.y), (int)floor(a_HitPos.z));
|
||||||
|
@ -49,7 +49,7 @@ public:
|
|||||||
static cProjectileEntity * Create(eKind a_Kind, cEntity * a_Creator, double a_X, double a_Y, double a_Z, const Vector3d * a_Speed = NULL);
|
static cProjectileEntity * Create(eKind a_Kind, cEntity * a_Creator, double a_X, double a_Y, double a_Z, const Vector3d * a_Speed = NULL);
|
||||||
|
|
||||||
/// Called by the physics blocktracer when the entity hits a solid block, the hit position and the face hit (BLOCK_FACE_) is given
|
/// Called by the physics blocktracer when the entity hits a solid block, the hit position and the face hit (BLOCK_FACE_) is given
|
||||||
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace);
|
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace);
|
||||||
|
|
||||||
/// Called by the physics blocktracer when the entity hits another entity
|
/// Called by the physics blocktracer when the entity hits another entity
|
||||||
virtual void OnHitEntity(cEntity & a_EntityHit, const Vector3d & a_HitPos)
|
virtual void OnHitEntity(cEntity & a_EntityHit, const Vector3d & a_HitPos)
|
||||||
@ -174,7 +174,7 @@ protected:
|
|||||||
Vector3i m_HitBlockPos;
|
Vector3i m_HitBlockPos;
|
||||||
|
|
||||||
// cProjectileEntity overrides:
|
// cProjectileEntity overrides:
|
||||||
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace) override;
|
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace) override;
|
||||||
virtual void OnHitEntity(cEntity & a_EntityHit, const Vector3d & a_HitPos) override;
|
virtual void OnHitEntity(cEntity & a_EntityHit, const Vector3d & a_HitPos) override;
|
||||||
virtual void CollectedBy(cPlayer * a_Player) override;
|
virtual void CollectedBy(cPlayer * a_Player) override;
|
||||||
virtual void Tick(float a_Dt, cChunk & a_Chunk) override;
|
virtual void Tick(float a_Dt, cChunk & a_Chunk) override;
|
||||||
@ -204,7 +204,7 @@ protected:
|
|||||||
// tolua_end
|
// tolua_end
|
||||||
|
|
||||||
// cProjectileEntity overrides:
|
// cProjectileEntity overrides:
|
||||||
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace) override;
|
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace) override;
|
||||||
|
|
||||||
// tolua_begin
|
// tolua_begin
|
||||||
|
|
||||||
@ -232,7 +232,7 @@ protected:
|
|||||||
// tolua_end
|
// tolua_end
|
||||||
|
|
||||||
// cProjectileEntity overrides:
|
// cProjectileEntity overrides:
|
||||||
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace) override;
|
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace) override;
|
||||||
|
|
||||||
// tolua_begin
|
// tolua_begin
|
||||||
|
|
||||||
@ -258,7 +258,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
|
|
||||||
// cProjectileEntity overrides:
|
// cProjectileEntity overrides:
|
||||||
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace) override;
|
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace) override;
|
||||||
|
|
||||||
// tolua_begin
|
// tolua_begin
|
||||||
|
|
||||||
@ -284,7 +284,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
|
|
||||||
// cProjectileEntity overrides:
|
// cProjectileEntity overrides:
|
||||||
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace) override;
|
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace) override;
|
||||||
|
|
||||||
// tolua_begin
|
// tolua_begin
|
||||||
|
|
||||||
@ -310,7 +310,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
|
|
||||||
// cProjectileEntity overrides:
|
// cProjectileEntity overrides:
|
||||||
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace) override;
|
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace) override;
|
||||||
virtual void HandlePhysics(float a_Dt, cChunk & a_Chunk) override;
|
virtual void HandlePhysics(float a_Dt, cChunk & a_Chunk) override;
|
||||||
|
|
||||||
// tolua_begin
|
// tolua_begin
|
||||||
@ -339,7 +339,7 @@ protected:
|
|||||||
void Explode(int a_BlockX, int a_BlockY, int a_BlockZ);
|
void Explode(int a_BlockX, int a_BlockY, int a_BlockZ);
|
||||||
|
|
||||||
// cProjectileEntity overrides:
|
// cProjectileEntity overrides:
|
||||||
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace) override;
|
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace) override;
|
||||||
virtual void OnHitEntity(cEntity & a_EntityHit, const Vector3d & a_HitPos) override;
|
virtual void OnHitEntity(cEntity & a_EntityHit, const Vector3d & a_HitPos) override;
|
||||||
|
|
||||||
// TODO: Deflecting the fireballs by arrow- or sword- hits
|
// TODO: Deflecting the fireballs by arrow- or sword- hits
|
||||||
@ -370,7 +370,7 @@ protected:
|
|||||||
void Explode(int a_BlockX, int a_BlockY, int a_BlockZ);
|
void Explode(int a_BlockX, int a_BlockY, int a_BlockZ);
|
||||||
|
|
||||||
// cProjectileEntity overrides:
|
// cProjectileEntity overrides:
|
||||||
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, char a_HitFace) override;
|
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace) override;
|
||||||
virtual void OnHitEntity(cEntity & a_EntityHit, const Vector3d & a_HitPos) override;
|
virtual void OnHitEntity(cEntity & a_EntityHit, const Vector3d & a_HitPos) override;
|
||||||
|
|
||||||
// tolua_begin
|
// tolua_begin
|
||||||
|
@ -97,7 +97,7 @@ void cBioGenConstant::InitializeBiomeGen(cIniFile & a_IniFile)
|
|||||||
{
|
{
|
||||||
AString Biome = a_IniFile.GetValueSet("Generator", "ConstantBiome", "Plains");
|
AString Biome = a_IniFile.GetValueSet("Generator", "ConstantBiome", "Plains");
|
||||||
m_Biome = StringToBiome(Biome);
|
m_Biome = StringToBiome(Biome);
|
||||||
if (m_Biome == -1)
|
if (m_Biome == biInvalidBiome)
|
||||||
{
|
{
|
||||||
LOGWARN("[Generator]::ConstantBiome value \"%s\" not recognized, using \"Plains\".", Biome.c_str());
|
LOGWARN("[Generator]::ConstantBiome value \"%s\" not recognized, using \"Plains\".", Biome.c_str());
|
||||||
m_Biome = biPlains;
|
m_Biome = biPlains;
|
||||||
@ -233,7 +233,7 @@ void cBiomeGenList::InitializeBiomes(const AString & a_Biomes)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EMCSBiome Biome = StringToBiome(Split2[0]);
|
EMCSBiome Biome = StringToBiome(Split2[0]);
|
||||||
if (Biome != -1)
|
if (Biome != biInvalidBiome)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < Count; i++)
|
for (int i = 0; i < Count; i++)
|
||||||
{
|
{
|
||||||
@ -500,7 +500,7 @@ void cBioGenMultiStepMap::DecideOceanLandMushroom(int a_ChunkX, int a_ChunkZ, cC
|
|||||||
int OffsetZ = (m_Noise4.IntNoise3DInt(RealCellX, 32 * RealCellX - 16 * RealCellZ, RealCellZ) / 8) % m_OceanCellSize;
|
int OffsetZ = (m_Noise4.IntNoise3DInt(RealCellX, 32 * RealCellX - 16 * RealCellZ, RealCellZ) / 8) % m_OceanCellSize;
|
||||||
SeedX[xc][zc] = CellBlockX + OffsetX;
|
SeedX[xc][zc] = CellBlockX + OffsetX;
|
||||||
SeedZ[xc][zc] = CellBlockZ + OffsetZ;
|
SeedZ[xc][zc] = CellBlockZ + OffsetZ;
|
||||||
SeedV[xc][zc] = (((m_Noise6.IntNoise3DInt(RealCellX, RealCellX - RealCellZ + 1000, RealCellZ) / 11) % 256) > 90) ? biOcean : ((EMCSBiome)(-1));
|
SeedV[xc][zc] = (((m_Noise6.IntNoise3DInt(RealCellX, RealCellX - RealCellZ + 1000, RealCellZ) / 11) % 256) > 90) ? biOcean : (biInvalidBiome);
|
||||||
} // for z
|
} // for z
|
||||||
} // for x
|
} // for x
|
||||||
|
|
||||||
@ -573,7 +573,7 @@ void cBioGenMultiStepMap::AddRivers(int a_ChunkX, int a_ChunkZ, cChunkDef::Biome
|
|||||||
float NoiseCoordZ = (float)(a_ChunkZ * cChunkDef::Width + z) / m_RiverCellSize;
|
float NoiseCoordZ = (float)(a_ChunkZ * cChunkDef::Width + z) / m_RiverCellSize;
|
||||||
for (int x = 0; x < cChunkDef::Width; x++)
|
for (int x = 0; x < cChunkDef::Width; x++)
|
||||||
{
|
{
|
||||||
if (cChunkDef::GetBiome(a_BiomeMap, x, z) != -1)
|
if (cChunkDef::GetBiome(a_BiomeMap, x, z) != biInvalidBiome)
|
||||||
{
|
{
|
||||||
// Biome already set, skip this column
|
// Biome already set, skip this column
|
||||||
continue;
|
continue;
|
||||||
@ -693,7 +693,7 @@ void cBioGenMultiStepMap::DecideLandBiomes(cChunkDef::BiomeMap & a_BiomeMap, con
|
|||||||
int idxZ = 17 * z;
|
int idxZ = 17 * z;
|
||||||
for (int x = 0; x < cChunkDef::Width; x++)
|
for (int x = 0; x < cChunkDef::Width; x++)
|
||||||
{
|
{
|
||||||
if (cChunkDef::GetBiome(a_BiomeMap, x, z) != -1)
|
if (cChunkDef::GetBiome(a_BiomeMap, x, z) != biInvalidBiome)
|
||||||
{
|
{
|
||||||
// Already set before
|
// Already set before
|
||||||
continue;
|
continue;
|
||||||
|
@ -118,9 +118,9 @@ void cChunkDesc::SetBlockMeta(int a_RelX, int a_RelY, int a_RelZ, NIBBLETYPE a_B
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunkDesc::SetBiome(int a_RelX, int a_RelZ, int a_BiomeID)
|
void cChunkDesc::SetBiome(int a_RelX, int a_RelZ, EMCSBiome a_BiomeID)
|
||||||
{
|
{
|
||||||
cChunkDef::SetBiome(m_BiomeMap, a_RelX, a_RelZ, (EMCSBiome)a_BiomeID);
|
cChunkDef::SetBiome(m_BiomeMap, a_RelX, a_RelZ, a_BiomeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ public:
|
|||||||
void SetBlockMeta(int a_RelX, int a_RelY, int a_RelZ, NIBBLETYPE a_BlockMeta);
|
void SetBlockMeta(int a_RelX, int a_RelY, int a_RelZ, NIBBLETYPE a_BlockMeta);
|
||||||
NIBBLETYPE GetBlockMeta(int a_RelX, int a_RelY, int a_RelZ);
|
NIBBLETYPE GetBlockMeta(int a_RelX, int a_RelY, int a_RelZ);
|
||||||
|
|
||||||
void SetBiome(int a_RelX, int a_RelZ, int a_BiomeID);
|
void SetBiome(int a_RelX, int a_RelZ, EMCSBiome a_BiomeID);
|
||||||
EMCSBiome GetBiome(int a_RelX, int a_RelZ);
|
EMCSBiome GetBiome(int a_RelX, int a_RelZ);
|
||||||
|
|
||||||
// These operate on the heightmap, so they could get out of sync with the data
|
// These operate on the heightmap, so they could get out of sync with the data
|
||||||
|
@ -167,16 +167,16 @@ public:
|
|||||||
void FromJson(const Json::Value & a_Value);
|
void FromJson(const Json::Value & a_Value);
|
||||||
|
|
||||||
/// Returns true if the specified item type is enchantable (as per 1.2.5 protocol requirements)
|
/// Returns true if the specified item type is enchantable (as per 1.2.5 protocol requirements)
|
||||||
static bool IsEnchantable(short a_ItemType);
|
static bool IsEnchantable(short a_ItemType); // tolua_export
|
||||||
|
|
||||||
// tolua_begin
|
// tolua_begin
|
||||||
|
|
||||||
short m_ItemType;
|
short m_ItemType;
|
||||||
char m_ItemCount;
|
char m_ItemCount;
|
||||||
short m_ItemDamage;
|
short m_ItemDamage;
|
||||||
|
cEnchantments m_Enchantments;
|
||||||
AString m_CustomName;
|
AString m_CustomName;
|
||||||
AString m_Lore;
|
AString m_Lore;
|
||||||
cEnchantments m_Enchantments;
|
|
||||||
};
|
};
|
||||||
// tolua_end
|
// tolua_end
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -29,9 +29,9 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override
|
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override
|
||||||
{
|
{
|
||||||
if (a_Dir > 0)
|
if (a_Dir != BLOCK_FACE_YM || a_Dir != BLOCK_FACE_NONE)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override
|
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override
|
||||||
{
|
{
|
||||||
ASSERT(a_Player != NULL);
|
ASSERT(a_Player != NULL);
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual void OnItemShoot(cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace) override
|
virtual void OnItemShoot(cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace) override
|
||||||
{
|
{
|
||||||
// Actual shot - produce the arrow with speed based on the ticks that the bow was charged
|
// Actual shot - produce the arrow with speed based on the ticks that the bow was charged
|
||||||
ASSERT(a_Player != NULL);
|
ASSERT(a_Player != NULL);
|
||||||
|
@ -25,7 +25,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -22,7 +22,7 @@ public:
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override
|
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override
|
||||||
{
|
{
|
||||||
switch (m_ItemType)
|
switch (m_ItemType)
|
||||||
{
|
{
|
||||||
@ -93,7 +93,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool PlaceFluid(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, BLOCKTYPE a_FluidBlock)
|
bool PlaceFluid(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, BLOCKTYPE a_FluidBlock)
|
||||||
{
|
{
|
||||||
if (a_BlockFace < 0)
|
if (a_BlockFace < 0)
|
||||||
{
|
{
|
||||||
|
@ -25,7 +25,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -24,7 +24,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -25,7 +25,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -19,7 +19,7 @@ public:
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override
|
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override
|
||||||
{
|
{
|
||||||
// Handle growing the plants:
|
// Handle growing the plants:
|
||||||
if (a_Item.m_ItemDamage == E_META_DYE_WHITE)
|
if (a_Item.m_ItemDamage == E_META_DYE_WHITE)
|
||||||
|
@ -84,7 +84,7 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override
|
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override
|
||||||
{
|
{
|
||||||
if (a_Dir != BLOCK_FACE_NONE)
|
if (a_Dir != BLOCK_FACE_NONE)
|
||||||
{
|
{
|
||||||
|
@ -25,7 +25,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -236,7 +236,7 @@ cItemHandler::cItemHandler(int a_ItemType)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool cItemHandler::OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir)
|
bool cItemHandler::OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -245,7 +245,7 @@ bool cItemHandler::OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem &
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool cItemHandler::OnDiggingBlock(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir)
|
bool cItemHandler::OnDiggingBlock(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -459,7 +459,7 @@ bool cItemHandler::CanHarvestBlock(BLOCKTYPE a_BlockType)
|
|||||||
|
|
||||||
bool cItemHandler::GetPlacementBlockTypeMeta(
|
bool cItemHandler::GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
)
|
)
|
||||||
|
@ -22,10 +22,10 @@ public:
|
|||||||
cItemHandler(int a_ItemType);
|
cItemHandler(int a_ItemType);
|
||||||
|
|
||||||
/// Called when the player tries to use the item (right mouse button). Return false to make the item unusable. DEFAULT: False
|
/// Called when the player tries to use the item (right mouse button). Return false to make the item unusable. DEFAULT: False
|
||||||
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir);
|
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir);
|
||||||
|
|
||||||
/// Called when the client sends the SHOOT status in the lclk packet
|
/// Called when the client sends the SHOOT status in the lclk packet
|
||||||
virtual void OnItemShoot(cPlayer *, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace)
|
virtual void OnItemShoot(cPlayer *, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace)
|
||||||
{
|
{
|
||||||
UNUSED(a_BlockX);
|
UNUSED(a_BlockX);
|
||||||
UNUSED(a_BlockY);
|
UNUSED(a_BlockY);
|
||||||
@ -34,7 +34,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Called while the player diggs a block using this item
|
/// Called while the player diggs a block using this item
|
||||||
virtual bool OnDiggingBlock(cWorld * a_World, cPlayer * a_Player, const cItem & a_HeldItem, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace);
|
virtual bool OnDiggingBlock(cWorld * a_World, cPlayer * a_Player, const cItem & a_HeldItem, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace);
|
||||||
|
|
||||||
/// Called when the player destroys a block using this item. This also calls the drop function for the destroyed block
|
/// Called when the player destroys a block using this item. This also calls the drop function for the destroyed block
|
||||||
virtual void OnBlockDestroyed(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_X, int a_Y, int a_Z);
|
virtual void OnBlockDestroyed(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_X, int a_Y, int a_Z);
|
||||||
@ -80,7 +80,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
);
|
);
|
||||||
|
@ -19,7 +19,7 @@ public:
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool OnItemUse(cWorld *a_World, cPlayer *a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override
|
virtual bool OnItemUse(cWorld *a_World, cPlayer *a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override
|
||||||
{
|
{
|
||||||
BLOCKTYPE Block = a_World->GetBlock(a_BlockX, a_BlockY, a_BlockZ);
|
BLOCKTYPE Block = a_World->GetBlock(a_BlockX, a_BlockY, a_BlockZ);
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -19,7 +19,7 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace) override
|
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace) override
|
||||||
{
|
{
|
||||||
if (a_BlockFace < 0)
|
if (a_BlockFace < 0)
|
||||||
{
|
{
|
||||||
|
@ -28,7 +28,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override
|
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override
|
||||||
{
|
{
|
||||||
if (a_Dir < 0)
|
if (a_Dir < 0)
|
||||||
{
|
{
|
||||||
|
@ -25,7 +25,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -22,7 +22,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -24,7 +24,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -20,7 +20,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -45,7 +45,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -25,7 +25,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual bool OnDiggingBlock(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override
|
virtual bool OnDiggingBlock(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override
|
||||||
{
|
{
|
||||||
BLOCKTYPE Block = a_World->GetBlock(a_BlockX, a_BlockY, a_BlockZ);
|
BLOCKTYPE Block = a_World->GetBlock(a_BlockX, a_BlockY, a_BlockZ);
|
||||||
if (Block == E_BLOCK_LEAVES)
|
if (Block == E_BLOCK_LEAVES)
|
||||||
|
@ -21,7 +21,7 @@ public:
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool OnDiggingBlock(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override
|
virtual bool OnDiggingBlock(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override
|
||||||
{
|
{
|
||||||
BLOCKTYPE Block = a_World->GetBlock(a_BlockX, a_BlockY, a_BlockZ);
|
BLOCKTYPE Block = a_World->GetBlock(a_BlockX, a_BlockY, a_BlockZ);
|
||||||
if (Block == E_BLOCK_SNOW)
|
if (Block == E_BLOCK_SNOW)
|
||||||
|
@ -27,7 +27,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -19,7 +19,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace) override
|
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace) override
|
||||||
{
|
{
|
||||||
if (a_BlockFace < 0)
|
if (a_BlockFace < 0)
|
||||||
{
|
{
|
||||||
|
@ -23,7 +23,7 @@ public:
|
|||||||
|
|
||||||
virtual bool GetPlacementBlockTypeMeta(
|
virtual bool GetPlacementBlockTypeMeta(
|
||||||
cWorld * a_World, cPlayer * a_Player,
|
cWorld * a_World, cPlayer * a_Player,
|
||||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
|
||||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||||
) override
|
) override
|
||||||
|
@ -26,7 +26,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override
|
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override
|
||||||
{
|
{
|
||||||
if (!a_Player->IsGameModeCreative())
|
if (!a_Player->IsGameModeCreative())
|
||||||
{
|
{
|
||||||
@ -120,7 +120,7 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override
|
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override
|
||||||
{
|
{
|
||||||
if (a_World->GetBlock(a_BlockX, a_BlockY, a_BlockZ) == E_BLOCK_AIR)
|
if (a_World->GetBlock(a_BlockX, a_BlockY, a_BlockZ) == E_BLOCK_AIR)
|
||||||
{
|
{
|
||||||
|
@ -191,6 +191,18 @@ void cMonster::MoveToPosition(const Vector3f & a_Position)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void cMonster::MoveToPosition(const Vector3d & a_Position)
|
||||||
|
{
|
||||||
|
FinishPathFinding();
|
||||||
|
|
||||||
|
m_FinalDestination = a_Position;
|
||||||
|
m_bMovingToDestination = true;
|
||||||
|
TickPathFinding();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool cMonster::IsCoordinateInTraversedList(Vector3i a_Coords)
|
bool cMonster::IsCoordinateInTraversedList(Vector3i a_Coords)
|
||||||
{
|
{
|
||||||
for (std::vector<Vector3i>::const_iterator itr = m_TraversedCoordinates.begin(); itr != m_TraversedCoordinates.end(); ++itr)
|
for (std::vector<Vector3i>::const_iterator itr = m_TraversedCoordinates.begin(); itr != m_TraversedCoordinates.end(); ++itr)
|
||||||
|
@ -91,6 +91,7 @@ public:
|
|||||||
virtual void KilledBy(cEntity * a_Killer) override;
|
virtual void KilledBy(cEntity * a_Killer) override;
|
||||||
|
|
||||||
virtual void MoveToPosition(const Vector3f & a_Position);
|
virtual void MoveToPosition(const Vector3f & a_Position);
|
||||||
|
virtual void MoveToPosition(const Vector3d & a_Position); // tolua_export
|
||||||
virtual bool ReachedDestination(void);
|
virtual bool ReachedDestination(void);
|
||||||
|
|
||||||
// tolua_begin
|
// tolua_begin
|
||||||
|
@ -29,7 +29,7 @@ void cSnowGolem::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
|||||||
void cSnowGolem::Tick(float a_Dt, cChunk & a_Chunk)
|
void cSnowGolem::Tick(float a_Dt, cChunk & a_Chunk)
|
||||||
{
|
{
|
||||||
super::Tick(a_Dt, a_Chunk);
|
super::Tick(a_Dt, a_Chunk);
|
||||||
if (IsBiomeNoDownfall((EMCSBiome) m_World->GetBiomeAt((int) floor(GetPosX()), (int) floor(GetPosZ())) ))
|
if (IsBiomeNoDownfall(m_World->GetBiomeAt((int) floor(GetPosX()), (int) floor(GetPosZ())) ))
|
||||||
{
|
{
|
||||||
TakeDamage(*this);
|
TakeDamage(*this);
|
||||||
}
|
}
|
||||||
|
21
src/Piston.h
21
src/Piston.h
@ -2,7 +2,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
#include "Defines.h"
|
||||||
|
|
||||||
|
|
||||||
// fwd: World.h
|
// fwd: World.h
|
||||||
@ -55,6 +55,25 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static eBlockFace MetaDataToDirection(NIBBLETYPE a_MetaData)
|
||||||
|
{
|
||||||
|
switch (a_MetaData)
|
||||||
|
{
|
||||||
|
//case -1: return BLOCK_FACE_NONE; //can never happen as metadata is unsigned
|
||||||
|
case 0x0: return BLOCK_FACE_YM;
|
||||||
|
case 0x1: return BLOCK_FACE_YP;
|
||||||
|
case 0x2: return BLOCK_FACE_ZM;
|
||||||
|
case 0x3: return BLOCK_FACE_ZP;
|
||||||
|
case 0x4: return BLOCK_FACE_XM;
|
||||||
|
case 0x5: return BLOCK_FACE_XP;
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
ASSERT(!"Invalid Metadata");
|
||||||
|
return BLOCK_FACE_NONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ExtendPiston( int, int, int );
|
void ExtendPiston( int, int, int );
|
||||||
void RetractPiston( int, int, int );
|
void RetractPiston( int, int, int );
|
||||||
|
|
||||||
|
@ -1211,7 +1211,7 @@ int cProtocol125::ParseBlockDig(void)
|
|||||||
HANDLE_PACKET_READ(ReadByte, Byte, PosY);
|
HANDLE_PACKET_READ(ReadByte, Byte, PosY);
|
||||||
HANDLE_PACKET_READ(ReadBEInt, int, PosZ);
|
HANDLE_PACKET_READ(ReadBEInt, int, PosZ);
|
||||||
HANDLE_PACKET_READ(ReadChar, char, BlockFace);
|
HANDLE_PACKET_READ(ReadChar, char, BlockFace);
|
||||||
m_Client->HandleLeftClick(PosX, PosY, PosZ, BlockFace, Status);
|
m_Client->HandleLeftClick(PosX, PosY, PosZ, static_cast<eBlockFace>(BlockFace), Status);
|
||||||
return PARSE_OK;
|
return PARSE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1234,7 +1234,7 @@ int cProtocol125::ParseBlockPlace(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 1.2.5 didn't have any cursor position, so use 8, 8, 8, so that halfslabs and stairs work correctly and the special value is recognizable.
|
// 1.2.5 didn't have any cursor position, so use 8, 8, 8, so that halfslabs and stairs work correctly and the special value is recognizable.
|
||||||
m_Client->HandleRightClick(PosX, PosY, PosZ, BlockFace, 8, 8, 8, HeldItem);
|
m_Client->HandleRightClick(PosX, PosY, PosZ, static_cast<eBlockFace>(BlockFace), 8, 8, 8, HeldItem);
|
||||||
return PARSE_OK;
|
return PARSE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -476,7 +476,7 @@ int cProtocol132::ParseBlockPlace(void)
|
|||||||
HANDLE_PACKET_READ(ReadChar, char, CursorY);
|
HANDLE_PACKET_READ(ReadChar, char, CursorY);
|
||||||
HANDLE_PACKET_READ(ReadChar, char, CursorZ);
|
HANDLE_PACKET_READ(ReadChar, char, CursorZ);
|
||||||
|
|
||||||
m_Client->HandleRightClick(PosX, PosY, PosZ, BlockFace, CursorX, CursorY, CursorZ, HeldItem);
|
m_Client->HandleRightClick(PosX, PosY, PosZ, static_cast<eBlockFace>(BlockFace), CursorX, CursorY, CursorZ, HeldItem);
|
||||||
return PARSE_OK;
|
return PARSE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1479,8 +1479,8 @@ void cProtocol172::HandlePacketBlockDig(cByteBuffer & a_ByteBuffer)
|
|||||||
HANDLE_READ(a_ByteBuffer, ReadBEInt, int, BlockX);
|
HANDLE_READ(a_ByteBuffer, ReadBEInt, int, BlockX);
|
||||||
HANDLE_READ(a_ByteBuffer, ReadByte, Byte, BlockY);
|
HANDLE_READ(a_ByteBuffer, ReadByte, Byte, BlockY);
|
||||||
HANDLE_READ(a_ByteBuffer, ReadBEInt, int, BlockZ);
|
HANDLE_READ(a_ByteBuffer, ReadBEInt, int, BlockZ);
|
||||||
HANDLE_READ(a_ByteBuffer, ReadByte, Byte, Face);
|
HANDLE_READ(a_ByteBuffer, ReadChar, char, Face);
|
||||||
m_Client->HandleLeftClick(BlockX, BlockY, BlockZ, Face, Status);
|
m_Client->HandleLeftClick(BlockX, BlockY, BlockZ, static_cast<eBlockFace>(Face), Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1492,14 +1492,14 @@ void cProtocol172::HandlePacketBlockPlace(cByteBuffer & a_ByteBuffer)
|
|||||||
HANDLE_READ(a_ByteBuffer, ReadBEInt, int, BlockX);
|
HANDLE_READ(a_ByteBuffer, ReadBEInt, int, BlockX);
|
||||||
HANDLE_READ(a_ByteBuffer, ReadByte, Byte, BlockY);
|
HANDLE_READ(a_ByteBuffer, ReadByte, Byte, BlockY);
|
||||||
HANDLE_READ(a_ByteBuffer, ReadBEInt, int, BlockZ);
|
HANDLE_READ(a_ByteBuffer, ReadBEInt, int, BlockZ);
|
||||||
HANDLE_READ(a_ByteBuffer, ReadByte, Byte, Face);
|
HANDLE_READ(a_ByteBuffer, ReadChar, char, Face);
|
||||||
cItem Item;
|
cItem Item;
|
||||||
ReadItem(a_ByteBuffer, Item);
|
ReadItem(a_ByteBuffer, Item);
|
||||||
|
|
||||||
HANDLE_READ(a_ByteBuffer, ReadByte, Byte, CursorX);
|
HANDLE_READ(a_ByteBuffer, ReadByte, Byte, CursorX);
|
||||||
HANDLE_READ(a_ByteBuffer, ReadByte, Byte, CursorY);
|
HANDLE_READ(a_ByteBuffer, ReadByte, Byte, CursorY);
|
||||||
HANDLE_READ(a_ByteBuffer, ReadByte, Byte, CursorZ);
|
HANDLE_READ(a_ByteBuffer, ReadByte, Byte, CursorZ);
|
||||||
m_Client->HandleRightClick(BlockX, BlockY, BlockZ, Face, CursorX, CursorY, CursorZ, m_Client->GetPlayer()->GetEquippedItem());
|
m_Client->HandleRightClick(BlockX, BlockY, BlockZ, static_cast<eBlockFace>(Face), CursorX, CursorY, CursorZ, m_Client->GetPlayer()->GetEquippedItem());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -166,14 +166,12 @@ Direction cFluidSimulator::GetFlowingDirection(int a_X, int a_Y, int a_Z, bool a
|
|||||||
{
|
{
|
||||||
LowestPoint = Meta;
|
LowestPoint = Meta;
|
||||||
X = Pos->x;
|
X = Pos->x;
|
||||||
Pos->y; //Remove if no side effects
|
|
||||||
Z = Pos->z;
|
Z = Pos->z;
|
||||||
}
|
}
|
||||||
}else if(BlockID == E_BLOCK_AIR)
|
}else if(BlockID == E_BLOCK_AIR)
|
||||||
{
|
{
|
||||||
LowestPoint = 9; //This always dominates
|
LowestPoint = 9; //This always dominates
|
||||||
X = Pos->x;
|
X = Pos->x;
|
||||||
Pos->y; //Remove if no side effects
|
|
||||||
Z = Pos->z;
|
Z = Pos->z;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1112,12 +1112,13 @@ bool cRedstoneSimulator::IsPistonPowered(int a_BlockX, int a_BlockY, int a_Block
|
|||||||
// Pistons cannot be powered through their front face; this function verifies that a source meets this requirement
|
// Pistons cannot be powered through their front face; this function verifies that a source meets this requirement
|
||||||
|
|
||||||
int OldX = a_BlockX, OldY = a_BlockY, OldZ = a_BlockZ;
|
int OldX = a_BlockX, OldY = a_BlockY, OldZ = a_BlockZ;
|
||||||
|
eBlockFace Face = cPiston::MetaDataToDirection(a_Meta);
|
||||||
|
|
||||||
for (PoweredBlocksList::const_iterator itr = m_PoweredBlocks.begin(); itr != m_PoweredBlocks.end(); ++itr)
|
for (PoweredBlocksList::const_iterator itr = m_PoweredBlocks.begin(); itr != m_PoweredBlocks.end(); ++itr)
|
||||||
{
|
{
|
||||||
if (!itr->a_BlockPos.Equals(Vector3i(a_BlockX, a_BlockY, a_BlockZ))) { continue; }
|
if (!itr->a_BlockPos.Equals(Vector3i(a_BlockX, a_BlockY, a_BlockZ))) { continue; }
|
||||||
|
|
||||||
AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_Meta); // Piston meta is based on what direction they face, so we can do this
|
AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, Face);
|
||||||
|
|
||||||
if (!itr->a_SourcePos.Equals(Vector3i(a_BlockX, a_BlockY, a_BlockZ)))
|
if (!itr->a_SourcePos.Equals(Vector3i(a_BlockX, a_BlockY, a_BlockZ)))
|
||||||
{
|
{
|
||||||
@ -1133,7 +1134,7 @@ bool cRedstoneSimulator::IsPistonPowered(int a_BlockX, int a_BlockY, int a_Block
|
|||||||
{
|
{
|
||||||
if (!itr->a_BlockPos.Equals(Vector3i(a_BlockX, a_BlockY, a_BlockZ))) { continue; }
|
if (!itr->a_BlockPos.Equals(Vector3i(a_BlockX, a_BlockY, a_BlockZ))) { continue; }
|
||||||
|
|
||||||
AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_Meta);
|
AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, Face);
|
||||||
|
|
||||||
if (!itr->a_MiddlePos.Equals(Vector3i(a_BlockX, a_BlockY, a_BlockZ)))
|
if (!itr->a_MiddlePos.Equals(Vector3i(a_BlockX, a_BlockY, a_BlockZ)))
|
||||||
{
|
{
|
||||||
|
@ -1225,7 +1225,7 @@ void cWorld::GrowTreeByBiome(int a_X, int a_Y, int a_Z)
|
|||||||
{
|
{
|
||||||
cNoise Noise(m_Generator.GetSeed());
|
cNoise Noise(m_Generator.GetSeed());
|
||||||
sSetBlockVector Logs, Other;
|
sSetBlockVector Logs, Other;
|
||||||
GetTreeImageByBiome(a_X, a_Y, a_Z, Noise, (int)(m_WorldAge & 0xffffffff), (EMCSBiome)GetBiomeAt(a_X, a_Z), Logs, Other);
|
GetTreeImageByBiome(a_X, a_Y, a_Z, Noise, (int)(m_WorldAge & 0xffffffff), GetBiomeAt(a_X, a_Z), Logs, Other);
|
||||||
Other.insert(Other.begin(), Logs.begin(), Logs.end());
|
Other.insert(Other.begin(), Logs.begin(), Logs.end());
|
||||||
Logs.clear();
|
Logs.clear();
|
||||||
GrowTreeImage(Other);
|
GrowTreeImage(Other);
|
||||||
@ -1478,7 +1478,7 @@ void cWorld::GrowSugarcane(int a_BlockX, int a_BlockY, int a_BlockZ, int a_NumBl
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
int cWorld::GetBiomeAt (int a_BlockX, int a_BlockZ)
|
EMCSBiome cWorld::GetBiomeAt (int a_BlockX, int a_BlockZ)
|
||||||
{
|
{
|
||||||
return m_ChunkMap->GetBiomeAt(a_BlockX, a_BlockZ);
|
return m_ChunkMap->GetBiomeAt(a_BlockX, a_BlockZ);
|
||||||
}
|
}
|
||||||
@ -2342,7 +2342,7 @@ bool cWorld::FindAndDoWithPlayer(const AString & a_PlayerNameHint, cPlayerListCa
|
|||||||
|
|
||||||
|
|
||||||
// TODO: This interface is dangerous!
|
// TODO: This interface is dangerous!
|
||||||
cPlayer * cWorld::FindClosestPlayer(const Vector3f & a_Pos, float a_SightLimit, bool a_CheckLineOfSight)
|
cPlayer * cWorld::FindClosestPlayer(const Vector3d & a_Pos, float a_SightLimit, bool a_CheckLineOfSight)
|
||||||
{
|
{
|
||||||
cTracer LineOfSight(this);
|
cTracer LineOfSight(this);
|
||||||
|
|
||||||
|
@ -260,7 +260,7 @@ public:
|
|||||||
bool FindAndDoWithPlayer(const AString & a_PlayerNameHint, cPlayerListCallback & a_Callback); // >> EXPORTED IN MANUALBINDINGS <<
|
bool FindAndDoWithPlayer(const AString & a_PlayerNameHint, cPlayerListCallback & a_Callback); // >> EXPORTED IN MANUALBINDINGS <<
|
||||||
|
|
||||||
// TODO: This interface is dangerous - rewrite to DoWithClosestPlayer(pos, sight, action)
|
// TODO: This interface is dangerous - rewrite to DoWithClosestPlayer(pos, sight, action)
|
||||||
cPlayer * FindClosestPlayer(const Vector3f & a_Pos, float a_SightLimit, bool a_CheckLineOfSight = true);
|
cPlayer * FindClosestPlayer(const Vector3d & a_Pos, float a_SightLimit, bool a_CheckLineOfSight = true);
|
||||||
|
|
||||||
void SendPlayerList(cPlayer * a_DestPlayer); // Sends playerlist to the player
|
void SendPlayerList(cPlayer * a_DestPlayer); // Sends playerlist to the player
|
||||||
|
|
||||||
@ -538,7 +538,7 @@ public:
|
|||||||
void GrowSugarcane(int a_BlockX, int a_BlockY, int a_BlockZ, int a_NumBlocksToGrow);
|
void GrowSugarcane(int a_BlockX, int a_BlockY, int a_BlockZ, int a_NumBlocksToGrow);
|
||||||
|
|
||||||
/** Returns the biome at the specified coords. Reads the biome from the chunk, if loaded, otherwise uses the world generator to provide the biome value */
|
/** Returns the biome at the specified coords. Reads the biome from the chunk, if loaded, otherwise uses the world generator to provide the biome value */
|
||||||
int GetBiomeAt(int a_BlockX, int a_BlockZ);
|
EMCSBiome GetBiomeAt(int a_BlockX, int a_BlockZ);
|
||||||
|
|
||||||
/** Returns the name of the world */
|
/** Returns the name of the world */
|
||||||
const AString & GetName(void) const { return m_WorldName; }
|
const AString & GetName(void) const { return m_WorldName; }
|
||||||
|
Loading…
Reference in New Issue
Block a user