From 8dd86015e50a1fb54fe801e907a5aa865b53ef6e Mon Sep 17 00:00:00 2001
From: zimzaza4 <3625282098@qq.com>
Date: Sat, 13 Apr 2024 21:58:57 +0800
Subject: [PATCH] fix
---
geyser/pom.xml | 4 +-
.../geyserutils/geyser/GeyserUtils.java | 290 ++++++++++--------
2 files changed, 161 insertions(+), 133 deletions(-)
diff --git a/geyser/pom.xml b/geyser/pom.xml
index d1f1b3e..903ec39 100644
--- a/geyser/pom.xml
+++ b/geyser/pom.xml
@@ -79,13 +79,13 @@
org.geysermc.geyser
api
- 2.2.2-SNAPSHOT
+ 2.2.3-SNAPSHOT
provided
org.geysermc.geyser
core
- 2.2.2-SNAPSHOT
+ 2.2.3-SNAPSHOT
provided
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 2a8e326..d61b958 100644
--- a/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java
+++ b/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java
@@ -8,7 +8,6 @@ import com.github.steveice10.packetlib.event.session.SessionAdapter;
import com.github.steveice10.packetlib.packet.Packet;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
-import it.unimi.dsi.fastutil.bytes.ByteArrays;
import lombok.Getter;
import me.zimzaza4.geyserutils.common.camera.data.CameraPreset;
import me.zimzaza4.geyserutils.common.camera.instruction.ClearInstruction;
@@ -49,6 +48,8 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.*;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class GeyserUtils implements Extension {
@@ -61,15 +62,21 @@ public class GeyserUtils implements Extension {
@Getter
public static Map LOADED_SKIN_DATA = new HashMap<>();
- static final SkinProvider.Cape EMPTY_CAPE = new SkinProvider.Cape("", "no-cape", ByteArrays.EMPTY_ARRAY, -1, true);
+ static SkinProvider.Cape EMPTY_CAPE = new SkinProvider.Cape("", "no-cape", new byte[0], -1, true);
+ ;
+ public static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);
@Subscribe
public void onLoad(GeyserPostInitializeEvent event) {
+
packetManager = new PacketManager();
- CameraPreset.load();
Registries.BEDROCK_PACKET_TRANSLATORS.register(NpcRequestPacket.class, new NPCFormResponseTranslator());
+ logger().info("Loading Skins:");
loadSkins();
+
+ CameraPreset.load();
+
}
@@ -106,7 +113,7 @@ public class GeyserUtils implements Extension {
}
String geoName = "{\"geometry\" :{\"default\" :\"" + geoId + "\"}}";
SkinProvider.SkinGeometry geometry = new SkinProvider.SkinGeometry(geoName, Files.readString(geometryFile.toPath()), false);
- LOADED_SKIN_DATA.put(file.getName(), new SkinProvider.SkinData(skin, EMPTY_CAPE, geometry));
+ LOADED_SKIN_DATA.put(file.getName(), new SkinProvider.SkinData(skin, getEmptyCapeData(), geometry));
this.logger().info("Loaded skin: " + file.getName() + "| geo:" + geoName);
} catch (Exception e) {
e.printStackTrace();
@@ -118,136 +125,153 @@ public class GeyserUtils implements Extension {
@Subscribe
public void onSessionJoin(SessionLoginEvent event) {
if (event.connection() instanceof GeyserSession session) {
- GeyserImpl.getInstance().getScheduledThread()
- .schedule(() -> session.getDownstream().getSession().addListener(new SessionAdapter() {
-
-
- @Override
- public void packetSending(PacketSendingEvent event) {
- Packet packet = event.getPacket();
- if (packet instanceof ServerboundCustomPayloadPacket payloadPacket) {
- if (payloadPacket.getChannel().equals("minecraft:register")) {
- String channels = new String(payloadPacket.getData(), StandardCharsets.UTF_8);
- channels = channels + "\0" + GeyserUtilsChannels.MAIN;
- event.setPacket(new ServerboundCustomPayloadPacket("minecraft:register", channels.getBytes(StandardCharsets.UTF_8)));
- }
- }
- }
-
- @Override
- public void packetReceived(Session tcpSession, Packet packet) {
-
- if (packet instanceof ClientboundCustomPayloadPacket payloadPacket) {
- if (payloadPacket.getChannel().equals(GeyserUtilsChannels.MAIN)) {
- CustomPayloadPacket customPacket = packetManager.decodePacket(payloadPacket.getData());
- if (customPacket instanceof CameraShakeCustomPayloadPacket cameraShakePacket) {
- event.connection().camera().shakeCamera(cameraShakePacket.getIntensity(), cameraShakePacket.getDuration(), CameraShake.values()[cameraShakePacket.getType()]);
- } else if (customPacket instanceof NpcDialogueFormDataCustomPayloadPacket formData) {
-
- if (formData.action().equals("CLOSE")) {
- NpcDialogueForm openForm = NpcDialogueForms.getOpenNpcDialogueForms(session);
- if (openForm != null) {
- openForm.close(session);
- }
- return;
- }
-
- NpcDialogueForm form = new NpcDialogueForm();
- form.title(formData.title())
- .dialogue(formData.dialogue())
- .bindEntity(session.getEntityCache().getEntityByJavaId(formData.bindEntity()))
- .hasNextForm(formData.hasNextForm());
-
- if (formData.skinData() != null) {
- form.skinData(formData.skinData());
- }
-
-
- List