示例#1
0
        private void GatherChanges(MinecraftVersion minBlockVersionNumber, MinecraftVersion maxBlockVersionNumber, int suggestedMaxBlockRequests,
                                   MinecraftVersion minPlayerVersionNumber, MinecraftVersion maxPlayerVersionNumber, int suggestedMaxPlayerRequests,
                                   BlockMetaData[] blocks, PlayerMetaData[] players,
                                   ref BlockMetaData[] blocksResult, ref PlayerMetaData[] playerResult,
                                   out int nBlocks, out int nPlayers,
                                   out int nBlocksLeft, out int nPlayersLeft,
                                   out MinecraftVersion lastBlockUsedVersion, out MinecraftVersion lastPlayerUsedVersion)
        {
            nBlocks = 0;
            var blockRange = new BlockEnumerateRange(blocks);

            GetRangeInfo(blockRange, minBlockVersionNumber, maxBlockVersionNumber, suggestedMaxBlockRequests, out int firstIndex, out nBlocks, out nBlocksLeft, out lastBlockUsedVersion);
            if (nBlocks > 0)
            {
                blocksResult = new BlockMetaData[nBlocks];
                Array.Copy(blocks, firstIndex, blocksResult, 0, nBlocks);
            }

            nPlayers = 0;
            var playerRange = new PlayersEnumerateRange(players);

            GetRangeInfo(playerRange, minPlayerVersionNumber, maxPlayerVersionNumber, suggestedMaxPlayerRequests, out firstIndex, out nPlayers, out nPlayersLeft, out lastPlayerUsedVersion);
            if (nPlayers > 0)
            {
                playerResult = new PlayerMetaData[nPlayers];
                Array.Copy(players, firstIndex, playerResult, 0, nPlayers);
            }
        }
示例#2
0
        public async Task <GenericResponse> Remove(ActorId playerAgentID, BlockMetaData blockData)
        {
            var blocks = await this.StateManager.GetStateAsync <Dictionary <Position, BlockMetaData> >("blocks");

            if (blocks.ContainsKey(blockData.position) == false)
            {
                return(new GenericResponse(false, "Not found"));
            }

            blocks.Remove(blockData.position);
            await this.StateManager.SetStateAsync("blocks", blocks);

            return(new GenericResponse());
        }
示例#3
0
        public async Task <BlockMetaData[]> GetAsync()
        {
            var blocks = await this.StateManager.GetStateAsync <Dictionary <Position, BlockMetaData> >("blocks");

            if (blocks.Count == 0)
            {
                return(null);
            }

            var resultBlocks = new BlockMetaData[blocks.Count];

            blocks.Values.CopyTo(resultBlocks, 0);
            return(resultBlocks);
        }
示例#4
0
        public async Task <GenericResponse> Update(long playerAgentID, BlockMetaData blockData)
        {
            var blocks = await this.StateManager.GetStateAsync <Dictionary <Position, BlockMetaData> >("blocks");

            blockData.version = MinecraftVersion.GetNext();
            if (blocks.ContainsKey(blockData.position))
            {
                blocks[blockData.position] = blockData;
            }
            else
            {
                blocks.Add(blockData.position, blockData);
            }

            await this.StateManager.SetStateAsync("blocks", blocks);

            return(new GenericResponse());
        }
 public Block(byte id, BlockMetaData metaData)
 {
     this.id       = id;
     this.metaData = metaData;
 }
示例#6
0
文件: Chunk.cs 项目: MarvTekko/AISG
    public void setBlockMetaAt ( Vector3 _position, BlockMetaData.RotationTypes _rot, BlockMetaData.SchraegenTypes _sType ) {

        if ( blockMetaData.ContainsKey ( _position ) ) {

            blockMetaData[ _position ].setMetaData ( _rot, _sType );
        }
        else {
            blockMetaData.Add ( _position, new BlockMetaData () );
            blockMetaData[ _position ].setMetaData ( _rot, _sType );
        }
    }
 public Block WithMetaData(BlockMetaData newMetaData)
 {
     return(new Block(id, newMetaData));
 }
示例#8
0
    void setBlockData ( int _x, int _y, int _z, BlockMetaData.RotationTypes rot, BlockMetaData.SchraegenTypes sTyp ) {

        myChunk.setBlockMetaAt ( new Vector3 ( _x, _y, _z ), rot, sTyp );
    }