iter.next();
// Go and find the other blocks
final int maxLength = Math.abs(diff.x) + Math.abs(diff.y) + Math.abs(diff.z);
for (k = 0; k < maxLength && iter.hasNext(); k++) {
final Block block = iter.next();
if (from.x == block.getX() && from.y == block.getY() && from.z == block.getZ()) {
// Found the end block
break;
}
// Put the member
blockSpace.put(new IntVector3(block), member);
}
}
}
blockSpace.put(owner.tail().getBlockPos(), owner.tail());
}
// First clear the live active sign buffer of all members
for (MinecartMember<?> member : owner) {
member.getBlockTracker().liveActiveSigns.clear();
}
// Add all active signs to the block tracker of all members
World world = owner.getWorld();
for (Entry<IntVector3, MinecartMember<?>> entry : blockSpace.entrySet()) {
IntVector3 pos = entry.getKey();
for (RailType type : RailType.values()) {
if (type.isRail(world, pos.x, pos.y, pos.z)) {
Block block = pos.toBlock(world);
List<Block> signs = entry.getValue().getBlockTracker().liveActiveSigns;
Util.addSignsFromRails(signs, block, type.getSignColumnDirection(block));
}
}
}