Permalink
Browse files

Prevent turtles moving beyond the world border

As tiles outside the world border are not ticked, turtles are rendered
entirely useless. Furthermore, the turtle animation will never progress
resulting in visual glitches.

In order to avoid this, we ensure the target position is within the
world border when moving to it.
  • Loading branch information...
SquidDev committed Feb 12, 2018
1 parent 3b3dd80 commit 94e10d1f67403f02cb275d10764d5eedf16cb342
@@ -496,10 +496,11 @@ public boolean teleportTo( @Nonnull World world, @Nonnull BlockPos pos )
return true;
}
if ( !world.isBlockLoaded( pos ) )
{
return false;
}
// Ensure the chunk is loaded
if( !world.isBlockLoaded( pos ) ) return false;
// Ensure we're inside the world border
if( !world.getWorldBorder().contains( pos ) ) return false;
oldOwner.notifyMoveStart();
@@ -14,9 +14,9 @@
import dan200.computercraft.shared.util.WorldUtil;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import javax.annotation.Nonnull;
@@ -170,6 +170,10 @@ else if( position.getY() > world.getHeight() - 1 )
{
return TurtleCommandResult.failure( "Cannot leave loaded world" );
}
if( !world.getWorldBorder().contains( position ) )
{
return TurtleCommandResult.failure( "Cannot pass the world border" );
}
return TurtleCommandResult.success();
}
}

0 comments on commit 94e10d1

Please sign in to comment.