Archived
0

added event Chunk load

This commit is contained in:
2018-08-12 23:41:38 +03:00
parent cf7811b906
commit 58470af000
7 changed files with 92 additions and 0 deletions

View File

@@ -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();
}
}

View File

@@ -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);
}
}
}