diff options
author | Lane Kolbly <lane@rscheme.org> | 2015-06-13 23:09:43 +0200 |
---|---|---|
committer | Lane Kolbly <lane@rscheme.org> | 2015-06-13 23:09:43 +0200 |
commit | 9d620a20a0d1fa6af8b6af044610563a7af77712 (patch) | |
tree | 461376554da0fe04a69022c217e57873f03fce1b /src/Entities/Entity.cpp | |
parent | Merge pull request #2237 from lkolbly/master (diff) | |
download | cuberite-9d620a20a0d1fa6af8b6af044610563a7af77712.tar cuberite-9d620a20a0d1fa6af8b6af044610563a7af77712.tar.gz cuberite-9d620a20a0d1fa6af8b6af044610563a7af77712.tar.bz2 cuberite-9d620a20a0d1fa6af8b6af044610563a7af77712.tar.lz cuberite-9d620a20a0d1fa6af8b6af044610563a7af77712.tar.xz cuberite-9d620a20a0d1fa6af8b6af044610563a7af77712.tar.zst cuberite-9d620a20a0d1fa6af8b6af044610563a7af77712.zip |
Diffstat (limited to 'src/Entities/Entity.cpp')
-rw-r--r-- | src/Entities/Entity.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp index 500204a98..bb9d3c44b 100644 --- a/src/Entities/Entity.cpp +++ b/src/Entities/Entity.cpp @@ -1269,11 +1269,12 @@ void cEntity::DetectCacti(void) -void cEntity::ScheduleMoveToWorld(cWorld * a_World, Vector3d a_NewPosition) +void cEntity::ScheduleMoveToWorld(cWorld * a_World, Vector3d a_NewPosition, bool a_SetPortalCooldown) { m_NewWorld = a_World; m_NewWorldPosition = a_NewPosition; m_IsWorldChangeScheduled = true; + m_WorldChangeSetPortalCooldown = a_SetPortalCooldown; } @@ -1285,6 +1286,14 @@ bool cEntity::DetectPortal() if (m_IsWorldChangeScheduled) { m_IsWorldChangeScheduled = false; + + if (m_WorldChangeSetPortalCooldown) + { + // Delay the portal check. + m_PortalCooldownData.m_TicksDelayed = 0; + m_PortalCooldownData.m_ShouldPreventTeleportation = true; + } + MoveToWorld(m_NewWorld, false, m_NewWorldPosition); return true; } @@ -1343,10 +1352,10 @@ bool cEntity::DetectPortal() TargetPos.x *= 8.0; TargetPos.z *= 8.0; - cWorld * TargetWorld = cRoot::Get()->CreateAndInitializeWorld(GetWorld()->GetLinkedOverworldName(), dimNether, GetWorld()->GetName()); + cWorld * TargetWorld = cRoot::Get()->CreateAndInitializeWorld(GetWorld()->GetLinkedOverworldName(), dimNether, GetWorld()->GetName(), false); LOGD("Jumping nether -> overworld"); new cNetherPortalScanner(this, TargetWorld, TargetPos, 256); - return false; + return true; } else { @@ -1367,10 +1376,10 @@ bool cEntity::DetectPortal() TargetPos.x /= 8.0; TargetPos.z /= 8.0; - cWorld * TargetWorld = cRoot::Get()->CreateAndInitializeWorld(GetWorld()->GetLinkedNetherWorldName(), dimNether, GetWorld()->GetName()); + cWorld * TargetWorld = cRoot::Get()->CreateAndInitializeWorld(GetWorld()->GetLinkedNetherWorldName(), dimNether, GetWorld()->GetName(), false); LOGD("Jumping overworld -> nether"); new cNetherPortalScanner(this, TargetWorld, TargetPos, 128); - return false; + return true; } } case E_BLOCK_END_PORTAL: |