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