небольшие оптимизации в загрузке/выгрузке чанков
This commit is contained in:
@@ -5,6 +5,7 @@ import mc.core.eventbus.Subscriber;
|
|||||||
import mc.core.eventbus.events.SC_ChunkLoadEvent;
|
import mc.core.eventbus.events.SC_ChunkLoadEvent;
|
||||||
import mc.core.eventbus.events.SC_ChunkUnloadEvent;
|
import mc.core.eventbus.events.SC_ChunkUnloadEvent;
|
||||||
import mc.core.eventbus.events.SC_PlayerMoveEvent;
|
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.TeleportManager;
|
||||||
import mc.core.network.proto_1_12_2.packets.ChunkDataPacket;
|
import mc.core.network.proto_1_12_2.packets.ChunkDataPacket;
|
||||||
import mc.core.network.proto_1_12_2.packets.PlayerPositionAndLookPacket;
|
import mc.core.network.proto_1_12_2.packets.PlayerPositionAndLookPacket;
|
||||||
@@ -27,6 +28,10 @@ public class PlayerEventListener {
|
|||||||
|
|
||||||
@Subscriber
|
@Subscriber
|
||||||
public void playerChunkLoadHandler(SC_ChunkLoadEvent event) {
|
public void playerChunkLoadHandler(SC_ChunkLoadEvent event) {
|
||||||
|
if (event.getNeedLoadChunks().size() == 0) return;
|
||||||
|
|
||||||
|
final NetChannel channel = event.getPlayer().getChannel();
|
||||||
|
|
||||||
for(Integer compressXZ : event.getNeedLoadChunks()) {
|
for(Integer compressXZ : event.getNeedLoadChunks()) {
|
||||||
int[] xz = CompactedCoords.uncompressXZ(compressXZ);
|
int[] xz = CompactedCoords.uncompressXZ(compressXZ);
|
||||||
Chunk chunk = event.getPlayer().getWorld().getChunk(xz[0], xz[1]);
|
Chunk chunk = event.getPlayer().getWorld().getChunk(xz[0], xz[1]);
|
||||||
@@ -38,12 +43,18 @@ public class PlayerEventListener {
|
|||||||
packet.setInitChunk(true);
|
packet.setInitChunk(true);
|
||||||
packet.setChunk(chunk);
|
packet.setChunk(chunk);
|
||||||
|
|
||||||
event.getPlayer().getChannel().writeAndFlush(packet);
|
channel.write(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
channel.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscriber
|
@Subscriber
|
||||||
public void playerChunkUnloadHandler(SC_ChunkUnloadEvent event) {
|
public void playerChunkUnloadHandler(SC_ChunkUnloadEvent event) {
|
||||||
|
if (event.getNeedUnloadChunks().size() == 0) return;
|
||||||
|
|
||||||
|
final NetChannel channel = event.getPlayer().getChannel();
|
||||||
|
|
||||||
for(Integer compressXZ : event.getNeedUnloadChunks()) {
|
for(Integer compressXZ : event.getNeedUnloadChunks()) {
|
||||||
int[] xz = CompactedCoords.uncompressXZ(compressXZ);
|
int[] xz = CompactedCoords.uncompressXZ(compressXZ);
|
||||||
|
|
||||||
@@ -51,7 +62,9 @@ public class PlayerEventListener {
|
|||||||
packet.setX(xz[0]);
|
packet.setX(xz[0]);
|
||||||
packet.setZ(xz[1]);
|
packet.setZ(xz[1]);
|
||||||
|
|
||||||
event.getPlayer().getChannel().writeAndFlush(packet);
|
channel.write(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
channel.flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user