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"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="Encoding">
|
<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/java" charset="UTF-8" />
|
||||||
<file url="file://$PROJECT_DIR$/common/src/main/resources" 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" />
|
<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"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="EntryPointsManager">
|
<component name="EntryPointsManager">
|
||||||
<list size="3">
|
<list size="4">
|
||||||
<item index="0" class="java.lang.String" itemvalue="org.bukkit.event.EventHandler" />
|
<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="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="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>
|
</list>
|
||||||
</component>
|
</component>
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
@@ -15,6 +16,7 @@
|
|||||||
<option value="$PROJECT_DIR$/GeyserUtils-spigot/pom.xml" />
|
<option value="$PROJECT_DIR$/GeyserUtils-spigot/pom.xml" />
|
||||||
<option value="$PROJECT_DIR$/spigot/pom.xml" />
|
<option value="$PROJECT_DIR$/spigot/pom.xml" />
|
||||||
<option value="$PROJECT_DIR$/velocity/pom.xml" />
|
<option value="$PROJECT_DIR$/velocity/pom.xml" />
|
||||||
|
<option value="$PROJECT_DIR$/bungee/pom.xml" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
@@ -21,5 +21,7 @@ public class SetInstruction implements Instruction {
|
|||||||
@Nullable
|
@Nullable
|
||||||
private Pos facing;
|
private Pos facing;
|
||||||
private CameraPreset preset;
|
private CameraPreset preset;
|
||||||
|
@Nullable
|
||||||
|
private FadeInstruction fade;
|
||||||
protected SetInstruction() {}
|
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>
|
<enabled>true</enabled>
|
||||||
</releases>
|
</releases>
|
||||||
<snapshots>
|
<snapshots>
|
||||||
<enabled>false</enabled>
|
<enabled>true</enabled>
|
||||||
</snapshots>
|
</snapshots>
|
||||||
</repository>
|
</repository>
|
||||||
<repository>
|
<repository>
|
||||||
@@ -79,13 +79,13 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.geysermc.geyser</groupId>
|
<groupId>org.geysermc.geyser</groupId>
|
||||||
<artifactId>api</artifactId>
|
<artifactId>api</artifactId>
|
||||||
<version>2.1.2-SNAPSHOT</version>
|
<version>2.2.2-SNAPSHOT</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.geysermc.geyser</groupId>
|
<groupId>org.geysermc.geyser</groupId>
|
||||||
<artifactId>core</artifactId>
|
<artifactId>core</artifactId>
|
||||||
<version>2.2.0-SNAPSHOT</version>
|
<version>2.2.2-SNAPSHOT</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import org.cloudburstmc.protocol.common.DefinitionRegistry;
|
|||||||
import org.cloudburstmc.protocol.common.NamedDefinition;
|
import org.cloudburstmc.protocol.common.NamedDefinition;
|
||||||
import org.geysermc.event.subscribe.Subscribe;
|
import org.geysermc.event.subscribe.Subscribe;
|
||||||
import org.geysermc.geyser.GeyserImpl;
|
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.bedrock.camera.CameraShake;
|
||||||
import org.geysermc.geyser.api.event.bedrock.SessionJoinEvent;
|
import org.geysermc.geyser.api.event.bedrock.SessionJoinEvent;
|
||||||
import org.geysermc.geyser.api.event.lifecycle.GeyserPostInitializeEvent;
|
import org.geysermc.geyser.api.event.lifecycle.GeyserPostInitializeEvent;
|
||||||
@@ -55,23 +56,19 @@ public class GeyserUtils implements Extension {
|
|||||||
CameraPreset.load();
|
CameraPreset.load();
|
||||||
Registries.BEDROCK_PACKET_TRANSLATORS.register(NpcRequestPacket.class, new NPCFormResponseTranslator());
|
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
|
@Subscribe
|
||||||
public void onSessionJoin(SessionJoinEvent event) {
|
public void onSessionJoin(SessionJoinEvent event) {
|
||||||
|
System.out.println("JOINED");
|
||||||
if (event.connection() instanceof GeyserSession session) {
|
if (event.connection() instanceof GeyserSession session) {
|
||||||
sendCameraPresets(session);
|
// sendCameraPresets(session);
|
||||||
|
System.out.println("2");
|
||||||
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) {
|
||||||
if (payloadPacket.getChannel().equals(GeyserUtilsChannels.MAIN)) {;
|
if (payloadPacket.getChannel().equals(GeyserUtilsChannels.MAIN)) {;
|
||||||
CustomPayloadPacket customPacket = packetManager.decodePacket(payloadPacket.getData());
|
CustomPayloadPacket customPacket = packetManager.decodePacket(payloadPacket.getData());
|
||||||
@@ -138,15 +135,16 @@ public class GeyserUtils implements Extension {
|
|||||||
}
|
}
|
||||||
session.sendUpstreamPacket(animateEntityPacket);
|
session.sendUpstreamPacket(animateEntityPacket);
|
||||||
} else if (customPacket instanceof CameraInstructionCustomPayloadPacket cameraInstructionPacket) {
|
} else if (customPacket instanceof CameraInstructionCustomPayloadPacket cameraInstructionPacket) {
|
||||||
CameraInstructionPacket bedrockPacket = new CameraInstructionPacket();
|
|
||||||
if (cameraInstructionPacket.getInstruction() instanceof SetInstruction instruction) {
|
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) {
|
} else if (cameraInstructionPacket.getInstruction() instanceof FadeInstruction instruction) {
|
||||||
bedrockPacket.setFadeInstruction(Converter.serializeFadeInstruction(instruction));
|
session.camera().sendCameraFade(Converter.serializeFadeInstruction(instruction));
|
||||||
} else if (cameraInstructionPacket.getInstruction() instanceof ClearInstruction){
|
} else if (cameraInstructionPacket.getInstruction() instanceof ClearInstruction){
|
||||||
bedrockPacket.setClear(true);
|
session.camera().clearCameraInstructions();
|
||||||
}
|
}
|
||||||
session.sendUpstreamPacket(bedrockPacket);
|
|
||||||
} else if (customPacket instanceof CustomParticleEffectPayloadPacket customParticleEffectPacket) {
|
} else if (customPacket instanceof CustomParticleEffectPayloadPacket customParticleEffectPacket) {
|
||||||
SpawnParticleEffectPacket spawnParticleEffectPacket = new SpawnParticleEffectPacket();
|
SpawnParticleEffectPacket spawnParticleEffectPacket = new SpawnParticleEffectPacket();
|
||||||
spawnParticleEffectPacket.setDimensionId(DimensionUtils.javaToBedrock(session.getDimension()));
|
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.CameraFadeInstruction;
|
||||||
import org.cloudburstmc.protocol.bedrock.data.camera.CameraSetInstruction;
|
import org.cloudburstmc.protocol.bedrock.data.camera.CameraSetInstruction;
|
||||||
import org.cloudburstmc.protocol.common.util.OptionalBoolean;
|
import org.cloudburstmc.protocol.common.util.OptionalBoolean;
|
||||||
|
import org.geysermc.geyser.api.bedrock.camera.*;
|
||||||
|
|
||||||
public class Converter {
|
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();
|
CameraFadeInstruction cbInstruction = new CameraFadeInstruction();
|
||||||
|
CameraFade.Builder builder = CameraFade.builder();
|
||||||
if (instruction.getColor() != null) {
|
if (instruction.getColor() != null) {
|
||||||
cbInstruction.setColor(serializeColor(instruction.getColor()));
|
builder.color(serializeColor(instruction.getColor()));
|
||||||
}
|
}
|
||||||
if (instruction.getTime() != null) {
|
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();
|
CameraSetInstruction cbInstruction = new CameraSetInstruction();
|
||||||
|
|
||||||
if (instruction.getEase() != null) {
|
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) {
|
if (instruction.getPos() != null) {
|
||||||
cbInstruction.setPos(serializePos(instruction.getPos()));
|
builder.position(serializePos(instruction.getPos()));
|
||||||
}
|
}
|
||||||
if (instruction.getRot() != null) {
|
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) {
|
if (instruction.getFacing() != null) {
|
||||||
cbInstruction.setFacing(serializePos(instruction.getFacing()));
|
builder.facingPosition(serializePos(instruction.getFacing()));
|
||||||
}
|
}
|
||||||
|
if (instruction.getFade() != null) {
|
||||||
|
builder.cameraFade(serializeFadeInstruction(instruction.getFade()));
|
||||||
cbInstruction.setDefaultPreset(OptionalBoolean.of(false));
|
}
|
||||||
cbInstruction.setPreset(new CameraPresetDefinition(instruction.getPreset().getIdentifier(), instruction.getPreset().getId()));
|
return builder.build();
|
||||||
return cbInstruction;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
1
pom.xml
1
pom.xml
@@ -13,6 +13,7 @@
|
|||||||
<module>geyser</module>
|
<module>geyser</module>
|
||||||
<module>spigot</module>
|
<module>spigot</module>
|
||||||
<module>velocity</module>
|
<module>velocity</module>
|
||||||
|
<module>bungee</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package me.zimzaza4.geyserutils.spigot;
|
package me.zimzaza4.geyserutils.spigot;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import me.zimzaza4.geyserutils.common.camera.data.CameraPreset;
|
||||||
import me.zimzaza4.geyserutils.common.channel.GeyserUtilsChannels;
|
import me.zimzaza4.geyserutils.common.channel.GeyserUtilsChannels;
|
||||||
import me.zimzaza4.geyserutils.common.manager.PacketManager;
|
import me.zimzaza4.geyserutils.common.manager.PacketManager;
|
||||||
import me.zimzaza4.geyserutils.common.packet.NpcFormResponseCustomPayloadPacket;
|
import me.zimzaza4.geyserutils.common.packet.NpcFormResponseCustomPayloadPacket;
|
||||||
@@ -25,6 +26,8 @@ public final class GeyserUtils extends JavaPlugin {
|
|||||||
instance = this;
|
instance = this;
|
||||||
packetManager = new PacketManager();
|
packetManager = new PacketManager();
|
||||||
Messenger messenger = this.getServer().getMessenger();
|
Messenger messenger = this.getServer().getMessenger();
|
||||||
|
|
||||||
|
CameraPreset.load();
|
||||||
messenger.registerOutgoingPluginChannel(this, GeyserUtilsChannels.MAIN);
|
messenger.registerOutgoingPluginChannel(this, GeyserUtilsChannels.MAIN);
|
||||||
messenger.registerIncomingPluginChannel(this, GeyserUtilsChannels.MAIN, (channel, player, message) -> {
|
messenger.registerIncomingPluginChannel(this, GeyserUtilsChannels.MAIN, (channel, player, message) -> {
|
||||||
if (channel.equals(GeyserUtilsChannels.MAIN)) {
|
if (channel.equals(GeyserUtilsChannels.MAIN)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user