summaryrefslogtreecommitdiffstats
path: root/src/Entities
diff options
context:
space:
mode:
authorTiger Wang <ziwei.tiger@outlook.com>2022-07-11 00:56:25 +0200
committerTiger Wang <ziwei.tiger@outlook.com>2022-07-19 23:33:09 +0200
commit284f54ed81186d3122b994db7395e870703efb4f (patch)
tree51a4b5c4a7e9fdde460c84117ea8f9ea6ed97393 /src/Entities
parentMove LineBlockTracer into Physics (diff)
downloadcuberite-Megumin.tar
cuberite-Megumin.tar.gz
cuberite-Megumin.tar.bz2
cuberite-Megumin.tar.lz
cuberite-Megumin.tar.xz
cuberite-Megumin.tar.zst
cuberite-Megumin.zip
Diffstat (limited to 'src/Entities')
-rw-r--r--src/Entities/EnderCrystal.cpp6
-rw-r--r--src/Entities/Entity.cpp4
-rw-r--r--src/Entities/Pickup.cpp5
-rw-r--r--src/Entities/Pickup.h2
-rw-r--r--src/Entities/ProjectileEntity.cpp6
5 files changed, 14 insertions, 9 deletions
diff --git a/src/Entities/EnderCrystal.cpp b/src/Entities/EnderCrystal.cpp
index c356caa70..d39da5a74 100644
--- a/src/Entities/EnderCrystal.cpp
+++ b/src/Entities/EnderCrystal.cpp
@@ -45,7 +45,11 @@ void cEnderCrystal::SetShowBottom(bool a_ShowBottom)
void cEnderCrystal::SetBeamTarget(Vector3i a_BeamTarget)
{
m_BeamTarget = a_BeamTarget;
- m_World->BroadcastEntityMetadata(*this);
+
+ if (m_DisplayBeam)
+ {
+ m_World->BroadcastEntityMetadata(*this);
+ }
}
diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp
index 0718da06c..59930a4f1 100644
--- a/src/Entities/Entity.cpp
+++ b/src/Entities/Entity.cpp
@@ -11,7 +11,7 @@
#include "../Chunk.h"
#include "../Simulator/FluidSimulator.h"
#include "../Bindings/PluginManager.h"
-#include "../LineBlockTracer.h"
+#include "../Physics/Tracers/LineBlockTracer.h"
#include "../Items/ItemHandler.h"
#include "../FastRandom.h"
#include "../NetherPortalScanner.h"
@@ -1157,7 +1157,7 @@ void cEntity::HandlePhysics(std::chrono::milliseconds a_Dt, cChunk & a_Chunk)
Vector3i HitBlockCoords;
eBlockFace HitBlockFace;
Vector3d wantNextPos = NextPos + NextSpeed * DtSec.count();
- auto isHit = cLineBlockTracer::FirstSolidHitTrace(*GetWorld(), NextPos, wantNextPos, HitCoords, HitBlockCoords, HitBlockFace);
+ auto isHit = LineBlockTracer::FirstSolidHitTrace(*GetWorld(), NextPos, wantNextPos, HitCoords, HitBlockCoords, HitBlockFace);
if (isHit)
{
// Set our position to where the block was hit:
diff --git a/src/Entities/Pickup.cpp b/src/Entities/Pickup.cpp
index 699bd5944..9c5bcc6b8 100644
--- a/src/Entities/Pickup.cpp
+++ b/src/Entities/Pickup.cpp
@@ -116,12 +116,13 @@ private:
////////////////////////////////////////////////////////////////////////////////
// cPickup:
-cPickup::cPickup(Vector3d a_Position, cItem && a_Item, Vector3d a_Speed, cTickTime a_CollectionDelay, cTickTime a_Lifetime) :
+cPickup::cPickup(Vector3d a_Position, cItem && a_Item, Vector3d a_Speed, cTickTime a_CollectionDelay, cTickTime a_Lifetime, bool a_CanCombine) :
Super(etPickup, a_Position, 0.25f, 0.25f),
m_Item(std::move(a_Item)),
m_RemainingCollectionDelay(a_CollectionDelay),
m_RemainingLifetime(a_Lifetime),
- m_IsCollected(false)
+ m_IsCollected(false),
+ m_IsCombinable(a_CanCombine)
{
SetGravity(-16.0f);
SetAirDrag(0.02f);
diff --git a/src/Entities/Pickup.h b/src/Entities/Pickup.h
index b03ae0846..e8184e8af 100644
--- a/src/Entities/Pickup.h
+++ b/src/Entities/Pickup.h
@@ -26,7 +26,7 @@ public: // tolua_export
CLASS_PROTODEF(cPickup)
- cPickup(Vector3d a_Position, cItem && a_Item, Vector3d a_Speed, cTickTime a_CollectionDelay, cTickTime a_Lifetime);
+ cPickup(Vector3d a_Position, cItem && a_Item, Vector3d a_Speed, cTickTime a_CollectionDelay, cTickTime a_Lifetime, bool a_CanCombine);
cItem & GetItem(void) {return m_Item; } // tolua_export
const cItem & GetItem(void) const {return m_Item; }
diff --git a/src/Entities/ProjectileEntity.cpp b/src/Entities/ProjectileEntity.cpp
index ea59c9c46..03c9c72d8 100644
--- a/src/Entities/ProjectileEntity.cpp
+++ b/src/Entities/ProjectileEntity.cpp
@@ -9,7 +9,7 @@
#include "ProjectileEntity.h"
#include "../BlockInfo.h"
#include "../ClientHandle.h"
-#include "../LineBlockTracer.h"
+#include "../Physics/Tracers/LineBlockTracer.h"
#include "../BoundingBox.h"
#include "../ChunkMap.h"
#include "../Chunk.h"
@@ -34,7 +34,7 @@
// cProjectileTracerCallback:
class cProjectileTracerCallback :
- public cBlockTracer::cCallbacks
+ public BlockTracerCallbacks
{
public:
cProjectileTracerCallback(cProjectileEntity * a_Projectile) :
@@ -411,7 +411,7 @@ void cProjectileEntity::HandlePhysics(std::chrono::milliseconds a_Dt, cChunk & a
// Trace the tick's worth of movement as a line:
cProjectileTracerCallback TracerCallback(this);
- if (!cLineBlockTracer::Trace(*m_World, TracerCallback, Pos, NextPos))
+ if (!LineBlockTracer::Trace(*m_World, TracerCallback, Pos, NextPos))
{
// Something has been hit, abort all other processing
return;