Fixed BlockChangePacket after last changes

This commit is contained in:
Vladislavs Golubs 2015-09-23 14:39:36 +03:00 committed by Steven Smith
parent 471d98ee4b
commit 074d2b1849
2 changed files with 37 additions and 1 deletions

View file

@ -1,5 +1,6 @@
package org.spacehq.mc.protocol.packet.ingame.server.world;
import org.spacehq.mc.protocol.data.game.Position;
import org.spacehq.mc.protocol.data.game.values.world.block.BlockChangeRecord;
import org.spacehq.mc.protocol.util.NetUtil;
import org.spacehq.packetlib.io.NetInput;
@ -26,8 +27,10 @@ public class ServerBlockChangePacket implements Packet {
@Override
public void read(NetInput in) throws IOException {
Position position = NetUtil.readPosition(in);
int block = in.readVarInt();
this.record = new BlockChangeRecord(NetUtil.readPosition(in), block >> 4, block & 0xF);
this.record = new BlockChangeRecord(position, block >> 4, block & 0xF);
}
@Override

View file

@ -1,10 +1,14 @@
package org.spacehq.mc.protocol;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.spacehq.mc.auth.data.GameProfile;
import org.spacehq.mc.protocol.data.game.Position;
import org.spacehq.mc.protocol.data.game.values.world.block.BlockChangeRecord;
import org.spacehq.mc.protocol.data.message.TextMessage;
import org.spacehq.mc.protocol.data.status.PlayerInfo;
import org.spacehq.mc.protocol.data.status.ServerStatusInfo;
@ -12,6 +16,7 @@ import org.spacehq.mc.protocol.data.status.VersionInfo;
import org.spacehq.mc.protocol.data.status.handler.ServerInfoBuilder;
import org.spacehq.mc.protocol.data.status.handler.ServerInfoHandler;
import org.spacehq.mc.protocol.packet.ingame.server.ServerJoinGamePacket;
import org.spacehq.mc.protocol.packet.ingame.server.world.ServerBlockChangePacket;
import org.spacehq.packetlib.Client;
import org.spacehq.packetlib.Server;
import org.spacehq.packetlib.Session;
@ -20,7 +25,10 @@ import org.spacehq.packetlib.event.session.PacketReceivedEvent;
import org.spacehq.packetlib.event.session.SessionAdapter;
import org.spacehq.packetlib.packet.Packet;
import org.spacehq.packetlib.tcp.TcpSessionFactory;
import org.spacehq.packetlib.tcp.io.ByteBufNetInput;
import org.spacehq.packetlib.tcp.io.ByteBufNetOutput;
import java.io.IOException;
import java.util.concurrent.CountDownLatch;
import static java.util.concurrent.TimeUnit.SECONDS;
@ -110,6 +118,31 @@ public class MinecraftProtocolTest {
assertFalse("Received incorrect reduced debug info flag.", packet.getReducedDebugInfo());
}
@Test
public void testBlockBreak() throws IOException {
ByteBuf buffer = Unpooled.buffer();
ByteBufNetOutput out = new ByteBufNetOutput(buffer);
ByteBufNetInput in = new ByteBufNetInput(buffer);
Position position = new Position(1, 61, -1);
BlockChangeRecord record = new BlockChangeRecord(position, 3, 2);
new ServerBlockChangePacket(record).write(out);
ServerBlockChangePacket packet = new ServerBlockChangePacket(record);
packet.read(in);
record = packet.getRecord();
position = record.getPosition();
assertFalse("Buffer is not empty", buffer.isReadable());
assertEquals("Received incorrect X position", 1, position.getX());
assertEquals("Received incorrect Y position", 61, position.getY());
assertEquals("Received incorrect Z position", -1, position.getZ());
assertEquals("Received incorrect block id", 3, record.getId());
assertEquals("Received incorrect block data", 2, record.getData());
}
@After
public void tearDownClient() {
if(this.client != null) {