func NewChunkShard(shardConnecter gamerules.IShardConnecter, chunkStore chunkstore.IChunkStore, entityMgr *entity.EntityManager, loc ShardXz) (shard *ChunkShard) { shard = &ChunkShard{ shardConnecter: shardConnecter, chunkStore: chunkStore, entityMgr: entityMgr, loc: loc, originChunkLoc: loc.ToChunkXz(), requests: make(chan iShardRequest, 256), ticksSinceUpdate: 0, saveChunks: chunkStore.SupportsWrite(), // Offset shard saves. ticksSinceSave: (31 * Ticks(loc.Key())) % ticksBetweenSaves, newActiveShards: make(map[uint64]*destActiveShard), shardClients: make(map[uint64]gamerules.IShardShardClient), } shard.selfClient.shard = shard return }