9
0
mirror of https://github.com/GeyserExtensionists/GeyserUtils.git synced 2025-12-19 15:09:24 +00:00
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> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </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> <dependencies>
<dependency> <dependency>
@@ -26,9 +62,14 @@
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.esotericsoftware</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>kryo</artifactId> <artifactId>jackson-core</artifactId>
<version>5.5.0</version> <version>2.15.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

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

View File

@@ -1,41 +1,41 @@
package me.zimzaza4.geyserutils.common.manager; 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 { public class PacketManager {
private final Kryo kryo = new Kryo(); private final ObjectMapper objectMapper;
public PacketManager() { 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) { public byte[] encodePacket(CustomPayloadPacket packet) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try (Output output = new Output()) { try {
kryo.writeObject(output, packet); return objectMapper.writeValueAsBytes(packet);
return byteArrayOutputStream.toByteArray(); } catch (JsonProcessingException e) {
throw new RuntimeException(e);
} }
} }
public CustomPayloadPacket decodePacket(byte[] bytes) { public CustomPayloadPacket decodePacket(byte[] bytes) {
try (Input input = new Input(bytes)) { try {
return kryo.readObject(input, CustomPayloadPacket.class); 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.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor
public class CameraShakeCustomPayloadPacket extends CustomPayloadPacket { public class CameraShakeCustomPayloadPacket extends CustomPayloadPacket {
float intensity; float intensity;

View File

@@ -1,7 +1,12 @@
package me.zimzaza4.geyserutils.common.packet; package me.zimzaza4.geyserutils.common.packet;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable; 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.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import me.zimzaza4.geyserutils.common.form.element.NpcDialogueButton; import me.zimzaza4.geyserutils.common.form.element.NpcDialogueButton;
@@ -9,6 +10,7 @@ import me.zimzaza4.geyserutils.common.form.element.NpcDialogueButton;
import java.util.List; import java.util.List;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor
@Accessors(fluent = true) @Accessors(fluent = true)
@Getter @Getter
@Setter @Setter

View File

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

View File

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

View File

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