mirror of
https://github.com/GeyserMC/Geyser.git
synced 2025-12-19 14:59:27 +00:00
Make it build, update MCPL
This commit is contained in:
@@ -26,7 +26,7 @@ dependencies {
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
// mavenLocal()
|
||||
|
||||
mavenCentral()
|
||||
|
||||
|
||||
@@ -655,7 +655,7 @@ public final class EntityDefinitions {
|
||||
.addTranslator(MetadataTypes.ROTATIONS, ArmorStandEntity::setRightLegRotation)
|
||||
.build();
|
||||
|
||||
EntityDefinition<AvatarEntity> avatarEntityBase = EntityDefinition.inherited(AvatarEntity::new, livingEntityBase)
|
||||
EntityDefinition<AvatarEntity> avatarEntityBase = EntityDefinition.<AvatarEntity>inherited(null, livingEntityBase)
|
||||
.height(1.8f).width(0.6f)
|
||||
.offset(1.62f)
|
||||
.addTranslator(null) // Player main hand
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
package org.geysermc.geyser.entity.type.player;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
import org.cloudburstmc.math.vector.Vector3f;
|
||||
@@ -59,17 +61,21 @@ public class AvatarEntity extends LivingEntity {
|
||||
public static final float SNEAKING_POSE_HEIGHT = 1.5f;
|
||||
protected static final List<AbilityLayer> BASE_ABILITY_LAYER;
|
||||
|
||||
@Getter
|
||||
protected String username;
|
||||
|
||||
/**
|
||||
* The textures property from the GameProfile.
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Nullable
|
||||
protected String texturesProperty;
|
||||
protected String texturesProperty; // TODO no direct setter, rather one that updates the skin
|
||||
|
||||
private String cachedScore = "";
|
||||
private boolean scoreVisible = true;
|
||||
|
||||
@Getter
|
||||
@Nullable
|
||||
private Vector3i bedPosition;
|
||||
|
||||
|
||||
@@ -209,6 +209,10 @@ public class PlayerEntity extends AvatarEntity implements GeyserPlayerEntity {
|
||||
super.setNametag(nametag, fromDisplayName);
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the UUID that should be used when dealing with Bedrock's tab list.
|
||||
*/
|
||||
|
||||
@@ -166,7 +166,7 @@ public final class GameProtocol {
|
||||
* @return the supported Minecraft: Java Edition version
|
||||
*/
|
||||
public static String getJavaMinecraftVersion() {
|
||||
return "1.21.9-pre4"; // TODO change to 1.21.9
|
||||
return "1.21.9-rc1"; // TODO change to 1.21.9
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -151,14 +151,14 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisconnect(String reason) {
|
||||
public void onDisconnect(CharSequence reason) {
|
||||
// Use our own disconnect messages for these reasons
|
||||
if (BedrockDisconnectReasons.CLOSED.equals(reason)) {
|
||||
if (BedrockDisconnectReasons.CLOSED.contentEquals(reason)) {
|
||||
this.session.getUpstream().getSession().setDisconnectReason(GeyserLocale.getLocaleStringLog("geyser.network.disconnect.closed_by_remote_peer"));
|
||||
} else if (BedrockDisconnectReasons.TIMEOUT.equals(reason)) {
|
||||
} else if (BedrockDisconnectReasons.TIMEOUT.contentEquals(reason)) {
|
||||
this.session.getUpstream().getSession().setDisconnectReason(GeyserLocale.getLocaleStringLog("geyser.network.disconnect.timed_out"));
|
||||
}
|
||||
this.session.disconnect(this.session.getUpstream().getSession().getDisconnectReason());
|
||||
this.session.disconnect(this.session.getUpstream().getSession().getDisconnectReason().toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -39,7 +39,7 @@ import org.geysermc.geyser.api.skin.Skin;
|
||||
import org.geysermc.geyser.api.skin.SkinData;
|
||||
import org.geysermc.geyser.api.skin.SkinGeometry;
|
||||
import org.geysermc.geyser.entity.type.LivingEntity;
|
||||
import org.geysermc.geyser.entity.type.player.PlayerEntity;
|
||||
import org.geysermc.geyser.entity.type.player.AvatarEntity;
|
||||
import org.geysermc.geyser.session.GeyserSession;
|
||||
import org.geysermc.geyser.text.GeyserLocale;
|
||||
import org.geysermc.mcprotocollib.auth.GameProfile;
|
||||
@@ -100,7 +100,7 @@ public class FakeHeadProvider {
|
||||
}
|
||||
});
|
||||
|
||||
public static void setHead(GeyserSession session, PlayerEntity entity, @Nullable ResolvableProfile profile) {
|
||||
public static void setHead(GeyserSession session, AvatarEntity entity, @Nullable ResolvableProfile profile) {
|
||||
if (profile == null) {
|
||||
return;
|
||||
}
|
||||
@@ -120,7 +120,7 @@ public class FakeHeadProvider {
|
||||
});
|
||||
}
|
||||
|
||||
private static void loadHeadFromProfile(GeyserSession session, PlayerEntity entity, ResolvableProfile original, GameProfile resolved) {
|
||||
private static void loadHeadFromProfile(GeyserSession session, AvatarEntity entity, ResolvableProfile original, GameProfile resolved) {
|
||||
Texture skinTexture = SkinManager.getTextureDataFromProfile(resolved, TextureType.SKIN);
|
||||
String originalTextures = entity.getTexturesProperty();
|
||||
if (skinTexture != null) {
|
||||
@@ -137,7 +137,7 @@ public class FakeHeadProvider {
|
||||
}
|
||||
|
||||
public static void restoreOriginalSkin(GeyserSession session, LivingEntity livingEntity) {
|
||||
if (!(livingEntity instanceof PlayerEntity entity)) {
|
||||
if (!(livingEntity instanceof AvatarEntity entity)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ public class FakeHeadProvider {
|
||||
private static class FakeHeadEntry {
|
||||
private final String texturesProperty;
|
||||
private final String fakeHeadSkinUrl;
|
||||
private PlayerEntity entity;
|
||||
private AvatarEntity entity;
|
||||
private GeyserSession session;
|
||||
|
||||
@Override
|
||||
|
||||
@@ -40,7 +40,7 @@ import org.geysermc.geyser.api.skin.Cape;
|
||||
import org.geysermc.geyser.api.skin.Skin;
|
||||
import org.geysermc.geyser.api.skin.SkinData;
|
||||
import org.geysermc.geyser.api.skin.SkinGeometry;
|
||||
import org.geysermc.geyser.entity.type.player.PlayerEntity;
|
||||
import org.geysermc.geyser.entity.type.player.AvatarEntity;
|
||||
import org.geysermc.geyser.entity.type.player.SkullPlayerEntity;
|
||||
import org.geysermc.geyser.session.GeyserSession;
|
||||
import org.geysermc.geyser.session.auth.BedrockClientData;
|
||||
@@ -73,7 +73,7 @@ public class SkinManager {
|
||||
/**
|
||||
* Builds a Bedrock player list entry from our existing, cached Bedrock skin information
|
||||
*/
|
||||
public static PlayerListPacket.Entry buildCachedEntry(GeyserSession session, PlayerEntity playerEntity) {
|
||||
public static PlayerListPacket.Entry buildCachedEntry(GeyserSession session, AvatarEntity playerEntity) {
|
||||
// First: see if we have the cached skin texture ID.
|
||||
GameProfileData data = GameProfileData.from(playerEntity);
|
||||
Skin skin = null;
|
||||
@@ -156,7 +156,7 @@ public class SkinManager {
|
||||
return entry;
|
||||
}
|
||||
|
||||
public static void sendSkinPacket(GeyserSession session, PlayerEntity entity, SkinData skinData) {
|
||||
public static void sendSkinPacket(GeyserSession session, AvatarEntity entity, SkinData skinData) {
|
||||
Skin skin = skinData.skin();
|
||||
Cape cape = skinData.cape();
|
||||
SkinGeometry geometry = skinData.geometry();
|
||||
@@ -278,7 +278,7 @@ public class SkinManager {
|
||||
return textures.get(type);
|
||||
}
|
||||
|
||||
public static void requestAndHandleSkinAndCape(PlayerEntity entity, GeyserSession session,
|
||||
public static void requestAndHandleSkinAndCape(AvatarEntity entity, GeyserSession session,
|
||||
Consumer<SkinProvider.SkinAndCape> skinAndCapeConsumer) {
|
||||
SkinProvider.requestSkinData(entity, session).whenCompleteAsync((skinData, throwable) -> {
|
||||
if (skinData == null) {
|
||||
@@ -299,7 +299,7 @@ public class SkinManager {
|
||||
});
|
||||
}
|
||||
|
||||
public static void handleBedrockSkin(PlayerEntity playerEntity, BedrockClientData clientData) {
|
||||
public static void handleBedrockSkin(AvatarEntity playerEntity, BedrockClientData clientData) {
|
||||
GeyserImpl geyser = GeyserImpl.getInstance();
|
||||
if (geyser.getConfig().isDebugMode()) {
|
||||
geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.skin.bedrock.register", playerEntity.getUsername(), playerEntity.getUuid()));
|
||||
@@ -370,7 +370,7 @@ public class SkinManager {
|
||||
* @param entity entity to build the GameProfileData from
|
||||
* @return The built GameProfileData
|
||||
*/
|
||||
public static @Nullable GameProfileData from(PlayerEntity entity) {
|
||||
public static @Nullable GameProfileData from(AvatarEntity entity) {
|
||||
String texturesProperty = entity.getTexturesProperty();
|
||||
if (texturesProperty == null) {
|
||||
// Likely offline mode
|
||||
|
||||
@@ -38,7 +38,7 @@ import org.geysermc.geyser.api.skin.Cape;
|
||||
import org.geysermc.geyser.api.skin.Skin;
|
||||
import org.geysermc.geyser.api.skin.SkinData;
|
||||
import org.geysermc.geyser.api.skin.SkinGeometry;
|
||||
import org.geysermc.geyser.entity.type.player.PlayerEntity;
|
||||
import org.geysermc.geyser.entity.type.player.AvatarEntity;
|
||||
import org.geysermc.geyser.session.GeyserSession;
|
||||
import org.geysermc.geyser.text.GeyserLocale;
|
||||
import org.geysermc.geyser.util.FileUtils;
|
||||
@@ -236,7 +236,7 @@ public class SkinProvider {
|
||||
return CACHED_JAVA_CAPES.getIfPresent(capeUrl);
|
||||
}
|
||||
|
||||
static CompletableFuture<SkinData> requestSkinData(PlayerEntity entity, GeyserSession session) {
|
||||
static CompletableFuture<SkinData> requestSkinData(AvatarEntity entity, GeyserSession session) {
|
||||
SkinManager.GameProfileData data = SkinManager.GameProfileData.from(entity);
|
||||
if (data == null) {
|
||||
// This player likely does not have a textures property
|
||||
|
||||
@@ -86,7 +86,7 @@ public class SkullBlockEntityTranslator extends BlockEntityTranslator implements
|
||||
partialOrStatic.setProperties(properties);
|
||||
// Only if all fields are present, then the profile is a static one
|
||||
// TODO shorthand constructor in MCPL
|
||||
return new ResolvableProfile(partialOrStatic, uuid == null || name == null || properties == null);
|
||||
return new ResolvableProfile(partialOrStatic);
|
||||
}
|
||||
|
||||
public static @Nullable BlockDefinition translateSkull(GeyserSession session, NbtMap javaNbt, Vector3i blockPosition, BlockState blockState) {
|
||||
|
||||
@@ -38,8 +38,8 @@ public class JavaSetDefaultSpawnPositionTranslator extends PacketTranslator<Clie
|
||||
@Override
|
||||
public void translate(GeyserSession session, ClientboundSetDefaultSpawnPositionPacket packet) {
|
||||
SetSpawnPositionPacket spawnPositionPacket = new SetSpawnPositionPacket();
|
||||
spawnPositionPacket.setBlockPosition(packet.getPosition());
|
||||
spawnPositionPacket.setDimensionId(DimensionUtils.javaToBedrock(session));
|
||||
spawnPositionPacket.setBlockPosition(packet.getGlobalPos().getPosition());
|
||||
spawnPositionPacket.setDimensionId(DimensionUtils.javaToBedrock(packet.getGlobalPos().getDimension().asString()));
|
||||
spawnPositionPacket.setSpawnType(SetSpawnPositionPacket.Type.WORLD_SPAWN);
|
||||
session.sendUpstreamPacket(spawnPositionPacket);
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ public class DimensionUtils {
|
||||
*
|
||||
* @param javaDimension Dimension ID to convert
|
||||
* @return Converted Bedrock edition dimension ID
|
||||
*/
|
||||
*/ // TODO take a key
|
||||
public static int javaToBedrock(String javaDimension) {
|
||||
return switch (javaDimension) {
|
||||
case BedrockDimension.NETHER_IDENTIFIER -> BedrockDimension.BEDROCK_NETHER_ID;
|
||||
|
||||
@@ -9,12 +9,12 @@ netty = "4.2.3.Final"
|
||||
guava = "29.0-jre"
|
||||
gson = "2.3.1" # Provided by Spigot 1.8.8
|
||||
websocket = "1.5.1"
|
||||
protocol-connection = "3.0.0.Beta8-NO-ADVENTURE-SNAPSHOT"
|
||||
protocol-common = "3.0.0.Beta8-NO-ADVENTURE-SNAPSHOT"
|
||||
protocol-codec = "3.0.0.Beta8-NO-ADVENTURE-SNAPSHOT"
|
||||
protocol-connection = "3.0.0.Beta8-20250929.100800-7"
|
||||
protocol-common = "3.0.0.Beta8-20250929.100800-7"
|
||||
protocol-codec = "3.0.0.Beta8-20250929.100800-7"
|
||||
raknet = "1.0.0.CR3-20250811.214335-20"
|
||||
minecraftauth = "4.1.1"
|
||||
mcprotocollib = "1.21.9-SNAPSHOT"
|
||||
mcprotocollib = "1.21.9-20250929.132357-8"
|
||||
adventure = "4.24.0"
|
||||
adventure-platform = "4.3.0"
|
||||
junit = "5.9.2"
|
||||
|
||||
Reference in New Issue
Block a user