public void UnderlyingClassicChunkTest() { const int IdGrass = 2; var baseChunk = ClassicChunk.CreateEmpty(); baseChunk.SetBlock(4, 4, 4, new ClassicBlock(IdGrass)); var dispatcher = new BlockFactoryDispatcher(null); dispatcher.AddDispatcherFromAssembly(typeof(BlockFactoryDispatcher).Assembly); var chunk1 = new Chunk(baseChunk, AccessMode.Write, dispatcher); Assert.IsTrue(chunk1.GetBlock(4, 4, 5) is Air); Assert.IsTrue(chunk1.GetBlock(4, 4, 4) is Grass); var blocks = chunk1.AllBlocks().ToArray(); Assert.AreEqual(blocks.Length, 16 * 16 * 16); Assert.AreEqual(blocks[0].Block, blocks[blocks.Length - 1].Block); foreach (var it in chunk1.AllBlocks((index, name) => index == IdGrass)) { Assert.AreEqual(it.X, 4); Assert.AreEqual(it.Y, 4); Assert.AreEqual(it.Z, 4); Assert.IsTrue(it.Block is Grass); } Assert.DoesNotThrow(() => chunk1.SetBlock(7, 7, 7, SimpleBlocks.Grass)); Assert.DoesNotThrow(() => chunk1.SaveToLowLevelStorage()); Assert.AreEqual(baseChunk.GetBlock(7, 7, 7).Id, IdGrass); }
public void SimpleClassicChunkSLTest() { var region = (RegionFile)Activator.CreateInstance(typeof(RegionFile), true); var dict = (Dictionary <int, LowLevelChunk>)(typeof(RegionFile) .GetField("_cachedChunks", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue(region)); var chunk = ClassicChunk.CreateEmpty(); chunk.SetBlock(1, 1, 1, new ClassicBlock(700, 14)); chunk.CommitChanges(); dict[5] = chunk; using (var stream = new MemoryStream()) { Assert.DoesNotThrow(() => region.SaveToStream(stream)); stream.Seek(0, SeekOrigin.Begin); var region2 = RegionFile.CreateFromStream(stream, 0, 0, RegionLoadApproach.InMemory); var block = (region2.GetChunkData(5) as ClassicChunk).GetBlock(1, 1, 1); Assert.AreEqual(block.Id, 700); Assert.AreEqual(block.Data, 14); } }
public void GetSetTest() { var chunk = ClassicChunk.CreateEmpty(); var blocks = new (int X, int Y, int Z, ClassicBlock Block)[] {