mirror of
https://github.com/GeyserExtensionists/GeyserUtils.git
synced 2025-12-19 15:09:24 +00:00
bungee support & update
This commit is contained in:
2
.idea/encodings.xml
generated
2
.idea/encodings.xml
generated
@@ -1,6 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding">
|
||||
<file url="file://$PROJECT_DIR$/bungee/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/bungee/src/main/resources" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/common/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/common/src/main/resources" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/geyser/src/main/java" charset="UTF-8" />
|
||||
|
||||
4
.idea/misc.xml
generated
4
.idea/misc.xml
generated
@@ -1,10 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="EntryPointsManager">
|
||||
<list size="3">
|
||||
<list size="4">
|
||||
<item index="0" class="java.lang.String" itemvalue="org.bukkit.event.EventHandler" />
|
||||
<item index="1" class="java.lang.String" itemvalue="com.velocitypowered.api.event.Subscribe" />
|
||||
<item index="2" class="java.lang.String" itemvalue="com.velocitypowered.api.plugin.Plugin" />
|
||||
<item index="3" class="java.lang.String" itemvalue="net.md_5.bungee.event.EventHandler" />
|
||||
</list>
|
||||
</component>
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
@@ -15,6 +16,7 @@
|
||||
<option value="$PROJECT_DIR$/GeyserUtils-spigot/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/spigot/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/velocity/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/bungee/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
|
||||
@@ -21,5 +21,7 @@ public class SetInstruction implements Instruction {
|
||||
@Nullable
|
||||
private Pos facing;
|
||||
private CameraPreset preset;
|
||||
@Nullable
|
||||
private FadeInstruction fade;
|
||||
protected SetInstruction() {}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package me.zimzaza4.geyserutils.common.packet;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CameraLockCustomPayloadPacket extends CustomPayloadPacket {
|
||||
boolean lock;
|
||||
}
|
||||
@@ -53,7 +53,7 @@
|
||||
<enabled>true</enabled>
|
||||
</releases>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
<enabled>true</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
<repository>
|
||||
@@ -79,13 +79,13 @@
|
||||
<dependency>
|
||||
<groupId>org.geysermc.geyser</groupId>
|
||||
<artifactId>api</artifactId>
|
||||
<version>2.1.2-SNAPSHOT</version>
|
||||
<version>2.2.2-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.geysermc.geyser</groupId>
|
||||
<artifactId>core</artifactId>
|
||||
<version>2.2.0-SNAPSHOT</version>
|
||||
<version>2.2.2-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.cloudburstmc.protocol.common.DefinitionRegistry;
|
||||
import org.cloudburstmc.protocol.common.NamedDefinition;
|
||||
import org.geysermc.event.subscribe.Subscribe;
|
||||
import org.geysermc.geyser.GeyserImpl;
|
||||
import org.geysermc.geyser.api.bedrock.camera.CameraPerspective;
|
||||
import org.geysermc.geyser.api.bedrock.camera.CameraShake;
|
||||
import org.geysermc.geyser.api.event.bedrock.SessionJoinEvent;
|
||||
import org.geysermc.geyser.api.event.lifecycle.GeyserPostInitializeEvent;
|
||||
@@ -55,23 +56,19 @@ public class GeyserUtils implements Extension {
|
||||
CameraPreset.load();
|
||||
Registries.BEDROCK_PACKET_TRANSLATORS.register(NpcRequestPacket.class, new NPCFormResponseTranslator());
|
||||
|
||||
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(() -> {
|
||||
|
||||
for (GeyserSession session : GeyserImpl.getInstance().onlineConnections()) {
|
||||
sendCameraPresets(session);
|
||||
}
|
||||
|
||||
}, 10, 10, TimeUnit.SECONDS);
|
||||
|
||||
|
||||
}
|
||||
@Subscribe
|
||||
public void onSessionJoin(SessionJoinEvent event) {
|
||||
System.out.println("JOINED");
|
||||
if (event.connection() instanceof GeyserSession session) {
|
||||
sendCameraPresets(session);
|
||||
// sendCameraPresets(session);
|
||||
System.out.println("2");
|
||||
session.getDownstream().getSession().addListener(new SessionAdapter() {
|
||||
@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());
|
||||
@@ -138,15 +135,16 @@ public class GeyserUtils implements Extension {
|
||||
}
|
||||
session.sendUpstreamPacket(animateEntityPacket);
|
||||
} else if (customPacket instanceof CameraInstructionCustomPayloadPacket cameraInstructionPacket) {
|
||||
CameraInstructionPacket bedrockPacket = new CameraInstructionPacket();
|
||||
if (cameraInstructionPacket.getInstruction() instanceof SetInstruction instruction) {
|
||||
bedrockPacket.setSetInstruction(Converter.serializeSetInstruction(instruction));
|
||||
session.camera().sendCameraPosition(Converter.serializeSetInstruction(instruction));
|
||||
session.getCameraData().forceCameraPerspective(Converter.serializeCameraPerspective(instruction.getPreset()));
|
||||
|
||||
} else if (cameraInstructionPacket.getInstruction() instanceof FadeInstruction instruction) {
|
||||
bedrockPacket.setFadeInstruction(Converter.serializeFadeInstruction(instruction));
|
||||
session.camera().sendCameraFade(Converter.serializeFadeInstruction(instruction));
|
||||
} else if (cameraInstructionPacket.getInstruction() instanceof ClearInstruction){
|
||||
bedrockPacket.setClear(true);
|
||||
session.camera().clearCameraInstructions();
|
||||
}
|
||||
session.sendUpstreamPacket(bedrockPacket);
|
||||
|
||||
} else if (customPacket instanceof CustomParticleEffectPayloadPacket customParticleEffectPacket) {
|
||||
SpawnParticleEffectPacket spawnParticleEffectPacket = new SpawnParticleEffectPacket();
|
||||
spawnParticleEffectPacket.setDimensionId(DimensionUtils.javaToBedrock(session.getDimension()));
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.cloudburstmc.protocol.bedrock.data.camera.CameraEase;
|
||||
import org.cloudburstmc.protocol.bedrock.data.camera.CameraFadeInstruction;
|
||||
import org.cloudburstmc.protocol.bedrock.data.camera.CameraSetInstruction;
|
||||
import org.cloudburstmc.protocol.common.util.OptionalBoolean;
|
||||
import org.geysermc.geyser.api.bedrock.camera.*;
|
||||
|
||||
public class Converter {
|
||||
|
||||
@@ -60,41 +61,56 @@ public class Converter {
|
||||
}
|
||||
|
||||
|
||||
public static CameraFadeInstruction serializeFadeInstruction(FadeInstruction instruction) {
|
||||
public static CameraFade serializeFadeInstruction(FadeInstruction instruction) {
|
||||
CameraFadeInstruction cbInstruction = new CameraFadeInstruction();
|
||||
|
||||
CameraFade.Builder builder = CameraFade.builder();
|
||||
if (instruction.getColor() != null) {
|
||||
cbInstruction.setColor(serializeColor(instruction.getColor()));
|
||||
builder.color(serializeColor(instruction.getColor()));
|
||||
}
|
||||
if (instruction.getTime() != null) {
|
||||
cbInstruction.setTimeData(serializeTime(instruction.getTime()));
|
||||
|
||||
builder.fadeOutSeconds(instruction.getTime().fadeOut());
|
||||
builder.fadeInSeconds(instruction.getTime().fadeIn());
|
||||
|
||||
builder.fadeHoldSeconds(instruction.getTime().hold());
|
||||
}
|
||||
|
||||
return cbInstruction;
|
||||
return builder.build();
|
||||
|
||||
}
|
||||
|
||||
public static CameraSetInstruction serializeSetInstruction(SetInstruction instruction) {
|
||||
public static CameraPerspective serializeCameraPerspective(CameraPreset preset) {
|
||||
for (CameraPerspective value : CameraPerspective.values()) {
|
||||
if (value.id().equals(preset.getIdentifier())) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
return CameraPerspective.FREE;
|
||||
}
|
||||
public static CameraPosition serializeSetInstruction(SetInstruction instruction) {
|
||||
|
||||
CameraPosition.Builder builder = CameraPosition.builder();
|
||||
CameraSetInstruction cbInstruction = new CameraSetInstruction();
|
||||
|
||||
if (instruction.getEase() != null) {
|
||||
cbInstruction.setEase(serializeEase(instruction.getEase()));
|
||||
builder.easeType(CameraEaseType.values()[instruction.getEase().easeType()]);
|
||||
builder.easeSeconds(instruction.getEase().time());
|
||||
}
|
||||
if (instruction.getPos() != null) {
|
||||
cbInstruction.setPos(serializePos(instruction.getPos()));
|
||||
builder.position(serializePos(instruction.getPos()));
|
||||
}
|
||||
if (instruction.getRot() != null) {
|
||||
cbInstruction.setRot(serializeRot(instruction.getRot()));
|
||||
builder.rotationX((int) instruction.getRot().x());
|
||||
builder.rotationY((int) instruction.getRot().y());
|
||||
|
||||
}
|
||||
if (instruction.getFacing() != null) {
|
||||
cbInstruction.setFacing(serializePos(instruction.getFacing()));
|
||||
builder.facingPosition(serializePos(instruction.getFacing()));
|
||||
}
|
||||
|
||||
|
||||
cbInstruction.setDefaultPreset(OptionalBoolean.of(false));
|
||||
cbInstruction.setPreset(new CameraPresetDefinition(instruction.getPreset().getIdentifier(), instruction.getPreset().getId()));
|
||||
return cbInstruction;
|
||||
if (instruction.getFade() != null) {
|
||||
builder.cameraFade(serializeFadeInstruction(instruction.getFade()));
|
||||
}
|
||||
return builder.build();
|
||||
|
||||
}
|
||||
|
||||
|
||||
1
pom.xml
1
pom.xml
@@ -13,6 +13,7 @@
|
||||
<module>geyser</module>
|
||||
<module>spigot</module>
|
||||
<module>velocity</module>
|
||||
<module>bungee</module>
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package me.zimzaza4.geyserutils.spigot;
|
||||
|
||||
import lombok.Getter;
|
||||
import me.zimzaza4.geyserutils.common.camera.data.CameraPreset;
|
||||
import me.zimzaza4.geyserutils.common.channel.GeyserUtilsChannels;
|
||||
import me.zimzaza4.geyserutils.common.manager.PacketManager;
|
||||
import me.zimzaza4.geyserutils.common.packet.NpcFormResponseCustomPayloadPacket;
|
||||
@@ -25,6 +26,8 @@ public final class GeyserUtils extends JavaPlugin {
|
||||
instance = this;
|
||||
packetManager = new PacketManager();
|
||||
Messenger messenger = this.getServer().getMessenger();
|
||||
|
||||
CameraPreset.load();
|
||||
messenger.registerOutgoingPluginChannel(this, GeyserUtilsChannels.MAIN);
|
||||
messenger.registerIncomingPluginChannel(this, GeyserUtilsChannels.MAIN, (channel, player, message) -> {
|
||||
if (channel.equals(GeyserUtilsChannels.MAIN)) {
|
||||
|
||||
Reference in New Issue
Block a user