Skip to content

Commit 0bbb2cc

Browse files
committed
Merge remote-tracking branch 'upstream/master' into custom-entity-types
# Conflicts: # protocol/build.gradle.kts # protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/type/EntityType.java
2 parents c2de64a + 28add94 commit 0bbb2cc

File tree

26 files changed

+391
-63
lines changed

26 files changed

+391
-63
lines changed

example/src/main/java/org/geysermc/mcprotocollib/auth/example/MinecraftAuthTest.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package org.geysermc.mcprotocollib.auth.example;
22

33
import net.raphimc.minecraftauth.MinecraftAuth;
4-
import net.raphimc.minecraftauth.step.java.StepMCProfile;
5-
import net.raphimc.minecraftauth.step.java.StepMCToken;
6-
import net.raphimc.minecraftauth.step.java.session.StepFullJavaSession;
7-
import net.raphimc.minecraftauth.step.msa.StepCredentialsMsaCode;
4+
import net.raphimc.minecraftauth.java.JavaAuthManager;
5+
import net.raphimc.minecraftauth.java.model.MinecraftProfile;
6+
import net.raphimc.minecraftauth.java.model.MinecraftToken;
7+
import net.raphimc.minecraftauth.msa.model.MsaCredentials;
8+
import net.raphimc.minecraftauth.msa.service.impl.CredentialsMsaAuthService;
89
import org.geysermc.mcprotocollib.auth.GameProfile;
910
import org.geysermc.mcprotocollib.auth.SessionService;
1011
import org.geysermc.mcprotocollib.network.ProxyInfo;
@@ -27,24 +28,24 @@ private static void auth() {
2728
SessionService service = new SessionService();
2829
service.setProxy(PROXY);
2930

30-
StepFullJavaSession.FullJavaSession fullJavaSession;
31+
JavaAuthManager authManager;
3132
try {
32-
fullJavaSession = MinecraftAuth.JAVA_CREDENTIALS_LOGIN.getFromInput(
33-
MinecraftAuth.createHttpClient(),
34-
new StepCredentialsMsaCode.MsaCredentials(EMAIL, PASSWORD));
33+
authManager = JavaAuthManager.create(MinecraftAuth.createHttpClient()).login(CredentialsMsaAuthService::new, new MsaCredentials(EMAIL, PASSWORD));
34+
authManager.getMinecraftToken().refresh(); // Preload the Minecraft token
35+
authManager.getMinecraftProfile().refresh(); // Preload the Minecraft profile
3536
} catch (Exception e) {
3637
throw new RuntimeException(e);
3738
}
3839

39-
StepMCProfile.MCProfile mcProfile = fullJavaSession.getMcProfile();
40-
StepMCToken.MCToken mcToken = mcProfile.getMcToken();
40+
MinecraftProfile mcProfile = authManager.getMinecraftProfile().getCached();
41+
MinecraftToken mcToken = authManager.getMinecraftToken().getCached();
4142
GameProfile profile = new GameProfile(mcProfile.getId(), mcProfile.getName());
4243
try {
4344
service.fillProfileProperties(profile);
4445

4546
log.info("Selected Profile: {}", profile);
4647
log.info("Selected Profile Textures: {}", profile.getTextures(REQUIRE_SECURE_TEXTURES));
47-
log.info("Access Token: {}", mcToken.getAccessToken());
48+
log.info("Access Token: {}", mcToken.getToken());
4849
log.info("Expire Time: {}", mcToken.getExpireTimeMs());
4950
} catch (Exception e) {
5051
log.error("Failed to get properties and textures of selected profile {}.", profile, e);

example/src/main/java/org/geysermc/mcprotocollib/protocol/example/MinecraftProtocolTest.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55
import net.kyori.adventure.text.format.NamedTextColor;
66
import net.kyori.adventure.text.format.TextDecoration;
77
import net.raphimc.minecraftauth.MinecraftAuth;
8-
import net.raphimc.minecraftauth.step.java.StepMCProfile;
9-
import net.raphimc.minecraftauth.step.java.StepMCToken;
10-
import net.raphimc.minecraftauth.step.java.session.StepFullJavaSession;
11-
import net.raphimc.minecraftauth.step.msa.StepCredentialsMsaCode;
8+
import net.raphimc.minecraftauth.java.JavaAuthManager;
9+
import net.raphimc.minecraftauth.java.model.MinecraftProfile;
10+
import net.raphimc.minecraftauth.java.model.MinecraftToken;
11+
import net.raphimc.minecraftauth.msa.model.MsaCredentials;
12+
import net.raphimc.minecraftauth.msa.service.impl.CredentialsMsaAuthService;
1213
import org.geysermc.mcprotocollib.auth.GameProfile;
1314
import org.geysermc.mcprotocollib.auth.SessionService;
1415
import org.geysermc.mcprotocollib.network.ClientSession;
@@ -187,21 +188,19 @@ private static void status() {
187188
private static void login() {
188189
MinecraftProtocol protocol;
189190
if (SHOULD_AUTHENTICATE) {
190-
StepFullJavaSession.FullJavaSession fullJavaSession;
191191
try {
192-
fullJavaSession = MinecraftAuth.JAVA_CREDENTIALS_LOGIN.getFromInput(
193-
MinecraftAuth.createHttpClient(),
194-
new StepCredentialsMsaCode.MsaCredentials(USERNAME, PASSWORD));
192+
JavaAuthManager authManager = JavaAuthManager.create(MinecraftAuth.createHttpClient()).login(CredentialsMsaAuthService::new, new MsaCredentials(USERNAME, PASSWORD));
193+
194+
MinecraftProfile mcProfile = authManager.getMinecraftProfile().getUpToDate();
195+
MinecraftToken mcToken = authManager.getMinecraftToken().getUpToDate();
196+
protocol = new MinecraftProtocol(
197+
new GameProfile(mcProfile.getId(), mcProfile.getName()),
198+
mcToken.getToken());
199+
200+
log.info("Successfully authenticated user.");
195201
} catch (Exception e) {
196202
throw new RuntimeException(e);
197203
}
198-
199-
StepMCProfile.MCProfile mcProfile = fullJavaSession.getMcProfile();
200-
StepMCToken.MCToken mcToken = mcProfile.getMcToken();
201-
protocol = new MinecraftProtocol(
202-
new GameProfile(mcProfile.getId(), mcProfile.getName()),
203-
mcToken.getAccessToken());
204-
log.info("Successfully authenticated user.");
205204
} else {
206205
protocol = new MinecraftProtocol(USERNAME);
207206
}

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ metadata.format.version = "1.1"
22

33
[versions]
44

5-
adventure = "4.17.0"
5+
adventure = "4.25.0"
66
cloudburstnbt = "3.0.0.Final"
77
slf4j = "2.0.9"
88
math = "2.0"
99
fastutil-maps = "8.5.3"
1010
netty = "4.2.1.Final"
1111
gson = "2.11.0"
12-
minecraftauth = "4.1.1"
12+
minecraftauth = "5.0.0"
1313
checkerframework = "3.42.0"
1414
junit = "5.8.2"
1515

protocol/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
jacoco
66
}
77

8-
version = "1.21.9-feature-custom-entities"
8+
version = "1.21.11-feature-custom-entities"
99
description = "MCProtocolLib is a simple library for communicating with Minecraft clients and servers."
1010

1111
dependencies {

protocol/src/main/java/org/geysermc/mcprotocollib/auth/util/HTTPUtils.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import net.lenni0451.commons.httpclient.HttpClient;
66
import net.lenni0451.commons.httpclient.HttpResponse;
77
import net.lenni0451.commons.httpclient.constants.ContentTypes;
8-
import net.lenni0451.commons.httpclient.constants.Headers;
8+
import net.lenni0451.commons.httpclient.constants.HttpHeaders;
99
import net.lenni0451.commons.httpclient.content.HttpContent;
1010
import net.lenni0451.commons.httpclient.proxy.ProxyHandler;
1111
import net.lenni0451.commons.httpclient.proxy.ProxyType;
@@ -14,7 +14,6 @@
1414
import org.checkerframework.checker.nullness.qual.Nullable;
1515
import org.geysermc.mcprotocollib.network.ProxyInfo;
1616

17-
import java.io.ByteArrayInputStream;
1817
import java.io.IOException;
1918
import java.io.InputStreamReader;
2019
import java.net.URI;
@@ -40,13 +39,13 @@ public static <T> T makeRequest(@Nullable ProxyInfo proxy, URI uri, Object input
4039
.execute(input == null ? new HttpRequest("GET", uri.toURL()) :
4140
new HttpContentRequest("POST", uri.toURL())
4241
.setContent(HttpContent.string(GSON.toJson(input)))
43-
.setHeader(Headers.CONTENT_TYPE, ContentTypes.APPLICATION_JSON.toString()));
42+
.setHeader(HttpHeaders.CONTENT_TYPE, ContentTypes.APPLICATION_JSON.toString()));
4443

4544
if (responseType == null) {
4645
return null;
4746
}
4847

49-
return GSON.fromJson(new InputStreamReader(new ByteArrayInputStream(response.getContent())), responseType);
48+
return GSON.fromJson(new InputStreamReader(response.getContent().getAsStream()), responseType);
5049
}
5150

5251
public static HttpClient createHttpClient(@Nullable ProxyInfo proxy) {
@@ -57,8 +56,8 @@ public static HttpClient createHttpClient(@Nullable ProxyInfo proxy) {
5756
.setReadTimeout(timeout * 2)
5857
.setCookieManager(null)
5958
.setFollowRedirects(false)
60-
.setHeader(Headers.ACCEPT, ContentTypes.APPLICATION_JSON.toString())
61-
.setHeader(Headers.ACCEPT_LANGUAGE, "en-US,en");
59+
.setHeader(HttpHeaders.ACCEPT, ContentTypes.APPLICATION_JSON.toString())
60+
.setHeader(HttpHeaders.ACCEPT_LANGUAGE, "en-US,en");
6261

6362
if (proxy != null) {
6463
client.setProxyHandler(new ProxyHandler(switch (proxy.type()) {

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftCodec.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@
109109
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundContainerSetContentPacket;
110110
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundContainerSetDataPacket;
111111
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundContainerSetSlotPacket;
112-
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundHorseScreenOpenPacket;
112+
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundMountScreenOpenPacket;
113113
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundMerchantOffersPacket;
114114
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundOpenBookPacket;
115115
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundOpenScreenPacket;
@@ -231,8 +231,8 @@
231231

232232
public class MinecraftCodec {
233233
public static final PacketCodec CODEC = PacketCodec.builder()
234-
.protocolVersion(773)
235-
.minecraftVersion("1.21.9")
234+
.protocolVersion(774)
235+
.minecraftVersion("1.21.11")
236236
.state(ProtocolState.HANDSHAKE, MinecraftPacketRegistry.builder()
237237
.registerServerboundPacket(ClientIntentionPacket.class, ClientIntentionPacket::new)
238238
)
@@ -325,7 +325,7 @@ public class MinecraftCodec {
325325
.registerClientboundPacket(ClientboundForgetLevelChunkPacket.class, ClientboundForgetLevelChunkPacket::new)
326326
.registerClientboundPacket(ClientboundGameEventPacket.class, ClientboundGameEventPacket::new)
327327
.registerClientboundPacket(ClientboundGameTestHighlightPosPacket.class, ClientboundGameTestHighlightPosPacket::new)
328-
.registerClientboundPacket(ClientboundHorseScreenOpenPacket.class, ClientboundHorseScreenOpenPacket::new)
328+
.registerClientboundPacket(ClientboundMountScreenOpenPacket.class, ClientboundMountScreenOpenPacket::new)
329329
.registerClientboundPacket(ClientboundHurtAnimationPacket.class, ClientboundHurtAnimationPacket::new)
330330
.registerClientboundPacket(ClientboundInitializeBorderPacket.class, ClientboundInitializeBorderPacket::new)
331331
.registerClientboundPacket(ClientboundKeepAlivePacket.class, ClientboundKeepAlivePacket::new)

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftTypes.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.CopperGolemState;
4545
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
4646
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.GlobalPos;
47+
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.HumanoidArm;
4748
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType;
4849
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataTypes;
4950
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.PaintingVariant;
@@ -837,6 +838,24 @@ public static void writeChickenVariant(ByteBuf buf, Holder<Key> variant) {
837838
}
838839
}
839840

841+
public static Holder<Key> readZombieNautilusVariant(ByteBuf buf) {
842+
if (buf.readBoolean()) {
843+
return Holder.ofId(MinecraftTypes.readVarInt(buf));
844+
} else {
845+
return Holder.ofCustom(MinecraftTypes.readResourceLocation(buf));
846+
}
847+
}
848+
849+
public static void writeZombieNautilusVariant(ByteBuf buf, Holder<Key> variant) {
850+
if (variant.isId()) {
851+
buf.writeBoolean(true);
852+
MinecraftTypes.writeVarInt(buf, variant.id());
853+
} else {
854+
buf.writeBoolean(false);
855+
MinecraftTypes.writeResourceLocation(buf, variant.custom());
856+
}
857+
}
858+
840859
public static Holder<PaintingVariant> readPaintingVariant(ByteBuf buf) {
841860
return MinecraftTypes.readHolder(buf, input -> {
842861
return new PaintingVariant(MinecraftTypes.readVarInt(input), MinecraftTypes.readVarInt(input), MinecraftTypes.readResourceLocation(input),
@@ -886,6 +905,14 @@ public static void writeWeatheringCopperState(ByteBuf buf, WeatheringCopperState
886905
MinecraftTypes.writeEnum(buf, state);
887906
}
888907

908+
public static HumanoidArm readHumanoidArm(ByteBuf buf) {
909+
return HumanoidArm.from(MinecraftTypes.readVarInt(buf));
910+
}
911+
912+
public static void writeHumanoidArm(ByteBuf buf, HumanoidArm arm) {
913+
MinecraftTypes.writeVarInt(buf, arm.ordinal());
914+
}
915+
889916
private static void writeEnum(ByteBuf buf, Enum<?> e) {
890917
MinecraftTypes.writeVarInt(buf, e.ordinal());
891918
}

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/Effect.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ public enum Effect {
3939
WIND_CHARGED,
4040
WEAVING,
4141
OOZING,
42-
INFESTED;
42+
INFESTED,
43+
BREATH_OF_THE_NAUTILUS;
4344

4445
public static final Effect[] VALUES = values();
4546

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.geysermc.mcprotocollib.protocol.data.game.entity.metadata;
2+
3+
public enum HumanoidArm {
4+
LEFT,
5+
RIGHT;
6+
7+
private static final HumanoidArm[] VALUES = values();
8+
9+
public static HumanoidArm from(int id) {
10+
return id >= 0 & id < VALUES.length ? VALUES[id] : VALUES[0];
11+
}
12+
}

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/metadata/MetadataTypes.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public class MetadataTypes {
5757
public static final IntMetadataType FROG_VARIANT = register(id -> new IntMetadataType(id, MinecraftTypes::readVarInt, MinecraftTypes::writeVarInt, IntEntityMetadata::new));
5858
public static final IntMetadataType PIG_VARIANT = register(id -> new IntMetadataType(id, MinecraftTypes::readVarInt, MinecraftTypes::writeVarInt, IntEntityMetadata::new));
5959
public static final IntMetadataType CHICKEN_VARIANT = register(id -> new IntMetadataType(id, MinecraftTypes::readVarInt, MinecraftTypes::writeVarInt, IntEntityMetadata::new));
60+
public static final IntMetadataType ZOMBIE_NAUTILUS_VARIANT = register(id -> new IntMetadataType(id, MinecraftTypes::readVarInt, MinecraftTypes::writeVarInt, IntEntityMetadata::new));
6061
public static final MetadataType<Optional<GlobalPos>> OPTIONAL_GLOBAL_POS = register(id -> new MetadataType<>(id, optionalReader(MinecraftTypes::readGlobalPos), optionalWriter(MinecraftTypes::writeGlobalPos), ObjectEntityMetadata::new));
6162
public static final MetadataType<Holder<PaintingVariant>> PAINTING_VARIANT = register(id -> new MetadataType<>(id, MinecraftTypes::readPaintingVariant, MinecraftTypes::writePaintingVariant, ObjectEntityMetadata::new));
6263
public static final MetadataType<SnifferState> SNIFFER_STATE = register(id -> new MetadataType<>(id, MinecraftTypes::readSnifferState, MinecraftTypes::writeSnifferState, ObjectEntityMetadata::new));
@@ -66,6 +67,7 @@ public class MetadataTypes {
6667
public static final MetadataType<Vector3f> VECTOR3 = register(id -> new MetadataType<>(id, MinecraftTypes::readRotation, MinecraftTypes::writeRotation, ObjectEntityMetadata::new));
6768
public static final MetadataType<Quaternionf> QUATERNION = register(id -> new MetadataType<>(id, MinecraftTypes::readQuaternion, MinecraftTypes::writeQuaternion, ObjectEntityMetadata::new));
6869
public static final MetadataType<ResolvableProfile> RESOLVABLE_PROFILE = register(id -> new MetadataType<>(id, MinecraftTypes::readResolvableProfile, MinecraftTypes::writeResolvableProfile, ObjectEntityMetadata::new));
70+
public static final MetadataType<HumanoidArm> HUMANOID_ARM = register(id -> new MetadataType<>(id, MinecraftTypes::readHumanoidArm, MinecraftTypes::writeHumanoidArm, ObjectEntityMetadata::new));
6971

7072
public static <T extends MetadataType<?>> T register(Int2ObjectFunction<T> factory) {
7173
T value = factory.apply(VALUES.size());

0 commit comments

Comments
 (0)