Specify range in IWorldScanner#repack
This commit is contained in:
parent
69bceb43f8
commit
4eca960a4c
@ -81,6 +81,4 @@ public interface ICachedWorld {
|
|||||||
* in a new thread by default.
|
* in a new thread by default.
|
||||||
*/
|
*/
|
||||||
void save();
|
void save();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -77,10 +77,20 @@ public interface IWorldScanner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Repacks 40 chunks around the player.
|
* Overload of {@link #repack(IPlayerContext, int)} where the value of the {@code range} parameter is {@code 40}.
|
||||||
*
|
*
|
||||||
* @param ctx The player context for that player.
|
* @param ctx The player, describing the origin
|
||||||
* @return The number of chunks queued for repacking.
|
* @return The amount of chunks successfully queued for repacking
|
||||||
*/
|
*/
|
||||||
int repack(IPlayerContext ctx);
|
int repack(IPlayerContext ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Queues the chunks in a square formation around the specified player, using the specified
|
||||||
|
* range, which represents 1/2 the square's dimensions, where the player is in the center.
|
||||||
|
*
|
||||||
|
* @param ctx The player, describing the origin
|
||||||
|
* @param range The range to repack
|
||||||
|
* @return The amount of chunks successfully queued for repacking
|
||||||
|
*/
|
||||||
|
int repack(IPlayerContext ctx, int range);
|
||||||
}
|
}
|
||||||
|
57
src/main/java/baritone/cache/WorldScanner.java
vendored
57
src/main/java/baritone/cache/WorldScanner.java
vendored
@ -111,6 +111,41 @@ public enum WorldScanner implements IWorldScanner {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int repack(IPlayerContext ctx) {
|
||||||
|
return this.repack(ctx, 40);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int repack(IPlayerContext ctx, int range) {
|
||||||
|
IChunkProvider chunkProvider = ctx.world().getChunkProvider();
|
||||||
|
ICachedWorld cachedWorld = ctx.worldData().getCachedWorld();
|
||||||
|
|
||||||
|
BetterBlockPos playerPos = ctx.playerFeet();
|
||||||
|
|
||||||
|
int playerChunkX = playerPos.getX() >> 4;
|
||||||
|
int playerChunkZ = playerPos.getZ() >> 4;
|
||||||
|
|
||||||
|
int minX = playerChunkX - range;
|
||||||
|
int minZ = playerChunkZ - range;
|
||||||
|
int maxX = playerChunkX + range;
|
||||||
|
int maxZ = playerChunkZ + range;
|
||||||
|
|
||||||
|
int queued = 0;
|
||||||
|
for (int x = minX; x <= maxX; x++) {
|
||||||
|
for (int z = minZ; z <= maxZ; z++) {
|
||||||
|
Chunk chunk = chunkProvider.getLoadedChunk(x, z);
|
||||||
|
|
||||||
|
if (chunk != null && !chunk.isEmpty()) {
|
||||||
|
queued++;
|
||||||
|
cachedWorld.queueForPacking(chunk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return queued;
|
||||||
|
}
|
||||||
|
|
||||||
private boolean scanChunkInto(int chunkX, int chunkZ, Chunk chunk, BlockOptionalMetaLookup filter, Collection<BlockPos> result, int max, int yLevelThreshold, int playerY, int[] coordinateIterationOrder) {
|
private boolean scanChunkInto(int chunkX, int chunkZ, Chunk chunk, BlockOptionalMetaLookup filter, Collection<BlockPos> result, int max, int yLevelThreshold, int playerY, int[] coordinateIterationOrder) {
|
||||||
ExtendedBlockStorage[] chunkInternalStorageArray = chunk.getBlockStorageArray();
|
ExtendedBlockStorage[] chunkInternalStorageArray = chunk.getBlockStorageArray();
|
||||||
boolean foundWithinY = false;
|
boolean foundWithinY = false;
|
||||||
@ -147,26 +182,4 @@ public enum WorldScanner implements IWorldScanner {
|
|||||||
}
|
}
|
||||||
return foundWithinY;
|
return foundWithinY;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int repack(IPlayerContext ctx) {
|
|
||||||
IChunkProvider chunkProvider = ctx.world().getChunkProvider();
|
|
||||||
ICachedWorld cachedWorld = ctx.worldData().getCachedWorld();
|
|
||||||
|
|
||||||
BetterBlockPos playerPos = ctx.playerFeet();
|
|
||||||
int playerChunkX = playerPos.getX() >> 4;
|
|
||||||
int playerChunkZ = playerPos.getZ() >> 4;
|
|
||||||
int queued = 0;
|
|
||||||
for (int x = playerChunkX - 40; x <= playerChunkX + 40; x++) {
|
|
||||||
for (int z = playerChunkZ - 40; z <= playerChunkZ + 40; z++) {
|
|
||||||
Chunk chunk = chunkProvider.getLoadedChunk(x, z);
|
|
||||||
|
|
||||||
if (chunk != null && !chunk.isEmpty()) {
|
|
||||||
queued++;
|
|
||||||
cachedWorld.queueForPacking(chunk);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return queued;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user