mirror of
https://github.com/GeyserExtensionists/GeyserUtils.git
synced 2025-12-19 14:59:18 +00:00
Initial commit
This commit is contained in:
86
spigot/pom.xml
Normal file
86
spigot/pom.xml
Normal 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>
|
||||
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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)));
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
3
spigot/src/main/resources/plugin.yml
Normal file
3
spigot/src/main/resources/plugin.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
name: GeyserUtils
|
||||
version: '${project.version}'
|
||||
main: me.zimzaza4.geyserutils.spigot.GeyserUtils
|
||||
Reference in New Issue
Block a user