From 155934718673490c799bba4d9a99d5c7ad6423cf Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Thu, 16 Aug 2018 00:30:19 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B5=D1=81=D1=82=D0=B0=20ChunkData?= =?UTF-8?q?Packet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mc/core/world/block/AbstractBlock.java | 2 +- .../proto_1_12_2/packets/DummyWorld.java | 133 ++++++++++++++++++ .../packets/TestChunkdataPacket.java | 40 ++++++ .../proto_1_12_2/packets/ChunkDataPacket.bin | Bin 0 -> 6421 bytes 4 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/DummyWorld.java create mode 100644 proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/TestChunkdataPacket.java create mode 100644 proto_1.12.2/src/test/resources/mc/core/network/proto_1_12_2/packets/ChunkDataPacket.bin diff --git a/core/src/main/java/mc/core/world/block/AbstractBlock.java b/core/src/main/java/mc/core/world/block/AbstractBlock.java index 92fb3f2..0c6d90b 100644 --- a/core/src/main/java/mc/core/world/block/AbstractBlock.java +++ b/core/src/main/java/mc/core/world/block/AbstractBlock.java @@ -14,7 +14,7 @@ public abstract class AbstractBlock implements Block { @Setter private Location location; @Getter - private int light = 15; + private int light = 0; @Getter private final BlockType blockType; private final Map> nbtTagsMap = new HashMap<>(); diff --git a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/DummyWorld.java b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/DummyWorld.java new file mode 100644 index 0000000..f485394 --- /dev/null +++ b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/DummyWorld.java @@ -0,0 +1,133 @@ +package mc.core.network.proto_1_12_2.packets; + +import mc.core.EntityLocation; +import mc.core.world.Biome; +import mc.core.world.World; +import mc.core.world.WorldType; +import mc.core.world.block.Block; +import mc.core.world.block.BlockFactory; +import mc.core.world.block.BlockType; +import mc.core.world.chunk.Chunk; +import mc.core.world.chunk.ChunkSection; + +public class DummyWorld implements World { + private class DummyChunkSection implements ChunkSection { + @Override + public int getSkyLight(int x, int y, int z) { + if (y <= 3) return 0; + else return 15; + } + + @Override + public void setSkyLight(int x, int y, int z, int lightLevel) { + } + + @Override + public int getAddition(int x, int y, int z) { + return 0; + } + + @Override + public void setAddition(int x, int y, int z, int value) { + } + + @Override + public int getX() { + return 0; + } + + @Override + public int getY() { + return 0; + } + + @Override + public int getZ() { + return 0; + } + + @Override + public void setBlock(Block block) { + } + + @Override + public Block getBlock(int x, int y, int z) { + BlockFactory blockFactory = new BlockFactory(); + + if (y == 0) return blockFactory.create(BlockType.BEDROCK, x, y, z, getWorld()); + else if (y >= 1 && y <= 2) return blockFactory.create(BlockType.DIRT, x, y, z, getWorld()); + else if (y == 3) return blockFactory.create(BlockType.GRASS, x, y, z, getWorld()); + else return blockFactory.create(BlockType.AIR, x, y, z, getWorld()); + } + + @Override + public World getWorld() { + return DummyWorld.this; + } + } + + private class DummyChunk implements Chunk { + @Override + public World getWorld() { + return DummyWorld.this; + } + + @Override + public void setWorld(World world) { + } + + @Override + public ChunkSection getChunkSection(int height) { + if (height < 1) return new DummyChunkSection(); + else return null; + } + + @Override + public void setChunkSection(int height, ChunkSection chunkSection) { + } + + @Override + public Biome getBiome(int localX, int localZ) { + return Biome.PLAINS; + } + + @Override + public void setBiome(int localX, int localZ, Biome biome) { + } + + @Override + public int getX() { + return 0; + } + + @Override + public int getZ() { + return 0; + } + } + + private final Chunk chunk = new DummyChunk(); + + @Override + public WorldType getWorldType() { + return WorldType.FLAT; + } + + @Override + public EntityLocation getSpawn() { + return null; + } + + @Override + public void setSpawn(EntityLocation location) { + } + + @Override + public Chunk getChunk(int x, int z) { + return chunk; + } + + @Override + public void setChunk(int x, int z, Chunk chunk) { + } +} diff --git a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/TestChunkdataPacket.java b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/TestChunkdataPacket.java new file mode 100644 index 0000000..05f8528 --- /dev/null +++ b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/TestChunkdataPacket.java @@ -0,0 +1,40 @@ +package mc.core.network.proto_1_12_2.packets; + +import com.google.common.io.ByteStreams; +import mc.core.network.proto_1_12_2.ByteArrayOutputNetStream; +import mc.core.world.World; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.io.*; + +public class TestChunkdataPacket { + private static byte[] expectedPacketData; + + @BeforeClass + public static void beforeClassTest() throws IOException { + InputStream inputStream = TestChunkdataPacket.class.getResourceAsStream("ChunkDataPacket.bin"); + expectedPacketData = ByteStreams.toByteArray(inputStream); + } + + private World createDummyWorld() { + return new DummyWorld(); + } + + @Test + public void test() { + ChunkDataPacket packet = new ChunkDataPacket(); + packet.setX(0); + packet.setZ(0); + packet.setChunk(createDummyWorld().getChunk(0, 0)); + packet.setInitChunk(true); + + ByteArrayOutputNetStream netStream = new ByteArrayOutputNetStream(); + packet.writeSelf(netStream); + byte[] actualPacketData = netStream.toByteArray(); + + Assert.assertEquals(expectedPacketData.length, actualPacketData.length); + Assert.assertArrayEquals(expectedPacketData, actualPacketData); + } +} diff --git a/proto_1.12.2/src/test/resources/mc/core/network/proto_1_12_2/packets/ChunkDataPacket.bin b/proto_1.12.2/src/test/resources/mc/core/network/proto_1_12_2/packets/ChunkDataPacket.bin new file mode 100644 index 0000000000000000000000000000000000000000..fcfd0c0d614ac28557f672d9f134ef173d050110 GIT binary patch literal 6421 zcmeIwF%5t~5Jb^kat3ffP;dcbNT9?u6yV_!_Wfr1mx*}GytdZj=*v0HgIkNY5AM5! hAwYlt0RjXF5FkK+009C7ek^c{009C7N(yB0;sK;-L16#@ literal 0 HcmV?d00001