Exemplo n.º 1
0
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
}