Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
plugins {
id 'java'
id 'application'
id 'com.github.johnrengelman.shadow' version '6.0.0'
id 'com.github.johnrengelman.shadow' version '8.1.1'
}

group 'com.ddf.fakeplayer'
Expand Down Expand Up @@ -32,8 +32,8 @@ repositories {

dependencies {
implementation 'org.cloudburstmc.protocol:bedrock-connection:3.0.0.Beta1-SNAPSHOT'
implementation 'com.google.code.gson:gson:2.8.7'
implementation 'org.yaml:snakeyaml:1.29'
implementation 'com.google.code.gson:gson:2.9.1'
implementation 'org.yaml:snakeyaml:2.2'
implementation 'com.formdev:flatlaf:1.5'
implementation 'org.java-websocket:Java-WebSocket:1.5.2'
implementation 'org.slf4j:slf4j-nop:1.7.32'
Expand All @@ -43,8 +43,8 @@ dependencies {
implementation 'org.mozilla:rhino:1.7.13'
}

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17

compileJava.options.encoding = 'UTF-8'
compileTestJava.options.encoding = 'UTF-8'
Expand Down Expand Up @@ -108,7 +108,8 @@ task getVersion {

task runGUI(type: JavaExec) {
classpath = run.classpath
main = run.main
// main = run.main
main = 'com.ddf.fakeplayer.main.Main'
jvmArgs += '-Dfakeplayer.nogui=false'
}

Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-6.7.1-bin.zip
distributionUrl=https://services.gradle.org/distributions/gradle-8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
1 change: 1 addition & 0 deletions src/main/java/com/ddf/fakeplayer/client/Client.java
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ private void connect(String address, int port, boolean isReconnect) {
BedrockPong bedrockPong = PingUtil.ping(addressToConnect, 10, TimeUnit.SECONDS).get(10, TimeUnit.SECONDS);
packetCodec = ProtocolVersionUtil.getPacketCodec(bedrockPong.protocolVersion());
} catch (Throwable t) {
logger.log(t);
packetCodec = defaultPacketCodec;
logger.logI18N("log.client.getProtocolVersionFail", playerName, defaultPacketCodec.getProtocolVersion());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,17 @@ public class AnimatedImageData {
private int ImageHeight;
private int ImageWidth;
private int Type;
private int AnimationExpression = 0;// 自 618 协议 1.20.30 或更远版本被加入

public AnimatedImageData() {}

public AnimatedImageData(double frames, String image, int imageHeight, int imageWidth, int type) {
public AnimatedImageData(double frames, String image, int imageHeight, int imageWidth, int type, int animationExpression) {
Frames = frames;
Image = image;
ImageHeight = imageHeight;
ImageWidth = imageWidth;
Type = type;
AnimationExpression = animationExpression;
}

public double getFrames() {
Expand Down Expand Up @@ -56,4 +58,12 @@ public int getType() {
public void setType(int type) {
Type = type;
}
public int getAnimationExpression() {
return AnimationExpression;
}

public void setAnimationExpression(int animationExpression) {
AnimationExpression = animationExpression;
}

}
4 changes: 2 additions & 2 deletions src/main/java/com/ddf/fakeplayer/main/config/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public class Config {
locker = new Object();
LoaderOptions loaderOptions = new LoaderOptions();
DumperOptions dumperOptions = new DumperOptions();
Representer representer = new Representer();
Representer representer = new Representer(new DumperOptions());
PropertyUtils pu = new PropertyUtils() {
{
setBeanAccess(BeanAccess.FIELD);
Expand All @@ -69,7 +69,7 @@ protected Set<Property> createPropertySet(Class<?> type, BeanAccess bAccess) {
}
};
representer.setPropertyUtils(pu);
YAML = new Yaml(new Constructor(), representer, dumperOptions, loaderOptions);
YAML = new Yaml(new Constructor(new LoaderOptions()), representer, dumperOptions, loaderOptions);
}

public static Config load(Path path) throws IOException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,10 @@ public void handleConnected(){
client.getServerKeyPair(),
client.createExtraData()
));
String skinData = client.createSkinData().toJsonString();
loginPacket.setExtra(JwtUtil.createJwt(
client.getClientKeyPair(),
client.createSkinData().toJsonString()));
skinData));
client.sendPacket(loginPacket);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
import org.cloudburstmc.protocol.bedrock.codec.v589.Bedrock_v589;
import org.cloudburstmc.protocol.bedrock.codec.v594.Bedrock_v594;
import org.cloudburstmc.protocol.bedrock.codec.v618.Bedrock_v618;
import org.cloudburstmc.protocol.bedrock.codec.v622.Bedrock_v622;
import org.cloudburstmc.protocol.bedrock.codec.v630.Bedrock_v630;
import org.cloudburstmc.protocol.bedrock.codec.v649.Bedrock_v649;


import java.io.IOException;
Expand All @@ -36,6 +39,9 @@ public class ProtocolVersionUtil {
registerPacketCodec(Bedrock_v589.CODEC, 11, null);
registerPacketCodec(Bedrock_v594.CODEC, 11, null);
registerPacketCodec(Bedrock_v618.CODEC, 11, null);
registerPacketCodec(Bedrock_v622.CODEC, 11, null);
registerPacketCodec(Bedrock_v630.CODEC, 11, null);
registerPacketCodec(Bedrock_v649.CODEC, 11, null);

codecMap = Collections.unmodifiableMap(codecMap);
rakNetVersionMap = Collections.unmodifiableMap(rakNetVersionMap);
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/skin/skin_data_alex.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"AnimatedImageData": [
{
"AnimationExpression": 0,
"Frames": 2.0,
"Image": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD6o0H/+qNB//GbOP/6o0H/+qNB//GbOP/6o0H/8Zs4/9KELP/ShCz/0oQs/9KELP/ShCz/0oQs/9KELP/ShCz/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPGbOP/6o0H/8Zs4//qjQf/6o0H/8Zs4//qjQf//rk3/0oQs/9KELP/qxJb/6sSW/+rElv/qxJb/0oQs/9KELP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+qNB//GbOP//rk3/+qNB//GbOP/xmzj/8Zs4//qjQf/ShCz/6sSW/+S5jf/kuY3/5LmN/+S5jf/qxJb/0oQs/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxmzj/8Zs4//+uTf/6o0H/+qNB//qjQf/xmzj/8Zs4/9KELP/qxJb/5LmN/+S5jf/kuY3/5LmN/+rElv/ShCz/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPGbOP/xmzj//65N//GbOP/6o0H/8Zs4//+uTf/xmzj/0oQs/+rElv/kuY3/5LmN/+S5jf/kuY3/6sSW/+/Opv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+qNB//GbOP/6o0H/8Zs4//GbOP/6o0H//65N//+uTf/ShCz/6sSW/+S5jf/kuY3/5LmN/+S5jf/qxJb/786m/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxmzj/8Zs4//GbOP/6o0H/+qNB//qjQf/xmzj//65N/9KELP/qxJb/6sSW/+rElv/qxJb/6sSW/+rElv/vzqb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+uTf/6o0H/8Zs4//+uTf//rk3/8Zs4//+uTf/xmzj/786m/+/Opv/vzqb/786m/+/Opv/vzqb/786m/+/Opv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPqjQf/xmzj//65N//qjQf//rk3//65N//+uTf/xmzj/+qNB//GbOP/6o0H/8Zs4//GbOP/6o0H/8Zs4//qjQf/6o0H/8Zs4//qjQf/xmzj/+qNB//GbOP//rk3/+qNB//GbOP/6o0H/8Zs4//qjQf/xmzj/+qNB//+uTf/xmzj/8Zs4//qjQf/6o0H/8Zs4//qjQf/xmzj/8Zs4//qjQf/xmzj/+qNB//GbOP/6o0H/8Zs4//qjQf/6o0H/8Zs4//qjQf//rk3//65N//+uTf/xmzj/+qNB//GbOP/6o0H//65N//+uTf/6o0H/8Zs4//+uTf//rk3/8Zs4//qjQf//rk3//65N//GbOP/6o0H/8Zs4//qjQf//rk3/+qNB//qjQf/xmzj/+qNB//GbOP/y273/8tu9//qjQf/xmzj//65N//GbOP/xmzj/8Zs4//+uTf/6o0H/8Zs4//+uTf//rk3//65N//GbOP//rk3/+qNB//+uTf/xmzj/+qNB//qjQf/xmzj/+qNB//qjQf//rk3/8Zs4//GbOP/6o0H/8Zs4//GbOP/xmzj/8tu9//Lbvf/w0az/8tu9//qjQf/6o0H/+qNB//GbOP/6o0H/8Zs4//+uTf//rk3/+qNB//GbOP//rk3/8Zs4//+uTf/6o0H/8Zs4//qjQf/xmzj/8Zs4//qjQf/6o0H/+qNB//GbOP/y273/8tu9//GbOP/w0az/9/fr/yNiJP/y273/8tu9/yNiJP/39+v/8tu9//GbOP/xmzj/+qNB//qjQf/6o0H/8Zs4//qjQf/xmzj/+qNB//GbOP/6o0H/+qNB//+uTf/6o0H/+qNB//+uTf/xmzj/8Zs4//+uTf/xmzj/8tu9//PhyP/y273/8tu9//Lbvf/y273/8tu9//PhyP/y273/8tu9//PhyP/y273/8tu9//GbOP/6o0H/8Zs4//qjQf/6o0H//65N//GbOP/xmzj//65N//qjQf/xmzj/8Zs4//+uTf/6o0H/+qNB//GbOP/6o0H//65N//qjQf/y273/8tu9//PhyP/z4cj/8tu9//PhyP/y273/77ux/++7sf/y273/8tu9//PhyP/y273/8tu9//GbOP/xmzj/+qNB//GbOP/6o0H//65N//GbOP/xmzj/8Zs4//qjQf//rk3/+qNB//qjQf/xmzj/+qNB//GbOP/6o0H/8tu9//Lbvf/z4cj/8tu9//Lbvf/y273/8tu9//Lbvf/y273/8tu9//PhyP/z4cj/8tu9//PhyP/xmzj/8Zs4//qjQf/6o0H/8Zs4//qjQf/xmzj/+qNB//GbOP//rk3/+qNB//qjQf/xmzj/8Zs4//+uTf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\u003d",
"ImageHeight": 64,
Expand Down
Loading