diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 4ac2726..c3ca605 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -19,12 +19,12 @@ jobs:
with:
java-version: 17
distribution: 'zulu'
-
+
# Build
- name: Build with Maven
run: mvn -B package --file pom.xml
-
-
+
+
- name: Auto release
uses: "marvinpinto/action-automatic-releases@latest"
with:
diff --git a/.gitignore b/.gitignore
index 5ff6309..425915b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,38 +1,170 @@
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### IntelliJ IDEA ###
-.idea/modules.xml
-.idea/jarRepositories.xml
-.idea/compiler.xml
-.idea/libraries/
+# Created by https://www.toptal.com/developers/gitignore/api/java,gradle,intellij
+# Edit at https://www.toptal.com/developers/gitignore?templates=java,gradle,intellij
+
+### Intellij ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# AWS User-specific
+.idea/**/aws.xml
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn. Uncomment if using
+# auto-import.
+# .idea/artifacts
+# .idea/compiler.xml
+# .idea/jarRepositories.xml
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
*.iws
-*.iml
-*.ipr
-### Eclipse ###
-.apt_generated
-.classpath
-.factorypath
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# SonarLint plugin
+.idea/sonarlint/
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+### Intellij Patch ###
+# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
+
+# *.iml
+# modules.xml
+# .idea/misc.xml
+# *.ipr
+
+# Sonarlint plugin
+# https://plugins.jetbrains.com/plugin/7973-sonarlint
+.idea/**/sonarlint/
+
+# SonarQube Plugin
+# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
+.idea/**/sonarIssues.xml
+
+# Markdown Navigator plugin
+# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
+.idea/**/markdown-navigator.xml
+.idea/**/markdown-navigator-enh.xml
+.idea/**/markdown-navigator/
+
+# Cache file creation bug
+# See https://youtrack.jetbrains.com/issue/JBR-2257
+.idea/$CACHE_FILE$
+
+# CodeStream plugin
+# https://plugins.jetbrains.com/plugin/12206-codestream
+.idea/codestream.xml
+
+# Azure Toolkit for IntelliJ plugin
+# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
+.idea/**/azureSettings.xml
+
+### Java ###
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+replay_pid*
+
+### Gradle ###
+.gradle
+**/build/
+!src/**/build/
+
+# Ignore Gradle GUI config
+gradle-app.setting
+
+# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
+!gradle-wrapper.jar
+
+# Avoid ignore Gradle wrappper properties
+!gradle-wrapper.properties
+
+# Cache of project
+.gradletasknamecache
+
+# Eclipse Gradle plugin generated files
+# Eclipse Core
.project
-.settings
-.springBeans
-.sts4-cache
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
-
-### Mac OS ###
-.DS_Store
\ No newline at end of file
+# JDT-specific (Eclipse Java Development Tools)
+.classpath
+
+### Gradle Patch ###
+# Java heap dump
+*.hprof
+
+# End of https://www.toptal.com/developers/gitignore/api/java,gradle,intellij
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..867082d
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..5682ba9
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/material_theme_project_new.xml b/.idea/material_theme_project_new.xml
new file mode 100644
index 0000000..c555d86
--- /dev/null
+++ b/.idea/material_theme_project_new.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 4a4279b..c0b18fd 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,3 +1,4 @@
+
@@ -19,7 +20,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..9b53122
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index ca837c4..c499819 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,41 @@
-# GeyserUtils
-- camera shake
-- NPC form
-- animation
-- camera features(require modify geyser's startgamepacket by yourself XP)
-- (and thank daoge cmd so much ❤️ XD)
-
-_Install_
-- GeyserUtils-Spigot -> your spigot server plugins folder
-- GeyserUtils-Velocity -> your velocity proxy (if exists)
-- GeyserUtils-Geyser -> your geyser extensions folder
+**GeyserUtils**
+================
+
+A collection of utilities and tools designed to make development with Geyser easier and more efficient.
+
+**Overview**
+------------
+
+This project provides a set of reusable code snippets, functions, and classes that can be used in various projects built using the [Geyser](https://geysermc.org). The goal is to simplify common tasks and reduce boilerplate code, making development with Geyser more enjoyable.
+
+**Features**
+------------
+
+* Camera shake
+* NPC form
+* Animation
+* Camera features _(require modify geyser's StartGamePacket by yourself XP)_
+* And more!
+
+**Contributing**
+---------------
+
+We welcome contributions to this repository! If you'd like to add a new feature or fix a bug, please:
+
+1. Fork the repository: `git fork https://github.com/GeyserExtensionists/GeyserUtils.git`
+2. Create a new branch: `git checkout -b new-feature`
+3. Make your changes and commit them
+4. Push your changes to your forked repository
+5. Open a pull request against the original repository
+
+**License**
+-----------
+
+GeyserUtils is licensed under the [MIT License](https://opensource.org/licenses/MIT).
+
+**Acknowledgments**
+------------------
+
+A special thank you to all contributors who have helped shape this project into what it is today.
+
+Feel free to reach out if you'd like more information about GeyserUtils or its usage in your projects.
\ No newline at end of file
diff --git a/bungee/geyserutils-bungee.iml b/bungee/geyserutils-bungee.iml
new file mode 100644
index 0000000..80fd98d
--- /dev/null
+++ b/bungee/geyserutils-bungee.iml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ BUNGEECORD
+
+ 1
+
+
+
+
\ No newline at end of file
diff --git a/bungee/pom.xml b/bungee/pom.xml
index 7b457d5..099cfa1 100644
--- a/bungee/pom.xml
+++ b/bungee/pom.xml
@@ -1,39 +1,50 @@
-
4.0.0
-
me.zimzaza4
GeyserUtils
1.0-SNAPSHOT
-
geyserutils-bungee
-
+
1.8
- UTF-8
+
+
+
+
+ net.md-5
+ bungeecord-api
+ ${bungeecord.version}
+ provided
+
+
+
+
clean package
+
org.apache.maven.plugins
maven-compiler-plugin
- 3.8.1
+ ${compiler.plugin.version}
${java.version}
${java.version}
+
org.apache.maven.plugins
maven-shade-plugin
- 3.2.4
+ ${shade.plugin.version}
package
@@ -54,20 +65,4 @@
-
-
-
- sonatype
- https://oss.sonatype.org/content/groups/public/
-
-
-
-
-
- net.md-5
- bungeecord-api
- 1.20-R0.3-SNAPSHOT
- provided
-
-
diff --git a/bungee/src/main/java/me/zimzaza4/geyserutils/bungee/GeyserUtils.java b/bungee/src/main/java/me/zimzaza4/geyserutils/bungee/GeyserUtils.java
index 4397784..10b1f4c 100644
--- a/bungee/src/main/java/me/zimzaza4/geyserutils/bungee/GeyserUtils.java
+++ b/bungee/src/main/java/me/zimzaza4/geyserutils/bungee/GeyserUtils.java
@@ -9,11 +9,9 @@ public final class GeyserUtils extends Plugin {
public void onEnable() {
ProxyServer.getInstance()
.registerChannel("geyserutils:main");
- // Plugin startup logic
}
@Override
public void onDisable() {
- // Plugin shutdown logic
}
}
diff --git a/bungee/target/classes/bungee.yml b/bungee/target/classes/bungee.yml
new file mode 100644
index 0000000..c33ed47
--- /dev/null
+++ b/bungee/target/classes/bungee.yml
@@ -0,0 +1,3 @@
+name: GeyserUtils
+version: '1.0-SNAPSHOT'
+main: me.zimzaza4.geyserutils.bungee.GeyserUtils
diff --git a/bungee/target/maven-archiver/pom.properties b/bungee/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..fe81564
--- /dev/null
+++ b/bungee/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=geyserutils-bungee
+groupId=me.zimzaza4
+version=1.0-SNAPSHOT
diff --git a/bungee/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/bungee/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..0073901
--- /dev/null
+++ b/bungee/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1 @@
+me/zimzaza4/geyserutils/bungee/GeyserUtils.class
diff --git a/bungee/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/bungee/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..8ec889d
--- /dev/null
+++ b/bungee/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1 @@
+/Users/rochblondiaux/Development/Perso/GeyserUtils/bungee/src/main/java/me/zimzaza4/geyserutils/bungee/GeyserUtils.java
diff --git a/common/pom.xml b/common/pom.xml
index db42047..e8082ea 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -1,6 +1,6 @@
-
4.0.0
@@ -8,21 +8,43 @@
GeyserUtils
1.0-SNAPSHOT
-
geyserutils-common
+ jar
-
- 11
- 11
- UTF-8
-
+
+
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+ ${jackson.version}
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${compiler.plugin.version}
+
+ ${java.version}
+ ${java.version}
+
+
+
org.apache.maven.plugins
maven-shade-plugin
- 3.4.1
+ ${shade.plugin.version}
@@ -51,38 +73,4 @@
-
-
-
-
-
- org.projectlombok
- lombok
- 1.18.28
- compile
-
-
- com.fasterxml.jackson.core
- jackson-core
- 2.15.2
-
-
- com.fasterxml.jackson.core
- jackson-databind
- 2.15.2
-
-
- org.jetbrains
- annotations
- 24.0.1
- compile
-
-
- org.jetbrains
- annotations
- 24.0.1
- compile
-
-
-
\ No newline at end of file
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/animation/Animation.java b/common/src/main/java/me/zimzaza4/geyserutils/common/animation/Animation.java
index 2e74ccf..18f8ac3 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/animation/Animation.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/animation/Animation.java
@@ -6,6 +6,7 @@
@Builder
@Getter
public class Animation {
+
public static final float DEFAULT_BLEND_OUT_TIME = 0.0f;
public static final String DEFAULT_STOP_EXPRESSION = "query.any_animation_finished";
public static final String DEFAULT_CONTROLLER = "__runtime_controller";
@@ -23,4 +24,5 @@ public class Animation {
private String controller = DEFAULT_CONTROLLER;
@Builder.Default
private int stopExpressionVersion = DEFAULT_STOP_EXPRESSION_VERSION;
+
}
\ No newline at end of file
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/CameraPreset.java b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/CameraPreset.java
index 35f2d6f..19549f4 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/CameraPreset.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/CameraPreset.java
@@ -1,16 +1,44 @@
package me.zimzaza4.geyserutils.common.camera.data;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.jetbrains.annotations.Nullable;
+
import lombok.Builder;
import lombok.Getter;
+import lombok.NoArgsConstructor;
import me.zimzaza4.geyserutils.common.util.Pos;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.Map;
-import java.util.TreeMap;
@Getter
+@NoArgsConstructor(access = lombok.AccessLevel.PROTECTED)
public class CameraPreset {
+
private static final Map PRESETS = new TreeMap<>();
+ public static CameraPreset FIRST_PERSON;
+ public static CameraPreset FREE;
+ public static CameraPreset THIRD_PERSON;
+ public static CameraPreset THIRD_PERSON_FRONT;
+
+ private String identifier;
+ @Getter
+ private String inheritFrom;
+ @Getter
+ @Nullable
+ private Pos pos;
+ @Getter
+ @Nullable
+ private Rot rot;
+ @Getter
+ private int id;
+
+ @Builder
+ public CameraPreset(String identifier, String inheritFrom, @Nullable Pos pos, @Nullable Rot rot) {
+ this.identifier = identifier;
+ this.inheritFrom = inheritFrom != null ? inheritFrom : "";
+ this.pos = pos;
+ this.rot = rot;
+ }
public static Map getPresets() {
return PRESETS;
@@ -34,11 +62,6 @@ public static void registerCameraPresets(CameraPreset... presets) {
}
}
- public static CameraPreset FIRST_PERSON;
- public static CameraPreset FREE;
- public static CameraPreset THIRD_PERSON;
- public static CameraPreset THIRD_PERSON_FRONT;
-
public static void load() {
FIRST_PERSON = CameraPreset.builder()
.identifier("minecraft:first_person")
@@ -57,29 +80,4 @@ public static void load() {
registerCameraPresets(FIRST_PERSON, FREE, THIRD_PERSON, THIRD_PERSON_FRONT);
}
-
- private String identifier;
- @Getter
- private String inheritFrom;
- @Getter
- @Nullable
- private Pos pos;
- @Getter
- @Nullable
- private Rot rot;
-
- @Getter
- private int id;
-
- @Builder
- public CameraPreset(String identifier, String inheritFrom, @Nullable Pos pos, @Nullable Rot rot) {
- this.identifier = identifier;
- this.inheritFrom = inheritFrom != null ? inheritFrom : "";
- this.pos = pos;
- this.rot = rot;
- }
-
- protected CameraPreset() {
-
- }
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Color.java b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Color.java
index 2c82bee..a1bf1f3 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Color.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Color.java
@@ -10,7 +10,9 @@
@Accessors(fluent = true)
@Data
public class Color {
- float r;
- float g;
- float b;
+
+ private float r;
+ private float g;
+ private float b;
+
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Ease.java b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Ease.java
index 2368f4e..051638d 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Ease.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Ease.java
@@ -1,7 +1,5 @@
package me.zimzaza4.geyserutils.common.camera.data;
-import com.fasterxml.jackson.databind.JsonNode;
-import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@@ -11,8 +9,8 @@
@Data
public class Ease {
- float time;
- int easeType;
+ private float time;
+ private int easeType;
public Ease(float time, EaseType easeType) {
this.time = time;
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/EaseType.java b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/EaseType.java
index f4ece98..b85c621 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/EaseType.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/EaseType.java
@@ -1,48 +1,46 @@
package me.zimzaza4.geyserutils.common.camera.data;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
@Getter
+@RequiredArgsConstructor
public enum EaseType {
- LINEAR("linear",0),
- SPRING("spring",1),
- EASE_IN_SINE("in_sine",2),
- EASE_OUT_SINE("out_sine",3),
- EASE_IN_OUT_SINE("in_out_sine",4),
- EASE_IN_QUAD("in_quad",5),
- EASE_OUT_QUAD("out_quad",6),
- EASE_IN_OUT_QUAD("in_out_quad",7),
- EASE_IN_CUBIC("in_cubic",8),
- EASE_OUT_CUBIC("out_cubic",9),
- EASE_IN_OUT_CUBIC("in_out_cubic",10),
- EASE_IN_QUART("in_quart",11),
- EASE_OUT_QUART("out_quart",12),
- EASE_IN_OUT_QUART("in_out_quart",13),
- EASE_IN_QUINT("in_quint",14),
- EASE_OUT_QUINT("out_quint",15),
- EASE_IN_OUT_QUINT("in_out_quint",16),
- EASE_IN_EXPO("in_expo",17),
- EASE_OUT_EXPO("out_expo",18),
- EASE_IN_OUT_EXPO("in_out_expo",19),
- EASE_IN_CIRC("in_circ",20),
- EASE_OUT_CIRC("out_circ",21),
- EASE_IN_OUT_CIRC("in_out_circ",22),
- EASE_IN_BACK("in_back",23),
- EASE_OUT_BACK("out_back",24),
- EASE_IN_OUT_BACK("in_out_back",25),
- EASE_IN_ELASTIC("in_elastic",26),
- EASE_OUT_ELASTIC("out_elastic",27),
- EASE_IN_OUT_ELASTIC("in_out_elastic",28),
- EASE_IN_BOUNCE("in_bounce",29),
- EASE_OUT_BOUNCE("out_bounce",30),
- EASE_IN_OUT_BOUNCE("in_out_bounce",31);
+ LINEAR("linear", 0),
+ SPRING("spring", 1),
+ EASE_IN_SINE("in_sine", 2),
+ EASE_OUT_SINE("out_sine", 3),
+ EASE_IN_OUT_SINE("in_out_sine", 4),
+ EASE_IN_QUAD("in_quad", 5),
+ EASE_OUT_QUAD("out_quad", 6),
+ EASE_IN_OUT_QUAD("in_out_quad", 7),
+ EASE_IN_CUBIC("in_cubic", 8),
+ EASE_OUT_CUBIC("out_cubic", 9),
+ EASE_IN_OUT_CUBIC("in_out_cubic", 10),
+ EASE_IN_QUART("in_quart", 11),
+ EASE_OUT_QUART("out_quart", 12),
+ EASE_IN_OUT_QUART("in_out_quart", 13),
+ EASE_IN_QUINT("in_quint", 14),
+ EASE_OUT_QUINT("out_quint", 15),
+ EASE_IN_OUT_QUINT("in_out_quint", 16),
+ EASE_IN_EXPO("in_expo", 17),
+ EASE_OUT_EXPO("out_expo", 18),
+ EASE_IN_OUT_EXPO("in_out_expo", 19),
+ EASE_IN_CIRC("in_circ", 20),
+ EASE_OUT_CIRC("out_circ", 21),
+ EASE_IN_OUT_CIRC("in_out_circ", 22),
+ EASE_IN_BACK("in_back", 23),
+ EASE_OUT_BACK("out_back", 24),
+ EASE_IN_OUT_BACK("in_out_back", 25),
+ EASE_IN_ELASTIC("in_elastic", 26),
+ EASE_OUT_ELASTIC("out_elastic", 27),
+ EASE_IN_OUT_ELASTIC("in_out_elastic", 28),
+ EASE_IN_BOUNCE("in_bounce", 29),
+ EASE_OUT_BOUNCE("out_bounce", 30),
+ EASE_IN_OUT_BOUNCE("in_out_bounce", 31);
private final String type;
private final int index;
- EaseType(String type, int index) {
- this.type = type;
- this.index = index;
- }
}
\ No newline at end of file
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Rot.java b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Rot.java
index a4eade3..ec66ff7 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Rot.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Rot.java
@@ -10,6 +10,8 @@
@Accessors(fluent = true)
@Data
public class Rot {
- float x;
- float y;
+
+ private float x;
+ private float y;
+
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Time.java b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Time.java
index 76f5f5f..ceab387 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Time.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Time.java
@@ -10,7 +10,9 @@
@Accessors(fluent = true)
@Data
public class Time {
- float fadeIn;
- float hold;
- float fadeOut;
+
+ private float fadeIn;
+ private float hold;
+ private float fadeOut;
+
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/ClearInstruction.java b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/ClearInstruction.java
index 7987ee6..6eb5f1e 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/ClearInstruction.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/ClearInstruction.java
@@ -1,17 +1,18 @@
package me.zimzaza4.geyserutils.common.camera.instruction;
+import lombok.AccessLevel;
import lombok.Getter;
+import lombok.NoArgsConstructor;
@Getter
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class ClearInstruction implements Instruction {
+
private static final ClearInstruction INSTANCE = new ClearInstruction();
private final int clear = 1;
- private ClearInstruction() {}
-
public static ClearInstruction instance() {
return INSTANCE;
}
-
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/FadeInstruction.java b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/FadeInstruction.java
index 009841f..403c24a 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/FadeInstruction.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/FadeInstruction.java
@@ -1,20 +1,19 @@
package me.zimzaza4.geyserutils.common.camera.instruction;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
+import lombok.*;
import me.zimzaza4.geyserutils.common.camera.data.Color;
import me.zimzaza4.geyserutils.common.camera.data.Time;
import org.jetbrains.annotations.Nullable;
@Builder
@AllArgsConstructor
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
public class FadeInstruction implements Instruction {
+
@Nullable
private Color color;
@Nullable
private Time time;
- protected FadeInstruction() {}
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/SetInstruction.java b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/SetInstruction.java
index 7abe8e4..d376cb8 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/SetInstruction.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/SetInstruction.java
@@ -3,13 +3,14 @@
import lombok.*;
import me.zimzaza4.geyserutils.common.camera.data.CameraPreset;
import me.zimzaza4.geyserutils.common.camera.data.Ease;
-import me.zimzaza4.geyserutils.common.util.Pos;
import me.zimzaza4.geyserutils.common.camera.data.Rot;
+import me.zimzaza4.geyserutils.common.util.Pos;
import org.jetbrains.annotations.Nullable;
@AllArgsConstructor
@Builder
@Getter
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class SetInstruction implements Instruction {
@Nullable
@@ -23,5 +24,5 @@ public class SetInstruction implements Instruction {
private CameraPreset preset;
@Nullable
private FadeInstruction fade;
- protected SetInstruction() {}
+
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/channel/GeyserUtilsChannels.java b/common/src/main/java/me/zimzaza4/geyserutils/common/channel/GeyserUtilsChannels.java
index d218c69..63813f2 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/channel/GeyserUtilsChannels.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/channel/GeyserUtilsChannels.java
@@ -1,5 +1,7 @@
package me.zimzaza4.geyserutils.common.channel;
public class GeyserUtilsChannels {
+
public static final String MAIN = "geyserutils:main";
+
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/form/element/NpcDialogueButton.java b/common/src/main/java/me/zimzaza4/geyserutils/common/form/NpcDialogueButton.java
similarity index 73%
rename from common/src/main/java/me/zimzaza4/geyserutils/common/form/element/NpcDialogueButton.java
rename to common/src/main/java/me/zimzaza4/geyserutils/common/form/NpcDialogueButton.java
index 924387e..4b0baf3 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/form/element/NpcDialogueButton.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/form/NpcDialogueButton.java
@@ -1,21 +1,23 @@
-package me.zimzaza4.geyserutils.common.form.element;
+package me.zimzaza4.geyserutils.common.form;
+import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
-import lombok.Value;
import lombok.experimental.Accessors;
-import java.io.Serializable;
import java.util.List;
@Setter
@Getter
-@Accessors( fluent = true )
+@Accessors(fluent = true)
+@Builder
public class NpcDialogueButton {
+
private String text;
private List commands;
private ButtonMode mode;
private boolean hasNextForm;
+
public enum ButtonMode {
BUTTON_MODE,
ON_ENTER,
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/manager/PacketManager.java b/common/src/main/java/me/zimzaza4/geyserutils/common/manager/PacketManager.java
index 41cbe6c..cadc1d7 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/manager/PacketManager.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/manager/PacketManager.java
@@ -2,18 +2,13 @@
import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.databind.jsontype.BasicPolymorphicTypeValidator;
-import com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator;
import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
import java.io.IOException;
-import java.nio.charset.StandardCharsets;
public class PacketManager {
@@ -21,26 +16,24 @@ public class PacketManager {
public PacketManager() {
objectMapper = new ObjectMapper();
- objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.EVERYTHING, JsonTypeInfo.As.PROPERTY);
+ objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL_AND_ENUMS, JsonTypeInfo.As.PROPERTY);
objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
}
public byte[] encodePacket(CustomPayloadPacket packet) {
-
try {
return objectMapper.writeValueAsBytes(packet);
} catch (JsonProcessingException e) {
- throw new RuntimeException(e);
+ throw new RuntimeException("Failed to encode packet", e);
}
-
}
public CustomPayloadPacket decodePacket(byte[] bytes) {
try {
return objectMapper.readValue(bytes, CustomPayloadPacket.class);
} catch (IOException e) {
- throw new RuntimeException(e);
+ throw new RuntimeException("Failed to decode packet", e);
}
}
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/AnimateEntityCustomPayloadPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/AnimateEntityCustomPayloadPacket.java
deleted file mode 100644
index cc2cb8c..0000000
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/AnimateEntityCustomPayloadPacket.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package me.zimzaza4.geyserutils.common.packet;
-
-import lombok.Getter;
-import lombok.Setter;
-import me.zimzaza4.geyserutils.common.animation.Animation;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Setter
-@Getter
-public class AnimateEntityCustomPayloadPacket extends CustomPayloadPacket{
- private String animation;
- private String nextState;
- private String stopExpression;
- private int stopExpressionVersion;
- private String controller;
- private float blendOutTime;
- private List entityJavaIds = new ArrayList<>();
-
- public void parseFromAnimation(Animation ani) {
- this.animation = ani.getAnimation();
- this.nextState = ani.getNextState();
- this.blendOutTime = ani.getBlendOutTime();
- this.stopExpression = ani.getStopExpression();
- this.controller = ani.getController();
- this.stopExpressionVersion = ani.getStopExpressionVersion();
- }
-
-}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/BundlePacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/BundlePacket.java
index a9eae80..dc80158 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/BundlePacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/BundlePacket.java
@@ -1,9 +1,14 @@
package me.zimzaza4.geyserutils.common.packet;
-import lombok.*;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import me.zimzaza4.geyserutils.common.packet.entity.EntityPropertyPacket;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
@AllArgsConstructor
@NoArgsConstructor
@@ -17,4 +22,14 @@ public void addPacket(CustomPayloadPacket packet) {
this.packets.add(packet);
}
+ public static BundlePacket create(Map bundle) {
+ BundlePacket packet = new BundlePacket();
+ bundle.forEach((identifier, value) -> {
+ EntityPropertyPacket propertyPacket = new EntityPropertyPacket<>();
+ propertyPacket.setIdentifier(identifier);
+ propertyPacket.setValue(value);
+ packet.addPacket(propertyPacket);
+ });
+ return packet;
+ }
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomParticleEffectPayloadPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomParticleEffectPayloadPacket.java
index f6e58fe..0141c45 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomParticleEffectPayloadPacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomParticleEffectPayloadPacket.java
@@ -4,18 +4,15 @@
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
-import lombok.experimental.Accessors;
-import me.zimzaza4.geyserutils.common.animation.Animation;
-import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
import me.zimzaza4.geyserutils.common.particle.CustomParticle;
import me.zimzaza4.geyserutils.common.util.Pos;
-import org.jetbrains.annotations.Nullable;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class CustomParticleEffectPayloadPacket extends CustomPayloadPacket {
+
private CustomParticle particle;
private Pos pos;
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomPayloadPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomPayloadPacket.java
index b39ccf0..3639f08 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomPayloadPacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomPayloadPacket.java
@@ -1,11 +1,6 @@
package me.zimzaza4.geyserutils.common.packet;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.io.Serializable;
-
public abstract class CustomPayloadPacket {
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomSkinPayloadPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomSkinPayloadPacket.java
index bf5b640..60b79cc 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomSkinPayloadPacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomSkinPayloadPacket.java
@@ -5,14 +5,13 @@
import lombok.NoArgsConstructor;
import lombok.Setter;
-import java.util.ArrayList;
-import java.util.List;
-
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class CustomSkinPayloadPacket extends CustomPayloadPacket {
+
private int entityId;
private String skinId;
+
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcDialogueFormDataCustomPayloadPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcDialogueFormDataCustomPayloadPacket.java
deleted file mode 100644
index d30b1a5..0000000
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcDialogueFormDataCustomPayloadPacket.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package me.zimzaza4.geyserutils.common.packet;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-import lombok.experimental.Accessors;
-import me.zimzaza4.geyserutils.common.form.element.NpcDialogueButton;
-
-import java.util.List;
-
-@AllArgsConstructor
-@NoArgsConstructor
-@Accessors(fluent = true)
-@Getter
-@Setter
-public class NpcDialogueFormDataCustomPayloadPacket extends CustomPayloadPacket {
-
- String formId;
- String title;
- String dialogue;
- String skinData;
- int bindEntity;
- List buttons;
- String action;
- boolean hasNextForm;
-
-}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraInstructionCustomPayloadPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/camera/CameraInstructionCustomPayloadPacket.java
similarity index 52%
rename from common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraInstructionCustomPayloadPacket.java
rename to common/src/main/java/me/zimzaza4/geyserutils/common/packet/camera/CameraInstructionCustomPayloadPacket.java
index 5148c6e..b0938d8 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraInstructionCustomPayloadPacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/camera/CameraInstructionCustomPayloadPacket.java
@@ -1,11 +1,18 @@
-package me.zimzaza4.geyserutils.common.packet;
+package me.zimzaza4.geyserutils.common.packet.camera;
+import lombok.AllArgsConstructor;
import lombok.Getter;
+import lombok.NoArgsConstructor;
import lombok.Setter;
import me.zimzaza4.geyserutils.common.camera.instruction.Instruction;
+import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
@Setter
@Getter
+@NoArgsConstructor
+@AllArgsConstructor
public class CameraInstructionCustomPayloadPacket extends CustomPayloadPacket {
+
private Instruction instruction;
+
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraLockCustomPayloadPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/camera/CameraLockCustomPayloadPacket.java
similarity index 65%
rename from common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraLockCustomPayloadPacket.java
rename to common/src/main/java/me/zimzaza4/geyserutils/common/packet/camera/CameraLockCustomPayloadPacket.java
index 48ff27f..a3e9ccf 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraLockCustomPayloadPacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/camera/CameraLockCustomPayloadPacket.java
@@ -1,9 +1,10 @@
-package me.zimzaza4.geyserutils.common.packet;
+package me.zimzaza4.geyserutils.common.packet.camera;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
+import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
@Getter
@AllArgsConstructor
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraShakeCustomPayloadPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/camera/CameraShakeCustomPayloadPacket.java
similarity index 69%
rename from common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraShakeCustomPayloadPacket.java
rename to common/src/main/java/me/zimzaza4/geyserutils/common/packet/camera/CameraShakeCustomPayloadPacket.java
index 4531e57..d857c28 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CameraShakeCustomPayloadPacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/camera/CameraShakeCustomPayloadPacket.java
@@ -1,8 +1,9 @@
-package me.zimzaza4.geyserutils.common.packet;
+package me.zimzaza4.geyserutils.common.packet.camera;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
+import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
@Getter
@AllArgsConstructor
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/AnimateEntityCustomPayloadPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/AnimateEntityCustomPayloadPacket.java
new file mode 100644
index 0000000..719776c
--- /dev/null
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/AnimateEntityCustomPayloadPacket.java
@@ -0,0 +1,32 @@
+package me.zimzaza4.geyserutils.common.packet.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+import me.zimzaza4.geyserutils.common.animation.Animation;
+import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Setter
+@Getter
+public class AnimateEntityCustomPayloadPacket extends CustomPayloadPacket {
+
+ private String animation;
+ private String nextState;
+ private String stopExpression;
+ private int stopExpressionVersion;
+ private String controller;
+ private float blendOutTime;
+ private List entityJavaIds = new ArrayList<>();
+
+ public void parseFromAnimation(Animation animation) {
+ this.animation = animation.getAnimation();
+ this.nextState = animation.getNextState();
+ this.blendOutTime = animation.getBlendOutTime();
+ this.stopExpression = animation.getStopExpression();
+ this.controller = animation.getController();
+ this.stopExpressionVersion = animation.getStopExpressionVersion();
+ }
+
+}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomEntityDataPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/CustomEntityDataPacket.java
similarity index 76%
rename from common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomEntityDataPacket.java
rename to common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/CustomEntityDataPacket.java
index a8468c4..f44cacb 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomEntityDataPacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/CustomEntityDataPacket.java
@@ -1,15 +1,17 @@
-package me.zimzaza4.geyserutils.common.packet;
+package me.zimzaza4.geyserutils.common.packet.entity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
+import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class CustomEntityDataPacket extends CustomPayloadPacket {
+
private int entityId;
private Float height;
private Float width;
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomEntityPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/CustomEntityPacket.java
similarity index 70%
rename from common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomEntityPacket.java
rename to common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/CustomEntityPacket.java
index 1353235..f4b8e67 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomEntityPacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/CustomEntityPacket.java
@@ -1,17 +1,18 @@
-package me.zimzaza4.geyserutils.common.packet;
+package me.zimzaza4.geyserutils.common.packet.entity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
-
-import java.util.UUID;
+import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class CustomEntityPacket extends CustomPayloadPacket {
+
private int entityId;
private String identifier;
+
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/EntityPropertyPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/EntityPropertyPacket.java
similarity index 72%
rename from common/src/main/java/me/zimzaza4/geyserutils/common/packet/EntityPropertyPacket.java
rename to common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/EntityPropertyPacket.java
index 8a67caa..111bfa7 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/EntityPropertyPacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/EntityPropertyPacket.java
@@ -1,17 +1,18 @@
-package me.zimzaza4.geyserutils.common.packet;
+package me.zimzaza4.geyserutils.common.packet.entity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
+import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class EntityPropertyPacket extends CustomPayloadPacket {
- private int entityId;
+ private int entityId;
private String identifier;
private T value;
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/EntityPropertyRegisterPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/EntityPropertyRegisterPacket.java
similarity index 73%
rename from common/src/main/java/me/zimzaza4/geyserutils/common/packet/EntityPropertyRegisterPacket.java
rename to common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/EntityPropertyRegisterPacket.java
index 1d09431..9ff28f8 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/EntityPropertyRegisterPacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/EntityPropertyRegisterPacket.java
@@ -1,17 +1,18 @@
-package me.zimzaza4.geyserutils.common.packet;
+package me.zimzaza4.geyserutils.common.packet.entity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
+import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class EntityPropertyRegisterPacket extends CustomPayloadPacket {
- private int entityId;
+ private int entityId;
private String identifier;
private Class> type;
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/form/NpcDialogueFormDataCustomPayloadPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/form/NpcDialogueFormDataCustomPayloadPacket.java
new file mode 100644
index 0000000..c3b727b
--- /dev/null
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/form/NpcDialogueFormDataCustomPayloadPacket.java
@@ -0,0 +1,29 @@
+package me.zimzaza4.geyserutils.common.packet.form;
+
+import java.util.List;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+import me.zimzaza4.geyserutils.common.form.NpcDialogueButton;
+import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(fluent = true)
+@Getter
+@Setter
+public class NpcDialogueFormDataCustomPayloadPacket extends CustomPayloadPacket {
+
+ private String formId;
+ private String title;
+ private String dialogue;
+ private String skinData;
+ private int bindEntity;
+ private List buttons;
+ private String action;
+ private boolean hasNextForm;
+
+}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcFormResponseCustomPayloadPacket.java b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/form/NpcFormResponseCustomPayloadPacket.java
similarity index 55%
rename from common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcFormResponseCustomPayloadPacket.java
rename to common/src/main/java/me/zimzaza4/geyserutils/common/packet/form/NpcFormResponseCustomPayloadPacket.java
index 66bbae0..7bba59d 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/packet/NpcFormResponseCustomPayloadPacket.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/packet/form/NpcFormResponseCustomPayloadPacket.java
@@ -1,13 +1,16 @@
-package me.zimzaza4.geyserutils.common.packet;
+package me.zimzaza4.geyserutils.common.packet.form;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
+import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
@AllArgsConstructor
@NoArgsConstructor
@Getter
public class NpcFormResponseCustomPayloadPacket extends CustomPayloadPacket {
- String formId;
- int buttonId;
+
+ private String formId;
+ private int buttonId;
+
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/particle/CustomParticle.java b/common/src/main/java/me/zimzaza4/geyserutils/common/particle/CustomParticle.java
index caa623c..902fbd8 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/particle/CustomParticle.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/particle/CustomParticle.java
@@ -14,8 +14,10 @@
@Getter
@Setter
public class CustomParticle {
+
private Pos position;
private String identifier;
@Nullable
private String molangVariablesJson;
+
}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/util/CustomPayloadPacketUtils.java b/common/src/main/java/me/zimzaza4/geyserutils/common/util/CustomPayloadPacketUtils.java
deleted file mode 100644
index f5d26a4..0000000
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/util/CustomPayloadPacketUtils.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package me.zimzaza4.geyserutils.common.util;
-
-public class CustomPayloadPacketUtils {
-
-
-
-}
diff --git a/common/src/main/java/me/zimzaza4/geyserutils/common/util/Pos.java b/common/src/main/java/me/zimzaza4/geyserutils/common/util/Pos.java
index 4debef9..5a35ae6 100644
--- a/common/src/main/java/me/zimzaza4/geyserutils/common/util/Pos.java
+++ b/common/src/main/java/me/zimzaza4/geyserutils/common/util/Pos.java
@@ -10,7 +10,8 @@
@Accessors(fluent = true)
@Data
public class Pos {
- float x;
- float y;
- float z;
+
+ private float x;
+ private float y;
+ private float z;
}
diff --git a/common/target/maven-archiver/pom.properties b/common/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..98e0726
--- /dev/null
+++ b/common/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=geyserutils-common
+groupId=me.zimzaza4
+version=1.0-SNAPSHOT
diff --git a/common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..ed2fcaa
--- /dev/null
+++ b/common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,36 @@
+me/zimzaza4/geyserutils/common/manager/PacketManager.class
+me/zimzaza4/geyserutils/common/form/NpcDialogueButton$ButtonMode.class
+me/zimzaza4/geyserutils/common/camera/data/EaseType.class
+me/zimzaza4/geyserutils/common/camera/data/CameraPreset.class
+me/zimzaza4/geyserutils/common/animation/Animation$AnimationBuilder.class
+me/zimzaza4/geyserutils/common/packet/entity/AnimateEntityCustomPayloadPacket.class
+me/zimzaza4/geyserutils/common/packet/entity/CustomEntityPacket.class
+me/zimzaza4/geyserutils/common/packet/camera/CameraLockCustomPayloadPacket.class
+me/zimzaza4/geyserutils/common/packet/BundlePacket.class
+me/zimzaza4/geyserutils/common/packet/entity/EntityPropertyPacket.class
+me/zimzaza4/geyserutils/common/particle/CustomParticle.class
+me/zimzaza4/geyserutils/common/util/Pos.class
+me/zimzaza4/geyserutils/common/form/NpcDialogueButton.class
+me/zimzaza4/geyserutils/common/packet/form/NpcFormResponseCustomPayloadPacket.class
+me/zimzaza4/geyserutils/common/camera/data/CameraPreset$CameraPresetBuilder.class
+me/zimzaza4/geyserutils/common/channel/GeyserUtilsChannels.class
+me/zimzaza4/geyserutils/common/animation/Animation.class
+me/zimzaza4/geyserutils/common/packet/CustomParticleEffectPayloadPacket.class
+me/zimzaza4/geyserutils/common/camera/data/Ease.class
+me/zimzaza4/geyserutils/common/camera/instruction/FadeInstruction$FadeInstructionBuilder.class
+me/zimzaza4/geyserutils/common/camera/instruction/FadeInstruction.class
+me/zimzaza4/geyserutils/common/packet/entity/EntityPropertyRegisterPacket.class
+me/zimzaza4/geyserutils/common/camera/instruction/ClearInstruction.class
+me/zimzaza4/geyserutils/common/camera/instruction/SetInstruction$SetInstructionBuilder.class
+me/zimzaza4/geyserutils/common/camera/data/Time.class
+me/zimzaza4/geyserutils/common/packet/form/NpcDialogueFormDataCustomPayloadPacket.class
+me/zimzaza4/geyserutils/common/packet/CustomPayloadPacket.class
+me/zimzaza4/geyserutils/common/packet/entity/CustomEntityDataPacket.class
+me/zimzaza4/geyserutils/common/packet/CustomSkinPayloadPacket.class
+me/zimzaza4/geyserutils/common/packet/camera/CameraInstructionCustomPayloadPacket.class
+me/zimzaza4/geyserutils/common/packet/camera/CameraShakeCustomPayloadPacket.class
+me/zimzaza4/geyserutils/common/form/NpcDialogueButton$NpcDialogueButtonBuilder.class
+me/zimzaza4/geyserutils/common/camera/instruction/Instruction.class
+me/zimzaza4/geyserutils/common/camera/instruction/SetInstruction.class
+me/zimzaza4/geyserutils/common/camera/data/Rot.class
+me/zimzaza4/geyserutils/common/camera/data/Color.class
diff --git a/common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..f8b39f0
--- /dev/null
+++ b/common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,30 @@
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/animation/Animation.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/CameraPreset.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Color.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Ease.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/EaseType.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Rot.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/camera/data/Time.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/ClearInstruction.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/FadeInstruction.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/Instruction.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/camera/instruction/SetInstruction.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/channel/GeyserUtilsChannels.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/form/NpcDialogueButton.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/manager/PacketManager.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/BundlePacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomParticleEffectPayloadPacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomPayloadPacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/CustomSkinPayloadPacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/camera/CameraInstructionCustomPayloadPacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/camera/CameraLockCustomPayloadPacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/camera/CameraShakeCustomPayloadPacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/AnimateEntityCustomPayloadPacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/CustomEntityDataPacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/CustomEntityPacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/EntityPropertyPacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/entity/EntityPropertyRegisterPacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/form/NpcDialogueFormDataCustomPayloadPacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/packet/form/NpcFormResponseCustomPayloadPacket.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/particle/CustomParticle.java
+/Users/rochblondiaux/Development/Perso/GeyserUtils/common/src/main/java/me/zimzaza4/geyserutils/common/util/Pos.java
diff --git a/geyser/geyserutils-geyser.iml b/geyser/geyserutils-geyser.iml
new file mode 100644
index 0000000..a376b96
--- /dev/null
+++ b/geyser/geyserutils-geyser.iml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ ADVENTURE
+
+ 1
+
+
+
+
\ No newline at end of file
diff --git a/geyser/libs/Geyser-Standalone.jar b/geyser/libs/Geyser-Standalone.jar
deleted file mode 100644
index 341c3a6..0000000
Binary files a/geyser/libs/Geyser-Standalone.jar and /dev/null differ
diff --git a/geyser/pom.xml b/geyser/pom.xml
index 8d631a8..4cd688c 100644
--- a/geyser/pom.xml
+++ b/geyser/pom.xml
@@ -1,6 +1,6 @@
-
4.0.0
@@ -8,21 +8,44 @@
GeyserUtils
1.0-SNAPSHOT
-
geyserutils-geyser
-
- 17
- 17
- UTF-8
-
+
+
+
+
+ org.geysermc.geyser
+ core
+ ${geyser.version}
+ provided
+
+
+
+ me.zimzaza4
+ geyserutils-common
+ 1.0-SNAPSHOT
+ compile
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${compiler.plugin.version}
+
+ ${java.version}
+ ${java.version}
+
+
+
org.apache.maven.plugins
maven-shade-plugin
- 3.4.1
+ ${shade.plugin.version}
package
@@ -43,52 +66,4 @@
-
-
-
-
- opencollab-release-repo
- https://repo.opencollab.dev/maven-releases/
-
- true
-
-
- true
-
-
-
- opencollab-snapshot-repo
- https://repo.opencollab.dev/maven-snapshots/
-
- false
-
-
- true
-
-
-
- sonatype-oss-snapshots1
- https://s01.oss.sonatype.org/content/repositories/snapshots/
-
-
- jitpack.io
- https://jitpack.io
-
-
-
-
- org.geysermc.geyser
- core
- 2.6.0-SNAPSHOT
- system
- ${project.basedir}/libs/Geyser-Standalone.jar
-
-
- me.zimzaza4
- geyserutils-common
- 1.0-SNAPSHOT
- compile
-
-
-
\ No newline at end of file
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 bcb8ed7..2143456 100644
--- a/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java
+++ b/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java
@@ -1,26 +1,19 @@
package me.zimzaza4.geyserutils.geyser;
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParser;
-import lombok.Getter;
-import me.zimzaza4.geyserutils.common.camera.data.CameraPreset;
-import me.zimzaza4.geyserutils.common.camera.instruction.ClearInstruction;
-import me.zimzaza4.geyserutils.common.camera.instruction.FadeInstruction;
-import me.zimzaza4.geyserutils.common.camera.instruction.SetInstruction;
-import me.zimzaza4.geyserutils.common.channel.GeyserUtilsChannels;
-import me.zimzaza4.geyserutils.common.form.element.NpcDialogueButton;
-import me.zimzaza4.geyserutils.common.manager.PacketManager;
-import me.zimzaza4.geyserutils.common.packet.*;
-import me.zimzaza4.geyserutils.geyser.form.NpcDialogueForm;
-import me.zimzaza4.geyserutils.geyser.form.NpcDialogueForms;
-import me.zimzaza4.geyserutils.geyser.form.element.Button;
-import me.zimzaza4.geyserutils.geyser.replace.JavaAddEntityTranslatorReplace;
-import me.zimzaza4.geyserutils.geyser.translator.NPCFormResponseTranslator;
-import me.zimzaza4.geyserutils.geyser.util.Converter;
-import me.zimzaza4.geyserutils.geyser.util.DeltaUtils;
-import me.zimzaza4.geyserutils.geyser.util.ReflectionUtils;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+
+import javax.imageio.ImageIO;
+
import org.cloudburstmc.nbt.NbtMap;
import org.cloudburstmc.nbt.NbtType;
import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
@@ -56,46 +49,53 @@
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.spawn.ClientboundAddEntityPacket;
import org.jetbrains.annotations.NotNull;
-import javax.imageio.ImageIO;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+
+import lombok.Getter;
+import me.zimzaza4.geyserutils.common.camera.data.CameraPreset;
+import me.zimzaza4.geyserutils.common.camera.instruction.ClearInstruction;
+import me.zimzaza4.geyserutils.common.camera.instruction.FadeInstruction;
+import me.zimzaza4.geyserutils.common.camera.instruction.SetInstruction;
+import me.zimzaza4.geyserutils.common.channel.GeyserUtilsChannels;
+import me.zimzaza4.geyserutils.common.form.NpcDialogueButton;
+import me.zimzaza4.geyserutils.common.manager.PacketManager;
+import me.zimzaza4.geyserutils.common.packet.BundlePacket;
+import me.zimzaza4.geyserutils.common.packet.CustomParticleEffectPayloadPacket;
+import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
+import me.zimzaza4.geyserutils.common.packet.CustomSkinPayloadPacket;
+import me.zimzaza4.geyserutils.common.packet.camera.CameraShakeCustomPayloadPacket;
+import me.zimzaza4.geyserutils.common.packet.entity.AnimateEntityCustomPayloadPacket;
+import me.zimzaza4.geyserutils.common.packet.entity.EntityPropertyRegisterPacket;
+import me.zimzaza4.geyserutils.common.packet.form.NpcFormResponseCustomPayloadPacket;
+import me.zimzaza4.geyserutils.geyser.form.NpcDialogueForm;
+import me.zimzaza4.geyserutils.geyser.form.NpcDialogueForms;
+import me.zimzaza4.geyserutils.geyser.form.element.Button;
+import me.zimzaza4.geyserutils.geyser.replace.JavaAddEntityTranslatorReplace;
+import me.zimzaza4.geyserutils.geyser.translator.NPCFormResponseTranslator;
+import me.zimzaza4.geyserutils.geyser.util.Converter;
+import me.zimzaza4.geyserutils.geyser.util.DeltaUtils;
+import me.zimzaza4.geyserutils.geyser.util.ReflectionUtils;
public class GeyserUtils implements Extension {
+ public static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);
+ private static final Map>>> properties = new HashMap<>();
+ private static final List ENTITIES_WAIT_FOR_LOAD = new ArrayList<>();
@Getter
public static PacketManager packetManager = new PacketManager();
-
public static List REGISTERED_ENTITIES = new ArrayList<>();
- private static List ENTITIES_WAIT_FOR_LOAD = new ArrayList<>();
-
-
public static boolean GEYSER_LOADED = false;
-
@Getter
public static Map LOADED_SKIN_DATA = new HashMap<>();
-
@Getter
- public static Map LOADED_ENTITY_DEFINITIONS = new HashMap<>();
-
+ public static Map> LOADED_ENTITY_DEFINITIONS = new HashMap<>();
@Getter
public static Map> CUSTOM_ENTITIES = new ConcurrentHashMap<>();
-
static Cape EMPTY_CAPE = new Cape("", "no-cape", new byte[0], true);
-
- public static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);
-
- private static final Map>>> properties = new HashMap<>();
-
@Getter
private static GeyserUtils instance;
@@ -103,25 +103,6 @@ public GeyserUtils() {
instance = this;
}
- @Subscribe
- public void onEnable(GeyserPostInitializeEvent event) {
- Registries.BEDROCK_PACKET_TRANSLATORS.register(NpcRequestPacket.class, new NPCFormResponseTranslator());
- loadSkins();
- ReflectionUtils.init();
- CameraPreset.load();
-
- replaceTranslator();
- GEYSER_LOADED = true;
- for (String registeredEntity : REGISTERED_ENTITIES) {
- registerEntityToGeyser(registeredEntity);
- }
- for (String id : ENTITIES_WAIT_FOR_LOAD) {
- registerPropertiesForGeyser(id);
- }
- logger().info("Defined " + LOADED_ENTITY_DEFINITIONS.size() + " entities");
- MountFix.start();
- }
-
// the static here is crazy ;(
private static GeyserEntityProperties getProperties(String id) {
if (!properties.containsKey(id)) return null;
@@ -162,44 +143,41 @@ public static void registerProperties(String entityId) {
ENTITIES_WAIT_FOR_LOAD.add(entityId);
}
- public static void registerPropertiesForGeyser(String entityId) {
-
+ public static void registerPropertiesForGeyser(String entityId) {
GeyserEntityProperties entityProperties = getProperties(entityId);
if (entityProperties == null) return;
- properties.values().stream()
+
+ properties.values()
+ .stream()
.flatMap(List::stream)
.map(Map.Entry::getKey)
- .forEach(id -> {
- Registries.BEDROCK_ENTITY_PROPERTIES.get().removeIf(i -> i.containsKey(id));
- });
+ .forEach(id -> Registries.BEDROCK_ENTITY_PROPERTIES.get().removeIf(i -> i.containsKey(id)));
Registries.BEDROCK_ENTITY_PROPERTIES.get().add(entityProperties.toNbtMap(entityId));
EntityDefinition old = LOADED_ENTITY_DEFINITIONS.get(entityId);
- LOADED_ENTITY_DEFINITIONS.replace(entityId, new EntityDefinition(old.factory(), old.entityType(), old.identifier(),
- old.width(), old.height(), old.offset(), entityProperties, old.translators()));
-
- instance.logger().info("Defined entity: " + entityId + " in registry.");
+ LOADED_ENTITY_DEFINITIONS.replace(entityId, new EntityDefinition<>(
+ old.factory(),
+ old.entityType(),
+ old.identifier(),
+ old.width(),
+ old.height(),
+ old.offset(),
+ entityProperties,
+ old.translators()
+ ));
+
+ instance.logger().debug("Defined entity: " + entityId + " in registry.");
}
public static void addCustomEntity(String id) {
- /*
- LOADED_ENTITY_DEFINITIONS.put(id,
- EntityDefinition.builder()
- .identifier(EntityIdentifier.builder().identifier(id)
- .summonable(true)
- .spawnEgg(false).build())
- .height(0.6f)
- .width(0.6f)
- .build());
-
- */
if (GEYSER_LOADED) {
registerEntityToGeyser(id);
}
REGISTERED_ENTITIES.add(id);
}
+
public static void registerEntityToGeyser(String id) {
NbtMap registry = Registries.BEDROCK_ENTITY_IDENTIFIERS.get();
List idList = new ArrayList<>(registry.getList("idlist", NbtType.COMPOUND));
@@ -221,6 +199,167 @@ public static void registerEntityToGeyser(String id) {
LOADED_ENTITY_DEFINITIONS.put(id, def);
}
+ @NotNull
+ private static AnimateEntityPacket getAnimateEntityPacket(me.zimzaza4.geyserutils.common.packet.entity.AnimateEntityCustomPayloadPacket animateEntityCustomPayloadPacket) {
+ AnimateEntityPacket animateEntityPacket = new AnimateEntityPacket();
+ animateEntityPacket.setAnimation(animateEntityCustomPayloadPacket.getAnimation());
+ animateEntityPacket.setController(animateEntityCustomPayloadPacket.getController());
+ animateEntityPacket.setBlendOutTime(animateEntityCustomPayloadPacket.getBlendOutTime());
+ animateEntityPacket.setNextState(animateEntityCustomPayloadPacket.getNextState());
+ animateEntityPacket.setStopExpressionVersion(animateEntityCustomPayloadPacket.getStopExpressionVersion());
+ animateEntityPacket.setStopExpression(animateEntityCustomPayloadPacket.getStopExpression());
+ return animateEntityPacket;
+ }
+
+ public static void sendSkinPacket(GeyserSession session, PlayerEntity entity, SkinData skinData) {
+ Skin skin = skinData.skin();
+ Cape cape = skinData.cape();
+ SkinGeometry geometry = skinData.geometry();
+
+ if (entity.getUuid().equals(session.getPlayerEntity().getUuid())) {
+ PlayerListPacket.Entry updatedEntry = buildEntryManually(
+ session,
+ entity.getUuid(),
+ entity.getUsername(),
+ entity.getGeyserId(),
+ skin,
+ cape,
+ geometry
+ );
+
+ PlayerListPacket playerAddPacket = new PlayerListPacket();
+ playerAddPacket.setAction(PlayerListPacket.Action.ADD);
+ playerAddPacket.getEntries().add(updatedEntry);
+ session.sendUpstreamPacket(playerAddPacket);
+ return;
+ }
+
+ PlayerSkinPacket packet = new PlayerSkinPacket();
+ packet.setUuid(entity.getUuid());
+ packet.setOldSkinName("");
+ packet.setNewSkinName(skin.textureUrl());
+ packet.setSkin(getSkin(skin.textureUrl(), skin, cape, geometry));
+ packet.setTrustedSkin(true);
+ session.sendUpstreamPacket(packet);
+ }
+
+ public static PlayerListPacket.Entry buildEntryManually(GeyserSession session, UUID uuid, String username, long geyserId,
+ Skin skin,
+ Cape cape,
+ SkinGeometry geometry) {
+ SerializedSkin serializedSkin = getSkin(skin.textureUrl(), skin, cape, geometry);
+
+ String xuid = "";
+ GeyserSession playerSession = GeyserImpl.getInstance().connectionByUuid(uuid);
+
+ if (playerSession != null) {
+ xuid = playerSession.getAuthData().xuid();
+ }
+
+ PlayerListPacket.Entry entry;
+ if (session.getPlayerEntity().getUuid().equals(uuid)) {
+ entry = new PlayerListPacket.Entry(session.getAuthData().uuid());
+ } else {
+ entry = new PlayerListPacket.Entry(uuid);
+ }
+
+ entry.setName(username);
+ entry.setEntityId(geyserId);
+ entry.setSkin(serializedSkin);
+ entry.setXuid(xuid);
+ entry.setPlatformChatId("");
+ entry.setTeacher(false);
+ entry.setTrustedSkin(true);
+ return entry;
+ }
+
+ private static SerializedSkin getSkin(String skinId, Skin skin, Cape cape, SkinGeometry geometry) {
+ try (ByteArrayInputStream stream = new ByteArrayInputStream(skin.skinData())) {
+ ImageData image = ImageData.from(ImageIO.read(stream));
+ return SerializedSkin.of(
+ skinId,
+ "",
+ geometry.geometryName(),
+ image,
+ Collections.emptyList(),
+ ImageData.of(cape.capeData()),
+ geometry.geometryData(),
+ "",
+ true,
+ false,
+ false,
+ cape.capeId(),
+ skinId
+ );
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to read skin data", e);
+ }
+ }
+
+ public static Cape getEmptyCapeData() {
+ return EMPTY_CAPE;
+ }
+
+ private static int getColor(int argb) {
+ int r = (argb >> 16) & 0xFF;
+ int g = (argb >> 8) & 0xFF;
+ int b = argb & 0xFF;
+
+ double[] colorLab = DeltaUtils.rgbToLab(r, g, b);
+
+ List colors = Arrays.asList(
+ new int[]{249, 255, 254}, // 0: White
+ new int[]{249, 128, 29}, // 1: Orange
+ new int[]{199, 78, 189}, // 2: Magenta
+ new int[]{58, 179, 218}, // 3: Light Blue
+ new int[]{254, 216, 61}, // 4: Yellow
+ new int[]{128, 199, 31}, // 5: Lime
+ new int[]{243, 139, 170}, // 6: Pink
+ new int[]{71, 79, 82}, // 7: Gray
+ new int[]{159, 157, 151}, // 8: Light Gray
+ new int[]{22, 156, 156}, // 9: Cyan
+ new int[]{137, 50, 184}, // 10: Purple
+ new int[]{60, 68, 170}, // 11: Blue
+ new int[]{131, 84, 50}, // 12: Brown
+ new int[]{94, 124, 22}, // 13: Green
+ new int[]{176, 46, 38}, // 14: Red
+ new int[]{29, 29, 33} // 15: Black
+ );
+
+ int closestColorIndex = -1;
+ double minDeltaE = Double.MAX_VALUE;
+
+ for (int i = 0; i < colors.size(); i++) {
+ int[] rgb = colors.get(i);
+ double[] lab = DeltaUtils.rgbToLab(rgb[0], rgb[1], rgb[2]);
+ double deltaE = DeltaUtils.calculateDeltaE(colorLab, lab);
+ if (deltaE < minDeltaE) {
+ minDeltaE = deltaE;
+ closestColorIndex = i;
+ }
+ }
+
+ return closestColorIndex;
+ }
+
+ @Subscribe
+ public void onEnable(GeyserPostInitializeEvent event) {
+ Registries.BEDROCK_PACKET_TRANSLATORS.register(NpcRequestPacket.class, new NPCFormResponseTranslator());
+ loadSkins();
+ ReflectionUtils.init();
+ CameraPreset.load();
+
+ replaceTranslator();
+ GEYSER_LOADED = true;
+ for (String registeredEntity : REGISTERED_ENTITIES) {
+ registerEntityToGeyser(registeredEntity);
+ }
+ for (String id : ENTITIES_WAIT_FOR_LOAD) {
+ registerPropertiesForGeyser(id);
+ }
+ logger().info("Defined " + LOADED_ENTITY_DEFINITIONS.size() + " entities");
+ MountFix.start();
+ }
public void replaceTranslator() {
Registries.JAVA_PACKET_TRANSLATORS
@@ -233,30 +372,33 @@ public void onLoadCommand(GeyserDefineCommandsEvent event) {
}
public void loadSkins() {
+ // Clear the loaded skins
LOADED_SKIN_DATA.clear();
+
+ // Load the skins from the skins folder
File folder = this.dataFolder().resolve("skins").toFile();
if (!folder.exists()) {
folder.mkdirs();
}
for (File file : folder.listFiles()) {
- if (file.isDirectory()) {
- File textureFile = null;
- File geometryFile = null;
+ if (!file.isDirectory())
+ continue;
- for (File folderFile : file.listFiles()) {
- if (folderFile.getName().endsWith(".png")) {
- textureFile = folderFile;
- }
- if (folderFile.getName().endsWith(".json")) {
- geometryFile = folderFile;
- }
+ File textureFile = null;
+ File geometryFile = null;
+ for (File folderFile : file.listFiles()) {
+ if (folderFile.getName().endsWith(".png")) {
+ textureFile = folderFile;
+ }
+ if (folderFile.getName().endsWith(".json")) {
+ geometryFile = folderFile;
}
-
- loadSkin(file.getName(), geometryFile, textureFile);
-
}
+
+ // Load the skin
+ loadSkin(file.getName(), geometryFile, textureFile);
}
}
@@ -275,9 +417,9 @@ public void loadSkin(String skinId, File geometryFile, File textureFile) {
String geoName = "{\"geometry\" :{\"default\" :\"" + geoId + "\"}}";
SkinGeometry geometry = new SkinGeometry(geoName, Files.readString(geometryFile.toPath()));
LOADED_SKIN_DATA.put(skinId, new SkinData(skin, getEmptyCapeData(), geometry));
- this.logger().info("Loaded skin: " + skinId + "| geo:" + geoName);
+ this.logger().debug("Loaded skin: " + skinId + "| geo:" + geoName);
} catch (Exception e) {
- e.printStackTrace();
+ throw new RuntimeException("Failed to load skin", e);
}
}
@@ -294,52 +436,46 @@ public void onSessionQuit(SessionDisconnectEvent event) {
CUSTOM_ENTITIES.remove(event.connection());
}
+ public void registerPacketListener(GeyserSession session) {
+ scheduler.schedule(() -> {
+ if (session.getDownstream() == null) {
+ registerPacketListener(session);
+ return;
+ }
+
+ session.getDownstream().getSession().addListener(new SessionAdapter() {
+ @Override
+ public void packetSending(PacketSendingEvent event) {
+ Packet packet = event.getPacket();
+ if (!(packet instanceof ServerboundCustomPayloadPacket payloadPacket)
+ || !ReflectionUtils.getChannel(payloadPacket).toString().equals("minecraft:register"))
+ return;
- public void registerPacketListener(GeyserSession session) {
+ String channels = new String(payloadPacket.getData(), StandardCharsets.UTF_8);
+ channels = channels + "\0" + GeyserUtilsChannels.MAIN;
+ event.setPacket(ReflectionUtils.buildServerboundPayloadPacket("minecraft:register", channels.getBytes(StandardCharsets.UTF_8)));
+ }
+
+ @Override
+ public void packetReceived(Session tcpSession, Packet packet) {
+ if (!(packet instanceof ClientboundCustomPayloadPacket payloadPacket)
+ || ReflectionUtils.getChannel(payloadPacket).toString().equals(GeyserUtilsChannels.MAIN))
+ return;
- scheduler.schedule(() -> {
- if (session.getDownstream() == null) {
- registerPacketListener(session);
- return;
- }
-
- session.getDownstream().getSession().addListener(new SessionAdapter() {
-
- @Override
- public void packetSending(PacketSendingEvent event) {
- Packet packet = event.getPacket();
- if (packet instanceof ServerboundCustomPayloadPacket payloadPacket) {
- if (ReflectionUtils.getChannel(payloadPacket).toString().equals("minecraft:register")) {
- String channels = new String(payloadPacket.getData(), StandardCharsets.UTF_8);
- channels = channels + "\0" + GeyserUtilsChannels.MAIN;
- event.setPacket(ReflectionUtils.buildServerboundPayloadPacket("minecraft:register", channels.getBytes(StandardCharsets.UTF_8)));
- }
- }
- }
-
- @Override
- public void packetReceived(Session tcpSession, Packet packet) {
- if (packet instanceof ClientboundCustomPayloadPacket payloadPacket) {
- if (ReflectionUtils.getChannel(payloadPacket).toString().equals(GeyserUtilsChannels.MAIN)) {
- CustomPayloadPacket customPacket = packetManager.decodePacket(payloadPacket.getData());
- handleCustomPacket(session, customPacket);
- }
- }
- }
- });
- }, 80, TimeUnit.MILLISECONDS);
+ CustomPayloadPacket customPacket = packetManager.decodePacket(payloadPacket.getData());
+ handleCustomPacket(session, customPacket);
+ }
+ });
+ }, 80, TimeUnit.MILLISECONDS);
}
private void handleCustomPacket(GeyserSession session, CustomPayloadPacket customPacket) {
if (customPacket instanceof BundlePacket bundlePacket) {
bundlePacket.getPackets().forEach(p -> handleCustomPacket(session, p));
- }
-
- else if (customPacket instanceof CameraShakeCustomPayloadPacket cameraShakePacket) {
+ } else if (customPacket instanceof CameraShakeCustomPayloadPacket cameraShakePacket) {
session.camera().shakeCamera(cameraShakePacket.getIntensity(), cameraShakePacket.getDuration(), CameraShake.values()[cameraShakePacket.getType()]);
- } else if (customPacket instanceof NpcDialogueFormDataCustomPayloadPacket formData) {
-
+ } else if (customPacket instanceof me.zimzaza4.geyserutils.common.packet.form.NpcDialogueFormDataCustomPayloadPacket formData) {
if (formData.action().equals("CLOSE")) {
NpcDialogueForm openForm = NpcDialogueForms.getOpenNpcDialogueForms(session);
if (openForm != null) {
@@ -362,18 +498,18 @@ else if (customPacket instanceof CameraShakeCustomPayloadPacket cameraShakePacke
List