From ec8318b7c58ae50fb7b1cdd0343b83c849f49a30 Mon Sep 17 00:00:00 2001
From: zimzaza4 <3625282098@qq.com>
Date: Sat, 16 Sep 2023 19:34:38 +0800
Subject: [PATCH] Animation
---
common/pom.xml | 7 ++++
.../common/animation/Animation.java | 26 ++++++++++++
.../common/manager/PacketManager.java | 41 +++++++++++++++++++
.../AnimateEntityCustomPayloadPacket.java | 30 ++++++++++++++
...va => CameraShakeCustomPayloadPacket.java} | 2 +-
.../{Packet.java => CustomPayloadPacket.java} | 2 +-
...cDialogueFormDataCustomPayloadPacket.java} | 3 +-
...> NpcFormResponseCustomPayloadPacket.java} | 4 +-
.../common/util/CustomPayloadPacketUtils.java | 22 +---------
.../geyserutils/geyser/GeyserUtils.java | 37 +++++++++++++----
.../geyserutils/spigot/GeyserUtils.java | 18 ++++----
.../geyserutils/spigot/api/PlayerUtils.java | 25 +++++++++--
.../spigot/api/form/NpcDialogueForm.java | 10 ++---
13 files changed, 176 insertions(+), 51 deletions(-)
create mode 100644 common/src/main/java/me/zimzaza4/geyserutils/common/animation/Animation.java
create mode 100644 common/src/main/java/me/zimzaza4/geyserutils/common/manager/PacketManager.java
create mode 100644 common/src/main/java/me/zimzaza4/geyserutils/common/packet/AnimateEntityCustomPayloadPacket.java
rename common/src/main/java/me/zimzaza4/geyserutils/common/packet/{CameraShakePacket.java => CameraShakeCustomPayloadPacket.java} (72%)
rename common/src/main/java/me/zimzaza4/geyserutils/common/packet/{Packet.java => CustomPayloadPacket.java} (54%)
rename common/src/main/java/me/zimzaza4/geyserutils/common/packet/{NpcDialogueFormDataPacket.java => NpcDialogueFormDataCustomPayloadPacket.java} (85%)
rename common/src/main/java/me/zimzaza4/geyserutils/common/packet/{NpcFormResponsePacket.java => NpcFormResponseCustomPayloadPacket.java} (73%)
diff --git a/common/pom.xml b/common/pom.xml
index ed6ba1b..db69fe7 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -16,6 +16,8 @@
11
UTF-8
+
+
org.projectlombok
@@ -23,6 +25,11 @@
1.18.28
compile
+
+ com.esotericsoftware
+ kryo
+ 5.5.0
+
\ No newline at end of file
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/animation/Animation.java b/common/src/main/java/me/zimzaza4/geyserutils/common/animation/Animation.java
new file mode 100644
index 0000000..2e74ccf
--- /dev/null
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/animation/Animation.java
@@ -0,0 +1,26 @@
+package me.zimzaza4.geyserutils.common.animation;
+
+import lombok.Builder;
+import lombok.Getter;
+
+@Builder
+@Getter
+public class Animation {
+ public static final float DEFAULT_BLEND_OUT_TIME = 0.0f;
+ public static final String DEFAULT_STOP_EXPRESSION = "query.any_animation_finished";
+ public static final String DEFAULT_CONTROLLER = "__runtime_controller";
+ public static final String DEFAULT_NEXT_STATE = "default";
+ public static final int DEFAULT_STOP_EXPRESSION_VERSION = 16777216;
+
+ private String animation;
+ @Builder.Default
+ private String nextState = DEFAULT_NEXT_STATE;
+ @Builder.Default
+ private float blendOutTime = DEFAULT_BLEND_OUT_TIME;
+ @Builder.Default
+ private String stopExpression = DEFAULT_STOP_EXPRESSION;
+ @Builder.Default
+ private String controller = DEFAULT_CONTROLLER;
+ @Builder.Default
+ private int stopExpressionVersion = DEFAULT_STOP_EXPRESSION_VERSION;
+}
\ No newline at end of file
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/manager/PacketManager.java b/common/src/main/java/me/zimzaza4/geyserutils/common/manager/PacketManager.java
new file mode 100644
index 0000000..d56dca8
--- /dev/null
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/manager/PacketManager.java
@@ -0,0 +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.*;
+
+public class PacketManager {
+
+ private final Kryo kryo = new Kryo();
+
+ public PacketManager() {
+ init();
+ }
+
+ 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();
+ }
+
+ }
+
+ public CustomPayloadPacket decodePacket(byte[] bytes) {
+ try (Input input = new Input(bytes)) {
+ return kryo.readObject(input, CustomPayloadPacket.class);
+ }
+ }
+}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/AnimateEntityCustomPayloadPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/AnimateEntityCustomPayloadPacket.java
new file mode 100644
index 0000000..cc2cb8c
--- /dev/null
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/AnimateEntityCustomPayloadPacket.java
@@ -0,0 +1,30 @@
+package me.zimzaza4.geyserutils.common.packet;
+
+import lombok.Getter;
+import lombok.Setter;
+import me.zimzaza4.geyserutils.common.animation.Animation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Setter
+@Getter
+public class AnimateEntityCustomPayloadPacket extends CustomPayloadPacket{
+ private String animation;
+ private String nextState;
+ private String stopExpression;
+ private int stopExpressionVersion;
+ private String controller;
+ private float blendOutTime;
+ private List entityJavaIds = new ArrayList<>();
+
+ public void parseFromAnimation(Animation ani) {
+ this.animation = ani.getAnimation();
+ this.nextState = ani.getNextState();
+ this.blendOutTime = ani.getBlendOutTime();
+ this.stopExpression = ani.getStopExpression();
+ this.controller = ani.getController();
+ this.stopExpressionVersion = ani.getStopExpressionVersion();
+ }
+
+}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraShakePacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraShakeCustomPayloadPacket.java
similarity index 72%
rename from common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraShakePacket.java
rename to common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraShakeCustomPayloadPacket.java
index 1e41ec3..17a89b0 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraShakePacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraShakeCustomPayloadPacket.java
@@ -5,7 +5,7 @@ import lombok.Getter;
@Getter
@AllArgsConstructor
-public class CameraShakePacket extends Packet {
+public class CameraShakeCustomPayloadPacket extends CustomPayloadPacket {
float intensity;
float duration;
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/Packet.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomPayloadPacket.java
similarity index 54%
rename from common/src/main/java/me/zimzaza4/geyserutils/common/packet/Packet.java
rename to common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomPayloadPacket.java
index 13a90fd..e81520e 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/Packet.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomPayloadPacket.java
@@ -2,6 +2,6 @@ package me.zimzaza4.geyserutils.common.packet;
import java.io.Serializable;
-public abstract class Packet implements Serializable {
+public abstract class CustomPayloadPacket implements Serializable {
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcDialogueFormDataPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcDialogueFormDataCustomPayloadPacket.java
similarity index 85%
rename from common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcDialogueFormDataPacket.java
rename to common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcDialogueFormDataCustomPayloadPacket.java
index 34ed516..91dd32c 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcDialogueFormDataPacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcDialogueFormDataCustomPayloadPacket.java
@@ -6,14 +6,13 @@ import lombok.Setter;
import lombok.experimental.Accessors;
import me.zimzaza4.geyserutils.common.form.element.NpcDialogueButton;
-import java.io.Serializable;
import java.util.List;
@AllArgsConstructor
@Accessors(fluent = true)
@Getter
@Setter
-public class NpcDialogueFormDataPacket extends Packet {
+public class NpcDialogueFormDataCustomPayloadPacket extends CustomPayloadPacket {
String formId;
String title;
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcFormResponsePacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcFormResponseCustomPayloadPacket.java
similarity index 73%
rename from common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcFormResponsePacket.java
rename to common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcFormResponseCustomPayloadPacket.java
index cc9e3e6..66bbae0 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcFormResponsePacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcFormResponseCustomPayloadPacket.java
@@ -4,12 +4,10 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
-import java.io.Serializable;
-
@AllArgsConstructor
@NoArgsConstructor
@Getter
-public class NpcFormResponsePacket extends Packet {
+public class NpcFormResponseCustomPayloadPacket extends CustomPayloadPacket {
String formId;
int buttonId;
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/util/CustomPayloadPacketUtils.java b/common/src/main/java/me/zimzaza4/geyserutils/common/util/CustomPayloadPacketUtils.java
index 95183ef..924cda2 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/util/CustomPayloadPacketUtils.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/util/CustomPayloadPacketUtils.java
@@ -1,30 +1,12 @@
package me.zimzaza4.geyserutils.common.util;
-import me.zimzaza4.geyserutils.common.packet.Packet;
+import com.esotericsoftware.kryo.Kryo;
+import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
import java.io.*;
public class CustomPayloadPacketUtils {
- public static byte[] encodePacket(Packet packet) {
- ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
- try (ObjectOutputStream outputStream = new ObjectOutputStream(byteArrayOutputStream)) {
- outputStream.writeObject(packet);
- outputStream.flush();
- return byteArrayOutputStream.toByteArray();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- public static Packet decodePacket(byte[] bytes) {
- ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
- try (ObjectInputStream inputStream = new ObjectInputStream(byteArrayInputStream)) {
- return (Packet) inputStream.readObject();
- } catch (IOException | ClassNotFoundException e) {
- throw new RuntimeException(e);
- }
- }
}
diff --git a/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java b/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java
index eedac3a..c35645d 100644
--- a/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java
+++ b/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java
@@ -5,22 +5,24 @@ import com.github.steveice10.mc.protocol.packet.ingame.serverbound.ServerboundCu
import com.github.steveice10.packetlib.Session;
import com.github.steveice10.packetlib.event.session.SessionAdapter;
import com.github.steveice10.packetlib.packet.Packet;
+import lombok.Getter;
import me.zimzaza4.geyserutils.common.channel.GeyserUtilsChannels;
import me.zimzaza4.geyserutils.common.form.element.NpcDialogueButton;
-import me.zimzaza4.geyserutils.common.packet.CameraShakePacket;
-import me.zimzaza4.geyserutils.common.packet.NpcDialogueFormDataPacket;
-import me.zimzaza4.geyserutils.common.packet.NpcFormResponsePacket;
+import me.zimzaza4.geyserutils.common.manager.PacketManager;
+import me.zimzaza4.geyserutils.common.packet.*;
import me.zimzaza4.geyserutils.common.util.CustomPayloadPacketUtils;
import me.zimzaza4.geyserutils.geyser.form.NpcDialogueForm;
import me.zimzaza4.geyserutils.geyser.form.NpcDialogueForms;
import me.zimzaza4.geyserutils.geyser.form.element.Button;
import me.zimzaza4.geyserutils.geyser.translator.NPCFormResponseTranslator;
+import org.cloudburstmc.protocol.bedrock.packet.AnimateEntityPacket;
import org.cloudburstmc.protocol.bedrock.packet.NpcRequestPacket;
import org.geysermc.event.subscribe.Subscribe;
import org.geysermc.geyser.api.bedrock.camera.CameraShake;
import org.geysermc.geyser.api.event.bedrock.SessionJoinEvent;
import org.geysermc.geyser.api.event.lifecycle.GeyserPostInitializeEvent;
import org.geysermc.geyser.api.extension.Extension;
+import org.geysermc.geyser.entity.type.Entity;
import org.geysermc.geyser.registry.Registries;
import org.geysermc.geyser.session.GeyserSession;
@@ -29,8 +31,12 @@ import java.util.List;
public class GeyserUtils implements Extension {
+ @Getter
+ public static PacketManager packetManager;
+
@Subscribe
public void onLoad(GeyserPostInitializeEvent event) {
+ packetManager = new PacketManager();
Registries.BEDROCK_PACKET_TRANSLATORS.register(NpcRequestPacket.class, new NPCFormResponseTranslator());
}
@Subscribe
@@ -44,12 +50,12 @@ public class GeyserUtils implements Extension {
System.out.println(payloadPacket.getChannel());
if (payloadPacket.getChannel().equals(GeyserUtilsChannels.MAIN)) {
System.out.println("Received packet");
- me.zimzaza4.geyserutils.common.packet.Packet customPacket = CustomPayloadPacketUtils.decodePacket(payloadPacket.getData());
+ CustomPayloadPacket customPacket = packetManager.decodePacket(payloadPacket.getData());
System.out.println(1);
- if (customPacket instanceof CameraShakePacket cameraShakePacket) {
+ if (customPacket instanceof CameraShakeCustomPayloadPacket cameraShakePacket) {
System.out.println(2);
event.connection().shakeCamera(cameraShakePacket.getIntensity(), cameraShakePacket.getDuration(), CameraShake.values()[cameraShakePacket.getType()]);
- } else if (customPacket instanceof NpcDialogueFormDataPacket formData) {
+ } else if (customPacket instanceof NpcDialogueFormDataCustomPayloadPacket formData) {
if (formData.action().equals("CLOSE")) {
NpcDialogueForm openForm = NpcDialogueForms.getOpenNpcDialogueForms(session);
@@ -82,7 +88,7 @@ public class GeyserUtils implements Extension {
buttons.add(new Button(button.text(), button.commands(),
button.mode(), () -> {
if (button.mode() == NpcDialogueButton.ButtonMode.BUTTON_MODE) {
- session.sendDownstreamPacket(new ServerboundCustomPayloadPacket(GeyserUtilsChannels.MAIN, CustomPayloadPacketUtils.encodePacket(new NpcFormResponsePacket(formData.formId(), finalI))));
+ session.sendDownstreamPacket(new ServerboundCustomPayloadPacket(GeyserUtilsChannels.MAIN, packetManager.encodePacket(new NpcFormResponseCustomPayloadPacket(formData.formId(), finalI))));
}
}
));
@@ -90,11 +96,26 @@ public class GeyserUtils implements Extension {
}
}
- form.closeHandler(() -> session.sendDownstreamPacket(new ServerboundCustomPayloadPacket(GeyserUtilsChannels.MAIN, CustomPayloadPacketUtils.encodePacket(new NpcFormResponsePacket(formData.formId(), -1)))));
+ form.closeHandler(() -> session.sendDownstreamPacket(new ServerboundCustomPayloadPacket(GeyserUtilsChannels.MAIN, packetManager.encodePacket(new NpcFormResponseCustomPayloadPacket(formData.formId(), -1)))));
form.buttons(buttons);
form.createAndSend(session);
+ } else if (customPacket instanceof AnimateEntityCustomPayloadPacket animateEntityCustomPayloadPacket) {
+ AnimateEntityPacket animateEntityPacket = new AnimateEntityPacket();
+ animateEntityPacket.setAnimation(animateEntityCustomPayloadPacket.getAnimation());
+ animateEntityPacket.setController(animateEntityCustomPayloadPacket.getController());
+ animateEntityPacket.setBlendOutTime(animateEntityCustomPayloadPacket.getBlendOutTime());
+ animateEntityPacket.setNextState(animateEntityCustomPayloadPacket.getNextState());
+ animateEntityPacket.setStopExpressionVersion(animateEntityCustomPayloadPacket.getStopExpressionVersion());
+ animateEntityPacket.setStopExpression(animateEntityCustomPayloadPacket.getStopExpression());
+ for (int id : animateEntityCustomPayloadPacket.getEntityJavaIds()) {
+ Entity entity = session.getEntityCache().getEntityByJavaId(id);
+ if (entity != null) {
+ animateEntityPacket.getRuntimeEntityIds().add(entity.getGeyserId());
+ }
+ }
+ session.sendUpstreamPacket(animateEntityPacket);
}
}
}
diff --git a/spigot/src/main/java/me/zimzaza4/geyserutils/spigot/GeyserUtils.java b/spigot/src/main/java/me/zimzaza4/geyserutils/spigot/GeyserUtils.java
index 0815d8b..ff77c4a 100644
--- a/spigot/src/main/java/me/zimzaza4/geyserutils/spigot/GeyserUtils.java
+++ b/spigot/src/main/java/me/zimzaza4/geyserutils/spigot/GeyserUtils.java
@@ -2,33 +2,35 @@ package me.zimzaza4.geyserutils.spigot;
import lombok.Getter;
import me.zimzaza4.geyserutils.common.channel.GeyserUtilsChannels;
-import me.zimzaza4.geyserutils.common.packet.NpcDialogueFormDataPacket;
-import me.zimzaza4.geyserutils.common.packet.NpcFormResponsePacket;
-import me.zimzaza4.geyserutils.common.packet.Packet;
+import me.zimzaza4.geyserutils.common.manager.PacketManager;
+import me.zimzaza4.geyserutils.common.packet.NpcFormResponseCustomPayloadPacket;
+import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
import me.zimzaza4.geyserutils.common.util.CustomPayloadPacketUtils;
import me.zimzaza4.geyserutils.spigot.api.form.NpcDialogueForm;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.messaging.Messenger;
-import java.nio.charset.StandardCharsets;
import java.util.function.BiConsumer;
public final class GeyserUtils extends JavaPlugin {
@Getter
- public static GeyserUtils instance;
+ private static GeyserUtils instance;
+ @Getter
+ private static PacketManager packetManager;
@Override
public void onEnable() {
// Plugin startup logic
instance = this;
+ packetManager = new PacketManager();
Messenger messenger = this.getServer().getMessenger();
messenger.registerOutgoingPluginChannel(this, GeyserUtilsChannels.MAIN);
messenger.registerIncomingPluginChannel(this, GeyserUtilsChannels.MAIN, (channel, player, message) -> {
if (channel.equals(GeyserUtilsChannels.MAIN)) {
- Packet packet = CustomPayloadPacketUtils.decodePacket(message);
- if (packet instanceof NpcFormResponsePacket) {
- NpcFormResponsePacket response = (NpcFormResponsePacket) packet;
+ CustomPayloadPacket packet = packetManager.decodePacket(message);
+ if (packet instanceof NpcFormResponseCustomPayloadPacket) {
+ NpcFormResponseCustomPayloadPacket response = (NpcFormResponseCustomPayloadPacket) packet;
if (NpcDialogueForm.FORMS.containsKey(response.getFormId())) {
BiConsumer handler = NpcDialogueForm.FORMS.get(response.getFormId()).handler();
diff --git a/spigot/src/main/java/me/zimzaza4/geyserutils/spigot/api/PlayerUtils.java b/spigot/src/main/java/me/zimzaza4/geyserutils/spigot/api/PlayerUtils.java
index 6610d13..176297d 100644
--- a/spigot/src/main/java/me/zimzaza4/geyserutils/spigot/api/PlayerUtils.java
+++ b/spigot/src/main/java/me/zimzaza4/geyserutils/spigot/api/PlayerUtils.java
@@ -1,18 +1,37 @@
package me.zimzaza4.geyserutils.spigot.api;
+import me.zimzaza4.geyserutils.common.animation.Animation;
import me.zimzaza4.geyserutils.common.channel.GeyserUtilsChannels;
-import me.zimzaza4.geyserutils.common.packet.CameraShakePacket;
+import me.zimzaza4.geyserutils.common.packet.AnimateEntityCustomPayloadPacket;
+import me.zimzaza4.geyserutils.common.packet.CameraShakeCustomPayloadPacket;
import me.zimzaza4.geyserutils.common.util.CustomPayloadPacketUtils;
import me.zimzaza4.geyserutils.spigot.GeyserUtils;
+import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
-import java.util.concurrent.CompletableFuture;
+import java.util.ArrayList;
+import java.util.List;
public class PlayerUtils {
public static void shakeCamera(Player player, float intensity, float duration, int type) {
- player.sendPluginMessage(GeyserUtils.getInstance(), GeyserUtilsChannels.MAIN, CustomPayloadPacketUtils.encodePacket(new CameraShakePacket(intensity, duration, type)));
+ player.sendPluginMessage(GeyserUtils.getInstance(), GeyserUtilsChannels.MAIN, GeyserUtils.getPacketManager().encodePacket(new CameraShakeCustomPayloadPacket(intensity, duration, type)));
+ }
+
+ public static void playEntityAnimation(Player player, Animation animation, Entity... entityList) {
+ List idList = new ArrayList<>();
+ for (Entity entity : entityList) {
+ idList.add(entity.getEntityId());
+ }
+ playEntityAnimation(player, animation, idList);
+ }
+
+ public static void playEntityAnimation(Player player, Animation animation, List entityList) {
+ AnimateEntityCustomPayloadPacket packet = new AnimateEntityCustomPayloadPacket();
+ packet.parseFromAnimation(animation);
+ packet.setEntityJavaIds(entityList);
+ player.sendPluginMessage(GeyserUtils.getInstance(), GeyserUtilsChannels.MAIN, GeyserUtils.getPacketManager().encodePacket(packet));
}
}
diff --git a/spigot/src/main/java/me/zimzaza4/geyserutils/spigot/api/form/NpcDialogueForm.java b/spigot/src/main/java/me/zimzaza4/geyserutils/spigot/api/form/NpcDialogueForm.java
index 3810c18..0961a5f 100644
--- a/spigot/src/main/java/me/zimzaza4/geyserutils/spigot/api/form/NpcDialogueForm.java
+++ b/spigot/src/main/java/me/zimzaza4/geyserutils/spigot/api/form/NpcDialogueForm.java
@@ -7,7 +7,7 @@ import lombok.Setter;
import lombok.experimental.Accessors;
import me.zimzaza4.geyserutils.common.channel.GeyserUtilsChannels;
import me.zimzaza4.geyserutils.common.form.element.NpcDialogueButton;
-import me.zimzaza4.geyserutils.common.packet.NpcDialogueFormDataPacket;
+import me.zimzaza4.geyserutils.common.packet.NpcDialogueFormDataCustomPayloadPacket;
import me.zimzaza4.geyserutils.common.util.CustomPayloadPacketUtils;
import me.zimzaza4.geyserutils.spigot.GeyserUtils;
import org.bukkit.Bukkit;
@@ -41,13 +41,13 @@ public class NpcDialogueForm {
public void send(FloodgatePlayer floodgatePlayer) {
UUID formId = UUID.randomUUID();
- NpcDialogueFormDataPacket data = new NpcDialogueFormDataPacket(formId.toString(), title, dialogue, skinData, bindEntity.getEntityId(), buttons, "OPEN", hasNextForm);
+ NpcDialogueFormDataCustomPayloadPacket data = new NpcDialogueFormDataCustomPayloadPacket(formId.toString(), title, dialogue, skinData, bindEntity.getEntityId(), buttons, "OPEN", hasNextForm);
Player p = Bukkit.getPlayer(floodgatePlayer.getCorrectUniqueId());
if (p!= null) {
FORMS.put(formId.toString(), this);
- p.sendPluginMessage(GeyserUtils.getInstance(), GeyserUtilsChannels.MAIN, CustomPayloadPacketUtils.encodePacket(data));
+ p.sendPluginMessage(GeyserUtils.getInstance(), GeyserUtilsChannels.MAIN, GeyserUtils.getPacketManager().encodePacket(data));
new BukkitRunnable() {
@Override
@@ -65,10 +65,10 @@ public class NpcDialogueForm {
}
public static void closeForm(FloodgatePlayer floodgatePlayer) {
- NpcDialogueFormDataPacket data = new NpcDialogueFormDataPacket(null, null, null, null, -1, null, "CLOSE", false);
+ NpcDialogueFormDataCustomPayloadPacket data = new NpcDialogueFormDataCustomPayloadPacket(null, null, null, null, -1, null, "CLOSE", false);
Player p = Bukkit.getPlayer(floodgatePlayer.getCorrectUniqueId());
if (p != null) {
- p.sendPluginMessage(GeyserUtils.getInstance(), GeyserUtilsChannels.MAIN, CustomPayloadPacketUtils.encodePacket(data));
+ p.sendPluginMessage(GeyserUtils.getInstance(), GeyserUtilsChannels.MAIN, GeyserUtils.getPacketManager().encodePacket(data));
}
}
}