Added OnExploding() and OnExploded() hooks.
As requested in FS 413, with extra parameters: World, BlockX, BlockY, BlockZ, Size, CanCauseFire, Source, SourceData OnExploding() can return 3 values: StopHook, CanCauseFire, ExplosionSize
This commit is contained in:
parent
6f2c099f70
commit
d4a3c451c4
@ -1,6 +1,6 @@
|
||||
/*
|
||||
** Lua binding: AllToLua
|
||||
** Generated automatically by tolua++-1.0.92 on 08/08/13 09:04:23.
|
||||
** Generated automatically by tolua++-1.0.92 on 08/09/13 14:50:49.
|
||||
*/
|
||||
|
||||
#ifndef __cplusplus
|
||||
@ -9368,6 +9368,38 @@ static int tolua_AllToLua_cPlayer_GetFoodPoisonedTicksRemaining00(lua_State* tol
|
||||
}
|
||||
#endif //#ifndef TOLUA_DISABLE
|
||||
|
||||
/* method: GetAirLevel of class cPlayer */
|
||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_cPlayer_GetAirLevel00
|
||||
static int tolua_AllToLua_cPlayer_GetAirLevel00(lua_State* tolua_S)
|
||||
{
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_Error tolua_err;
|
||||
if (
|
||||
!tolua_isusertype(tolua_S,1,"const cPlayer",0,&tolua_err) ||
|
||||
!tolua_isnoobj(tolua_S,2,&tolua_err)
|
||||
)
|
||||
goto tolua_lerror;
|
||||
else
|
||||
#endif
|
||||
{
|
||||
const cPlayer* self = (const cPlayer*) tolua_tousertype(tolua_S,1,0);
|
||||
#ifndef TOLUA_RELEASE
|
||||
if (!self) tolua_error(tolua_S,"invalid 'self' in function 'GetAirLevel'", NULL);
|
||||
#endif
|
||||
{
|
||||
int tolua_ret = (int) self->GetAirLevel();
|
||||
tolua_pushnumber(tolua_S,(lua_Number)tolua_ret);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_lerror:
|
||||
tolua_error(tolua_S,"#ferror in function 'GetAirLevel'.",&tolua_err);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
#endif //#ifndef TOLUA_DISABLE
|
||||
|
||||
/* method: IsSatiated of class cPlayer */
|
||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_cPlayer_IsSatiated00
|
||||
static int tolua_AllToLua_cPlayer_IsSatiated00(lua_State* tolua_S)
|
||||
@ -10086,6 +10118,70 @@ static int tolua_AllToLua_cPlayer_SetSprint00(lua_State* tolua_S)
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
#endif //#ifndef TOLUA_DISABLE
|
||||
|
||||
/* method: IsSwimming of class cPlayer */
|
||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_cPlayer_IsSwimming00
|
||||
static int tolua_AllToLua_cPlayer_IsSwimming00(lua_State* tolua_S)
|
||||
{
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_Error tolua_err;
|
||||
if (
|
||||
!tolua_isusertype(tolua_S,1,"const cPlayer",0,&tolua_err) ||
|
||||
!tolua_isnoobj(tolua_S,2,&tolua_err)
|
||||
)
|
||||
goto tolua_lerror;
|
||||
else
|
||||
#endif
|
||||
{
|
||||
const cPlayer* self = (const cPlayer*) tolua_tousertype(tolua_S,1,0);
|
||||
#ifndef TOLUA_RELEASE
|
||||
if (!self) tolua_error(tolua_S,"invalid 'self' in function 'IsSwimming'", NULL);
|
||||
#endif
|
||||
{
|
||||
bool tolua_ret = (bool) self->IsSwimming();
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_lerror:
|
||||
tolua_error(tolua_S,"#ferror in function 'IsSwimming'.",&tolua_err);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
#endif //#ifndef TOLUA_DISABLE
|
||||
|
||||
/* method: IsSubmerged of class cPlayer */
|
||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_cPlayer_IsSubmerged00
|
||||
static int tolua_AllToLua_cPlayer_IsSubmerged00(lua_State* tolua_S)
|
||||
{
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_Error tolua_err;
|
||||
if (
|
||||
!tolua_isusertype(tolua_S,1,"const cPlayer",0,&tolua_err) ||
|
||||
!tolua_isnoobj(tolua_S,2,&tolua_err)
|
||||
)
|
||||
goto tolua_lerror;
|
||||
else
|
||||
#endif
|
||||
{
|
||||
const cPlayer* self = (const cPlayer*) tolua_tousertype(tolua_S,1,0);
|
||||
#ifndef TOLUA_RELEASE
|
||||
if (!self) tolua_error(tolua_S,"invalid 'self' in function 'IsSubmerged'", NULL);
|
||||
#endif
|
||||
{
|
||||
bool tolua_ret = (bool) self->IsSubmerged();
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_lerror:
|
||||
tolua_error(tolua_S,"#ferror in function 'IsSubmerged'.",&tolua_err);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
#endif //#ifndef TOLUA_DISABLE
|
||||
|
||||
class Lua__cPlayer : public cPlayer, public ToluaBase {
|
||||
@ -10108,6 +10204,26 @@ public:
|
||||
} else {
|
||||
return ( void ) cPlayer:: MoveTo(a_NewPos);
|
||||
};
|
||||
};
|
||||
bool IsSwimming( void )const {
|
||||
if (push_method("IsSwimming", tolua_AllToLua_cPlayer_IsSwimming00)) {
|
||||
ToluaBase::dbcall(lua_state, 1, 1);
|
||||
bool tolua_ret = ( bool )tolua_toboolean(lua_state, -1, 0);
|
||||
lua_pop(lua_state, 1);
|
||||
return tolua_ret;
|
||||
} else {
|
||||
return ( bool ) cPlayer:: IsSwimming();
|
||||
};
|
||||
};
|
||||
bool IsSubmerged( void )const {
|
||||
if (push_method("IsSubmerged", tolua_AllToLua_cPlayer_IsSubmerged00)) {
|
||||
ToluaBase::dbcall(lua_state, 1, 1);
|
||||
bool tolua_ret = ( bool )tolua_toboolean(lua_state, -1, 0);
|
||||
lua_pop(lua_state, 1);
|
||||
return tolua_ret;
|
||||
} else {
|
||||
return ( bool ) cPlayer:: IsSubmerged();
|
||||
};
|
||||
};
|
||||
bool IsA( const char* a_ClassName)const {
|
||||
if (push_method("IsA", tolua_AllToLua_cEntity_IsA00)) {
|
||||
@ -10307,6 +10423,12 @@ public:
|
||||
};
|
||||
void cPlayer__MoveTo( const Vector3d& a_NewPos) {
|
||||
return ( void )cPlayer::MoveTo(a_NewPos);
|
||||
};
|
||||
bool cPlayer__IsSwimming( void ) {
|
||||
return ( bool )cPlayer::IsSwimming();
|
||||
};
|
||||
bool cPlayer__IsSubmerged( void ) {
|
||||
return ( bool )cPlayer::IsSubmerged();
|
||||
};
|
||||
bool cPlayer__IsA( const char* a_ClassName) {
|
||||
return ( bool )cPlayer::IsA(a_ClassName);
|
||||
@ -10467,6 +10589,70 @@ static int tolua_AllToLua_Lua__cPlayer_cPlayer__MoveTo00(lua_State* tolua_S)
|
||||
}
|
||||
#endif //#ifndef TOLUA_DISABLE
|
||||
|
||||
/* method: cPlayer__IsSwimming of class Lua__cPlayer */
|
||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_Lua__cPlayer_cPlayer__IsSwimming00
|
||||
static int tolua_AllToLua_Lua__cPlayer_cPlayer__IsSwimming00(lua_State* tolua_S)
|
||||
{
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_Error tolua_err;
|
||||
if (
|
||||
!tolua_isusertype(tolua_S,1,"Lua__cPlayer",0,&tolua_err) ||
|
||||
!tolua_isnoobj(tolua_S,2,&tolua_err)
|
||||
)
|
||||
goto tolua_lerror;
|
||||
else
|
||||
#endif
|
||||
{
|
||||
Lua__cPlayer* self = (Lua__cPlayer*) tolua_tousertype(tolua_S,1,0);
|
||||
#ifndef TOLUA_RELEASE
|
||||
if (!self) tolua_error(tolua_S,"invalid 'self' in function 'cPlayer__IsSwimming'", NULL);
|
||||
#endif
|
||||
{
|
||||
bool tolua_ret = (bool) self->cPlayer__IsSwimming();
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_lerror:
|
||||
tolua_error(tolua_S,"#ferror in function 'cPlayer__IsSwimming'.",&tolua_err);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
#endif //#ifndef TOLUA_DISABLE
|
||||
|
||||
/* method: cPlayer__IsSubmerged of class Lua__cPlayer */
|
||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_Lua__cPlayer_cPlayer__IsSubmerged00
|
||||
static int tolua_AllToLua_Lua__cPlayer_cPlayer__IsSubmerged00(lua_State* tolua_S)
|
||||
{
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_Error tolua_err;
|
||||
if (
|
||||
!tolua_isusertype(tolua_S,1,"Lua__cPlayer",0,&tolua_err) ||
|
||||
!tolua_isnoobj(tolua_S,2,&tolua_err)
|
||||
)
|
||||
goto tolua_lerror;
|
||||
else
|
||||
#endif
|
||||
{
|
||||
Lua__cPlayer* self = (Lua__cPlayer*) tolua_tousertype(tolua_S,1,0);
|
||||
#ifndef TOLUA_RELEASE
|
||||
if (!self) tolua_error(tolua_S,"invalid 'self' in function 'cPlayer__IsSubmerged'", NULL);
|
||||
#endif
|
||||
{
|
||||
bool tolua_ret = (bool) self->cPlayer__IsSubmerged();
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_lerror:
|
||||
tolua_error(tolua_S,"#ferror in function 'cPlayer__IsSubmerged'.",&tolua_err);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
#endif //#ifndef TOLUA_DISABLE
|
||||
|
||||
/* method: Get of class cPluginManager */
|
||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_cPluginManager_Get00
|
||||
static int tolua_AllToLua_cPluginManager_Get00(lua_State* tolua_S)
|
||||
@ -12526,7 +12712,7 @@ static int tolua_AllToLua_cWorld_SpawnPrimedTNT00(lua_State* tolua_S)
|
||||
double a_X = ((double) tolua_tonumber(tolua_S,2,0));
|
||||
double a_Y = ((double) tolua_tonumber(tolua_S,3,0));
|
||||
double a_Z = ((double) tolua_tonumber(tolua_S,4,0));
|
||||
float a_FuseTimeInSec = ((float) tolua_tonumber(tolua_S,5,0));
|
||||
double a_FuseTimeInSec = ((double) tolua_tonumber(tolua_S,5,0));
|
||||
double a_InitialVelocityCoeff = ((double) tolua_tonumber(tolua_S,6,1));
|
||||
#ifndef TOLUA_RELEASE
|
||||
if (!self) tolua_error(tolua_S,"invalid 'self' in function 'SpawnPrimedTNT'", NULL);
|
||||
@ -18826,6 +19012,34 @@ static int tolua_set_sWebAdminPage_TabName(lua_State* tolua_S)
|
||||
}
|
||||
#endif //#ifndef TOLUA_DISABLE
|
||||
|
||||
/* method: GetMemoryUsage of class cWebAdmin */
|
||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_cWebAdmin_GetMemoryUsage00
|
||||
static int tolua_AllToLua_cWebAdmin_GetMemoryUsage00(lua_State* tolua_S)
|
||||
{
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_Error tolua_err;
|
||||
if (
|
||||
!tolua_isusertable(tolua_S,1,"cWebAdmin",0,&tolua_err) ||
|
||||
!tolua_isnoobj(tolua_S,2,&tolua_err)
|
||||
)
|
||||
goto tolua_lerror;
|
||||
else
|
||||
#endif
|
||||
{
|
||||
{
|
||||
AString tolua_ret = (AString) cWebAdmin::GetMemoryUsage();
|
||||
tolua_pushcppstring(tolua_S,(const char*)tolua_ret);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_lerror:
|
||||
tolua_error(tolua_S,"#ferror in function 'GetMemoryUsage'.",&tolua_err);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
#endif //#ifndef TOLUA_DISABLE
|
||||
|
||||
/* method: GetPort of class cWebAdmin */
|
||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_cWebAdmin_GetPort00
|
||||
static int tolua_AllToLua_cWebAdmin_GetPort00(lua_State* tolua_S)
|
||||
@ -18937,34 +19151,6 @@ static int tolua_AllToLua_cWebAdmin_GetBaseURL00(lua_State* tolua_S)
|
||||
}
|
||||
#endif //#ifndef TOLUA_DISABLE
|
||||
|
||||
/* method: GetMemoryUsage of class cWebAdmin */
|
||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_cWebAdmin_GetMemoryUsage00
|
||||
static int tolua_AllToLua_cWebAdmin_GetMemoryUsage00(lua_State* tolua_S)
|
||||
{
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_Error tolua_err;
|
||||
if (
|
||||
!tolua_isusertable(tolua_S,1,"cWebAdmin",0,&tolua_err) ||
|
||||
!tolua_isnoobj(tolua_S,2,&tolua_err)
|
||||
)
|
||||
goto tolua_lerror;
|
||||
else
|
||||
#endif
|
||||
{
|
||||
{
|
||||
AString tolua_ret = (AString) cWebAdmin::GetMemoryUsage();
|
||||
tolua_pushcppstring(tolua_S,(const char*)tolua_ret);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_lerror:
|
||||
tolua_error(tolua_S,"#ferror in function 'GetMemoryUsage'.",&tolua_err);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
#endif //#ifndef TOLUA_DISABLE
|
||||
|
||||
/* method: GetWebTitle of class cWebPlugin */
|
||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_cWebPlugin_GetWebTitle00
|
||||
static int tolua_AllToLua_cWebPlugin_GetWebTitle00(lua_State* tolua_S)
|
||||
@ -29139,6 +29325,16 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S)
|
||||
tolua_constant(tolua_S,"dtBurning",dtBurning);
|
||||
tolua_constant(tolua_S,"dtInFire",dtInFire);
|
||||
tolua_constant(tolua_S,"dtPlugin",dtPlugin);
|
||||
tolua_constant(tolua_S,"esOther",esOther);
|
||||
tolua_constant(tolua_S,"esPrimedTNT",esPrimedTNT);
|
||||
tolua_constant(tolua_S,"esCreeper",esCreeper);
|
||||
tolua_constant(tolua_S,"esBed",esBed);
|
||||
tolua_constant(tolua_S,"esEnderCrystal",esEnderCrystal);
|
||||
tolua_constant(tolua_S,"esGhastFireball",esGhastFireball);
|
||||
tolua_constant(tolua_S,"esWitherSkullBlue",esWitherSkullBlue);
|
||||
tolua_constant(tolua_S,"esWitherSkullBlack",esWitherSkullBlack);
|
||||
tolua_constant(tolua_S,"esWitherBirth",esWitherBirth);
|
||||
tolua_constant(tolua_S,"esPlugin",esPlugin);
|
||||
tolua_function(tolua_S,"BlockStringToType",tolua_AllToLua_BlockStringToType00);
|
||||
tolua_function(tolua_S,"StringToItem",tolua_AllToLua_StringToItem00);
|
||||
tolua_function(tolua_S,"ItemToString",tolua_AllToLua_ItemToString00);
|
||||
@ -29436,6 +29632,8 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S)
|
||||
tolua_constant(tolua_S,"MAX_HEALTH",cPlayer::MAX_HEALTH);
|
||||
tolua_constant(tolua_S,"MAX_FOOD_LEVEL",cPlayer::MAX_FOOD_LEVEL);
|
||||
tolua_constant(tolua_S,"EATING_TICKS",cPlayer::EATING_TICKS);
|
||||
tolua_constant(tolua_S,"MAX_AIR_LEVEL",cPlayer::MAX_AIR_LEVEL);
|
||||
tolua_constant(tolua_S,"DROWNING_TICKS",cPlayer::DROWNING_TICKS);
|
||||
tolua_function(tolua_S,"Initialize",tolua_AllToLua_cPlayer_Initialize00);
|
||||
tolua_function(tolua_S,"GetEyeHeight",tolua_AllToLua_cPlayer_GetEyeHeight00);
|
||||
tolua_function(tolua_S,"GetEyePosition",tolua_AllToLua_cPlayer_GetEyePosition00);
|
||||
@ -29470,6 +29668,7 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S)
|
||||
tolua_function(tolua_S,"GetFoodTickTimer",tolua_AllToLua_cPlayer_GetFoodTickTimer00);
|
||||
tolua_function(tolua_S,"GetFoodExhaustionLevel",tolua_AllToLua_cPlayer_GetFoodExhaustionLevel00);
|
||||
tolua_function(tolua_S,"GetFoodPoisonedTicksRemaining",tolua_AllToLua_cPlayer_GetFoodPoisonedTicksRemaining00);
|
||||
tolua_function(tolua_S,"GetAirLevel",tolua_AllToLua_cPlayer_GetAirLevel00);
|
||||
tolua_function(tolua_S,"IsSatiated",tolua_AllToLua_cPlayer_IsSatiated00);
|
||||
tolua_function(tolua_S,"SetFoodLevel",tolua_AllToLua_cPlayer_SetFoodLevel00);
|
||||
tolua_function(tolua_S,"SetFoodSaturationLevel",tolua_AllToLua_cPlayer_SetFoodSaturationLevel00);
|
||||
@ -29492,12 +29691,16 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S)
|
||||
tolua_function(tolua_S,"SetSprintingMaxSpeed",tolua_AllToLua_cPlayer_SetSprintingMaxSpeed00);
|
||||
tolua_function(tolua_S,"SetCrouch",tolua_AllToLua_cPlayer_SetCrouch00);
|
||||
tolua_function(tolua_S,"SetSprint",tolua_AllToLua_cPlayer_SetSprint00);
|
||||
tolua_function(tolua_S,"IsSwimming",tolua_AllToLua_cPlayer_IsSwimming00);
|
||||
tolua_function(tolua_S,"IsSubmerged",tolua_AllToLua_cPlayer_IsSubmerged00);
|
||||
tolua_endmodule(tolua_S);
|
||||
tolua_cclass(tolua_S,"Lua__cPlayer","Lua__cPlayer","cPlayer",NULL);
|
||||
tolua_beginmodule(tolua_S,"Lua__cPlayer");
|
||||
tolua_function(tolua_S,"tolua__set_instance",tolua_AllToLua_Lua__cPlayer_tolua__set_instance00);
|
||||
tolua_function(tolua_S,"cPlayer__Initialize",tolua_AllToLua_Lua__cPlayer_cPlayer__Initialize00);
|
||||
tolua_function(tolua_S,"cPlayer__MoveTo",tolua_AllToLua_Lua__cPlayer_cPlayer__MoveTo00);
|
||||
tolua_function(tolua_S,"cPlayer__IsSwimming",tolua_AllToLua_Lua__cPlayer_cPlayer__IsSwimming00);
|
||||
tolua_function(tolua_S,"cPlayer__IsSubmerged",tolua_AllToLua_Lua__cPlayer_cPlayer__IsSubmerged00);
|
||||
tolua_endmodule(tolua_S);
|
||||
tolua_cclass(tolua_S,"cPluginManager","cPluginManager","",NULL);
|
||||
tolua_beginmodule(tolua_S,"cPluginManager");
|
||||
@ -29512,6 +29715,8 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S)
|
||||
tolua_constant(tolua_S,"HOOK_CRAFTING_NO_RECIPE",cPluginManager::HOOK_CRAFTING_NO_RECIPE);
|
||||
tolua_constant(tolua_S,"HOOK_DISCONNECT",cPluginManager::HOOK_DISCONNECT);
|
||||
tolua_constant(tolua_S,"HOOK_EXECUTE_COMMAND",cPluginManager::HOOK_EXECUTE_COMMAND);
|
||||
tolua_constant(tolua_S,"HOOK_EXPLODED",cPluginManager::HOOK_EXPLODED);
|
||||
tolua_constant(tolua_S,"HOOK_EXPLODING",cPluginManager::HOOK_EXPLODING);
|
||||
tolua_constant(tolua_S,"HOOK_HANDSHAKE",cPluginManager::HOOK_HANDSHAKE);
|
||||
tolua_constant(tolua_S,"HOOK_KILLING",cPluginManager::HOOK_KILLING);
|
||||
tolua_constant(tolua_S,"HOOK_LOGIN",cPluginManager::HOOK_LOGIN);
|
||||
@ -29942,10 +30147,10 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S)
|
||||
tolua_endmodule(tolua_S);
|
||||
tolua_cclass(tolua_S,"cWebAdmin","cWebAdmin","",NULL);
|
||||
tolua_beginmodule(tolua_S,"cWebAdmin");
|
||||
tolua_function(tolua_S,"GetMemoryUsage",tolua_AllToLua_cWebAdmin_GetMemoryUsage00);
|
||||
tolua_function(tolua_S,"GetPort",tolua_AllToLua_cWebAdmin_GetPort00);
|
||||
tolua_function(tolua_S,"GetPage",tolua_AllToLua_cWebAdmin_GetPage00);
|
||||
tolua_function(tolua_S,"GetBaseURL",tolua_AllToLua_cWebAdmin_GetBaseURL00);
|
||||
tolua_function(tolua_S,"GetMemoryUsage",tolua_AllToLua_cWebAdmin_GetMemoryUsage00);
|
||||
tolua_endmodule(tolua_S);
|
||||
tolua_cclass(tolua_S,"cWebPlugin","cWebPlugin","",NULL);
|
||||
tolua_beginmodule(tolua_S,"cWebPlugin");
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
** Lua binding: AllToLua
|
||||
** Generated automatically by tolua++-1.0.92 on 08/08/13 09:04:23.
|
||||
** Generated automatically by tolua++-1.0.92 on 08/09/13 14:50:49.
|
||||
*/
|
||||
|
||||
/* Exported function */
|
||||
|
@ -658,6 +658,24 @@ enum eDamageType
|
||||
dtPlugin = dtAdmin,
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum eExplosionSource
|
||||
{
|
||||
esOther,
|
||||
esPrimedTNT,
|
||||
esCreeper,
|
||||
esBed,
|
||||
esEnderCrystal,
|
||||
esGhastFireball,
|
||||
esWitherSkullBlack,
|
||||
esWitherSkullBlue,
|
||||
esWitherBirth,
|
||||
esPlugin
|
||||
} ;
|
||||
|
||||
// tolua_end
|
||||
|
||||
|
||||
|
@ -53,10 +53,13 @@ void cBlockBedHandler::OnDestroyed(cWorld * a_World, int a_BlockX, int a_BlockY,
|
||||
|
||||
void cBlockBedHandler::OnUse(cWorld *a_World, cPlayer *a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ)
|
||||
{
|
||||
if (a_World->GetDimension() != 0)
|
||||
if (a_World->GetDimension() != dimOverworld)
|
||||
{
|
||||
Vector3i Coords(a_BlockX, a_BlockY, a_BlockZ);
|
||||
a_World->DoExplosiontAt(5, a_BlockX, a_BlockY, a_BlockZ, true, esBed, &Coords);
|
||||
}
|
||||
else
|
||||
{
|
||||
a_World->DoExplosiontAt(5, a_BlockX, a_BlockY, a_BlockZ);
|
||||
} else {
|
||||
if (a_World->GetTimeOfDay() > 13000)
|
||||
{
|
||||
NIBBLETYPE Meta = a_World->GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ);
|
||||
|
@ -1546,16 +1546,16 @@ bool cChunkMap::ForEachEntityInChunk(int a_ChunkX, int a_ChunkZ, cEntityCallback
|
||||
|
||||
|
||||
|
||||
void cChunkMap::DoExplosiontAt(float a_ExplosionSize, int a_BlockX, int a_BlockY, int a_BlockZ, cVector3iArray & a_BlocksAffected)
|
||||
void cChunkMap::DoExplosiontAt(double a_ExplosionSize, double a_BlockX, double a_BlockY, double a_BlockZ, cVector3iArray & a_BlocksAffected)
|
||||
{
|
||||
// Don't explode if outside of Y range (prevents the following test running into unallocated memory):
|
||||
if ((a_BlockY < 0) || (a_BlockY >= cChunkDef::Height))
|
||||
if ((a_BlockY < 0) || (a_BlockY > cChunkDef::Height - 1))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Don't explode if the explosion center is inside a liquid block:
|
||||
switch (m_World->GetBlock(a_BlockX, a_BlockY, a_BlockZ))
|
||||
switch (m_World->GetBlock((int)floor(a_BlockX), (int)floor(a_BlockY), (int)floor(a_BlockZ)))
|
||||
{
|
||||
case E_BLOCK_WATER:
|
||||
case E_BLOCK_STATIONARY_WATER:
|
||||
@ -1567,17 +1567,20 @@ void cChunkMap::DoExplosiontAt(float a_ExplosionSize, int a_BlockX, int a_BlockY
|
||||
}
|
||||
|
||||
cBlockArea area;
|
||||
int bx = (int)floor(a_BlockX);
|
||||
int by = (int)floor(a_BlockY);
|
||||
int bz = (int)floor(a_BlockZ);
|
||||
int ExplosionSizeInt = (int) ceil(a_ExplosionSize);
|
||||
int ExplosionSizeSq = ExplosionSizeInt * ExplosionSizeInt;
|
||||
a_BlocksAffected.reserve(8 * ExplosionSizeInt * ExplosionSizeInt * ExplosionSizeInt);
|
||||
int MinY = std::max(a_BlockY - ExplosionSizeInt, 0);
|
||||
int MaxY = std::min(a_BlockY + ExplosionSizeInt, cChunkDef::Height - 1);
|
||||
area.Read(m_World, a_BlockX - ExplosionSizeInt, a_BlockX + ExplosionSizeInt, MinY, MaxY, a_BlockZ - ExplosionSizeInt,a_BlockZ + ExplosionSizeInt);
|
||||
int MinY = std::max((int)floor(a_BlockY - ExplosionSizeInt), 0);
|
||||
int MaxY = std::min((int)ceil(a_BlockY + ExplosionSizeInt), cChunkDef::Height - 1);
|
||||
area.Read(m_World, bx - ExplosionSizeInt, (int)ceil(a_BlockX + ExplosionSizeInt), MinY, MaxY, bz - ExplosionSizeInt, (int)ceil(a_BlockZ + ExplosionSizeInt));
|
||||
for (int x = -ExplosionSizeInt; x < ExplosionSizeInt; x++)
|
||||
{
|
||||
for (int y = -ExplosionSizeInt; y < ExplosionSizeInt; y++)
|
||||
{
|
||||
if ((a_BlockY + y >= cChunkDef::Height) || (a_BlockY + y < 0))
|
||||
if ((by + y >= cChunkDef::Height) || (by + y < 0))
|
||||
{
|
||||
// Outside of the world
|
||||
continue;
|
||||
@ -1589,15 +1592,15 @@ void cChunkMap::DoExplosiontAt(float a_ExplosionSize, int a_BlockX, int a_BlockY
|
||||
// Too far away
|
||||
continue;
|
||||
}
|
||||
switch (area.GetBlockType(a_BlockX + x, a_BlockY + y, a_BlockZ + z))
|
||||
switch (area.GetBlockType(bx + x, by + y, bz + z))
|
||||
{
|
||||
case E_BLOCK_TNT:
|
||||
{
|
||||
// Activate the TNT, with a random fuse between 10 to 30 game ticks
|
||||
float FuseTime = (float)(10 + m_World->GetTickRandomNumber(20)) / 20;
|
||||
double FuseTime = (double)(10 + m_World->GetTickRandomNumber(20)) / 20;
|
||||
m_World->SpawnPrimedTNT(a_BlockX + x + 0.5, a_BlockY + y + 0.5, a_BlockZ + z + 0.5, FuseTime);
|
||||
area.SetBlockType(a_BlockX + x, a_BlockY + y, a_BlockZ + z, E_BLOCK_AIR);
|
||||
a_BlocksAffected.push_back(Vector3i(a_BlockX + x, a_BlockY + y, a_BlockZ + z));
|
||||
area.SetBlockType(bx + x, by + y, bz + z, E_BLOCK_AIR);
|
||||
a_BlocksAffected.push_back(Vector3i(bx + x, by + y, bz + z));
|
||||
break;
|
||||
}
|
||||
case E_BLOCK_OBSIDIAN:
|
||||
@ -1612,33 +1615,33 @@ void cChunkMap::DoExplosiontAt(float a_ExplosionSize, int a_BlockX, int a_BlockY
|
||||
case E_BLOCK_STATIONARY_WATER:
|
||||
{
|
||||
// Turn into simulated water:
|
||||
area.SetBlockType(a_BlockX + x, a_BlockY + y, a_BlockZ + z, E_BLOCK_WATER);
|
||||
area.SetBlockType(bx + x, by + y, bz + z, E_BLOCK_WATER);
|
||||
break;
|
||||
}
|
||||
|
||||
case E_BLOCK_STATIONARY_LAVA:
|
||||
{
|
||||
// Turn into simulated lava:
|
||||
area.SetBlockType(a_BlockX + x, a_BlockY + y, a_BlockZ + z, E_BLOCK_LAVA);
|
||||
area.SetBlockType(bx + x, by + y, bz + z, E_BLOCK_LAVA);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
area.SetBlockType(a_BlockX + x, a_BlockY + y, a_BlockZ + z, E_BLOCK_AIR);
|
||||
a_BlocksAffected.push_back(Vector3i(a_BlockX + x, a_BlockY + y, a_BlockZ + z));
|
||||
area.SetBlockType(bx + x, by + y, bz + z, E_BLOCK_AIR);
|
||||
a_BlocksAffected.push_back(Vector3i(bx + x, by + y, bz + z));
|
||||
}
|
||||
} // switch (BlockType)
|
||||
} // for z
|
||||
} // for y
|
||||
} // for x
|
||||
area.Write(m_World, a_BlockX - ExplosionSizeInt, MinY, a_BlockZ - ExplosionSizeInt);
|
||||
area.Write(m_World, bx - ExplosionSizeInt, MinY, bz - ExplosionSizeInt);
|
||||
|
||||
// Wake up all simulators for the area, so that water and lava flows and sand falls into the blasted holes (FS #391):
|
||||
WakeUpSimulatorsInArea(
|
||||
a_BlockX - ExplosionSizeInt, a_BlockX + ExplosionSizeInt,
|
||||
bx - ExplosionSizeInt, bx + ExplosionSizeInt + 1,
|
||||
MinY, MaxY,
|
||||
a_BlockZ - ExplosionSizeInt, a_BlockZ + ExplosionSizeInt
|
||||
bz - ExplosionSizeInt, bz + ExplosionSizeInt + 1
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -183,7 +183,7 @@ public:
|
||||
bool ForEachEntityInChunk(int a_ChunkX, int a_ChunkZ, cEntityCallback & a_Callback); // Lua-accessible
|
||||
|
||||
/// Destroys and returns a list of blocks destroyed in the explosion at the specified coordinates
|
||||
void DoExplosiontAt(float a_ExplosionSize, int a_BlockX, int a_BlockY, int a_BlockZ, cVector3iArray & a_BlockAffected);
|
||||
void DoExplosiontAt(double a_ExplosionSize, double a_BlockX, double a_BlockY, double a_BlockZ, cVector3iArray & a_BlockAffected);
|
||||
|
||||
/// Calls the callback if the entity with the specified ID is found, with the entity object as the callback param. Returns true if entity found and callback returned false.
|
||||
bool DoWithEntityByID(int a_UniqueID, cEntityCallback & a_Callback); // Lua-accessible
|
||||
|
@ -625,6 +625,58 @@ void cLuaState::Push(const HTTPTemplateRequest * a_Request)
|
||||
|
||||
|
||||
|
||||
void cLuaState::Push(cTNTEntity * a_TNTEntity)
|
||||
{
|
||||
ASSERT(IsValid());
|
||||
ASSERT(m_NumCurrentFunctionArgs >= 0); // A function must be pushed to stack first
|
||||
|
||||
tolua_pushusertype(m_LuaState, a_TNTEntity, "cTNTEntity");
|
||||
m_NumCurrentFunctionArgs += 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cLuaState::Push(cCreeper * a_Creeper)
|
||||
{
|
||||
ASSERT(IsValid());
|
||||
ASSERT(m_NumCurrentFunctionArgs >= 0); // A function must be pushed to stack first
|
||||
|
||||
tolua_pushusertype(m_LuaState, a_Creeper, "cCreeper");
|
||||
m_NumCurrentFunctionArgs += 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cLuaState::Push(Vector3i * a_Vector)
|
||||
{
|
||||
ASSERT(IsValid());
|
||||
ASSERT(m_NumCurrentFunctionArgs >= 0); // A function must be pushed to stack first
|
||||
|
||||
tolua_pushusertype(m_LuaState, a_Vector, "Vector3i");
|
||||
m_NumCurrentFunctionArgs += 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cLuaState::Push(void * a_Ptr)
|
||||
{
|
||||
ASSERT(IsValid());
|
||||
ASSERT(m_NumCurrentFunctionArgs >= 0); // A function must be pushed to stack first
|
||||
|
||||
lua_pushnil(m_LuaState);
|
||||
m_NumCurrentFunctionArgs += 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cLuaState::GetReturn(int a_StackPos, bool & a_ReturnedVal)
|
||||
{
|
||||
a_ReturnedVal = (tolua_toboolean(m_LuaState, a_StackPos, a_ReturnedVal ? 1 : 0) > 0);
|
||||
@ -658,6 +710,18 @@ void cLuaState::GetReturn(int a_StackPos, int & a_ReturnedVal)
|
||||
|
||||
|
||||
|
||||
void cLuaState::GetReturn(int a_StackPos, double & a_ReturnedVal)
|
||||
{
|
||||
if (lua_isnumber(m_LuaState, a_StackPos))
|
||||
{
|
||||
a_ReturnedVal = tolua_tonumber(m_LuaState, a_StackPos, a_ReturnedVal);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool cLuaState::CallFunction(int a_NumResults)
|
||||
{
|
||||
ASSERT (m_NumCurrentFunctionArgs >= 0); // A function must be pushed to stack first
|
||||
|
@ -50,6 +50,9 @@ class cPlugin_NewLua;
|
||||
struct HTTPRequest;
|
||||
class cWebAdmin;
|
||||
struct HTTPTemplateRequest;
|
||||
class cTNTEntity;
|
||||
class cCreeper;
|
||||
class Vector3i;
|
||||
|
||||
|
||||
|
||||
@ -171,6 +174,10 @@ public:
|
||||
void Push(const HTTPRequest * a_Request);
|
||||
void Push(cWebAdmin * a_WebAdmin);
|
||||
void Push(const HTTPTemplateRequest * a_Request);
|
||||
void Push(cTNTEntity * a_TNTEntity);
|
||||
void Push(cCreeper * a_Creeper);
|
||||
void Push(Vector3i * a_Vector);
|
||||
void Push(void * a_Ptr);
|
||||
|
||||
/// Call any 0-param 0-return Lua function in a single line:
|
||||
template <typename FnT>
|
||||
@ -506,6 +513,199 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Call any 3-param 2-return Lua function in a single line:
|
||||
template<
|
||||
typename FnT, typename ArgT1, typename ArgT2, typename ArgT3,
|
||||
typename RetT1, typename RetT2
|
||||
>
|
||||
bool Call(FnT a_FnName, ArgT1 a_Arg1, ArgT2 a_Arg2, ArgT3 a_Arg3, const cRet & a_Mark, RetT1 & a_Ret1, RetT2 & a_Ret2)
|
||||
{
|
||||
if (!PushFunction(a_FnName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Push(a_Arg1);
|
||||
Push(a_Arg2);
|
||||
Push(a_Arg3);
|
||||
if (!CallFunction(2))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
GetReturn(-2, a_Ret1);
|
||||
GetReturn(-1, a_Ret2);
|
||||
lua_pop(m_LuaState, 2);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Call any 4-param 2-return Lua function in a single line:
|
||||
template<
|
||||
typename FnT, typename ArgT1, typename ArgT2, typename ArgT3, typename ArgT4,
|
||||
typename RetT1, typename RetT2
|
||||
>
|
||||
bool Call(FnT a_FnName, ArgT1 a_Arg1, ArgT2 a_Arg2, ArgT3 a_Arg3, ArgT4 a_Arg4, const cRet & a_Mark, RetT1 & a_Ret1, RetT2 & a_Ret2)
|
||||
{
|
||||
if (!PushFunction(a_FnName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Push(a_Arg1);
|
||||
Push(a_Arg2);
|
||||
Push(a_Arg3);
|
||||
Push(a_Arg4);
|
||||
if (!CallFunction(2))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
GetReturn(-2, a_Ret1);
|
||||
GetReturn(-1, a_Ret2);
|
||||
lua_pop(m_LuaState, 2);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Call any 5-param 2-return Lua function in a single line:
|
||||
template<
|
||||
typename FnT, typename ArgT1, typename ArgT2, typename ArgT3, typename ArgT4, typename ArgT5,
|
||||
typename RetT1, typename RetT2
|
||||
>
|
||||
bool Call(FnT a_FnName, ArgT1 a_Arg1, ArgT2 a_Arg2, ArgT3 a_Arg3, ArgT4 a_Arg4, ArgT5 a_Arg5, const cRet & a_Mark, RetT1 & a_Ret1, RetT2 & a_Ret2)
|
||||
{
|
||||
if (!PushFunction(a_FnName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Push(a_Arg1);
|
||||
Push(a_Arg2);
|
||||
Push(a_Arg3);
|
||||
Push(a_Arg4);
|
||||
Push(a_Arg5);
|
||||
if (!CallFunction(2))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
GetReturn(-2, a_Ret1);
|
||||
GetReturn(-1, a_Ret2);
|
||||
lua_pop(m_LuaState, 2);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Call any 6-param 2-return Lua function in a single line:
|
||||
template<
|
||||
typename FnT, typename ArgT1, typename ArgT2, typename ArgT3, typename ArgT4, typename ArgT5,
|
||||
typename ArgT6,
|
||||
typename RetT1, typename RetT2
|
||||
>
|
||||
bool Call(FnT a_FnName, ArgT1 a_Arg1, ArgT2 a_Arg2, ArgT3 a_Arg3, ArgT4 a_Arg4, ArgT5 a_Arg5, ArgT6 a_Arg6, const cRet & a_Mark, RetT1 & a_Ret1, RetT2 & a_Ret2)
|
||||
{
|
||||
if (!PushFunction(a_FnName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Push(a_Arg1);
|
||||
Push(a_Arg2);
|
||||
Push(a_Arg3);
|
||||
Push(a_Arg4);
|
||||
Push(a_Arg5);
|
||||
Push(a_Arg6);
|
||||
if (!CallFunction(2))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
GetReturn(-2, a_Ret1);
|
||||
GetReturn(-1, a_Ret2);
|
||||
lua_pop(m_LuaState, 2);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Call any 7-param 2-return Lua function in a single line:
|
||||
template<
|
||||
typename FnT, typename ArgT1, typename ArgT2, typename ArgT3, typename ArgT4, typename ArgT5,
|
||||
typename ArgT6, typename ArgT7,
|
||||
typename RetT1, typename RetT2
|
||||
>
|
||||
bool Call(FnT a_FnName, ArgT1 a_Arg1, ArgT2 a_Arg2, ArgT3 a_Arg3, ArgT4 a_Arg4, ArgT5 a_Arg5, ArgT6 a_Arg6, ArgT7 a_Arg7, const cRet & a_Mark, RetT1 & a_Ret1, RetT2 & a_Ret2)
|
||||
{
|
||||
if (!PushFunction(a_FnName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Push(a_Arg1);
|
||||
Push(a_Arg2);
|
||||
Push(a_Arg3);
|
||||
Push(a_Arg4);
|
||||
Push(a_Arg5);
|
||||
Push(a_Arg6);
|
||||
Push(a_Arg7);
|
||||
if (!CallFunction(2))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
GetReturn(-2, a_Ret1);
|
||||
GetReturn(-1, a_Ret2);
|
||||
lua_pop(m_LuaState, 2);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Call any 7-param 3-return Lua function in a single line:
|
||||
template<
|
||||
typename FnT, typename ArgT1, typename ArgT2, typename ArgT3, typename ArgT4, typename ArgT5,
|
||||
typename ArgT6, typename ArgT7,
|
||||
typename RetT1, typename RetT2, typename RetT3
|
||||
>
|
||||
bool Call(FnT a_FnName, ArgT1 a_Arg1, ArgT2 a_Arg2, ArgT3 a_Arg3, ArgT4 a_Arg4, ArgT5 a_Arg5, ArgT6 a_Arg6, ArgT7 a_Arg7, const cRet & a_Mark, RetT1 & a_Ret1, RetT2 & a_Ret2, RetT3 & a_Ret3)
|
||||
{
|
||||
if (!PushFunction(a_FnName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Push(a_Arg1);
|
||||
Push(a_Arg2);
|
||||
Push(a_Arg3);
|
||||
Push(a_Arg4);
|
||||
Push(a_Arg5);
|
||||
Push(a_Arg6);
|
||||
Push(a_Arg7);
|
||||
if (!CallFunction(3))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
GetReturn(-3, a_Ret1);
|
||||
GetReturn(-2, a_Ret2);
|
||||
GetReturn(-1, a_Ret3);
|
||||
lua_pop(m_LuaState, 3);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Call any 8-param 3-return Lua function in a single line:
|
||||
template<
|
||||
typename FnT, typename ArgT1, typename ArgT2, typename ArgT3, typename ArgT4, typename ArgT5,
|
||||
typename ArgT6, typename ArgT7, typename ArgT8,
|
||||
typename RetT1, typename RetT2, typename RetT3
|
||||
>
|
||||
bool Call(FnT a_FnName, ArgT1 a_Arg1, ArgT2 a_Arg2, ArgT3 a_Arg3, ArgT4 a_Arg4, ArgT5 a_Arg5, ArgT6 a_Arg6, ArgT7 a_Arg7, ArgT8 a_Arg8, const cRet & a_Mark, RetT1 & a_Ret1, RetT2 & a_Ret2, RetT3 & a_Ret3)
|
||||
{
|
||||
if (!PushFunction(a_FnName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Push(a_Arg1);
|
||||
Push(a_Arg2);
|
||||
Push(a_Arg3);
|
||||
Push(a_Arg4);
|
||||
Push(a_Arg5);
|
||||
Push(a_Arg6);
|
||||
Push(a_Arg7);
|
||||
Push(a_Arg8);
|
||||
if (!CallFunction(3))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
GetReturn(-3, a_Ret1);
|
||||
GetReturn(-2, a_Ret2);
|
||||
GetReturn(-1, a_Ret3);
|
||||
lua_pop(m_LuaState, 3);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Call any 9-param 5-return Lua function in a single line:
|
||||
template<
|
||||
typename FnT, typename ArgT1, typename ArgT2, typename ArgT3, typename ArgT4, typename ArgT5,
|
||||
@ -550,6 +750,9 @@ public:
|
||||
/// Retrieve value returned at a_StackPos, if it is a valid number. If not, a_ReturnedVal is unchanged
|
||||
void GetReturn(int a_StackPos, int & a_ReturnedVal);
|
||||
|
||||
/// Retrieve value returned at a_StackPos, if it is a valid number. If not, a_ReturnedVal is unchanged
|
||||
void GetReturn(int a_StackPos, double & a_ReturnedVal);
|
||||
|
||||
/**
|
||||
Calls the function that has been pushed onto the stack by PushFunction(),
|
||||
with arguments pushed by PushXXX().
|
||||
|
@ -58,6 +58,8 @@ public:
|
||||
virtual bool OnCraftingNoRecipe (const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe) = 0;
|
||||
virtual bool OnDisconnect (cPlayer * a_Player, const AString & a_Reason) = 0;
|
||||
virtual bool OnExecuteCommand (cPlayer * a_Player, const AStringVector & a_Split) = 0;
|
||||
virtual bool OnExploded (cWorld & a_World, double a_ExplosionSize, bool a_CanCauseFire, double a_X, double a_Y, double a_Z, eExplosionSource a_Source, void * a_SourceData) = 0;
|
||||
virtual bool OnExploding (cWorld & a_World, double & a_ExplosionSize, bool & a_CanCauseFire, double a_X, double a_Y, double a_Z, eExplosionSource a_Source, void * a_SourceData) = 0;
|
||||
virtual bool OnHandshake (cClientHandle * a_Client, const AString & a_Username) = 0;
|
||||
virtual bool OnKilling (cEntity & a_Victim, cEntity * a_Killer) = 0;
|
||||
virtual bool OnLogin (cClientHandle * a_Client, int a_ProtocolVersion, const AString & a_Username) = 0;
|
||||
|
@ -426,6 +426,48 @@ bool cPluginManager::CallHookExecuteCommand(cPlayer * a_Player, const AStringVec
|
||||
|
||||
|
||||
|
||||
bool cPluginManager::CallHookExploded(cWorld & a_World, double a_ExplosionSize, bool a_CanCauseFire, double a_X, double a_Y, double a_Z, eExplosionSource a_Source, void * a_SourceData)
|
||||
{
|
||||
HookMap::iterator Plugins = m_Hooks.find(HOOK_EXPLODED);
|
||||
if (Plugins == m_Hooks.end())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
for (PluginList::iterator itr = Plugins->second.begin(); itr != Plugins->second.end(); ++itr)
|
||||
{
|
||||
if ((*itr)->OnExploded(a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool cPluginManager::CallHookExploding(cWorld & a_World, double & a_ExplosionSize, bool & a_CanCauseFire, double a_X, double a_Y, double a_Z, eExplosionSource a_Source, void * a_SourceData)
|
||||
{
|
||||
HookMap::iterator Plugins = m_Hooks.find(HOOK_EXPLODING);
|
||||
if (Plugins == m_Hooks.end())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
for (PluginList::iterator itr = Plugins->second.begin(); itr != Plugins->second.end(); ++itr)
|
||||
{
|
||||
if ((*itr)->OnExploding(a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool cPluginManager::CallHookHandshake(cClientHandle * a_ClientHandle, const AString & a_Username)
|
||||
{
|
||||
HookMap::iterator Plugins = m_Hooks.find(HOOK_HANDSHAKE);
|
||||
|
@ -63,6 +63,8 @@ public: // tolua_export
|
||||
HOOK_CRAFTING_NO_RECIPE,
|
||||
HOOK_DISCONNECT,
|
||||
HOOK_EXECUTE_COMMAND,
|
||||
HOOK_EXPLODED,
|
||||
HOOK_EXPLODING,
|
||||
HOOK_HANDSHAKE,
|
||||
HOOK_KILLING,
|
||||
HOOK_LOGIN,
|
||||
@ -137,6 +139,8 @@ public: // tolua_export
|
||||
bool CallHookCraftingNoRecipe (const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe);
|
||||
bool CallHookDisconnect (cPlayer * a_Player, const AString & a_Reason);
|
||||
bool CallHookExecuteCommand (cPlayer * a_Player, const AStringVector & a_Split); // If a_Player == NULL, it is a console cmd
|
||||
bool CallHookExploded (cWorld & a_World, double a_ExplosionSize, bool a_CanCauseFire, double a_X, double a_Y, double a_Z, eExplosionSource a_Source, void * a_SourceData);
|
||||
bool CallHookExploding (cWorld & a_World, double & a_ExplosionSize, bool & a_CanCauseFire, double a_X, double a_Y, double a_Z, eExplosionSource a_Source, void * a_SourceData);
|
||||
bool CallHookHandshake (cClientHandle * a_ClientHandle, const AString & a_Username);
|
||||
bool CallHookKilling (cEntity & a_Victim, cEntity * a_Killer);
|
||||
bool CallHookLogin (cClientHandle * a_Client, int a_ProtocolVersion, const AString & a_Username);
|
||||
|
@ -250,6 +250,66 @@ bool cPlugin_NewLua::OnExecuteCommand(cPlayer * a_Player, const AStringVector &
|
||||
|
||||
|
||||
|
||||
bool cPlugin_NewLua::OnExploded(cWorld & a_World, double a_ExplosionSize, bool a_CanCauseFire, double a_X, double a_Y, double a_Z, eExplosionSource a_Source, void * a_SourceData)
|
||||
{
|
||||
cCSLock Lock(m_CriticalSection);
|
||||
bool res = false;
|
||||
const char * FnName = GetHookFnName(cPluginManager::HOOK_EXPLODED);
|
||||
switch (a_Source)
|
||||
{
|
||||
case esOther: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData, cLuaState::Return, res); break;
|
||||
case esPrimedTNT: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, (cTNTEntity *)a_SourceData, cLuaState::Return, res); break;
|
||||
case esCreeper: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, (cCreeper *)a_SourceData, cLuaState::Return, res); break;
|
||||
case esBed: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, (Vector3i *)a_SourceData, cLuaState::Return, res); break;
|
||||
case esEnderCrystal: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, (Vector3i *)a_SourceData, cLuaState::Return, res); break;
|
||||
case esGhastFireball: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData, cLuaState::Return, res); break;
|
||||
case esWitherSkullBlack:
|
||||
case esWitherSkullBlue: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData, cLuaState::Return, res); break;
|
||||
case esWitherBirth: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData, cLuaState::Return, res); break;
|
||||
case esPlugin: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData, cLuaState::Return, res); break;
|
||||
default:
|
||||
{
|
||||
ASSERT(!"Unhandled ExplosionSource");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool cPlugin_NewLua::OnExploding(cWorld & a_World, double & a_ExplosionSize, bool & a_CanCauseFire, double a_X, double a_Y, double a_Z, eExplosionSource a_Source, void * a_SourceData)
|
||||
{
|
||||
cCSLock Lock(m_CriticalSection);
|
||||
bool res = false;
|
||||
const char * FnName = GetHookFnName(cPluginManager::HOOK_EXPLODING);
|
||||
switch (a_Source)
|
||||
{
|
||||
case esOther: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break;
|
||||
case esPrimedTNT: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, (cTNTEntity *)a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break;
|
||||
case esCreeper: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, (cCreeper *)a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break;
|
||||
case esBed: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, (Vector3i *)a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break;
|
||||
case esEnderCrystal: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, (Vector3i *)a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break;
|
||||
case esGhastFireball: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break;
|
||||
case esWitherSkullBlack:
|
||||
case esWitherSkullBlue: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break;
|
||||
case esWitherBirth: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break;
|
||||
case esPlugin: m_LuaState.Call(FnName, &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break;
|
||||
default:
|
||||
{
|
||||
ASSERT(!"Unhandled ExplosionSource");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool cPlugin_NewLua::OnHandshake(cClientHandle * a_Client, const AString & a_Username)
|
||||
{
|
||||
cCSLock Lock(m_CriticalSection);
|
||||
|
@ -46,6 +46,8 @@ public:
|
||||
virtual bool OnCraftingNoRecipe (const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe) override;
|
||||
virtual bool OnDisconnect (cPlayer * a_Player, const AString & a_Reason) override;
|
||||
virtual bool OnExecuteCommand (cPlayer * a_Player, const AStringVector & a_Split) override;
|
||||
virtual bool OnExploded (cWorld & a_World, double a_ExplosionSize, bool a_CanCauseFire, double a_X, double a_Y, double a_Z, eExplosionSource a_Source, void * a_SourceData) override;
|
||||
virtual bool OnExploding (cWorld & a_World, double & a_ExplosionSize, bool & a_CanCauseFire, double a_X, double a_Y, double a_Z, eExplosionSource a_Source, void * a_SourceData) override;
|
||||
virtual bool OnHandshake (cClientHandle * a_Client, const AString & a_Username) override;
|
||||
virtual bool OnKilling (cEntity & a_Victim, cEntity * a_Killer) override;
|
||||
virtual bool OnLogin (cClientHandle * a_Client, int a_ProtocolVersion, const AString & a_Username) override;
|
||||
|
@ -66,7 +66,7 @@ void cTNTEntity::Tick(float a_Dt, cChunk & a_Chunk)
|
||||
{
|
||||
Destroy(true);
|
||||
LOGD("BOOM at {%f,%f,%f}", GetPosX(), GetPosY(), GetPosZ());
|
||||
m_World->DoExplosiontAt(4.0, (int)floor(GetPosX()), (int)floor(GetPosY()), (int)floor(GetPosZ()));
|
||||
m_World->DoExplosiontAt(4.0, GetPosX() + 0.49, GetPosY() + 0.49, GetPosZ() + 0.49, true, esPrimedTNT, this);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -797,13 +797,18 @@ bool cWorld::ForEachFurnaceInChunk(int a_ChunkX, int a_ChunkZ, cFurnaceCallback
|
||||
|
||||
|
||||
|
||||
void cWorld::DoExplosiontAt(float a_ExplosionSize, int a_BlockX, int a_BlockY, int a_BlockZ)
|
||||
void cWorld::DoExplosiontAt(double a_ExplosionSize, double a_BlockX, double a_BlockY, double a_BlockZ, bool a_CanCauseFire, eExplosionSource a_Source, void * a_SourceData)
|
||||
{
|
||||
if (cPluginManager::Get()->CallHookExploding(*this, a_ExplosionSize, a_CanCauseFire, a_BlockX, a_BlockY, a_BlockZ, a_Source, a_SourceData) || (a_ExplosionSize <= 0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: Add damage to entities, add support for pickups, and implement block hardiness
|
||||
Vector3d explosion_pos = Vector3d(a_BlockX, a_BlockY, a_BlockZ);
|
||||
cVector3iArray BlocksAffected;
|
||||
m_ChunkMap->DoExplosiontAt(a_ExplosionSize, a_BlockX, a_BlockY, a_BlockZ, BlocksAffected);
|
||||
BroadcastSoundEffect("random.explode", a_BlockX * 8, a_BlockY * 8, a_BlockZ * 8, 1.0f, 0.6f);
|
||||
BroadcastSoundEffect("random.explode", (int)floor(a_BlockX * 8), (int)floor(a_BlockY * 8), (int)floor(a_BlockZ * 8), 1.0f, 0.6f);
|
||||
{
|
||||
cCSLock Lock(m_CSPlayers);
|
||||
for (cPlayerList::iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
|
||||
@ -824,10 +829,11 @@ void cWorld::DoExplosiontAt(float a_ExplosionSize, int a_BlockX, int a_BlockY, i
|
||||
}
|
||||
distance_explosion.Normalize();
|
||||
distance_explosion *= power;
|
||||
ch->SendExplosion(a_BlockX, a_BlockY, a_BlockZ, a_ExplosionSize, BlocksAffected, distance_explosion);
|
||||
ch->SendExplosion(a_BlockX, a_BlockY, a_BlockZ, (float)a_ExplosionSize, BlocksAffected, distance_explosion);
|
||||
}
|
||||
}
|
||||
}
|
||||
cPluginManager::Get()->CallHookExploded(*this, a_ExplosionSize, a_CanCauseFire, a_BlockX, a_BlockY, a_BlockZ, a_Source, a_SourceData);
|
||||
}
|
||||
|
||||
|
||||
@ -1387,7 +1393,7 @@ void cWorld::SpawnItemPickups(const cItems & a_Pickups, double a_BlockX, double
|
||||
|
||||
|
||||
|
||||
void cWorld::SpawnPrimedTNT(double a_X, double a_Y, double a_Z, float a_FuseTimeInSec, double a_InitialVelocityCoeff)
|
||||
void cWorld::SpawnPrimedTNT(double a_X, double a_Y, double a_Z, double a_FuseTimeInSec, double a_InitialVelocityCoeff)
|
||||
{
|
||||
cTNTEntity * TNT = new cTNTEntity(a_X, a_Y, a_Z, a_FuseTimeInSec);
|
||||
TNT->Initialize(this);
|
||||
|
@ -335,7 +335,7 @@ public:
|
||||
void SpawnItemPickups(const cItems & a_Pickups, double a_BlockX, double a_BlockY, double a_BlockZ, double a_SpeedX, double a_SpeedY, double a_SpeedZ);
|
||||
|
||||
/// Spawns a new primed TNT entity at the specified block coords and specified fuse duration. Initial velocity is given based on the relative coefficient provided
|
||||
void SpawnPrimedTNT(double a_X, double a_Y, double a_Z, float a_FuseTimeInSec, double a_InitialVelocityCoeff = 1);
|
||||
void SpawnPrimedTNT(double a_X, double a_Y, double a_Z, double a_FuseTimeInSec, double a_InitialVelocityCoeff = 1);
|
||||
|
||||
// tolua_end
|
||||
|
||||
@ -381,8 +381,20 @@ public:
|
||||
/// Calls the callback for each furnace in the specified chunk; returns true if all furnaces processed, false if the callback aborted by returning true
|
||||
bool ForEachFurnaceInChunk(int a_ChunkX, int a_ChunkZ, cFurnaceCallback & a_Callback); // Exported in ManualBindings.cpp
|
||||
|
||||
/// Does an explosion with the specified strength at the specified coordinate
|
||||
void DoExplosiontAt (float a_ExplosionSzie, int a_BlockX, int a_BlockY, int a_BlockZ); //
|
||||
/** Does an explosion with the specified strength at the specified coordinate
|
||||
a_SourceData exact type depends on the a_Source:
|
||||
| esOther | void * |
|
||||
| esPrimedTNT | cTNTEntity * |
|
||||
| esCreeper | cCreeper * |
|
||||
| esBed | cVector3i * |
|
||||
| esEnderCrystal | Vector3i * |
|
||||
| esGhastFireball | TBD |
|
||||
| esWitherSkullBlack | TBD |
|
||||
| esWitherSkullBlue | TBD |
|
||||
| esWitherBirth | TBD |
|
||||
| esPlugin | void * |
|
||||
*/
|
||||
void DoExplosiontAt(double a_ExplosionSize, double a_BlockX, double a_BlockY, double a_BlockZ, bool a_CanCauseFire, eExplosionSource a_Source, void * a_SourceData);
|
||||
|
||||
/// Calls the callback for the chest at the specified coords; returns false if there's no chest at those coords, true if found
|
||||
bool DoWithChestAt (int a_BlockX, int a_BlockY, int a_BlockZ, cChestCallback & a_Callback); // Exported in ManualBindings.cpp
|
||||
|
Loading…
Reference in New Issue
Block a user