1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2024-06-27 23:53:21 +00:00

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.
This commit is contained in:
SquidDev 2018-02-12 17:50:46 +00:00
parent 3b3dd8071b
commit 94e10d1f67
2 changed files with 10 additions and 5 deletions

View File

@ -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();

View File

@ -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();
}
}