mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-09-15 08:44:03 +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:
@@ -496,10 +496,11 @@ public class TurtleBrain implements ITurtleAccess
|
||||
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.api.turtle.TurtleCommandResult;
|
||||
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 @@ public class TurtleMoveCommand implements ITurtleCommand
|
||||
{
|
||||
return TurtleCommandResult.failure( "Cannot leave loaded world" );
|
||||
}
|
||||
if( !world.getWorldBorder().contains( position ) )
|
||||
{
|
||||
return TurtleCommandResult.failure( "Cannot pass the world border" );
|
||||
}
|
||||
return TurtleCommandResult.success();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user