This commit is contained in:
zimzaza4
2023-09-16 23:27:29 +08:00
parent ec8318b7c5
commit e09bdca55e
9 changed files with 78 additions and 37 deletions

View File

@@ -17,6 +17,42 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.4.1</version>
<configuration>
<relocations>
<relocation>
<pattern>com.fasterxml.jackson</pattern>
<shadedPattern>me.zimzaza4.geyserutils.relocations.jackson</shadedPattern>
</relocation>
</relocations>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<dependencies>
<dependency>
@@ -26,9 +62,14 @@
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.esotericsoftware</groupId>
<artifactId>kryo</artifactId>
<version>5.5.0</version>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.15.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
</dependencies>

View File

@@ -11,7 +11,7 @@ import java.util.List;
@Setter
@Getter
@Accessors( fluent = true )
public class NpcDialogueButton implements Serializable {
public class NpcDialogueButton {
private String text;
private List<String> commands;
private ButtonMode mode;

View File

@@ -1,41 +1,41 @@
package me.zimzaza4.geyserutils.common.manager;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import me.zimzaza4.geyserutils.common.packet.CameraShakeCustomPayloadPacket;
import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
import me.zimzaza4.geyserutils.common.packet.NpcDialogueFormDataCustomPayloadPacket;
import java.io.*;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.BasicPolymorphicTypeValidator;
import com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator;
import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class PacketManager {
private final Kryo kryo = new Kryo();
private final ObjectMapper objectMapper;
public PacketManager() {
init();
objectMapper = new ObjectMapper();
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.EVERYTHING, JsonTypeInfo.As.PROPERTY);
}
public void init() {
kryo.setRegistrationRequired(false);
}
public void registerPacket(Class<? extends CustomPayloadPacket> clazz) {
kryo.register(clazz);
}
public byte[] encodePacket(CustomPayloadPacket packet) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try (Output output = new Output()) {
kryo.writeObject(output, packet);
return byteArrayOutputStream.toByteArray();
try {
return objectMapper.writeValueAsBytes(packet);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
public CustomPayloadPacket decodePacket(byte[] bytes) {
try (Input input = new Input(bytes)) {
return kryo.readObject(input, CustomPayloadPacket.class);
try {
return objectMapper.readValue(bytes, CustomPayloadPacket.class);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

View File

@@ -2,9 +2,11 @@ package me.zimzaza4.geyserutils.common.packet;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class CameraShakeCustomPayloadPacket extends CustomPayloadPacket {
float intensity;

View File

@@ -1,7 +1,12 @@
package me.zimzaza4.geyserutils.common.packet;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
public abstract class CustomPayloadPacket implements Serializable {
public abstract class CustomPayloadPacket {
}

View File

@@ -2,6 +2,7 @@ package me.zimzaza4.geyserutils.common.packet;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
import me.zimzaza4.geyserutils.common.form.element.NpcDialogueButton;
@@ -9,6 +10,7 @@ import me.zimzaza4.geyserutils.common.form.element.NpcDialogueButton;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Accessors(fluent = true)
@Getter
@Setter

View File

@@ -1,10 +1,5 @@
package me.zimzaza4.geyserutils.common.util;
import com.esotericsoftware.kryo.Kryo;
import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
import java.io.*;
public class CustomPayloadPacketUtils {

View File

@@ -42,18 +42,13 @@ public class GeyserUtils implements Extension {
@Subscribe
public void onSessionJoin(SessionJoinEvent event) {
if (event.connection() instanceof GeyserSession session) {
System.out.println("Add");
session.getDownstream().getSession().addListener(new SessionAdapter() {
@Override
public void packetReceived(Session tcpSession, Packet packet) {
if (packet instanceof ClientboundCustomPayloadPacket payloadPacket) {
System.out.println(payloadPacket.getChannel());
if (payloadPacket.getChannel().equals(GeyserUtilsChannels.MAIN)) {
System.out.println("Received packet");
if (payloadPacket.getChannel().equals(GeyserUtilsChannels.MAIN)) {;
CustomPayloadPacket customPacket = packetManager.decodePacket(payloadPacket.getData());
System.out.println(1);
if (customPacket instanceof CameraShakeCustomPayloadPacket cameraShakePacket) {
System.out.println(2);
event.connection().shakeCamera(cameraShakePacket.getIntensity(), cameraShakePacket.getDuration(), CameraShake.values()[cameraShakePacket.getType()]);
} else if (customPacket instanceof NpcDialogueFormDataCustomPayloadPacket formData) {

View File

@@ -24,6 +24,7 @@ public class PlayerUtils {
for (Entity entity : entityList) {
idList.add(entity.getEntityId());
}
playEntityAnimation(player, animation, idList);
}