Skip to content

Commit c2d133d

Browse files
chunk loaded check in finding new move vector
1 parent cc0c512 commit c2d133d

1 file changed

Lines changed: 14 additions & 5 deletions

File tree

src/dev/core/pipe/item/travelingItem/TravelingItemMover.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,11 @@ class TravelingItemMover {
9797
this.coords = this.coordsToFixed(newCoords);
9898
}
9999

100-
public findNewMoveVector(region: BlockSource): boolean {
100+
public findNewMoveVector(region: BlockSource): number {
101101
var relativePaths = this.getRelativePaths(region);
102+
if (relativePaths === null) {
103+
return -1;
104+
}
102105
const nextPipes = this.filterPaths(relativePaths, region);
103106
const keys = Object.keys(nextPipes);
104107

@@ -110,10 +113,10 @@ class TravelingItemMover {
110113
this.prevCoords = this.Coords;
111114
this.updateMoveSpeed(region);
112115
this.updateCoordsTime();
113-
return true;
116+
return 1;
114117
}
115118

116-
return false;
119+
return 0;
117120
}
118121

119122
/**
@@ -150,9 +153,9 @@ class TravelingItemMover {
150153
}
151154

152155
/**
153-
* @returns {object} which looks like {"sideIndex": pipeClass | container}
156+
* @returns {object} which looks like {"sideIndex": pipeClass | container} or null if chunk unloaded
154157
*/
155-
private getRelativePaths(region: BlockSource): object {
158+
private getRelativePaths(region: BlockSource): object | null {
156159
const targets = {};
157160
for (let i = 0; i < 6; i++) {
158161
const backVectorIndex = World.getInverseBlockSide(this.moveVectorIndex);
@@ -161,6 +164,9 @@ class TravelingItemMover {
161164
const curY = this.AbsoluteCoords.y;
162165
const curZ = this.AbsoluteCoords.z;
163166
const { x, y, z } = World.getRelativeCoords(curX, curY, curZ, i);
167+
168+
if (!region.isChunkLoadedAt(x, z)) return null;
169+
164170
const pipeBlockID = region.getBlockId(x, y, z);
165171
const pipeBlockData = region.getBlockData(x, y, z);
166172
const relativePipeClass = PipeIdMap.getClassById(pipeBlockID);
@@ -170,6 +176,9 @@ class TravelingItemMover {
170176
continue;
171177
}
172178

179+
let tile = TileEntity.getTileEntity(x, y, z, region);
180+
if (tile?.__initialized === false) return null;
181+
173182
const storage = StorageInterface.getStorage(region, x, y, z);
174183
if (this.isValidStorage(storage, World.getInverseBlockSide(i)) && !currentConnector?.hasBlacklistBlockID(pipeBlockID, pipeBlockData)) {
175184
targets[i] = storage;

0 commit comments

Comments
 (0)