added event Chunk load
This commit is contained in:
@@ -2,9 +2,13 @@ package mc.core.network.proto_1_12_2.netty;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import mc.core.events.SC_ChunkLoadEvent;
|
||||
import mc.core.events.SC_PlayerMoveEvent;
|
||||
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;
|
||||
import mc.core.utils.CompactedCoords;
|
||||
import mc.core.world.chunk.ChunkSection;
|
||||
|
||||
@Slf4j
|
||||
class PlayerEventListener {
|
||||
@@ -18,4 +22,24 @@ class PlayerEventListener {
|
||||
|
||||
event.getPlayer().getChannel().writeAndFlush(packet);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void playerChunkLoadHandler(SC_ChunkLoadEvent event) {
|
||||
log.debug("(SC) playerChunkLoadHandler()");
|
||||
|
||||
for(Integer compressXZ : event.getNeedLoadChunks()) {
|
||||
int[] xz = CompactedCoords.uncompressXZ(compressXZ);
|
||||
ChunkSection chunkSection = event.getPlayer().getLocation().getWorld().getChunk(xz[0], 0, xz[1]);
|
||||
|
||||
ChunkDataPacket packet = new ChunkDataPacket();
|
||||
packet.setX(xz[0]);
|
||||
packet.setZ(xz[1]);
|
||||
packet.setInitChunk(true);
|
||||
packet.getChunks().add(chunkSection);
|
||||
|
||||
event.getPlayer().getChannel().write(packet);
|
||||
}
|
||||
|
||||
event.getPlayer().getChannel().flush();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@ package mc.core.network.proto_1_12_2.netty.handlers;
|
||||
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelFutureListener;
|
||||
import mc.core.events.CS_PlayerMoveEvent;
|
||||
import mc.core.events.EventBusGetter;
|
||||
import mc.core.network.proto_1_12_2.State;
|
||||
import mc.core.network.proto_1_12_2.TeleportManager;
|
||||
import mc.core.network.proto_1_12_2.netty.wrappers.WrapperNetChannel;
|
||||
@@ -16,6 +18,7 @@ import mc.core.player.PlayerMode;
|
||||
import mc.core.text.Text;
|
||||
import mc.core.text.TextColor;
|
||||
import mc.core.text.TextStyle;
|
||||
import mc.core.utils.CompactedCoords;
|
||||
import mc.core.world.World;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -85,6 +88,7 @@ public class LoginHandler extends AbstractStateHandler implements LoginStateHand
|
||||
pkt8.getChunks().add(world.getChunk(0, 0,0));
|
||||
pkt8.setInitChunk(true);
|
||||
channel.writeAndFlush(pkt8);
|
||||
player.getLoadedChunks().add(CompactedCoords.compressXZ(0, 0));
|
||||
|
||||
// Player Position And Look
|
||||
PlayerPositionAndLookPacket pkt4 = new PlayerPositionAndLookPacket();
|
||||
@@ -132,6 +136,11 @@ public class LoginHandler extends AbstractStateHandler implements LoginStateHand
|
||||
channel.writeAndFlush(pkt7);
|
||||
|
||||
playerManager.joinServer(player);
|
||||
|
||||
CS_PlayerMoveEvent event = new CS_PlayerMoveEvent(player, player.getLocation());
|
||||
event.setNewLocation(player.getLocation());
|
||||
event.setRecalcChunk(true);
|
||||
EventBusGetter.INSTANCE.post(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user