summaryrefslogtreecommitdiffstats
path: root/src/Entities
diff options
context:
space:
mode:
authormadmaxoft <github@xoft.cz>2014-03-29 23:05:17 +0100
committermadmaxoft <github@xoft.cz>2014-03-29 23:05:17 +0100
commit47a427d3dc1aafa1de5d55faa60e666e64ba7bd3 (patch)
tree3d9e203397178a6874b0430773731693cbd03ab6 /src/Entities
parentNetherFortGen: Added several more prefabs. (diff)
parentcPrefab now uses a struct for block type definition in CharMap. (diff)
downloadcuberite-47a427d3dc1aafa1de5d55faa60e666e64ba7bd3.tar
cuberite-47a427d3dc1aafa1de5d55faa60e666e64ba7bd3.tar.gz
cuberite-47a427d3dc1aafa1de5d55faa60e666e64ba7bd3.tar.bz2
cuberite-47a427d3dc1aafa1de5d55faa60e666e64ba7bd3.tar.lz
cuberite-47a427d3dc1aafa1de5d55faa60e666e64ba7bd3.tar.xz
cuberite-47a427d3dc1aafa1de5d55faa60e666e64ba7bd3.tar.zst
cuberite-47a427d3dc1aafa1de5d55faa60e666e64ba7bd3.zip
Diffstat (limited to 'src/Entities')
-rw-r--r--src/Entities/Player.cpp1
-rw-r--r--src/Entities/ProjectileEntity.cpp12
2 files changed, 12 insertions, 1 deletions
diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp
index 863aaa799..646aad50f 100644
--- a/src/Entities/Player.cpp
+++ b/src/Entities/Player.cpp
@@ -1489,6 +1489,7 @@ bool cPlayer::MoveToWorld(const char * a_WorldName)
// Add player to all the necessary parts of the new world
SetWorld(World);
+ m_ClientHandle->StreamChunks();
World->AddEntity(this);
World->AddPlayer(this);
diff --git a/src/Entities/ProjectileEntity.cpp b/src/Entities/ProjectileEntity.cpp
index f4ab825f2..a9735a53c 100644
--- a/src/Entities/ProjectileEntity.cpp
+++ b/src/Entities/ProjectileEntity.cpp
@@ -4,6 +4,7 @@
// Implements the cProjectileEntity class representing the common base class for projectiles, as well as individual projectile types
#include "Globals.h"
+#include "../Bindings/PluginManager.h"
#include "ProjectileEntity.h"
#include "../ClientHandle.h"
#include "Player.h"
@@ -66,6 +67,11 @@ protected:
eBlockFace Face;
if (bb.CalcLineIntersection(Line1, Line2, LineCoeff, Face))
{
+ if (cPluginManager::Get()->CallHookProjectileHitBlock(*m_Projectile))
+ {
+ return false;
+ }
+
Vector3d Intersection = Line1 + m_Projectile->GetSpeed() * LineCoeff;
m_Projectile->OnHitSolidBlock(Intersection, Face);
return true;
@@ -147,7 +153,11 @@ public:
}
// TODO: Some entities don't interact with the projectiles (pickups, falling blocks)
- // TODO: Allow plugins to interfere about which entities can be hit
+ if (cPluginManager::Get()->CallHookProjectileHitEntity(*m_Projectile, *a_Entity))
+ {
+ // A plugin disagreed.
+ return false;
+ }
if (LineCoeff < m_MinCoeff)
{