Archived
0

Merge branch 'world-loader-anvil' into proto_1.12.2

This commit is contained in:
2019-01-29 11:43:51 +03:00
51 changed files with 2811 additions and 287 deletions

View File

@@ -14,6 +14,7 @@ import mc.core.network.proto_1_12_2.State;
import mc.core.network.proto_1_12_2.netty.wrappers.WrapperNetOutputStream;
import static mc.core.network.proto_1_12_2.netty.NettyServer.ATTR_STATE;
import static org.slf4j.helpers.MessageFormatter.format;
@Slf4j
public class PacketEncoder extends MessageToByteEncoder<SCPacket> {
@@ -29,8 +30,12 @@ public class PacketEncoder extends MessageToByteEncoder<SCPacket> {
log.debug("Send {}:{}", state, packet);
NetOutputStream netStream = new WrapperNetOutputStream(out);
netStream.writeVarInt(id);
packet.writeSelf(netStream);
try {
NetOutputStream netStream = new WrapperNetOutputStream(out);
netStream.writeVarInt(id);
packet.writeSelf(netStream);
} catch (Throwable t) {
log.error(format("Error encoding packet {}:{}", state, packet).getMessage(), t);
}
}
}

View File

@@ -5,6 +5,7 @@ import mc.core.eventbus.Subscriber;
import mc.core.eventbus.events.SC_ChunkLoadEvent;
import mc.core.eventbus.events.SC_ChunkUnloadEvent;
import mc.core.eventbus.events.SC_PlayerMoveEvent;
import mc.core.network.NetChannel;
import mc.core.network.proto_1_12_2.TeleportManager;
import mc.core.network.proto_1_12_2.packets.ChunkDataPacket;
import mc.core.network.proto_1_12_2.packets.PlayerPositionAndLookPacket;
@@ -27,9 +28,14 @@ public class PlayerEventListener {
@Subscriber
public void playerChunkLoadHandler(SC_ChunkLoadEvent event) {
if (event.getNeedLoadChunks().size() == 0) return;
final NetChannel channel = event.getPlayer().getChannel();
for(Integer compressXZ : event.getNeedLoadChunks()) {
int[] xz = CompactedCoords.uncompressXZ(compressXZ);
Chunk chunk = event.getPlayer().getWorld().getChunk(xz[0], xz[1]);
if (chunk == null) continue;
ChunkDataPacket packet = new ChunkDataPacket();
packet.setX(xz[0]);
@@ -37,12 +43,18 @@ public class PlayerEventListener {
packet.setInitChunk(true);
packet.setChunk(chunk);
event.getPlayer().getChannel().writeAndFlush(packet);
channel.write(packet);
}
channel.flush();
}
@Subscriber
public void playerChunkUnloadHandler(SC_ChunkUnloadEvent event) {
if (event.getNeedUnloadChunks().size() == 0) return;
final NetChannel channel = event.getPlayer().getChannel();
for(Integer compressXZ : event.getNeedUnloadChunks()) {
int[] xz = CompactedCoords.uncompressXZ(compressXZ);
@@ -50,7 +62,9 @@ public class PlayerEventListener {
packet.setX(xz[0]);
packet.setZ(xz[1]);
event.getPlayer().getChannel().writeAndFlush(packet);
channel.write(packet);
}
channel.flush();
}
}

View File

@@ -108,9 +108,9 @@ public class LoginHandler extends AbstractStateHandler implements LoginStateHand
playerData.setPing(0);
playerData.setHasDisplayName(true);
playerData.setDisplayName(Text.builder()
.append(Text.of(TextColor.RED, TextStyle.BOLD, player.getName().substring(0,1)))
.append(Text.of(TextColor.WHITE, player.getName().substring(1)))
.build()
.append(Text.of(TextColor.RED, TextStyle.BOLD, player.getName().substring(0,1)))
.append(Text.of(TextColor.WHITE, player.getName().substring(1)))
.build()
);
pkt5.getListPlayers().add(playerData);
channel.writeAndFlush(pkt5);