forked from BLOCKFANTASY/LOOHP-Limbo
Merge branch 'master' into feature/performance-improvements
This commit is contained in:
@@ -40,8 +40,10 @@ import com.loohp.limbo.file.ServerProperties;
|
||||
import com.loohp.limbo.inventory.AnvilInventory;
|
||||
import com.loohp.limbo.inventory.Inventory;
|
||||
import com.loohp.limbo.inventory.ItemStack;
|
||||
import com.loohp.limbo.location.GlobalPos;
|
||||
import com.loohp.limbo.location.Location;
|
||||
import com.loohp.limbo.network.protocol.packets.ClientboundFinishConfigurationPacket;
|
||||
import com.loohp.limbo.network.protocol.packets.ClientboundLevelChunkWithLightPacket;
|
||||
import com.loohp.limbo.network.protocol.packets.ClientboundRegistryDataPacket;
|
||||
import com.loohp.limbo.network.protocol.packets.PacketHandshakingIn;
|
||||
import com.loohp.limbo.network.protocol.packets.PacketIn;
|
||||
@@ -588,12 +590,12 @@ public class ClientConnection implements Runnable {
|
||||
ByteArrayOutputStream brandOut = new ByteArrayOutputStream();
|
||||
DataTypeIO.writeString(new DataOutputStream(brandOut), properties.getServerModName(), StandardCharsets.UTF_8);
|
||||
sendPluginMessage(BRAND_ANNOUNCE_CHANNEL, brandOut.toByteArray());
|
||||
|
||||
|
||||
SkinResponse skinresponce = (isVelocityModern || isBungeeGuard || isBungeecord) && forwardedSkin != null ? forwardedSkin : MojangAPIUtils.getSkinFromMojangServer(player.getName());
|
||||
PlayerSkinProperty skin = skinresponce != null ? new PlayerSkinProperty(skinresponce.getSkin(), skinresponce.getSignature()) : null;
|
||||
PacketPlayOutPlayerInfo info = new PacketPlayOutPlayerInfo(EnumSet.of(PlayerInfoAction.ADD_PLAYER, PlayerInfoAction.UPDATE_GAME_MODE, PlayerInfoAction.UPDATE_LISTED, PlayerInfoAction.UPDATE_LATENCY, PlayerInfoAction.UPDATE_DISPLAY_NAME), player.getUniqueId(), new PlayerInfoData.PlayerInfoDataAddPlayer(player.getName(), true, Optional.ofNullable(skin), properties.getDefaultGamemode(), 0, false, Optional.empty()));
|
||||
sendPacket(info);
|
||||
|
||||
|
||||
Set<PlayerAbilityFlags> flags = new HashSet<>();
|
||||
if (properties.isAllowFlight()) {
|
||||
flags.add(PlayerAbilityFlags.FLY);
|
||||
@@ -603,7 +605,7 @@ public class ClientConnection implements Runnable {
|
||||
}
|
||||
PacketPlayOutPlayerAbilities abilities = new PacketPlayOutPlayerAbilities(0.05F, 0.1F, flags.toArray(new PlayerAbilityFlags[flags.size()]));
|
||||
sendPacket(abilities);
|
||||
|
||||
|
||||
String str = (properties.isLogPlayerIPAddresses() ? inetAddress.getHostName() : "<ip address withheld>") + ":" + clientSocket.getPort() + "|" + player.getName() + "(" + player.getUniqueId() + ")";
|
||||
Limbo.getInstance().getConsole().sendMessage("[/" + str + "] <-> Player had connected to the Limbo server!");
|
||||
|
||||
@@ -616,18 +618,18 @@ public class ClientConnection implements Runnable {
|
||||
if (declare != null) {
|
||||
sendPacket(declare);
|
||||
}
|
||||
|
||||
PacketPlayOutSpawnPosition spawnPos = new PacketPlayOutSpawnPosition(BlockPosition.from(worldSpawn), worldSpawn.getPitch());
|
||||
|
||||
PacketPlayOutSpawnPosition spawnPos = new PacketPlayOutSpawnPosition(GlobalPos.from(worldSpawn), worldSpawn.getYaw(), worldSpawn.getPitch());
|
||||
sendPacket(spawnPos);
|
||||
|
||||
|
||||
PacketPlayOutPositionAndLook positionLook = new PacketPlayOutPositionAndLook(worldSpawn.getX(), worldSpawn.getY(), worldSpawn.getZ(), worldSpawn.getYaw(), worldSpawn.getPitch(), 1);
|
||||
Limbo.getInstance().getUnsafe().a(player, new Location(world, worldSpawn.getX(), worldSpawn.getY(), worldSpawn.getZ(), worldSpawn.getYaw(), worldSpawn.getPitch()));
|
||||
sendPacket(positionLook);
|
||||
|
||||
|
||||
player.getDataWatcher().update();
|
||||
PacketPlayOutEntityMetadata show = new PacketPlayOutEntityMetadata(player, false, Player.class.getDeclaredField("skinLayers"));
|
||||
sendPacket(show);
|
||||
|
||||
|
||||
Limbo.getInstance().getEventsManager().callEvent(new PlayerJoinEvent(player));
|
||||
|
||||
if (properties.isAllowFlight()) {
|
||||
|
||||
+9
-22
@@ -20,6 +20,7 @@
|
||||
package com.loohp.limbo.network.protocol.packets;
|
||||
|
||||
import com.loohp.limbo.entity.EntityType;
|
||||
import com.loohp.limbo.location.Vector;
|
||||
import com.loohp.limbo.registry.PacketRegistry;
|
||||
import com.loohp.limbo.utils.DataTypeIO;
|
||||
|
||||
@@ -40,11 +41,9 @@ public class PacketPlayOutSpawnEntity extends PacketOut {
|
||||
private final float yaw;
|
||||
private final float headYaw;
|
||||
private final int data;
|
||||
private final short velocityX;
|
||||
private final short velocityY;
|
||||
private final short velocityZ;
|
||||
private final Vector movement;
|
||||
|
||||
public PacketPlayOutSpawnEntity(int entityId, UUID uuid, EntityType type, double x, double y, double z, float pitch, float yaw, float headYaw, int data, short velocityX, short velocityY, short velocityZ) {
|
||||
public PacketPlayOutSpawnEntity(int entityId, UUID uuid, EntityType type, double x, double y, double z, float pitch, float yaw, float headYaw, int data, Vector movement) {
|
||||
this.entityId = entityId;
|
||||
this.uuid = uuid;
|
||||
this.type = type;
|
||||
@@ -55,9 +54,7 @@ public class PacketPlayOutSpawnEntity extends PacketOut {
|
||||
this.yaw = yaw;
|
||||
this.headYaw = headYaw;
|
||||
this.data = data;
|
||||
this.velocityX = velocityX;
|
||||
this.velocityY = velocityY;
|
||||
this.velocityZ = velocityZ;
|
||||
this.movement = movement.clone();
|
||||
}
|
||||
|
||||
public int getEntityId() {
|
||||
@@ -100,19 +97,11 @@ public class PacketPlayOutSpawnEntity extends PacketOut {
|
||||
return data;
|
||||
}
|
||||
|
||||
public short getVelocityX() {
|
||||
return velocityX;
|
||||
}
|
||||
public Vector getMovement() {
|
||||
return movement.clone();
|
||||
}
|
||||
|
||||
public short getVelocityY() {
|
||||
return velocityY;
|
||||
}
|
||||
|
||||
public short getVelocityZ() {
|
||||
return velocityZ;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public byte[] serializePacket() throws IOException {
|
||||
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
||||
|
||||
@@ -124,13 +113,11 @@ public class PacketPlayOutSpawnEntity extends PacketOut {
|
||||
output.writeDouble(x);
|
||||
output.writeDouble(y);
|
||||
output.writeDouble(z);
|
||||
DataTypeIO.writeLpVec3(output, movement);
|
||||
output.writeByte((byte) (int) (pitch * 256.0F / 360.0F));
|
||||
output.writeByte((byte) (int) (yaw * 256.0F / 360.0F));
|
||||
output.writeByte((byte) (int) (headYaw * 256.0F / 360.0F));
|
||||
DataTypeIO.writeVarInt(output, data);
|
||||
output.writeShort(velocityX * 8000);
|
||||
output.writeShort(velocityY * 8000);
|
||||
output.writeShort(velocityZ * 8000);
|
||||
|
||||
return buffer.toByteArray();
|
||||
}
|
||||
|
||||
+26
-16
@@ -19,39 +19,49 @@
|
||||
|
||||
package com.loohp.limbo.network.protocol.packets;
|
||||
|
||||
import com.loohp.limbo.location.GlobalPos;
|
||||
import com.loohp.limbo.registry.PacketRegistry;
|
||||
import com.loohp.limbo.utils.DataTypeIO;
|
||||
import com.loohp.limbo.world.BlockPosition;
|
||||
import net.kyori.adventure.key.Key;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
public class PacketPlayOutSpawnPosition extends PacketOut {
|
||||
|
||||
private final BlockPosition position;
|
||||
private final float angle;
|
||||
private final GlobalPos position;
|
||||
private final float yaw;
|
||||
private final float pitch;
|
||||
|
||||
public PacketPlayOutSpawnPosition(BlockPosition position, float angle) {
|
||||
public PacketPlayOutSpawnPosition(GlobalPos position, float yaw, float pitch) {
|
||||
this.position = position;
|
||||
this.angle = angle;
|
||||
this.yaw = yaw;
|
||||
this.pitch = pitch;
|
||||
}
|
||||
|
||||
public BlockPosition getPosition() {
|
||||
return position;
|
||||
}
|
||||
|
||||
public float getAngle() {
|
||||
return angle;
|
||||
}
|
||||
|
||||
public byte[] serializePacket() throws IOException {
|
||||
public GlobalPos getPosition() {
|
||||
return position;
|
||||
}
|
||||
|
||||
public float getYaw() {
|
||||
return yaw;
|
||||
}
|
||||
|
||||
public float getPitch() {
|
||||
return pitch;
|
||||
}
|
||||
|
||||
public byte[] serializePacket() throws IOException {
|
||||
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
||||
|
||||
DataOutputStream output = new DataOutputStream(buffer);
|
||||
output.writeByte(PacketRegistry.getPacketId(getClass()));
|
||||
DataTypeIO.writeBlockPosition(output, position);
|
||||
output.writeFloat(angle);
|
||||
DataTypeIO.writeString(output, Key.key(position.getWorld().getName()).toString(), StandardCharsets.UTF_8);
|
||||
DataTypeIO.writeBlockPosition(output, position.getPos());
|
||||
output.writeFloat(yaw);
|
||||
output.writeFloat(pitch);
|
||||
|
||||
return buffer.toByteArray();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user