Skip to content
This repository has been archived by the owner on Feb 24, 2024. It is now read-only.

Commit

Permalink
Merge branch 'main' into remove_fake_player
Browse files Browse the repository at this point in the history
  • Loading branch information
iam4722202468 committed Feb 7, 2024
2 parents 631c7f7 + 6d4eec1 commit 8492cd6
Show file tree
Hide file tree
Showing 9 changed files with 46 additions and 22 deletions.
13 changes: 12 additions & 1 deletion src/main/java/net/minestom/server/instance/LightingChunk.java
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,17 @@ protected LightData createLightData() {
Set<Chunk> combined = new HashSet<>();
int chunkMin = instance.getDimensionType().getMinY();

int highestRegionPoint = instance.getDimensionType().getMinY();
for (int x = chunkX - 1; x <= chunkX + 1; x++) {
for (int z = chunkZ - 1; z <= chunkZ + 1; z++) {
Chunk chunk = instance.getChunk(x, z);
if (chunk instanceof LightingChunk light) {
light.getHeightmap();
if (light.highestBlock > highestRegionPoint) highestRegionPoint = light.highestBlock;
}
}
}

int index = 0;
for (Section section : sections) {
boolean wasUpdatedBlock = false;
Expand Down Expand Up @@ -222,7 +233,7 @@ protected LightData createLightData() {
final byte[] blockLight = section.blockLight().array();
final int sectionMaxY = index * 16 + chunkMin;

if ((wasUpdatedSky) && this.instance.getDimensionType().isSkylightEnabled() && sectionMaxY <= (highestBlock + 16)) {
if ((wasUpdatedSky) && this.instance.getDimensionType().isSkylightEnabled() && sectionMaxY <= (highestRegionPoint + 16)) {
if (skyLight.length != 0 && skyLight != emptyContent) {
skyLights.add(skyLight);
skyMask.set(index);
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/net/minestom/server/listener/PlayPingListener.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package net.minestom.server.listener;

import net.minestom.server.entity.Player;
import net.minestom.server.network.packet.client.common.ClientPingRequestPacket;
import net.minestom.server.network.packet.server.common.PingResponsePacket;
import org.jetbrains.annotations.NotNull;

public final class PlayPingListener {

public static void requestListener(@NotNull ClientPingRequestPacket packet, @NotNull Player player) {
player.sendPacket(new PingResponsePacket(packet.number()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import net.minestom.server.network.packet.client.login.ClientLoginPluginResponsePacket;
import net.minestom.server.network.packet.client.login.ClientLoginStartPacket;
import net.minestom.server.network.packet.client.play.*;
import net.minestom.server.network.packet.client.status.PingPacket;
import net.minestom.server.network.packet.client.status.StatusRequestPacket;
import net.minestom.server.network.player.PlayerConnection;
import org.jetbrains.annotations.NotNull;
Expand All @@ -46,7 +45,7 @@ public PacketListenerManager() {
setListener(ConnectionState.HANDSHAKE, ClientHandshakePacket.class, HandshakeListener::listener);

setListener(ConnectionState.STATUS, StatusRequestPacket.class, StatusListener::requestListener);
setListener(ConnectionState.STATUS, PingPacket.class, StatusListener::pingListener);
setListener(ConnectionState.STATUS, ClientPingRequestPacket.class, StatusListener::pingRequestListener);

setListener(ConnectionState.LOGIN, ClientLoginStartPacket.class, LoginListener::loginStartListener);
setListener(ConnectionState.LOGIN, ClientEncryptionResponsePacket.class, LoginListener::loginEncryptionResponseListener);
Expand Down Expand Up @@ -95,6 +94,7 @@ public PacketListenerManager() {
setPlayListener(ClientEditBookPacket.class, BookListener::listener);
setPlayListener(ClientChatSessionUpdatePacket.class, (packet, player) -> {/* empty */});
setPlayListener(ClientChunkBatchReceivedPacket.class, ChunkBatchListener::batchReceivedListener);
setPlayListener(ClientPingRequestPacket.class, PlayPingListener::requestListener);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
import net.minestom.server.event.EventDispatcher;
import net.minestom.server.event.server.ClientPingServerEvent;
import net.minestom.server.event.server.ServerListPingEvent;
import net.minestom.server.network.packet.client.status.PingPacket;
import net.minestom.server.network.packet.client.common.ClientPingRequestPacket;
import net.minestom.server.network.packet.client.status.StatusRequestPacket;
import net.minestom.server.network.packet.server.status.PongPacket;
import net.minestom.server.network.packet.server.common.PingResponsePacket;
import net.minestom.server.network.packet.server.status.ResponsePacket;
import net.minestom.server.network.player.PlayerConnection;
import net.minestom.server.ping.ServerListPingType;
Expand All @@ -21,19 +21,19 @@ public static void requestListener(@NotNull StatusRequestPacket packet, @NotNull
connection.sendPacket(new ResponsePacket(pingVersion.getPingResponse(statusRequestEvent.getResponseData()))));
}

public static void pingListener(@NotNull PingPacket packet, @NotNull PlayerConnection connection) {
public static void pingRequestListener(@NotNull ClientPingRequestPacket packet, @NotNull PlayerConnection connection) {
final ClientPingServerEvent clientPingEvent = new ClientPingServerEvent(connection, packet.number());
EventDispatcher.call(clientPingEvent);

if (clientPingEvent.isCancelled()) {
connection.disconnect();
} else {
if (clientPingEvent.getDelay().isZero()) {
connection.sendPacket(new PongPacket(clientPingEvent.getPayload()));
connection.sendPacket(new PingResponsePacket(clientPingEvent.getPayload()));
connection.disconnect();
} else {
MinecraftServer.getSchedulerManager().buildTask(() -> {
connection.sendPacket(new PongPacket(clientPingEvent.getPayload()));
connection.sendPacket(new PingResponsePacket(clientPingEvent.getPayload()));
connection.disconnect();
}).delay(clientPingEvent.getDelay()).schedule();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import net.minestom.server.network.packet.client.login.ClientLoginPluginResponsePacket;
import net.minestom.server.network.packet.client.login.ClientLoginStartPacket;
import net.minestom.server.network.packet.client.play.*;
import net.minestom.server.network.packet.client.status.PingPacket;
import net.minestom.server.network.packet.client.status.StatusRequestPacket;
import net.minestom.server.utils.collection.ObjectArray;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -46,7 +45,7 @@ private static int nextId() {

public Status() {
register(nextId(), StatusRequestPacket::new);
register(nextId(), PingPacket::new);
register(nextId(), ClientPingRequestPacket::new);
}
}

Expand Down Expand Up @@ -119,7 +118,7 @@ public Play() {
register(nextId(), ClientVehicleMovePacket::new);
register(nextId(), ClientSteerBoatPacket::new);
register(nextId(), ClientPickItemPacket::new);
nextId(); // Ping request
register(nextId(), ClientPingRequestPacket::new);
register(nextId(), ClientCraftRecipeRequest::new);
register(nextId(), ClientPlayerAbilitiesPacket::new);
register(nextId(), ClientPlayerDiggingPacket::new);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package net.minestom.server.network.packet.client.status;
package net.minestom.server.network.packet.client.common;

import net.minestom.server.network.NetworkBuffer;
import net.minestom.server.network.packet.client.ClientPacket;
import org.jetbrains.annotations.NotNull;

import static net.minestom.server.network.NetworkBuffer.LONG;

public record PingPacket(long number) implements ClientPacket {
public PingPacket(@NotNull NetworkBuffer reader) {
public record ClientPingRequestPacket(long number) implements ClientPacket {
public ClientPingRequestPacket(@NotNull NetworkBuffer reader) {
this(reader.read(LONG));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ public final class ServerPacketIdentifier {
private static final AtomicInteger PLAY_ID = new AtomicInteger(0);

public static final int STATUS_RESPONSE = 0x00;
public static final int STATUS_PONG = 0x01;
public static final int STATUS_PING_RESPONSE = 0x01;

public static final int LOGIN_DISCONNECT = 0x00;
public static final int LOGIN_ENCRYPTION_REQUEST = 0x01;
Expand Down Expand Up @@ -77,7 +77,7 @@ public final class ServerPacketIdentifier {
public static final int OPEN_WINDOW = nextPlayId();
public static final int OPEN_SIGN_EDITOR = nextPlayId();
public static final int PING = nextPlayId();
public static final int PONG_RESPONSE = nextPlayId();
public static final int PING_RESPONSE = nextPlayId();
public static final int CRAFT_RECIPE_RESPONSE = nextPlayId();
public static final int PLAYER_ABILITIES = nextPlayId();
public static final int PLAYER_CHAT = nextPlayId();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package net.minestom.server.network.packet.server.status;
package net.minestom.server.network.packet.server.common;

import net.minestom.server.network.ConnectionState;
import net.minestom.server.network.NetworkBuffer;
Expand All @@ -9,8 +9,8 @@

import static net.minestom.server.network.NetworkBuffer.LONG;

public record PongPacket(long number) implements ServerPacket {
public PongPacket(@NotNull NetworkBuffer reader) {
public record PingResponsePacket(long number) implements ServerPacket {
public PingResponsePacket(@NotNull NetworkBuffer reader) {
this(reader.read(LONG));
}

Expand All @@ -22,7 +22,8 @@ public void write(@NotNull NetworkBuffer writer) {
@Override
public int getId(@NotNull ConnectionState state) {
return switch (state) {
case STATUS -> ServerPacketIdentifier.STATUS_PONG;
case STATUS -> ServerPacketIdentifier.STATUS_PING_RESPONSE;
case PLAY -> ServerPacketIdentifier.PING_RESPONSE;
default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.STATUS);
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@
import net.minestom.server.network.packet.client.handshake.ClientHandshakePacket;
import net.minestom.server.network.packet.server.ServerPacket;
import net.minestom.server.network.packet.server.common.DisconnectPacket;
import net.minestom.server.network.packet.server.common.PingResponsePacket;
import net.minestom.server.network.packet.server.login.LoginDisconnectPacket;
import net.minestom.server.network.packet.server.login.LoginSuccessPacket;
import net.minestom.server.network.packet.server.login.SetCompressionPacket;
import net.minestom.server.network.packet.server.play.*;
import net.minestom.server.network.packet.server.play.DeclareRecipesPacket.Ingredient;
import net.minestom.server.network.packet.server.status.PongPacket;
import net.minestom.server.network.packet.server.status.ResponsePacket;
import net.minestom.server.recipe.RecipeCategory;
import org.jglrxavpok.hephaistos.nbt.NBT;
Expand Down Expand Up @@ -51,7 +51,7 @@ public static void setupServer() {
// Handshake
SERVER_PACKETS.add(new ResponsePacket(new JsonObject().toString()));
// Status
SERVER_PACKETS.add(new PongPacket(5));
SERVER_PACKETS.add(new PingResponsePacket(5));
// Login
//SERVER_PACKETS.add(new EncryptionRequestPacket("server", generateByteArray(16), generateByteArray(16)));
SERVER_PACKETS.add(new LoginDisconnectPacket(COMPONENT));
Expand Down

0 comments on commit 8492cd6

Please sign in to comment.