Store custom user data with PolarWorldAccess
mainBy default, Polar only stores blocks, biomes, block entities, and light data. To store arbitrary user-specific data, implement the PolarWorldAccess interface and attach it to your PolarLoader using .setWorldAccess(PolarWorldAccess).
In loadChunkData, you read data from the NetworkBuffer. In saveChunkData, you write data to the NetworkBuffer.
public class UpdateTimeWorldAccess implements PolarWorldAccess {
private static final Logger logger = LoggerFactory.getLogger(UpdateTimeWorldAccess.class);
@Override
public void loadChunkData(@NotNull Chunk chunk, @Nullable NetworkBuffer userData) {
if (userData == null) return; // No saved data, probably first load
long lastSaveTime = userData.read(NetworkBuffer.LONG);
logger.info("loading chunk {}, {} which was saved at {}.", chunk.getChunkX(), chunk.getChunkZ(), lastSaveTime);
}
@Override
public void saveChunkData(@NotNull Chunk chunk, @NotNull NetworkBuffer userData) {
userData.write(NetworkBuffer.LONG, System.currentTimeMillis());
}
}
// Usage:
new PolarLoader(world).setWorldAccess(new UpdateTimeWorldAccess());