Improve network code

This commit is contained in:
2025-06-12 21:28:49 +02:00
parent 3d562cf743
commit c3a4e7ed85
5 changed files with 30 additions and 87 deletions
@@ -30,10 +30,11 @@ import com.velocitypowered.api.util.GameProfile;
import de.steamwar.network.packets.PacketHandler;
import de.steamwar.network.packets.common.PlayerSkinRequestPacket;
import de.steamwar.network.packets.common.PlayerSkinResponsePacket;
import de.steamwar.persistent.Storage;
import de.steamwar.velocitycore.VelocityCore;
import de.steamwar.velocitycore.network.NetworkSender;
import de.steamwar.velocitycore.network.ServerMetaInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.SneakyThrows;
import java.io.BufferedReader;
@@ -55,15 +56,9 @@ public class PlayerSkinHandler extends PacketHandler {
VelocityCore.getProxy().getEventManager().register(VelocityCore.get(), this);
}
private Map<UUID, String> skins = new LinkedHashMap<>() {
private Map<UUID, SkinData> skins = new LinkedHashMap<>() {
@Override
protected boolean removeEldestEntry(Map.Entry<UUID, String> eldest) {
return size() > maxCacheSize;
}
};
private Map<UUID, String> signatures = new LinkedHashMap<>() {
@Override
protected boolean removeEldestEntry(Map.Entry<UUID, String> eldest) {
protected boolean removeEldestEntry(Map.Entry<UUID, SkinData> eldest) {
return size() > maxCacheSize;
}
};
@@ -71,8 +66,9 @@ public class PlayerSkinHandler extends PacketHandler {
@Handler
@SneakyThrows
public void handle(PlayerSkinRequestPacket packet) {
if (skins.containsKey(packet.getUuid()) && signatures.containsKey(packet.getUuid())) {
NetworkSender.send(((ServerMetaInfo) packet.getMetaInfos()).sender().getServer(), new PlayerSkinResponsePacket(packet.getUuid(), skins.get(packet.getUuid()), signatures.get(packet.getUuid())));
if (skins.containsKey(packet.getUuid())) {
SkinData skinData = skins.get(packet.getUuid());
NetworkSender.send(((ServerMetaInfo) packet.getMetaInfos()).sender().getServer(), new PlayerSkinResponsePacket(packet.getUuid(), skinData.skin, skinData.signature));
return;
}
@@ -98,8 +94,7 @@ public class PlayerSkinHandler extends PacketHandler {
if (prop.get("name").getAsString().equals("textures")) {
String skin = prop.get("value").getAsString();
String signature = prop.get("signature").getAsString();
skins.put(packet.getUuid(), skin);
signatures.put(packet.getUuid(), signature);
skins.put(packet.getUuid(), new SkinData(skin, signature));
NetworkSender.send(((ServerMetaInfo) packet.getMetaInfos()).sender().getServer(), new PlayerSkinResponsePacket(packet.getUuid(), skin, signature));
return;
}
@@ -112,14 +107,15 @@ public class PlayerSkinHandler extends PacketHandler {
GameProfile gameProfile = player.getGameProfile();
GameProfile.Property property = gameProfile.getProperties().stream().filter(p -> p.getName().equals("textures")).findFirst().orElse(null);
if (property == null) return;
skins.put(player.getUniqueId(), property.getValue());
signatures.put(player.getUniqueId(), property.getSignature());
skins.put(player.getUniqueId(), new SkinData(property.getValue(), property.getSignature()));
Set<UUID> uuidSet = skins.keySet();
VelocityCore.getProxy().getAllServers().forEach(server -> {
for (UUID uuid : uuidSet) {
NetworkSender.send(server, new PlayerSkinResponsePacket(uuid, skins.get(uuid), signatures.get(uuid)));
NetworkSender.send(server, new PlayerSkinResponsePacket(uuid, property.getValue(), property.getSignature()));
}
});
}
public record SkinData(String skin, String signature) {}
}