Initial commit

This commit is contained in:
zimzaza4
2023-09-10 13:40:49 +08:00
commit d8c3feaacf
28 changed files with 1222 additions and 0 deletions

86
spigot/pom.xml Normal file
View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>me.zimzaza4</groupId>
<artifactId>geyserutils-spigot</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>geyserutils-spigot</name>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<repositories>
<repository>
<id>papermc-repo</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.destroystokyo.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.12.2-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>me.zimzaza4</groupId>
<artifactId>geyserutils-common</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.geysermc.floodgate</groupId>
<artifactId>api</artifactId>
<version>2.2.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,51 @@
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.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;
@Override
public void onEnable() {
// Plugin startup logic
instance = this;
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;
if (NpcDialogueForm.FORMS.containsKey(response.getFormId())) {
BiConsumer<String, Integer> handler = NpcDialogueForm.FORMS.get(response.getFormId()).handler();
if (handler != null) {
handler.accept(response.getFormId(), response.getButtonId());
}
NpcDialogueForm.FORMS.remove(response.getFormId());
}
}
}
});
}
@Override
public void onDisable() {
// Plugin shutdown logic
}
}

View File

@@ -0,0 +1,18 @@
package me.zimzaza4.geyserutils.spigot.api;
import me.zimzaza4.geyserutils.common.channel.GeyserUtilsChannels;
import me.zimzaza4.geyserutils.common.packet.CameraShakePacket;
import me.zimzaza4.geyserutils.common.util.CustomPayloadPacketUtils;
import me.zimzaza4.geyserutils.spigot.GeyserUtils;
import org.bukkit.entity.Player;
import java.util.concurrent.CompletableFuture;
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)));
}
}

View File

@@ -0,0 +1,74 @@
package me.zimzaza4.geyserutils.spigot.api.form;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
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.util.CustomPayloadPacketUtils;
import me.zimzaza4.geyserutils.spigot.GeyserUtils;
import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.function.BiConsumer;
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@Accessors( fluent = true )
public class NpcDialogueForm {
public static Map<String, NpcDialogueForm> FORMS = new HashMap<>();
String title;
String dialogue;
String skinData;
Entity bindEntity;
boolean hasNextForm = false;
List<NpcDialogueButton> buttons;
BiConsumer<String, Integer> handler;
public void send(FloodgatePlayer floodgatePlayer) {
UUID formId = UUID.randomUUID();
NpcDialogueFormDataPacket data = new NpcDialogueFormDataPacket(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));
new BukkitRunnable() {
@Override
public void run() {
if (!FORMS.containsKey(formId.toString())) {
this.cancel();
}
if (!p.isOnline()) {
FORMS.remove(formId.toString());
}
}
}.runTaskTimerAsynchronously(GeyserUtils.getInstance(), 10, 10);
}
}
public static void closeForm(FloodgatePlayer floodgatePlayer) {
NpcDialogueFormDataPacket data = new NpcDialogueFormDataPacket(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));
}
}
}

View File

@@ -0,0 +1,3 @@
name: GeyserUtils
version: '${project.version}'
main: me.zimzaza4.geyserutils.spigot.GeyserUtils