diff --git a/build.gradle.kts b/build.gradle.kts index 4ad92c3..fdfb716 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,11 +2,12 @@ import net.minecrell.pluginyml.bukkit.BukkitPluginDescription plugins { `java-library` - id("io.papermc.paperweight.userdev") version "2.0.0-beta.17" - id("org.sonarqube") version "6.0.1.5171" - id("de.eldoria.plugin-yml.paper") version "0.6.0" + id("io.papermc.paperweight.userdev") version "1.7.3" + id("org.sonarqube") version "5.1.0.4882" + id("net.minecrell.plugin-yml.paper") version "0.6.0" } +// from 1.20.5+ upward, spigot is not supported paperweight.reobfArtifactConfiguration = io.papermc.paperweight.userdev.ReobfArtifactConfiguration.MOJANG_PRODUCTION @@ -14,14 +15,13 @@ group = "me.unurled.sacredrealms" version = "0.1.0" description = "The main SR plugin." -val mcVersion = "1.21.4-R0.1-SNAPSHOT" +val mcVersion = "1.21.1-R0.1-SNAPSHOT" val redisVersion = "5.2.0-beta4" -val invuiVersion = "2.0.0-alpha.14" +val invuiVersion = "1.36" val gsonVersion = "2.11.0" -val packeteventsVersion = "2.7.0" -val znpcsPlusVersion = "2.1.0-SNAPSHOT" +val srcoreVersion = "0.1.2" -val javaVersion = 23 +val javaVersion = 21 repositories { mavenCentral() @@ -33,15 +33,14 @@ repositories { name = "packetevents" url = uri("https://repo.codemc.io/repository/maven-releases/") } + maven { + name = "unurled" + url = uri("https://repo.unurled.me/releases") + } maven { name = "cubbossa" url = uri("https://nexus.leonardbausenwein.de/repository/maven-releases/") } - // ZNPCsPlus - maven { - name = "pyrSnapshots" - url = uri("https://repo.pyr.lol/snapshots") - } } dependencies { @@ -53,9 +52,9 @@ dependencies { paperLibrary("redis.clients", "jedis", redisVersion) - paperLibrary("com.github.retrooper", "packetevents-spigot", packeteventsVersion) + paperLibrary("com.github.retrooper", "packetevents-spigot", "2.5.0") - paperLibrary("lol.pyr", "znpcsplus-api", znpcsPlusVersion) + compileOnly("me.unurled:SR-Core:${srcoreVersion}") } java { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 1b33c55..d64cd49 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ff23a68..9355b41 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 23d15a9..1aa94a4 100755 --- a/gradlew +++ b/gradlew @@ -15,8 +15,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# SPDX-License-Identifier: Apache-2.0 -# ############################################################################## # @@ -57,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -86,7 +84,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -114,7 +112,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH="\\\"\\\"" +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -205,7 +203,7 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. @@ -213,7 +211,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ -classpath "$CLASSPATH" \ - -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + org.gradle.wrapper.GradleWrapperMain \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index db3a6ac..93e3f59 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,8 +13,6 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem -@rem SPDX-License-Identifier: Apache-2.0 -@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -45,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. goto fail @@ -59,22 +57,22 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. goto fail :execute @rem Setup the command line -set CLASSPATH= +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/src/main/java/me/unurled/sacredrealms/sr/Manager.java b/src/main/java/me/unurled/sacredrealms/sr/Manager.java deleted file mode 100644 index c827170..0000000 --- a/src/main/java/me/unurled/sacredrealms/sr/Manager.java +++ /dev/null @@ -1,52 +0,0 @@ -package me.unurled.sacredrealms.sr; - -import org.bukkit.Bukkit; -import org.bukkit.event.Listener; -import org.jetbrains.annotations.NotNull; - -/** The Manager class is a class that is used to manage data and events. */ -public class Manager implements Listener { - - /** Create a new manager */ - public Manager() { - SR.plugin().managers().addManager(this); - Bukkit.getScheduler() - .runTaskAsynchronously( - SR.plugin(), - () -> { - load(); - Bukkit.getPluginManager().registerEvents(this, SR.plugin()); - }); - } - - /** - * Get an instance of a manager - * - * @param clazz The class of the manager - * @return The instance of the manager - * @param The type of the manager - */ - public static T getInstance(@NotNull Class clazz) { - return clazz.cast(SR.plugin().managers().getManager(clazz)); - } - - /** Load the manager */ - public void load() { - loadData(); - } - - /** Unload the manager */ - public void unload() { - saveData(); - } - - /** Save the data */ - public void saveData() { - /* method empty, so it isn't required by the extended child to implement it */ - } - - /** Load the data */ - public void loadData() { - /* method empty, so it isn't required by the extended child to implement it */ - } -} diff --git a/src/main/java/me/unurled/sacredrealms/sr/Managers.java b/src/main/java/me/unurled/sacredrealms/sr/Managers.java deleted file mode 100644 index 3554a33..0000000 --- a/src/main/java/me/unurled/sacredrealms/sr/Managers.java +++ /dev/null @@ -1,78 +0,0 @@ -package me.unurled.sacredrealms.sr; - -import static me.unurled.sacredrealms.sr.utils.Logger.error; - -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.List; -import org.bukkit.Bukkit; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -/** The Managers class is a class that is used to manage managers. */ -public class Managers { - private final List managerList; - - /** Create a new manager */ - protected Managers() { - managerList = new ArrayList<>(); - } - - /** - * Register a manager - * - * @param clazz The class of the manager - */ - public void register(@NotNull List> clazz) { - int i = 0; - for (Class c : clazz) { - Bukkit.getScheduler() - .runTaskLater( - SR.plugin(), - () -> { - try { - c.getDeclaredConstructor().newInstance(); - } catch (InstantiationException - | IllegalAccessException - | InvocationTargetException - | NoSuchMethodException e) { - error("Failed to register manager: " + c.getSimpleName()); - } - }, - 10L * i); - i++; - } - } - - /** - * Add a manager - * - * @param manager The manager - */ - public void addManager(Manager manager) { - managerList.add(manager); - } - - /** Unload all managers */ - public void unload() { - for (Manager manager : managerList) { - manager.unload(); - } - } - - /** - * Get a manager - * - * @param clazz The class of the manager - * @return The manager - */ - @Nullable - public Manager getManager(Class clazz) { - for (Manager manager : managerList) { - if (manager.getClass().equals(clazz)) { - return manager; - } - } - return null; - } -} diff --git a/src/main/java/me/unurled/sacredrealms/sr/SR.java b/src/main/java/me/unurled/sacredrealms/sr/SR.java index 991e23c..0baf423 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/SR.java +++ b/src/main/java/me/unurled/sacredrealms/sr/SR.java @@ -16,19 +16,18 @@ import me.unurled.sacredrealms.sr.components.pack.ResourcePackManager; import me.unurled.sacredrealms.sr.components.pack.animatedjava.AnimatedJavaManager; import me.unurled.sacredrealms.sr.components.pack.background.BackgroundManager; import me.unurled.sacredrealms.sr.components.player.PlayerManager; -import me.unurled.sacredrealms.sr.components.translation.TranslationManager; import me.unurled.sacredrealms.sr.components.treasure.TreasureManager; import me.unurled.sacredrealms.sr.config.ConfigManager; import me.unurled.sacredrealms.sr.data.DataManager; +import me.unurled.srcore.SRCore; import org.bukkit.plugin.java.JavaPlugin; import xyz.xenondevs.invui.InvUI; public final class SR extends JavaPlugin { private static SR plugin; - private Managers managers; - public static SR plugin() { + public static SR getPlugin() { return plugin; } @@ -44,40 +43,38 @@ public final class SR extends JavaPlugin { public void onEnable() { plugin = this; - managers = new Managers(); - PacketEvents.getAPI().init(); + SRCore.getInstance().setPlugin(this); + InvUI.getInstance().setPlugin(this); - managers.register( - List.of( - TranslationManager.class, - ConfigManager.class, - DataManager.class, - AnimatedJavaManager.class, - PlayerManager.class, - CombatManager.class, - ItemManager.class, - EntityManager.class, - NPCManager.class, - BlockManager.class, - ClientBuildManager.class, - TreasureManager.class, - BackgroundManager.class, - ResourcePackManager.class, - CutsceneManager.class, - RecordingManager.class, - ReplayManager.class)); + SRCore.getInstance() + .getManagers() + .register( + List.of( + ConfigManager.class, + DataManager.class, + AnimatedJavaManager.class, + PlayerManager.class, + CombatManager.class, + ItemManager.class, + EntityManager.class, + NPCManager.class, + BlockManager.class, + ClientBuildManager.class, + TreasureManager.class, + BackgroundManager.class, + ResourcePackManager.class, + CutsceneManager.class, + RecordingManager.class, + ReplayManager.class)); } @Override public void onDisable() { - managers.unload(); + SRCore.getInstance().unload(); + PacketEvents.getAPI().terminate(); } - - public Managers managers() { - return managers; - } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/SRLoader.java b/src/main/java/me/unurled/sacredrealms/sr/SRLoader.java index 259d27c..07ba1d0 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/SRLoader.java +++ b/src/main/java/me/unurled/sacredrealms/sr/SRLoader.java @@ -21,11 +21,15 @@ public class SRLoader implements PluginLoader { public void classloader(@NotNull PluginClasspathBuilder classpathBuilder) { MavenLibraryResolver resolver = new MavenLibraryResolver(); resolver.addDependency( - new Dependency(new DefaultArtifact("xyz.xenondevs.invui:invui:pom:2.0.0-alpha.14"), null)); + new Dependency(new DefaultArtifact("xyz.xenondevs.invui:invui:pom:1.36"), null)); resolver.addRepository( new RemoteRepository.Builder("invui", "default", "https://repo.xenondevs.xyz/releases/") .build()); + resolver.addDependency(new Dependency(new DefaultArtifact("me.unurled:SR-Core:0.1.1"), null)); + resolver.addRepository( + new RemoteRepository.Builder("srcore", "default", "https://repo.unurled.me/releases") + .build()); classpathBuilder.addLibrary(resolver); PluginLibraries pluginLibraries = load(); diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/CommandManager.java b/src/main/java/me/unurled/sacredrealms/sr/commands/CommandManager.java index b99a404..aaae323 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/CommandManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/CommandManager.java @@ -9,7 +9,6 @@ import io.papermc.paper.plugin.lifecycle.event.LifecycleEventManager; import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents; import java.util.Collection; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.commands.admin.AttributeCommand; import me.unurled.sacredrealms.sr.commands.admin.ClientBuildCommand; import me.unurled.sacredrealms.sr.commands.admin.EntityTypeCommand; @@ -22,6 +21,7 @@ import me.unurled.sacredrealms.sr.commands.admin.cutscene.RecordCutsceneCommand; import me.unurled.sacredrealms.sr.commands.admin.cutscene.StopRecordingCommand; import me.unurled.sacredrealms.sr.commands.player.DifficultyCommand; import me.unurled.sacredrealms.sr.commands.player.ResetAdventureCommand; +import me.unurled.srcore.api.Manager; import org.jetbrains.annotations.NotNull; public class CommandManager extends Manager { diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/AttributeCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/AttributeCommand.java index 418b59d..d251202 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/AttributeCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/AttributeCommand.java @@ -1,7 +1,7 @@ package me.unurled.sacredrealms.sr.commands.admin; +import static me.unurled.srcore.utils.Component.comp; import static me.unurled.sacredrealms.sr.utils.SRPlayerUtils.syncSRToPlayer; -import static me.unurled.sacredrealms.sr.utils.component.Component.comp; import io.papermc.paper.command.brigadier.BasicCommand; import io.papermc.paper.command.brigadier.CommandSourceStack; @@ -9,11 +9,11 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.attributes.Attribute; import me.unurled.sacredrealms.sr.components.player.PlayerManager; import me.unurled.sacredrealms.sr.components.player.SRPlayer; import me.unurled.sacredrealms.sr.gui.attributes.AttributesGUI; +import me.unurled.srcore.api.Manager; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -160,7 +160,7 @@ public class AttributeCommand implements BasicCommand { return; } Window window = - Window.mergedBuilder() + Window.single() .setViewer(p) .setTitle("Attributes") .setGui(AttributesGUI.createGui(target)) diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/ClientBuildCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/ClientBuildCommand.java index 17d6e17..1eacfe9 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/ClientBuildCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/ClientBuildCommand.java @@ -1,5 +1,7 @@ package me.unurled.sacredrealms.sr.commands.admin; +import static me.unurled.srcore.utils.Component.ERROR; +import static me.unurled.srcore.utils.Component.textComp; import static me.unurled.sacredrealms.sr.utils.Logger.log; import io.papermc.paper.command.brigadier.BasicCommand; @@ -10,12 +12,11 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map.Entry; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.clientbuild.ClientBuild; import me.unurled.sacredrealms.sr.components.clientbuild.ClientBuildManager; import me.unurled.sacredrealms.sr.components.player.PlayerManager; import me.unurled.sacredrealms.sr.components.player.SRPlayer; -import me.unurled.sacredrealms.sr.utils.component.TranslatedComponent; +import me.unurled.srcore.api.Manager; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.block.data.BlockData; @@ -119,7 +120,7 @@ public class ClientBuildCommand implements BasicCommand, Listener { PlayerManager pm = Manager.getInstance(PlayerManager.class); SRPlayer sr = pm.getPlayer(p.getUniqueId()); if (sr == null) { - sender.sendMessage(TranslatedComponent.ERROR.component()); + sender.sendMessage(textComp(ERROR)); return; } sender.sendMessage("Modify the client build and save after you are finished."); @@ -154,7 +155,7 @@ public class ClientBuildCommand implements BasicCommand, Listener { PlayerManager pm = Manager.getInstance(PlayerManager.class); SRPlayer sr = pm.getPlayer(p.getUniqueId()); if (sr == null) { - sender.sendMessage(TranslatedComponent.ERROR.component()); + sender.sendMessage(textComp(ERROR)); return; } sender.sendMessage( diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/EntityTypeCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/EntityTypeCommand.java index 224f1f1..20b029c 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/EntityTypeCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/EntityTypeCommand.java @@ -1,17 +1,18 @@ package me.unurled.sacredrealms.sr.commands.admin; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.NOT_PLAYER; +import static me.unurled.srcore.utils.Component.comp; +import static me.unurled.srcore.utils.Component.textComp; import io.papermc.paper.command.brigadier.BasicCommand; import io.papermc.paper.command.brigadier.CommandSourceStack; import java.util.Arrays; import java.util.Collection; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.entity.EntityManager; import me.unurled.sacredrealms.sr.components.entity.SREntityType; import me.unurled.sacredrealms.sr.gui.entitytype.EntityTypeGUI; -import me.unurled.sacredrealms.sr.utils.component.TranslatedComponent; +import me.unurled.srcore.api.Manager; import org.bukkit.command.CommandSender; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; @@ -22,7 +23,7 @@ public class EntityTypeCommand implements BasicCommand { private static void list(@NotNull CommandSender sender, @NotNull String @NotNull [] args) { if (!(sender instanceof Player p)) { - sender.sendMessage(TranslatedComponent.NOT_PLAYER.component()); + sender.sendMessage(comp(NOT_PLAYER)); return; } EntityManager em = Manager.getInstance(EntityManager.class); @@ -32,11 +33,7 @@ public class EntityTypeCommand implements BasicCommand { } Window window = - Window.mergedBuilder() - .setViewer(p) - .setTitle("List") - .setGui(EntityTypeGUI.listGui()) - .build(); + Window.single().setViewer(p).setTitle("List").setGui(EntityTypeGUI.listGui()).build(); window.open(); } @@ -46,7 +43,7 @@ public class EntityTypeCommand implements BasicCommand { return; } if (!(sender instanceof Player p)) { - sender.sendMessage(TranslatedComponent.NOT_PLAYER.component()); + sender.sendMessage(comp(NOT_PLAYER)); return; } if (args.length < 3) { @@ -57,7 +54,7 @@ public class EntityTypeCommand implements BasicCommand { } SREntityType type = em.getType(args[1]); Window window = - Window.mergedBuilder() + Window.single() .setViewer(p) .setTitle(args[1]) .setGui(EntityTypeGUI.createGui(type)) @@ -112,7 +109,7 @@ public class EntityTypeCommand implements BasicCommand { if (sender instanceof Player p) { // opens gui Window window = - Window.mergedBuilder() + Window.single() .setViewer(p) .setTitle(args[1]) .setGui(EntityTypeGUI.createGui(type)) diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/ItemCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/ItemCommand.java index 0b729bf..4c6f782 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/ItemCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/ItemCommand.java @@ -1,14 +1,13 @@ package me.unurled.sacredrealms.sr.commands.admin; +import static me.unurled.srcore.utils.Component.comp; import static me.unurled.sacredrealms.sr.utils.Logger.error; -import static me.unurled.sacredrealms.sr.utils.component.Component.comp; import io.papermc.paper.command.brigadier.BasicCommand; import io.papermc.paper.command.brigadier.CommandSourceStack; import java.util.Arrays; import java.util.Collection; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.attributes.Attribute; import me.unurled.sacredrealms.sr.components.item.Item; import me.unurled.sacredrealms.sr.components.item.ItemManager; @@ -16,6 +15,7 @@ import me.unurled.sacredrealms.sr.components.item.ItemType; import me.unurled.sacredrealms.sr.components.item.Rarity; import me.unurled.sacredrealms.sr.components.item.abilities.Ability; import me.unurled.sacredrealms.sr.components.item.enchantments.Enchantment; +import me.unurled.srcore.api.Manager; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.command.CommandSender; diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/LevelCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/LevelCommand.java index 76758ff..ac3496c 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/LevelCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/LevelCommand.java @@ -4,9 +4,9 @@ import io.papermc.paper.command.brigadier.BasicCommand; import io.papermc.paper.command.brigadier.CommandSourceStack; import java.util.Collection; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.player.PlayerManager; import me.unurled.sacredrealms.sr.components.player.SRPlayer; +import me.unurled.srcore.api.Manager; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/SpawnEntityCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/SpawnEntityCommand.java index 2785e51..d7edb66 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/SpawnEntityCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/SpawnEntityCommand.java @@ -1,13 +1,15 @@ package me.unurled.sacredrealms.sr.commands.admin; +import static me.unurled.srcore.utils.Component.NO_PERMISSION; +import static me.unurled.srcore.utils.Component.textComp; + import io.papermc.paper.command.brigadier.BasicCommand; import io.papermc.paper.command.brigadier.CommandSourceStack; import java.util.Collection; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.entity.EntityManager; import me.unurled.sacredrealms.sr.components.entity.SREntityType; -import me.unurled.sacredrealms.sr.utils.component.TranslatedComponent; +import me.unurled.srcore.api.Manager; import org.bukkit.World; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -55,7 +57,7 @@ public class SpawnEntityCommand implements BasicCommand { public void execute(@NotNull CommandSourceStack commandSourceStack, @NotNull String[] args) { CommandSender sender = commandSourceStack.getSender(); if (!sender.hasPermission("sr.spawn-entity")) { - sender.sendMessage(TranslatedComponent.NO_PERMISSION.component()); + sender.sendMessage(textComp(NO_PERMISSION)); return; } diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/TreasureCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/TreasureCommand.java index 0d74330..ebe5beb 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/TreasureCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/TreasureCommand.java @@ -1,17 +1,17 @@ package me.unurled.sacredrealms.sr.commands.admin; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.NOT_PLAYER; +import static me.unurled.srcore.utils.Component.textComp; import io.papermc.paper.command.brigadier.BasicCommand; import io.papermc.paper.command.brigadier.CommandSourceStack; import java.util.Collection; import java.util.List; import java.util.Set; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.treasure.Treasure; import me.unurled.sacredrealms.sr.components.treasure.TreasureManager; import me.unurled.sacredrealms.sr.gui.treasure.TreasureGUI; -import me.unurled.sacredrealms.sr.utils.component.TranslatedComponent; +import me.unurled.srcore.api.Manager; import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.block.Block; @@ -33,7 +33,7 @@ public class TreasureCommand implements BasicCommand { private static void delete(@NotNull CommandSender sender, TreasureManager instance) { Block block; if (!(sender instanceof Player p)) { - sender.sendMessage(TranslatedComponent.NOT_PLAYER.component()); + sender.sendMessage(NOT_PLAYER); return; } block = p.getTargetBlock(TRANSPARENT, 3); @@ -69,7 +69,7 @@ public class TreasureCommand implements BasicCommand { private static void modify(@NotNull CommandSender sender, TreasureManager instance) { Block block; if (!(sender instanceof Player p)) { - sender.sendMessage(TranslatedComponent.NOT_PLAYER.component()); + sender.sendMessage(NOT_PLAYER); return; } block = p.getTargetBlock(TRANSPARENT, 3); @@ -82,7 +82,7 @@ public class TreasureCommand implements BasicCommand { } // open the GUI Window window = - Window.mergedBuilder() + Window.single() .setViewer(p) .setTitle("Modifiy Treasure Chest") .setGui(TreasureGUI.createGui(treasure)) @@ -97,7 +97,7 @@ public class TreasureCommand implements BasicCommand { @NotNull CommandSender sender, @NotNull String @NotNull [] args, TreasureManager instance) { Block block; if (!(sender instanceof Player p)) { - sender.sendMessage(TranslatedComponent.NOT_PLAYER.component()); + sender.sendMessage(NOT_PLAYER); return; } block = p.getTargetBlock(TRANSPARENT, 3); diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/CreateCutsceneCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/CreateCutsceneCommand.java index 27220c5..9522b80 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/CreateCutsceneCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/CreateCutsceneCommand.java @@ -1,12 +1,15 @@ package me.unurled.sacredrealms.sr.commands.admin.cutscene; +import static me.unurled.srcore.utils.Component.NOT_PLAYER; +import static me.unurled.srcore.utils.Component.NO_PERMISSION; +import static me.unurled.srcore.utils.Component.textComp; + import io.papermc.paper.command.brigadier.BasicCommand; import io.papermc.paper.command.brigadier.CommandSourceStack; import java.util.Collection; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.cutscene.CutsceneManager; -import me.unurled.sacredrealms.sr.utils.component.TranslatedComponent; +import me.unurled.srcore.api.Manager; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -17,11 +20,11 @@ public class CreateCutsceneCommand implements BasicCommand { @Override public void execute(@NotNull CommandSourceStack sender, String[] args) { if (!(sender.getSender() instanceof Player p)) { - sender.getSender().sendMessage(TranslatedComponent.NOT_PLAYER.component()); + sender.getSender().sendMessage(textComp(NOT_PLAYER)); return; } if (!p.hasPermission("sr.cutscene.create")) { - p.sendMessage(TranslatedComponent.NO_PERMISSION.component()); + p.sendMessage(textComp(NO_PERMISSION)); return; } // get the name diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/RecordCutsceneCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/RecordCutsceneCommand.java index bef092a..f496017 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/RecordCutsceneCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/RecordCutsceneCommand.java @@ -1,13 +1,15 @@ package me.unurled.sacredrealms.sr.commands.admin.cutscene; +import static me.unurled.srcore.utils.Component.NO_PERMISSION; +import static me.unurled.srcore.utils.Component.textComp; + import io.papermc.paper.command.brigadier.BasicCommand; import io.papermc.paper.command.brigadier.CommandSourceStack; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.cutscene.Cutscene; import me.unurled.sacredrealms.sr.components.cutscene.CutsceneManager; import me.unurled.sacredrealms.sr.components.cutscene.RecordingManager; import me.unurled.sacredrealms.sr.components.cutscene.recording.Recording; -import me.unurled.sacredrealms.sr.utils.component.TranslatedComponent; +import me.unurled.srcore.api.Manager; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -22,7 +24,7 @@ public class RecordCutsceneCommand implements BasicCommand { } if (!p.hasPermission("sr.cutscene.create")) { - p.sendMessage(TranslatedComponent.NO_PERMISSION.component()); + p.sendMessage(textComp(NO_PERMISSION)); return; } diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/ReplayCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/ReplayCommand.java index 41d0a2c..185d14e 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/ReplayCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/ReplayCommand.java @@ -1,9 +1,12 @@ package me.unurled.sacredrealms.sr.commands.admin.cutscene; +import static me.unurled.srcore.utils.Component.NOT_PLAYER; +import static me.unurled.srcore.utils.Component.NO_PERMISSION; +import static me.unurled.srcore.utils.Component.textComp; + import io.papermc.paper.command.brigadier.BasicCommand; import io.papermc.paper.command.brigadier.CommandSourceStack; import java.util.Collection; -import me.unurled.sacredrealms.sr.utils.component.TranslatedComponent; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -12,12 +15,12 @@ public class ReplayCommand implements BasicCommand { @Override public void execute(@NotNull CommandSourceStack stack, String[] args) { if (!(stack.getSender() instanceof Player p)) { - stack.getSender().sendMessage(TranslatedComponent.NOT_PLAYER.component()); + stack.getSender().sendMessage(textComp(NOT_PLAYER)); return; } if (!p.hasPermission("sr.cutscene.replay")) { - p.sendMessage(TranslatedComponent.NO_PERMISSION.component()); + p.sendMessage(textComp(NO_PERMISSION)); } // aaa diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/StopRecordingCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/StopRecordingCommand.java index 96ef444..33882e0 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/StopRecordingCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/admin/cutscene/StopRecordingCommand.java @@ -1,11 +1,14 @@ package me.unurled.sacredrealms.sr.commands.admin.cutscene; +import static me.unurled.srcore.utils.Component.NOT_PLAYER; +import static me.unurled.srcore.utils.Component.NO_PERMISSION; +import static me.unurled.srcore.utils.Component.textComp; + import io.papermc.paper.command.brigadier.BasicCommand; import io.papermc.paper.command.brigadier.CommandSourceStack; import java.util.Collection; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.cutscene.RecordingManager; -import me.unurled.sacredrealms.sr.utils.component.TranslatedComponent; +import me.unurled.srcore.api.Manager; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -14,11 +17,11 @@ public class StopRecordingCommand implements BasicCommand { @Override public void execute(@NotNull CommandSourceStack stack, String[] args) { if (!(stack.getSender() instanceof Player p)) { - stack.getSender().sendMessage(TranslatedComponent.NOT_PLAYER.component()); + stack.getSender().sendMessage(textComp(NOT_PLAYER)); return; } if (!p.hasPermission("sr.cutscene.create")) { - p.sendMessage(TranslatedComponent.NO_PERMISSION.component()); + p.sendMessage(textComp(NO_PERMISSION)); return; } diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/player/DifficultyCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/player/DifficultyCommand.java index 4d351b0..200bda9 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/player/DifficultyCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/player/DifficultyCommand.java @@ -1,18 +1,20 @@ package me.unurled.sacredrealms.sr.commands.player; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.NOT_PLAYER; +import static me.unurled.srcore.utils.Component.NO_PERMISSION; +import static me.unurled.srcore.utils.Component.PLAYER_NOT_FOUND; +import static me.unurled.srcore.utils.Component.textComp; import io.papermc.paper.command.brigadier.BasicCommand; import io.papermc.paper.command.brigadier.CommandSourceStack; import java.util.Arrays; import java.util.Collection; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.difficulty.Difficulty; import me.unurled.sacredrealms.sr.components.player.PlayerManager; import me.unurled.sacredrealms.sr.components.player.SRPlayer; import me.unurled.sacredrealms.sr.gui.difficulty.DifficultyGUI; -import me.unurled.sacredrealms.sr.utils.component.TranslatedComponent; +import me.unurled.srcore.api.Manager; import net.kyori.adventure.audience.Audience; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; @@ -49,11 +51,11 @@ public class DifficultyCommand implements BasicCommand { private static void playerHandling( @NotNull CommandSender sender, @NotNull String[] args, @NotNull Player p) { if (!p.hasPermission(DIFFICULTY_SELF)) { - sender.sendMessage(TranslatedComponent.NO_PERMISSION.component()); + sender.sendMessage(textComp(NO_PERMISSION)); return; } if (args.length >= 1 && !p.hasPermission(DIFFICULTY_MANAGE)) { - sender.sendMessage(TranslatedComponent.NO_PERMISSION.component()); + sender.sendMessage(textComp(NO_PERMISSION)); usage(sender); return; } @@ -61,7 +63,7 @@ public class DifficultyCommand implements BasicCommand { if (args.length == 0) { // open gui for sender Window window = - Window.mergedBuilder() + Window.single() .setViewer(p) .setTitle(CHOOSE_DIFFICULTY) .setGui(DifficultyGUI.createGui()) @@ -74,11 +76,11 @@ public class DifficultyCommand implements BasicCommand { // open gui for target player Player target = p.getServer().getPlayer(args[0]); if (target == null) { - sender.sendMessage(TranslatedComponent.PLAYER_NOT_FOUND.component()); + sender.sendMessage(textComp(PLAYER_NOT_FOUND)); return; } Window window = - Window.mergedBuilder() + Window.single() .setViewer(p) .setTitle(CHOOSE_DIFFICULTY) .setGui(DifficultyGUI.createGui()) @@ -91,7 +93,7 @@ public class DifficultyCommand implements BasicCommand { // set difficulty for target player Player target = p.getServer().getPlayer(args[0]); if (target == null) { - sender.sendMessage(TranslatedComponent.PLAYER_NOT_FOUND.component()); + sender.sendMessage(textComp(PLAYER_NOT_FOUND)); return; } // set difficulty @@ -110,7 +112,7 @@ public class DifficultyCommand implements BasicCommand { Difficulty difficulty) { SRPlayer sr = pm.getPlayer(target.getUniqueId()); if (sr == null) { - sender.sendMessage(TranslatedComponent.PLAYER_NOT_FOUND.component()); + sender.sendMessage(textComp(PLAYER_NOT_FOUND)); return; } sr.setDifficulty(difficulty); @@ -125,19 +127,19 @@ public class DifficultyCommand implements BasicCommand { private static void consoleHandler( @NotNull CommandSender sender, @NotNull String @NotNull [] args) { if (args.length == 0) { - sender.sendMessage(TranslatedComponent.NOT_PLAYER.component()); + sender.sendMessage(textComp(NOT_PLAYER)); usage(sender); return; } Player target = Bukkit.getPlayer(args[0]); if (target == null) { - sender.sendMessage(TranslatedComponent.PLAYER_NOT_FOUND.component()); + sender.sendMessage(textComp(PLAYER_NOT_FOUND)); return; } if (args.length == 1) { Window window = - Window.mergedBuilder() + Window.single() .setViewer(target) .setTitle(CHOOSE_DIFFICULTY) .setGui(DifficultyGUI.createGui()) diff --git a/src/main/java/me/unurled/sacredrealms/sr/commands/player/ResetAdventureCommand.java b/src/main/java/me/unurled/sacredrealms/sr/commands/player/ResetAdventureCommand.java index c322380..923499b 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/commands/player/ResetAdventureCommand.java +++ b/src/main/java/me/unurled/sacredrealms/sr/commands/player/ResetAdventureCommand.java @@ -1,6 +1,6 @@ package me.unurled.sacredrealms.sr.commands.player; -import static me.unurled.sacredrealms.sr.utils.component.Component.comp; +import static me.unurled.srcore.utils.Component.comp; import io.papermc.paper.command.brigadier.BasicCommand; import io.papermc.paper.command.brigadier.CommandSourceStack; @@ -9,10 +9,10 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Objects; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; import me.unurled.sacredrealms.sr.components.player.PlayerManager; import me.unurled.sacredrealms.sr.data.DataManager; +import me.unurled.srcore.api.Manager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; @@ -39,7 +39,7 @@ public class ResetAdventureCommand implements BasicCommand { } return; } - OfflinePlayer player = SR.plugin().getServer().getOfflinePlayer(args[0]); + OfflinePlayer player = SR.getPlugin().getServer().getOfflinePlayer(args[0]); boolean status = resetAdventure(player); if (status) { diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/block/BlockItem.java b/src/main/java/me/unurled/sacredrealms/sr/components/block/BlockItem.java index 5221621..8926f4a 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/block/BlockItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/block/BlockItem.java @@ -1,7 +1,7 @@ package me.unurled.sacredrealms.sr.components.block; +import static me.unurled.srcore.utils.Component.textComp; import static me.unurled.sacredrealms.sr.utils.Logger.error; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/block/BlockManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/block/BlockManager.java index c2be6eb..d45cea4 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/block/BlockManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/block/BlockManager.java @@ -4,8 +4,8 @@ import static me.unurled.sacredrealms.sr.utils.Items.locationToString; import java.util.HashMap; import java.util.Map; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; +import me.unurled.srcore.api.Manager; import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Location; @@ -65,9 +65,9 @@ public class BlockManager extends Manager { public void load() { Bukkit.getScheduler() .runTask( - SR.plugin(), + SR.getPlugin(), () -> { - for (World world : SR.plugin().getServer().getWorlds()) { + for (World world : SR.getPlugin().getServer().getWorlds()) { if (world == null) { continue; } diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/clientbuild/ClientBuildManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/clientbuild/ClientBuildManager.java index a9247f4..5254dcb 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/clientbuild/ClientBuildManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/clientbuild/ClientBuildManager.java @@ -11,11 +11,11 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.UUID; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; import me.unurled.sacredrealms.sr.commands.admin.ClientBuildCommand; import me.unurled.sacredrealms.sr.data.DataHandler; import me.unurled.sacredrealms.sr.data.DataManager; +import me.unurled.srcore.api.Manager; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.block.data.BlockData; @@ -41,7 +41,7 @@ public class ClientBuildManager extends Manager { @Override public void load() { super.load(); - Bukkit.getPluginManager().registerEvents(new ClientBuildCommand(), SR.plugin()); + Bukkit.getPluginManager().registerEvents(new ClientBuildCommand(), SR.getPlugin()); } public List getBuilds() { @@ -83,7 +83,7 @@ public class ClientBuildManager extends Manager { if (dh == null) { error("Failed to get DataHandler instance, can't load client builds."); error("Retrying in 10 seconds."); - Bukkit.getScheduler().runTaskLaterAsynchronously(SR.plugin(), this::loadData, 200L); + Bukkit.getScheduler().runTaskLaterAsynchronously(SR.getPlugin(), this::loadData, 200L); return; } List keys = dh.getKeysAll("sr.clientbuild"); @@ -130,7 +130,7 @@ public class ClientBuildManager extends Manager { } Bukkit.getScheduler() .runTaskAsynchronously( - SR.plugin(), + SR.getPlugin(), () -> { for (String name : names) { ClientBuild build = getBuild(name); diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/combat/CombatManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/combat/CombatManager.java index 5289ba7..cebdb43 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/combat/CombatManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/combat/CombatManager.java @@ -1,15 +1,14 @@ package me.unurled.sacredrealms.sr.components.combat; +import static me.unurled.srcore.utils.Component.comp; import static me.unurled.sacredrealms.sr.utils.SRPlayerUtils.spawnIndicator; import static me.unurled.sacredrealms.sr.utils.SRPlayerUtils.updateActionBar; -import static me.unurled.sacredrealms.sr.utils.component.Component.comp; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Random; import java.util.UUID; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.attributes.Attribute; import me.unurled.sacredrealms.sr.components.entity.EntityManager; import me.unurled.sacredrealms.sr.components.entity.SREntity; @@ -17,6 +16,7 @@ import me.unurled.sacredrealms.sr.components.entity.SREntityType; import me.unurled.sacredrealms.sr.components.player.PlayerManager; import me.unurled.sacredrealms.sr.components.player.SRPlayer; import me.unurled.sacredrealms.sr.utils.Items; +import me.unurled.srcore.api.Manager; import org.bukkit.Particle; import org.bukkit.Sound; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/CreationListener.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/CreationListener.java index b53a5eb..12f0023 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/CreationListener.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/CreationListener.java @@ -1,11 +1,11 @@ package me.unurled.sacredrealms.sr.components.cutscene; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.textComp; import static org.bukkit.Material.RED_WOOL; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.utils.Region; import me.unurled.sacredrealms.sr.utils.RegionUtil; +import me.unurled.srcore.api.Manager; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Location; import org.bukkit.entity.Player; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/CutsceneManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/CutsceneManager.java index 1dc6b39..73ad534 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/CutsceneManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/CutsceneManager.java @@ -1,16 +1,16 @@ package me.unurled.sacredrealms.sr.components.cutscene; import static me.unurled.sacredrealms.sr.utils.Items.cancelItem; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.textComp; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; import me.unurled.sacredrealms.sr.components.cutscene.tasks.TickTracker; +import me.unurled.srcore.api.Manager; import net.kyori.adventure.text.TextComponent; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -32,7 +32,10 @@ public class CutsceneManager extends Manager { @Override public void load() { super.load(); - SR.plugin().getServer().getPluginManager().registerEvents(new CreationListener(), SR.plugin()); + SR.getPlugin() + .getServer() + .getPluginManager() + .registerEvents(new CreationListener(), SR.getPlugin()); TickTracker.startTracking(); cutscenes = new ArrayList<>(); cutsceneBeingCreated = new HashMap<>(); diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/RecordingManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/RecordingManager.java index 2638efd..7470830 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/RecordingManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/RecordingManager.java @@ -1,13 +1,13 @@ package me.unurled.sacredrealms.sr.components.cutscene; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.textComp; import java.util.ArrayList; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.cutscene.recording.Recordable; import me.unurled.sacredrealms.sr.components.cutscene.recording.Recording; import me.unurled.sacredrealms.sr.components.cutscene.tasks.TickTracker; +import me.unurled.srcore.api.Manager; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/Replay.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/Replay.java index a83f84e..64de72e 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/Replay.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/Replay.java @@ -1,5 +1,8 @@ package me.unurled.sacredrealms.sr.components.cutscene; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; import me.unurled.sacredrealms.sr.SR; import me.unurled.sacredrealms.sr.components.cutscene.recording.Recording; import me.unurled.sacredrealms.sr.components.cutscene.tasks.ReplayTask; @@ -12,16 +15,19 @@ public class Replay { private final Player viewer; private final Recording recording; private final BukkitTask replayTask; + private final Map spawnedEntities; public Replay(Recording recording, @NotNull Player viewer) { this.recording = recording; this.viewer = viewer; + spawnedEntities = new HashMap<>(); viewer.getInventory().clear(); // TODO: control cutscene replay replayTask = - Bukkit.getScheduler().runTaskTimerAsynchronously(SR.plugin(), new ReplayTask(this), 0L, 1L); + Bukkit.getScheduler() + .runTaskTimerAsynchronously(SR.getPlugin(), new ReplayTask(this), 0L, 1L); } public Player viewer() { @@ -41,4 +47,8 @@ public class Replay { replayTask.cancel(); } } + + public Map spawnedEntities() { + return spawnedEntities; + } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/ReplayManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/ReplayManager.java index 6fadbae..78ab4c7 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/ReplayManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/ReplayManager.java @@ -2,8 +2,8 @@ package me.unurled.sacredrealms.sr.components.cutscene; import java.util.HashSet; import java.util.Set; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.cutscene.recording.Recording; +import me.unurled.srcore.api.Manager; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/Recordable.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/Recordable.java index 8f7252d..c5085a6 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/Recordable.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/Recordable.java @@ -1,9 +1,12 @@ package me.unurled.sacredrealms.sr.components.cutscene.recording; +import com.github.retrooper.packetevents.protocol.player.User; +import me.unurled.sacredrealms.sr.components.cutscene.Replay; + public abstract class Recordable { private long tick; - public abstract void replay(); + public abstract void replay(Replay replay, User user) throws Exception; public long tick() { return tick; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/Recording.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/Recording.java index fa5077a..34f5dad 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/Recording.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/Recording.java @@ -37,9 +37,9 @@ public class Recording { this.endTick = 1; // TODO: get tick this.scanEntitiesTask = - Bukkit.getScheduler().runTaskTimer(SR.plugin(), new ScanEntityTracker(this), 0L, 20L); + Bukkit.getScheduler().runTaskTimer(SR.getPlugin(), new ScanEntityTracker(this), 0L, 20L); this.trackLocationTask = - Bukkit.getScheduler().runTaskTimer(SR.plugin(), new TrackLocationTask(this), 0L, 1L); + Bukkit.getScheduler().runTaskTimer(SR.getPlugin(), new TrackLocationTask(this), 0L, 1L); } public Map> recordables() { diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/recordables/DespawnEntityRecordable.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/recordables/DespawnEntityRecordable.java index 8c6d608..f2776b6 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/recordables/DespawnEntityRecordable.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/recordables/DespawnEntityRecordable.java @@ -1,7 +1,11 @@ package me.unurled.sacredrealms.sr.components.cutscene.recording.recordables; +import com.github.retrooper.packetevents.protocol.player.User; +import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerDestroyEntities; import java.util.UUID; +import me.unurled.sacredrealms.sr.components.cutscene.Replay; import me.unurled.sacredrealms.sr.components.cutscene.recording.Recordable; +import org.jetbrains.annotations.NotNull; public class DespawnEntityRecordable extends Recordable { @@ -14,8 +18,11 @@ public class DespawnEntityRecordable extends Recordable { } @Override - public void replay() { - // TODO: fake spawn entity + public void replay(@NotNull Replay replay, @NotNull User user) throws Exception { + WrapperPlayServerDestroyEntities destroyEntities = + new WrapperPlayServerDestroyEntities(replay.spawnedEntities().get(entityId)); + user.sendPacket(destroyEntities); + replay.spawnedEntities().remove(entityId); } public UUID entityId() { diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/recordables/LocationChangeRecordable.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/recordables/LocationChangeRecordable.java index 892eb56..91669bf 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/recordables/LocationChangeRecordable.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/recordables/LocationChangeRecordable.java @@ -1,6 +1,8 @@ package me.unurled.sacredrealms.sr.components.cutscene.recording.recordables; +import com.github.retrooper.packetevents.protocol.player.User; import java.util.UUID; +import me.unurled.sacredrealms.sr.components.cutscene.Replay; import me.unurled.sacredrealms.sr.components.cutscene.recording.Recordable; import org.bukkit.Location; @@ -17,7 +19,7 @@ public class LocationChangeRecordable extends Recordable { } @Override - public void replay() {} + public void replay(Replay replay, User user) throws Exception {} public UUID entityId() { return entityId; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/recordables/SpawnEntityRecordable.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/recordables/SpawnEntityRecordable.java index aaa21db..8eb3dd8 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/recordables/SpawnEntityRecordable.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/recording/recordables/SpawnEntityRecordable.java @@ -1,8 +1,20 @@ package me.unurled.sacredrealms.sr.components.cutscene.recording.recordables; +import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes; +import com.github.retrooper.packetevents.protocol.player.User; +import com.github.retrooper.packetevents.protocol.player.UserProfile; +import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerPlayerInfoUpdate; +import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnEntity; +import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnPlayer; +import io.github.retrooper.packetevents.util.SpigotConversionUtil; +import java.lang.reflect.Field; +import java.util.EnumSet; import java.util.UUID; +import java.util.concurrent.atomic.AtomicInteger; +import me.unurled.sacredrealms.sr.components.cutscene.Replay; import me.unurled.sacredrealms.sr.components.cutscene.recording.Recordable; import net.kyori.adventure.text.Component; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; @@ -33,8 +45,49 @@ public class SpawnEntityRecordable extends Recordable { } @Override - public void replay() { - // TODO: fake spawn entity + public void replay(Replay replay, User user) throws Exception { // TODO: check everything + + Class entityClass = Class.forName("net.minecraft.world.entity.Entity"); + Field field = entityClass.getDeclaredField("ENTITY_COUNTER"); + field.setAccessible(true); + AtomicInteger ENTITY_COUNTER = (AtomicInteger) field.get(null); + int id = ENTITY_COUNTER.incrementAndGet(); + + if (entityType == EntityType.PLAYER) { + WrapperPlayServerPlayerInfoUpdate.PlayerInfo data = + new WrapperPlayServerPlayerInfoUpdate.PlayerInfo( + new UserProfile(entityId, name.toString()), + false, + 0, + SpigotConversionUtil.fromBukkitGameMode(GameMode.SURVIVAL), + name, + null); + + user.sendPacket( + new WrapperPlayServerPlayerInfoUpdate( + EnumSet.of(WrapperPlayServerPlayerInfoUpdate.Action.ADD_PLAYER), data)); + user.sendPacket( + new WrapperPlayServerSpawnPlayer( + id, entityId, SpigotConversionUtil.fromBukkitLocation(location))); + + replay.spawnedEntities().put(entityId, id); + } else { + com.github.retrooper.packetevents.protocol.entity.type.EntityType entityType1 = + EntityTypes.getByName(entityType.getKey().toString()); + + WrapperPlayServerSpawnEntity spawnEntityPacket = + new WrapperPlayServerSpawnEntity( + id, + UUID.randomUUID(), + entityType1, + SpigotConversionUtil.fromBukkitLocation(location), + 0, + 0, + null); + + user.sendPacket(spawnEntityPacket); + replay.spawnedEntities().put(entityId, id); + } } public EntityType entityType() { diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/ReplayTask.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/ReplayTask.java index 5b43e38..e612a59 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/ReplayTask.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/ReplayTask.java @@ -1,22 +1,27 @@ package me.unurled.sacredrealms.sr.components.cutscene.tasks; import static me.unurled.sacredrealms.sr.utils.Logger.error; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.textComp; -import me.unurled.sacredrealms.sr.Manager; +import com.github.retrooper.packetevents.PacketEvents; +import com.github.retrooper.packetevents.protocol.player.User; import me.unurled.sacredrealms.sr.components.cutscene.Replay; import me.unurled.sacredrealms.sr.components.cutscene.ReplayManager; import me.unurled.sacredrealms.sr.components.cutscene.recording.Recordable; +import me.unurled.srcore.api.Manager; +import org.jetbrains.annotations.NotNull; public class ReplayTask implements Runnable { private final Replay replay; private final ReplayManager rm; + private final User user; private long currentTick = 0; - public ReplayTask(Replay replay) { + public ReplayTask(@NotNull Replay replay) { this.replay = replay; rm = Manager.getInstance(ReplayManager.class); + this.user = PacketEvents.getAPI().getPlayerManager().getUser(replay.viewer()); } @Override @@ -38,7 +43,7 @@ public class ReplayTask implements Runnable { for (Recordable r : recordables) { // figure out how to replay a recordable - r.replay(); + r.replay(replay, user); } } catch (Exception e) { error("Tick: " + currentTick); diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/ScanEntityTracker.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/ScanEntityTracker.java index ba143e7..0f69291 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/ScanEntityTracker.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/ScanEntityTracker.java @@ -2,11 +2,11 @@ package me.unurled.sacredrealms.sr.components.cutscene.tasks; import java.util.ArrayList; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.cutscene.Cutscene; import me.unurled.sacredrealms.sr.components.cutscene.RecordingManager; import me.unurled.sacredrealms.sr.components.cutscene.recording.Recording; import me.unurled.sacredrealms.sr.components.cutscene.recording.recordables.SpawnEntityRecordable; +import me.unurled.srcore.api.Manager; import org.bukkit.Chunk; import org.bukkit.Location; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/TickTracker.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/TickTracker.java index e32284a..ef551e9 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/TickTracker.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/TickTracker.java @@ -7,7 +7,7 @@ public class TickTracker { private static long currentTick = 0; public static void startTracking() { - Bukkit.getScheduler().scheduleSyncRepeatingTask(SR.plugin(), () -> currentTick++, 0L, 1L); + Bukkit.getScheduler().scheduleSyncRepeatingTask(SR.getPlugin(), () -> currentTick++, 0L, 1L); } public static long currentTick() { diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/TrackLocationTask.java b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/TrackLocationTask.java index 3a428bc..9fec3dd 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/TrackLocationTask.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/cutscene/tasks/TrackLocationTask.java @@ -1,10 +1,10 @@ package me.unurled.sacredrealms.sr.components.cutscene.tasks; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.cutscene.RecordingManager; import me.unurled.sacredrealms.sr.components.cutscene.recording.Recording; import me.unurled.sacredrealms.sr.components.cutscene.recording.recordables.DespawnEntityRecordable; import me.unurled.sacredrealms.sr.components.cutscene.recording.recordables.LocationChangeRecordable; +import me.unurled.srcore.api.Manager; import org.bukkit.Bukkit; import org.bukkit.entity.Entity; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/difficulty/Difficulty.java b/src/main/java/me/unurled/sacredrealms/sr/components/difficulty/Difficulty.java index 6bfca33..f2321be 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/difficulty/Difficulty.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/difficulty/Difficulty.java @@ -1,6 +1,6 @@ package me.unurled.sacredrealms.sr.components.difficulty; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.textComp; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.format.NamedTextColor; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/entity/EntityManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/entity/EntityManager.java index c2131ae..3640e22 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/entity/EntityManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/entity/EntityManager.java @@ -8,13 +8,13 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.UUID; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.attributes.Attribute; import me.unurled.sacredrealms.sr.components.item.ItemStackDeserializer; import me.unurled.sacredrealms.sr.components.item.ItemStackSerializer; import me.unurled.sacredrealms.sr.components.player.PotionEffectDeserializer; import me.unurled.sacredrealms.sr.data.DataHandler; import me.unurled.sacredrealms.sr.data.DataManager; +import me.unurled.srcore.api.Manager; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/entity/SREntity.java b/src/main/java/me/unurled/sacredrealms/sr/components/entity/SREntity.java index b1e40c5..d7dfe20 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/entity/SREntity.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/entity/SREntity.java @@ -1,6 +1,6 @@ package me.unurled.sacredrealms.sr.components.entity; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.textComp; import java.util.UUID; import me.unurled.sacredrealms.sr.components.attributes.Attribute; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/item/Item.java b/src/main/java/me/unurled/sacredrealms/sr/components/item/Item.java index b119533..c2028e6 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/item/Item.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/item/Item.java @@ -1,8 +1,8 @@ package me.unurled.sacredrealms.sr.components.item; +import static me.unurled.srcore.utils.Component.textComp; import static me.unurled.sacredrealms.sr.utils.Items.lore; import static me.unurled.sacredrealms.sr.utils.Logger.error; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; import com.google.gson.Gson; import com.google.gson.GsonBuilder; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/item/ItemManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/item/ItemManager.java index 6ba4a85..b4319f0 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/item/ItemManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/item/ItemManager.java @@ -6,9 +6,9 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.util.HashMap; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.data.DataHandler; import me.unurled.sacredrealms.sr.data.DataManager; +import me.unurled.srcore.api.Manager; import org.bukkit.NamespacedKey; import org.bukkit.inventory.ItemStack; import org.bukkit.persistence.PersistentDataType; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/npc/NPCManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/npc/NPCManager.java index 98d3501..e0a1af4 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/npc/NPCManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/npc/NPCManager.java @@ -1,14 +1,13 @@ package me.unurled.sacredrealms.sr.components.npc; + import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.UUID; -import lol.pyr.znpcsplus.api.NpcApi; -import lol.pyr.znpcsplus.api.NpcApiProvider; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; import me.unurled.sacredrealms.sr.utils.ChunkWrapper; +import me.unurled.srcore.api.Manager; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.world.ChunkLoadEvent; @@ -18,19 +17,6 @@ public class NPCManager extends Manager { private final Map> npcPerChunk = new HashMap<>(); public Map npcs = new HashMap<>(); - private NpcApi ncpApi; - - @Override - public void load() { - super.load(); - ncpApi = NpcApiProvider.get(); - } - - @Override - public void unload() { - super.unload(); - ncpApi = null; - } public void register(@NotNull NPCEntity entity) { // TODO: Register the entity @@ -55,7 +41,7 @@ public class NPCManager extends Manager { } public void addEntity(NPCEntity entity) { - // npcs.put(entity.getEntity().getUniqueId(), entity); +// npcs.put(entity.getEntity().getUniqueId(), entity); } @EventHandler @@ -66,7 +52,7 @@ public class NPCManager extends Manager { } Bukkit.getScheduler() .scheduleSyncDelayedTask( - SR.plugin(), + SR.getPlugin(), () -> { HashSet npc = npcPerChunk.get(cw); for (NPCEntity entity : npc) { diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/pack/ResourcePackManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/pack/ResourcePackManager.java index 8f3863c..dbcf52e 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/pack/ResourcePackManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/pack/ResourcePackManager.java @@ -12,13 +12,13 @@ import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.util.UUID; import java.util.zip.ZipOutputStream; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; import me.unurled.sacredrealms.sr.components.pack.hosts.HostingProvider; import me.unurled.sacredrealms.sr.components.pack.hosts.RustProvider; import me.unurled.sacredrealms.sr.config.Settings; import me.unurled.sacredrealms.sr.data.DataHandler; import me.unurled.sacredrealms.sr.data.DataManager; +import me.unurled.srcore.api.Manager; import org.bukkit.Bukkit; import org.jetbrains.annotations.NotNull; @@ -36,17 +36,18 @@ public class ResourcePackManager extends Manager { @NotNull private static File packFile(String fileName) { try { - new File(SR.plugin().getDataFolder(), "pack").mkdirs(); + new File(SR.getPlugin().getDataFolder(), "pack").mkdirs(); String[] filesInclude = {"assets", "pack.mcmeta"}; - FileOutputStream fos = new FileOutputStream(new File(SR.plugin().getDataFolder(), fileName)); + FileOutputStream fos = + new FileOutputStream(new File(SR.getPlugin().getDataFolder(), fileName)); ZipOutputStream zipOut = new ZipOutputStream(fos); zipOut.setLevel(9); for (String filePath : filesInclude) { - File fileToZip = new File(SR.plugin().getDataFolder() + "/pack", filePath); + File fileToZip = new File(SR.getPlugin().getDataFolder() + "/pack", filePath); if (fileToZip.isDirectory()) { zipDirectory(fileToZip, fileToZip.getName(), zipOut); } else { @@ -59,7 +60,7 @@ public class ResourcePackManager extends Manager { } catch (IOException e) { error("Failed to create resource pack"); } - return new File(SR.plugin().getDataFolder(), fileName); + return new File(SR.getPlugin().getDataFolder(), fileName); } /** Save the data */ @@ -99,7 +100,7 @@ public class ResourcePackManager extends Manager { public void uploadAsync(final File file) { Bukkit.getScheduler() .runTaskAsynchronously( - SR.plugin(), + SR.getPlugin(), () -> { // start the call boolean success; @@ -119,13 +120,13 @@ public class ResourcePackManager extends Manager { @Override public void load() { super.load(); - String zipPath = SR.plugin().getDataFolder() + "/" + RESOURCE_PACK_ZIP; + String zipPath = SR.getPlugin().getDataFolder() + "/" + RESOURCE_PACK_ZIP; Bukkit.getScheduler() .runTaskAsynchronously( - SR.plugin(), + SR.getPlugin(), () -> { - if (new File(SR.plugin().getDataFolder(), "pack").exists() + if (new File(SR.getPlugin().getDataFolder(), "pack").exists() && new File(zipPath).exists()) { log("Resource pack exists"); // create a new zip with files diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/pack/animatedjava/AnimatedJavaManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/pack/animatedjava/AnimatedJavaManager.java index dbbafe4..46b444c 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/pack/animatedjava/AnimatedJavaManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/pack/animatedjava/AnimatedJavaManager.java @@ -1,5 +1,5 @@ package me.unurled.sacredrealms.sr.components.pack.animatedjava; -import me.unurled.sacredrealms.sr.Manager; +import me.unurled.srcore.api.Manager; public class AnimatedJavaManager extends Manager {} diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/pack/background/BackgroundManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/pack/background/BackgroundManager.java index ec3801a..05fbcaf 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/pack/background/BackgroundManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/pack/background/BackgroundManager.java @@ -5,10 +5,10 @@ import static me.unurled.sacredrealms.sr.utils.Logger.warn; import java.io.File; import java.util.HashMap; import java.util.Map; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; import me.unurled.sacredrealms.sr.utils.character.CharacterArranger; import me.unurled.sacredrealms.sr.utils.character.ConfiguredChar; +import me.unurled.srcore.api.Manager; import org.jetbrains.annotations.NotNull; public class BackgroundManager extends Manager { @@ -21,7 +21,7 @@ public class BackgroundManager extends Manager { @Override public void loadData() { - File bgFolder = new File(SR.plugin().getDataFolder(), "backgrounds"); + File bgFolder = new File(SR.getPlugin().getDataFolder(), "backgrounds"); if (!bgFolder.exists() && bgFolder.mkdirs()) { saveDefaultBackgrounds(); } @@ -133,7 +133,7 @@ public class BackgroundManager extends Manager { private void saveDefaultBackgrounds() { String[] bgList = new String[] {"b0", "b1", "b2", "b4", "b8", "b16", "b32", "b64", "b128"}; for (String bg : bgList) { - SR.plugin().saveResource("backgrounds" + File.separator + bg + ".png", false); + SR.getPlugin().saveResource("backgrounds" + File.separator + bg + ".png", false); } } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/packet/PacketManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/packet/PacketManager.java index 791c054..1f57cc9 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/packet/PacketManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/packet/PacketManager.java @@ -2,7 +2,7 @@ package me.unurled.sacredrealms.sr.components.packet; import com.github.retrooper.packetevents.PacketEvents; import com.github.retrooper.packetevents.wrapper.PacketWrapper; -import me.unurled.sacredrealms.sr.Manager; +import me.unurled.srcore.api.Manager; import org.bukkit.entity.Player; public class PacketManager extends Manager { diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/player/PlayerManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/player/PlayerManager.java index b92f6a9..9a9f7a9 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/player/PlayerManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/player/PlayerManager.java @@ -3,7 +3,7 @@ package me.unurled.sacredrealms.sr.components.player; import static me.unurled.sacredrealms.sr.utils.Logger.error; import static me.unurled.sacredrealms.sr.utils.Logger.log; import static me.unurled.sacredrealms.sr.utils.SRPlayerUtils.updateActionBar; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.textComp; import com.destroystokyo.paper.event.player.PlayerArmorChangeEvent; import com.google.gson.Gson; @@ -11,13 +11,13 @@ import com.google.gson.GsonBuilder; import java.net.URI; import java.util.HashMap; import java.util.UUID; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; import me.unurled.sacredrealms.sr.components.pack.ResourcePackManager; import me.unurled.sacredrealms.sr.data.DataHandler; import me.unurled.sacredrealms.sr.data.DataManager; import me.unurled.sacredrealms.sr.events.player.PlayerLevelUpEvent; import me.unurled.sacredrealms.sr.utils.Items; +import me.unurled.srcore.api.Manager; import net.kyori.adventure.resource.ResourcePackInfo; import net.kyori.adventure.resource.ResourcePackRequest; import org.bukkit.Bukkit; @@ -139,7 +139,8 @@ public class PlayerManager extends Manager { // TODO: does not update when player health has changed for example BukkitTask task = Bukkit.getScheduler() - .runTaskTimerAsynchronously(SR.plugin(), () -> updateActionBar(e.getPlayer()), 0, 20L); + .runTaskTimerAsynchronously( + SR.getPlugin(), () -> updateActionBar(e.getPlayer()), 0, 20L); actionBarTasks.put(e.getPlayer().getUniqueId(), task); e.getPlayer().updateInventory(); @@ -258,7 +259,7 @@ public class PlayerManager extends Manager { public void levelUp(SRPlayer p, int previousLevel) { PlayerLevelUpEvent event = new PlayerLevelUpEvent(p, previousLevel); - Bukkit.getScheduler().runTaskAsynchronously(SR.plugin(), event::callEvent); + Bukkit.getScheduler().runTaskAsynchronously(SR.getPlugin(), event::callEvent); Player player = Bukkit.getPlayer(p.getUuid()); if (player != null) { player.sendMessage(event.getMessage()); diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/player/SRPlayer.java b/src/main/java/me/unurled/sacredrealms/sr/components/player/SRPlayer.java index b959aef..bc49cd5 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/player/SRPlayer.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/player/SRPlayer.java @@ -10,11 +10,11 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.attributes.Attribute; import me.unurled.sacredrealms.sr.components.difficulty.Difficulty; import me.unurled.sacredrealms.sr.components.item.Item; import me.unurled.sacredrealms.sr.events.player.PlayerKillEvent; +import me.unurled.srcore.api.Manager; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/player/listener/PlayerBlockEvent.java b/src/main/java/me/unurled/sacredrealms/sr/components/player/listener/PlayerBlockEvent.java index 9d4d6a9..84f5c4d 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/player/listener/PlayerBlockEvent.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/player/listener/PlayerBlockEvent.java @@ -1,8 +1,8 @@ package me.unurled.sacredrealms.sr.components.player.listener; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.player.PlayerManager; import me.unurled.sacredrealms.sr.components.player.SRPlayer; +import me.unurled.srcore.api.Manager; import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.Player; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/pointer/DisplayForPlayer.java b/src/main/java/me/unurled/sacredrealms/sr/components/pointer/DisplayForPlayer.java new file mode 100644 index 0000000..5edfb8c --- /dev/null +++ b/src/main/java/me/unurled/sacredrealms/sr/components/pointer/DisplayForPlayer.java @@ -0,0 +1,107 @@ +package me.unurled.sacredrealms.sr.components.pointer; + +import com.github.retrooper.packetevents.PacketEvents; +import com.github.retrooper.packetevents.protocol.entity.data.EntityData; +import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import com.github.retrooper.packetevents.protocol.player.User; +import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerEntityMetadata; +import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnEntity; +import io.github.retrooper.packetevents.util.SpigotConversionUtil; +import java.util.ArrayList; +import java.util.List; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.BlockState; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.joml.Vector3f; + +// TODO: test this +public class DisplayForPlayer implements Runnable { + + private static final int RENDER_DISTANCE_BLOCKS = 128; + + private final Pointer pointer; + private final Player player; + private final User user; + + public DisplayForPlayer(Pointer pointer, Player player) { + this.pointer = pointer; + this.player = player; + this.user = PacketEvents.getAPI().getPlayerManager().getUser(player); + } + + public static Location getLocationInRange(@NotNull Player player, Location targetLocation) { + Location playerLocation = player.getLocation(); + + // Calculate the distance between player and target location + double distance = playerLocation.distance(targetLocation); + + // If the location is within the render distance, return the original location + if (distance <= RENDER_DISTANCE_BLOCKS) { + return targetLocation; + } + + // If the location is out of range, calculate a new location within the render distance + // Calculate the direction vector from the player to the target + Location direction = + targetLocation + .clone() + .subtract(playerLocation) + .toVector() + .normalize() + .toLocation(player.getWorld()); + + // Create a new location within the render distance pointing towards the target location + return playerLocation.clone().add(direction.multiply(RENDER_DISTANCE_BLOCKS)); + } + + @Override + public void run() { + // get difference between player loc and pointer loc, if it is too large then set pointer + // blockdisplay's location to in range of player + + Location location = getLocationInRange(player, pointer.location()); + + WrapperPlayServerSpawnEntity packet = + new WrapperPlayServerSpawnEntity( + pointer.entityId(), + pointer.entityUUID(), + SpigotConversionUtil.fromBukkitEntityType(EntityType.BLOCK_DISPLAY), + SpigotConversionUtil.fromBukkitLocation(location), + 0, + 0, + null); + + user.sendPacket(packet); + + List list = new ArrayList<>(); + + BlockState ironBar = + player + .getWorld() + .getBlockAt(new Location(player.getWorld(), 0, 0, 0)) + .getState() + .getBlockData() + .createBlockState(); + ironBar.setType(Material.IRON_BARS); + + // make it iron bars + EntityData data = new EntityData(23, EntityDataTypes.BLOCK_STATE, ironBar); + list.add(data); + + // scale + EntityData data2 = new EntityData(12, EntityDataTypes.VECTOR3F, new Vector3f(2, 150, 2)); + list.add(data2); + + // glowing + EntityData glowing = new EntityData(0, EntityDataTypes.BYTE, (byte) 0x40); + list.add(glowing); + + WrapperPlayServerEntityMetadata packet1 = + new WrapperPlayServerEntityMetadata(pointer.entityId(), list); + + user.sendPacket(packet1); + } +} diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/pointer/Pointer.java b/src/main/java/me/unurled/sacredrealms/sr/components/pointer/Pointer.java new file mode 100644 index 0000000..d378a28 --- /dev/null +++ b/src/main/java/me/unurled/sacredrealms/sr/components/pointer/Pointer.java @@ -0,0 +1,54 @@ +package me.unurled.sacredrealms.sr.components.pointer; + +import java.util.UUID; +import org.bukkit.Location; +import org.bukkit.entity.BlockDisplay; + +public class Pointer { + + private final Location location; + private final int entityId; + private BlockDisplay display; + private UUID entityUUID; + private Location entityLocation; + + public Pointer(int entityId, Location location) { + this.entityId = entityId; + this.location = location; + } + + public Location location() { + return location; + } + + public int entityId() { + return entityId; + } + + public BlockDisplay display() { + return display; + } + + public Pointer setDisplay(BlockDisplay display) { + this.display = display; + return this; + } + + public UUID entityUUID() { + return entityUUID; + } + + public Pointer setEntityUUID(UUID entityUUID) { + this.entityUUID = entityUUID; + return this; + } + + public Location entityLocation() { + return entityLocation; + } + + public Pointer setEntityLocation(Location entityLocation) { + this.entityLocation = entityLocation; + return this; + } +} diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/pointer/PointerManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/pointer/PointerManager.java new file mode 100644 index 0000000..323ecd0 --- /dev/null +++ b/src/main/java/me/unurled/sacredrealms/sr/components/pointer/PointerManager.java @@ -0,0 +1,41 @@ +package me.unurled.sacredrealms.sr.components.pointer; + +import static me.unurled.sacredrealms.sr.utils.Logger.error; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicInteger; +import me.unurled.sacredrealms.sr.SR; +import me.unurled.srcore.api.Manager; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitTask; + +public class PointerManager extends Manager { + + private final Map tasks = new HashMap<>(); + + public void startPointing(Player player, Location location) { + int id = -1; + try { + Class entityClass = Class.forName("net.minecraft.world.entity.Entity"); + Field field = entityClass.getDeclaredField("ENTITY_COUNTER"); + field.setAccessible(true); + AtomicInteger ENTITY_COUNTER = (AtomicInteger) field.get(null); + id = ENTITY_COUNTER.incrementAndGet(); + } catch (Exception e) { + error("Failed to find Entity counter field in nms."); + } + if (id == -1) { + return; + } + Pointer pointer = new Pointer(id, location); + DisplayForPlayer task = new DisplayForPlayer(pointer, player); + BukkitTask btask = + Bukkit.getScheduler().runTaskTimerAsynchronously(SR.getPlugin(), task, 0, 5L); + tasks.put(player.getUniqueId(), btask); + } +} diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/translation/TranslationManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/translation/TranslationManager.java deleted file mode 100644 index 37cba64..0000000 --- a/src/main/java/me/unurled/sacredrealms/sr/components/translation/TranslationManager.java +++ /dev/null @@ -1,29 +0,0 @@ -package me.unurled.sacredrealms.sr.components.translation; - -import java.util.Locale; -import java.util.ResourceBundle; -import me.unurled.sacredrealms.sr.Manager; -import net.kyori.adventure.key.Key; -import net.kyori.adventure.translation.GlobalTranslator; -import net.kyori.adventure.translation.TranslationRegistry; -import net.kyori.adventure.util.UTF8ResourceBundleControl; - -public class TranslationManager extends Manager { - private TranslationRegistry registry; - - @Override - public void load() { - super.load(); - registry = TranslationRegistry.create(Key.key("sr:translations")); - ResourceBundle bundle = - ResourceBundle.getBundle("sr.Bundle", Locale.US, UTF8ResourceBundleControl.get()); - registry.registerAll(Locale.US, bundle, true); - GlobalTranslator.translator().addSource(registry); - } - - @Override - public void unload() { - super.unload(); - GlobalTranslator.translator().removeSource(registry); - } -} diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/treasure/Treasure.java b/src/main/java/me/unurled/sacredrealms/sr/components/treasure/Treasure.java index e0f14d8..7c837fe 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/treasure/Treasure.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/treasure/Treasure.java @@ -1,6 +1,6 @@ package me.unurled.sacredrealms.sr.components.treasure; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.textComp; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/treasure/TreasureGenerator.java b/src/main/java/me/unurled/sacredrealms/sr/components/treasure/TreasureGenerator.java index 379fcca..2acfc81 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/treasure/TreasureGenerator.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/treasure/TreasureGenerator.java @@ -7,12 +7,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.attributes.Attribute; import me.unurled.sacredrealms.sr.components.item.Item; import me.unurled.sacredrealms.sr.components.item.ItemManager; import me.unurled.sacredrealms.sr.components.item.Rarity; import me.unurled.sacredrealms.sr.components.player.SRPlayer; +import me.unurled.srcore.api.Manager; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/treasure/TreasureManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/treasure/TreasureManager.java index dd13a20..ddab63a 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/components/treasure/TreasureManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/components/treasure/TreasureManager.java @@ -1,8 +1,8 @@ package me.unurled.sacredrealms.sr.components.treasure; +import static me.unurled.srcore.utils.Component.textComp; import static me.unurled.sacredrealms.sr.utils.Logger.error; import static me.unurled.sacredrealms.sr.utils.Logger.log; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -13,11 +13,11 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.annotation.Nullable; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.player.PlayerManager; import me.unurled.sacredrealms.sr.components.player.SRPlayer; import me.unurled.sacredrealms.sr.data.DataHandler; import me.unurled.sacredrealms.sr.data.DataManager; +import me.unurled.srcore.api.Manager; import org.bukkit.Chunk; import org.bukkit.Location; import org.bukkit.Material; diff --git a/src/main/java/me/unurled/sacredrealms/sr/config/ConfigManager.java b/src/main/java/me/unurled/sacredrealms/sr/config/ConfigManager.java index dbabc1a..e0b3da9 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/config/ConfigManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/config/ConfigManager.java @@ -1,8 +1,8 @@ package me.unurled.sacredrealms.sr.config; import java.io.File; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; +import me.unurled.srcore.api.Manager; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; @@ -14,12 +14,12 @@ public class ConfigManager extends Manager { /** Load the data */ @Override public void loadData() { - if (!SR.plugin().getDataFolder().exists()) { - SR.plugin().getDataFolder().mkdirs(); + if (!SR.getPlugin().getDataFolder().exists()) { + SR.getPlugin().getDataFolder().mkdirs(); } - File configFile = new File(SR.plugin().getDataFolder(), CONFIG_YML); + File configFile = new File(SR.getPlugin().getDataFolder(), CONFIG_YML); if (!configFile.exists()) { - SR.plugin().saveResource(CONFIG_YML, false); + SR.getPlugin().saveResource(CONFIG_YML, false); config = YamlConfiguration.loadConfiguration(configFile); } config = YamlConfiguration.loadConfiguration(configFile); @@ -27,10 +27,10 @@ public class ConfigManager extends Manager { @Override public void saveData() { - if (!new File(SR.plugin().getDataFolder() + CONFIG_YML).exists()) { - SR.plugin().saveDefaultConfig(); + if (!new File(SR.getPlugin().getDataFolder() + CONFIG_YML).exists()) { + SR.getPlugin().saveDefaultConfig(); } else { - SR.plugin().saveConfig(); + SR.getPlugin().saveConfig(); } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/config/Settings.java b/src/main/java/me/unurled/sacredrealms/sr/config/Settings.java index 2c9d6bd..1aaa130 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/config/Settings.java +++ b/src/main/java/me/unurled/sacredrealms/sr/config/Settings.java @@ -4,8 +4,8 @@ import static me.unurled.sacredrealms.sr.utils.Logger.error; import java.io.File; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; +import me.unurled.srcore.api.Manager; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.configuration.ConfigurationSection; @@ -37,9 +37,9 @@ public enum Settings { } public void setValue(Object value) { - SR.plugin().getConfig().set(path, value); + SR.getPlugin().getConfig().set(path, value); try { - SR.plugin().getConfig().save(new File(SR.plugin().getDataFolder(), "config.yml")); + SR.getPlugin().getConfig().save(new File(SR.getPlugin().getDataFolder(), "config.yml")); } catch (Exception e) { error("Failed to save config.yml"); } diff --git a/src/main/java/me/unurled/sacredrealms/sr/data/DataManager.java b/src/main/java/me/unurled/sacredrealms/sr/data/DataManager.java index ee94762..11a3d10 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/data/DataManager.java +++ b/src/main/java/me/unurled/sacredrealms/sr/data/DataManager.java @@ -1,6 +1,6 @@ package me.unurled.sacredrealms.sr.data; -import me.unurled.sacredrealms.sr.Manager; +import me.unurled.srcore.api.Manager; /** The data and config manager */ public class DataManager extends Manager { diff --git a/src/main/java/me/unurled/sacredrealms/sr/data/Redis.java b/src/main/java/me/unurled/sacredrealms/sr/data/Redis.java index 866fa1e..15342f3 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/data/Redis.java +++ b/src/main/java/me/unurled/sacredrealms/sr/data/Redis.java @@ -3,10 +3,10 @@ package me.unurled.sacredrealms.sr.data; import static me.unurled.sacredrealms.sr.utils.Logger.error; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; import me.unurled.sacredrealms.sr.config.ConfigManager; import me.unurled.sacredrealms.sr.config.Settings; +import me.unurled.srcore.api.Manager; import org.jetbrains.annotations.NotNull; import redis.clients.jedis.JedisPooled; @@ -21,7 +21,7 @@ public class Redis implements DataHandler { Integer port = Settings.REDIS_PORT.toInt(); if (host == null || port == null) { error("Failed to get Redis host or port from config, shutting down server."); - SR.plugin().getServer().shutdown(); + SR.getPlugin().getServer().shutdown(); return; } try { @@ -29,11 +29,11 @@ public class Redis implements DataHandler { client.get("test"); } catch (Exception e) { error("Failed to connect to Redis, shutting down server."); - SR.plugin().getServer().shutdown(); + SR.getPlugin().getServer().shutdown(); } } else { error("Failed to get DataManager instance. Can't connect to Redis, shutting down server."); - SR.plugin().getServer().shutdown(); + SR.getPlugin().getServer().shutdown(); } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/events/player/PlayerLevelUpEvent.java b/src/main/java/me/unurled/sacredrealms/sr/events/player/PlayerLevelUpEvent.java index 84dfc3a..9234ba6 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/events/player/PlayerLevelUpEvent.java +++ b/src/main/java/me/unurled/sacredrealms/sr/events/player/PlayerLevelUpEvent.java @@ -1,6 +1,6 @@ package me.unurled.sacredrealms.sr.events.player; -import static me.unurled.sacredrealms.sr.utils.component.Component.comp; +import static me.unurled.srcore.utils.Component.comp; import me.unurled.sacredrealms.sr.components.player.SRPlayer; import net.kyori.adventure.text.Component; diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/BackItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/BackItem.java index 048a115..77b8bd3 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/BackItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/BackItem.java @@ -1,34 +1,26 @@ package me.unurled.sacredrealms.sr.gui; import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; -import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractPagedGuiBoundItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.gui.PagedGui; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.controlitem.PageItem; -public class BackItem extends AbstractPagedGuiBoundItem { +public class BackItem extends PageItem { - public BackItem() {} - - @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { - ItemBuilder builder = new ItemBuilder(Material.RED_STAINED_GLASS_PANE); - builder - .setCustomName("§cPrevious Page") - .addLoreLines( - this.getGui().getPage() > 1 - ? "§7Go to page §e" - + this.getGui().getPage() - + "§7/§e" - + this.getGui().getPageCount() - : "§cYou can't go further back"); - return builder; + public BackItem() { + super(false); } @Override - public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) {} + public ItemProvider getItemProvider(PagedGui gui) { + ItemBuilder builder = new ItemBuilder(Material.RED_STAINED_GLASS_PANE); + builder + .setDisplayName("§cPrevious Page") + .addLoreLines( + gui.hasPreviousPage() + ? "§7Go to page §e" + gui.getCurrentPage() + "§7/§e" + gui.getPageAmount() + : "§cYou can't go further back"); + return builder; + } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/ForwardItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/ForwardItem.java index 970b711..e26666f 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/ForwardItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/ForwardItem.java @@ -1,37 +1,27 @@ package me.unurled.sacredrealms.sr.gui; -import static me.unurled.sacredrealms.sr.utils.component.Component.comp; - import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; -import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractPagedGuiBoundItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.gui.PagedGui; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.controlitem.PageItem; -public class ForwardItem extends AbstractPagedGuiBoundItem { +public class ForwardItem extends PageItem { - public ForwardItem() {} - - @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player player) { - ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE); - builder - .setCustomName(comp("Next page")) - .addLoreLines( - this.getGui().getPage() + 1 < this.getGui().getPageCount() - ? comp( - "Go to page §e" - + (this.getGui().getPage() + 2) - + "§7/§e" - + this.getGui().getPageCount()) - : comp("There are no more pages")); - - return builder; + public ForwardItem() { + super(true); } @Override - public void handleClick(ClickType clickType, Player player, Click click) {} + public ItemProvider getItemProvider(PagedGui gui) { + ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE); + builder + .setDisplayName("§7Next page") + .addLoreLines( + gui.hasNextPage() + ? "§7Go to page §e" + (gui.getCurrentPage() + 2) + "§7/§e" + gui.getPageAmount() + : "§cThere are no more pages"); + + return builder; + } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/attributes/AttributeItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/attributes/AttributeItem.java index 53d3eb5..87d40b4 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/attributes/AttributeItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/attributes/AttributeItem.java @@ -1,20 +1,24 @@ package me.unurled.sacredrealms.sr.gui.attributes; +import static me.unurled.srcore.utils.Component.comp; import static me.unurled.sacredrealms.sr.utils.SRPlayerUtils.syncSRToPlayer; -import static me.unurled.sacredrealms.sr.utils.component.Component.comp; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.attributes.Attribute; import me.unurled.sacredrealms.sr.components.player.PlayerManager; import me.unurled.sacredrealms.sr.components.player.SRPlayer; +import me.unurled.srcore.api.Manager; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.inventoryaccess.component.AdventureComponentWrapper; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class AttributeItem extends AbstractItem { @@ -27,8 +31,15 @@ public class AttributeItem extends AbstractItem { this.targetPlayer = target; } + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { + public ItemProvider getItemProvider() { + double value = 0; if (targetPlayer != null) { @@ -39,27 +50,38 @@ public class AttributeItem extends AbstractItem { ItemBuilder ip = switch (attribute) { - case STRENGTH -> new ItemBuilder(Material.IRON_SWORD).setCustomName("Strength " + value); - case AGILITY -> new ItemBuilder(Material.BOW).setCustomName("Agility " + value); - case MANA -> new ItemBuilder(Material.ENCHANTING_TABLE).setCustomName("Mana " + value); - case HEALTH -> new ItemBuilder(Material.GOLDEN_APPLE).setCustomName("Health " + value); + case STRENGTH -> new ItemBuilder(Material.IRON_SWORD).setDisplayName("Strength " + value); + case AGILITY -> new ItemBuilder(Material.BOW).setDisplayName("Agility " + value); + case MANA -> new ItemBuilder(Material.ENCHANTING_TABLE).setDisplayName("Mana " + value); + case HEALTH -> new ItemBuilder(Material.GOLDEN_APPLE).setDisplayName("Health " + value); case LUCK -> - new ItemBuilder(Material.ENCHANTED_GOLDEN_APPLE).setCustomName("Luck " + value); - case DEFENSE -> new ItemBuilder(Material.SHIELD).setCustomName("Defense " + value); - case CHARISMA -> new ItemBuilder(Material.PLAYER_HEAD).setCustomName("Charisma " + value); + new ItemBuilder(Material.ENCHANTED_GOLDEN_APPLE).setDisplayName("Luck " + value); + case DEFENSE -> new ItemBuilder(Material.SHIELD).setDisplayName("Defense " + value); + case CHARISMA -> + new ItemBuilder(Material.PLAYER_HEAD).setDisplayName("Charisma " + value); }; - ip.addLoreLines(comp("+1 Left Click to increase")); - ip.addLoreLines(comp("-1 Right Click to decrease")); - ip.addLoreLines(comp("Shift + Left Click to increase by 10")); - ip.addLoreLines(comp("Shift + Right Click to decrease by 10")); + ip.addLoreLines(new AdventureComponentWrapper(comp("+1 Left Click to increase"))); + ip.addLoreLines(new AdventureComponentWrapper(comp("-1 Right Click to decrease"))); + ip.addLoreLines( + new AdventureComponentWrapper(comp("Shift + Left Click to increase by 10"))); + ip.addLoreLines( + new AdventureComponentWrapper(comp("Shift + Right Click to decrease by 10"))); return ip; } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { if (targetPlayer != null) { PlayerManager playerManager = Manager.getInstance(PlayerManager.class); diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/attributes/AttributesGUI.java b/src/main/java/me/unurled/sacredrealms/sr/gui/attributes/AttributesGUI.java index 012b74c..781acc5 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/attributes/AttributesGUI.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/attributes/AttributesGUI.java @@ -1,6 +1,6 @@ package me.unurled.sacredrealms.sr.gui.attributes; -import static me.unurled.sacredrealms.sr.utils.component.Component.comp; +import static me.unurled.srcore.utils.Component.comp; import me.unurled.sacredrealms.sr.components.attributes.Attribute; import org.bukkit.Material; @@ -8,8 +8,9 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.SkullMeta; import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.gui.Gui.Builder; +import xyz.xenondevs.invui.gui.Gui.Builder.Normal; import xyz.xenondevs.invui.item.Item; +import xyz.xenondevs.invui.item.impl.SimpleItem; public class AttributesGUI { @@ -19,9 +20,9 @@ public class AttributesGUI { tMeta.setOwningPlayer(target); tMeta.displayName(comp(target.getName())); t.setItemMeta(tMeta); - Item head = Item.simple(t); - Builder gui = - Gui.builder() + Item head = new SimpleItem(t); + Normal gui = + Gui.normal() .setStructure(".........", "....h....", ".........", ".0123456.") .addIngredient('h', head); for (int i = 0; i < Attribute.values().length; i++) { diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/difficulty/DifficultyGUI.java b/src/main/java/me/unurled/sacredrealms/sr/gui/difficulty/DifficultyGUI.java index 3da1266..6b6544b 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/difficulty/DifficultyGUI.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/difficulty/DifficultyGUI.java @@ -6,15 +6,16 @@ import static me.unurled.sacredrealms.sr.utils.Items.glassPane; import me.unurled.sacredrealms.sr.components.difficulty.Difficulty; import org.jetbrains.annotations.NotNull; import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.gui.Gui.Builder; +import xyz.xenondevs.invui.gui.Gui.Builder.Normal; import xyz.xenondevs.invui.item.Item; +import xyz.xenondevs.invui.item.impl.SimpleItem; public class DifficultyGUI { public static @NotNull Gui createGui() { - Item cancel = Item.simple(cancelItem()); - Item glass = Item.simple(glassPane()); - Builder gui = - Gui.builder() + Item cancel = new SimpleItem(cancelItem()); + Item glass = new SimpleItem(glassPane()); + Normal gui = + Gui.normal() .setStructure(".........", "..1.2.3..", "....4....", "....5....") .addIngredient('5', cancel) .addIngredient('.', glass) diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/difficulty/DifficultyItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/difficulty/DifficultyItem.java index 0160ca3..c7bdad1 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/difficulty/DifficultyItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/difficulty/DifficultyItem.java @@ -1,17 +1,20 @@ package me.unurled.sacredrealms.sr.gui.difficulty; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.difficulty.Difficulty; import me.unurled.sacredrealms.sr.components.player.PlayerManager; import me.unurled.sacredrealms.sr.components.player.SRPlayer; +import me.unurled.srcore.api.Manager; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class DifficultyItem extends AbstractItem { @@ -21,12 +24,18 @@ public class DifficultyItem extends AbstractItem { this.difficulty = difficulty; } + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { + public ItemProvider getItemProvider() { return switch (difficulty) { case EASY -> new ItemBuilder(Material.BREAD) - .setCustomName("Easy") + .setDisplayName("Easy") .addLoreLines( "Is you are a new player or", "someone who just want to", @@ -35,7 +44,7 @@ public class DifficultyItem extends AbstractItem { "Click Here!"); case NORMAL -> new ItemBuilder(Material.GRASS_BLOCK) - .setCustomName("Normal") + .setDisplayName("Normal") .addLoreLines( "Is you are a regular player", "who want to enjoy the game", @@ -44,7 +53,7 @@ public class DifficultyItem extends AbstractItem { "Click Here!"); case HARD -> new ItemBuilder(Material.DIAMOND_SWORD) - .setCustomName("Hard") + .setDisplayName("Hard") .addLoreLines( "Is you are a hardcore player", "who want to enjoy the game", @@ -53,7 +62,7 @@ public class DifficultyItem extends AbstractItem { "Click Here!"); case INSANE -> new ItemBuilder(Material.NETHERITE_SWORD) - .setCustomName("Insane") + .setDisplayName("Insane") .addLoreLines( "Is you are a pro player", "who want to enjoy the game", @@ -64,9 +73,18 @@ public class DifficultyItem extends AbstractItem { }; } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { + // Set the player's difficulty PlayerManager pm = Manager.getInstance(PlayerManager.class); if (pm.isSRPlayer(player.getUniqueId())) { SRPlayer sr = pm.getPlayer(player.getUniqueId()); diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityArmorItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityArmorItem.java index 230c3fc..23f071d 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityArmorItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityArmorItem.java @@ -8,12 +8,14 @@ import me.unurled.sacredrealms.sr.components.entity.SREntityType; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class EntityArmorItem extends AbstractItem { @@ -55,14 +57,28 @@ public class EntityArmorItem extends AbstractItem { } } + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { + public ItemProvider getItemProvider() { return new ItemBuilder(stack); } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { /* TODO need to implements this */ } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityBehaviorItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityBehaviorItem.java index f2a92d0..a8d9776 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityBehaviorItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityBehaviorItem.java @@ -4,11 +4,14 @@ import me.unurled.sacredrealms.sr.components.entity.SREntityType; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class EntityBehaviorItem extends AbstractItem { @@ -18,14 +21,28 @@ public class EntityBehaviorItem extends AbstractItem { // behavior = type.getBehavior(); } + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { - return new ItemBuilder(Material.NETHERITE_SWORD).setCustomName("Behavior: " + behavior); + public ItemProvider getItemProvider() { + return new ItemBuilder(Material.NETHERITE_SWORD).setDisplayName("Behavior: " + behavior); } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { /* TODO need to implements this */ } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityExpItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityExpItem.java index 5db2dfc..c1a9a55 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityExpItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityExpItem.java @@ -4,28 +4,45 @@ import me.unurled.sacredrealms.sr.components.entity.SREntityType; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class EntityExpItem extends AbstractItem { private final Long exp; - public EntityExpItem(@NotNull SREntityType type) { + public EntityExpItem(SREntityType type) { exp = type.getExperience(); } + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { - return new ItemBuilder(Material.EXPERIENCE_BOTTLE).setCustomName("Experience: " + exp); + public ItemProvider getItemProvider() { + return new ItemBuilder(Material.EXPERIENCE_BOTTLE).setDisplayName("Experience: " + exp); } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { /* TODO need to implements this */ } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityItemDisplay.java b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityItemDisplay.java index 09c0bff..e00bc8c 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityItemDisplay.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityItemDisplay.java @@ -4,11 +4,14 @@ import me.unurled.sacredrealms.sr.components.entity.SREntityType; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class EntityItemDisplay extends AbstractItem { @@ -18,14 +21,28 @@ public class EntityItemDisplay extends AbstractItem { name = type.getItem().getType().name(); } + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { - return new ItemBuilder(Material.CREEPER_SPAWN_EGG).setCustomName("Item Display: " + name); + public ItemProvider getItemProvider() { + return new ItemBuilder(Material.CREEPER_SPAWN_EGG).setDisplayName("Item Display: " + name); } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { /* TODO need to implements this */ } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityLevelItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityLevelItem.java index eb1c993..1b7b4e9 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityLevelItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityLevelItem.java @@ -4,28 +4,45 @@ import me.unurled.sacredrealms.sr.components.entity.SREntityType; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class EntityLevelItem extends AbstractItem { private final int level; - public EntityLevelItem(@NotNull SREntityType type) { + public EntityLevelItem(SREntityType type) { level = type.getLevel(); } + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { - return new ItemBuilder(Material.DIAMOND).setCustomName("Level: " + level); + public ItemProvider getItemProvider() { + return new ItemBuilder(Material.DIAMOND).setDisplayName("Level: " + level); } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { /* TODO need to implements this */ } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityLootItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityLootItem.java index fcb00c6..1f6c91c 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityLootItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityLootItem.java @@ -3,22 +3,39 @@ package me.unurled.sacredrealms.sr.gui.entitytype; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class EntityLootItem extends AbstractItem { + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { - return new ItemBuilder(Material.SKELETON_SKULL).setCustomName("Death Loot"); + public ItemProvider getItemProvider() { + return new ItemBuilder(Material.SKELETON_SKULL).setDisplayName("Death Loot"); } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { /* TODO need to implements this */ } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityNameItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityNameItem.java index dd9a2da..88eeffc 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityNameItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityNameItem.java @@ -4,28 +4,45 @@ import me.unurled.sacredrealms.sr.components.entity.SREntityType; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class EntityNameItem extends AbstractItem { private final String name; - public EntityNameItem(@NotNull SREntityType type) { + public EntityNameItem(SREntityType type) { name = type.getName(); } + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { - return new ItemBuilder(Material.NAME_TAG).setCustomName(name); + public ItemProvider getItemProvider() { + return new ItemBuilder(Material.NAME_TAG).setDisplayName(name); } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { /* TODO need to implements this */ } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityStatsItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityStatsItem.java index db80d22..677b056 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityStatsItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityStatsItem.java @@ -7,11 +7,14 @@ import me.unurled.sacredrealms.sr.components.entity.SREntityType; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class EntityStatsItem extends AbstractItem { @@ -21,18 +24,32 @@ public class EntityStatsItem extends AbstractItem { attributes = type.getAttributes(); } + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { - ItemBuilder builder = new ItemBuilder(Material.APPLE).setCustomName("Add Stats"); + public ItemProvider getItemProvider() { + ItemBuilder builder = new ItemBuilder(Material.APPLE).setDisplayName("Add Stats"); for (Entry entry : attributes.entrySet()) { builder.addLoreLines(entry.getKey().getName() + ": " + entry.getValue()); } return builder; } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { /* TODO need to implements this */ } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityTypeGUI.java b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityTypeGUI.java index 06b5891..87ebd7f 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityTypeGUI.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityTypeGUI.java @@ -2,18 +2,19 @@ package me.unurled.sacredrealms.sr.gui.entitytype; import java.util.ArrayList; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.entity.EntityManager; import me.unurled.sacredrealms.sr.components.entity.SREntityType; import me.unurled.sacredrealms.sr.gui.BackItem; import me.unurled.sacredrealms.sr.gui.ForwardItem; +import me.unurled.srcore.api.Manager; import org.bukkit.Material; import org.jetbrains.annotations.NotNull; import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.gui.Markers; import xyz.xenondevs.invui.gui.PagedGui; +import xyz.xenondevs.invui.gui.structure.Markers; import xyz.xenondevs.invui.item.Item; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.SimpleItem; public class EntityTypeGUI { private EntityTypeGUI() {} @@ -22,10 +23,10 @@ public class EntityTypeGUI { EntityManager em = Manager.getInstance(EntityManager.class); List list = new ArrayList<>(); for (SREntityType type : em.getTypes()) { - Item simpleItem = Item.simple(new ItemBuilder(type.getItem())); + SimpleItem simpleItem = new SimpleItem(new ItemBuilder(type.getItem())); list.add(simpleItem); } - return PagedGui.itemsBuilder() + return PagedGui.items() .setStructure( "# # # # # # # # #", "# X X X X X X X #", @@ -42,9 +43,9 @@ public class EntityTypeGUI { public static @NotNull Gui createGui(SREntityType type) { Item border = - Item.simple(new ItemBuilder(Material.BLACK_STAINED_GLASS_PANE).setCustomName("§r")); + new SimpleItem(new ItemBuilder(Material.BLACK_STAINED_GLASS_PANE).setDisplayName("§r")); - return Gui.builder() + return Gui.normal() .setStructure( "# # # # # # # # #", "# T V O I S N L #", // Type, behaVior, lOot, Item display, Stats, Name, Level diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityTypeItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityTypeItem.java index 5ae9863..8d2cb0c 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityTypeItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/entitytype/EntityTypeItem.java @@ -1,17 +1,20 @@ package me.unurled.sacredrealms.sr.gui.entitytype; -import static me.unurled.sacredrealms.sr.utils.component.Component.comp; +import static me.unurled.srcore.utils.Component.comp; import me.unurled.sacredrealms.sr.components.entity.SREntityType; import org.bukkit.Material; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class EntityTypeItem extends AbstractItem { @@ -21,21 +24,35 @@ public class EntityTypeItem extends AbstractItem { this.type = type.getType(); } + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { - return new ItemBuilder(Material.ZOMBIE_SPAWN_EGG).setCustomName(type.name()); + public ItemProvider getItemProvider() { + return new ItemBuilder(Material.ZOMBIE_SPAWN_EGG).setDisplayName(type.name()); } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { player.closeInventory(); player.sendMessage( comp( " entitytype edit " - + player.getOpenInventory().title() + + event.getView().title() + "type")); } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/recordings/CutsceneItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/recordings/CutsceneItem.java index 6a6b40d..bfa7c6f 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/recordings/CutsceneItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/recordings/CutsceneItem.java @@ -1,26 +1,25 @@ package me.unurled.sacredrealms.sr.gui.recordings; -import static me.unurled.sacredrealms.sr.utils.Logger.error; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.textComp; import java.util.UUID; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; import me.unurled.sacredrealms.sr.components.cutscene.Cutscene; import me.unurled.sacredrealms.sr.components.cutscene.CutsceneManager; import me.unurled.sacredrealms.sr.components.cutscene.RecordingManager; +import me.unurled.srcore.api.Manager; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.persistence.PersistentDataType; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; public class CutsceneItem extends AbstractItem { @@ -31,11 +30,11 @@ public class CutsceneItem extends AbstractItem { public CutsceneItem(String name, UUID uuid) { this.name = name; this.uuid = uuid; - ID = new NamespacedKey(SR.plugin(), "cutscene_id"); + ID = new NamespacedKey(SR.getPlugin(), "cutscene_id"); } @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { + public ItemProvider getItemProvider() { ItemStack itemStack = new ItemStack(Material.PAPER); ItemMeta itemMeta = itemStack.getItemMeta(); itemMeta.displayName(textComp(name)); @@ -47,22 +46,26 @@ public class CutsceneItem extends AbstractItem { @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { // get uuid - error( - "Click on CutsceneItem.java: " - + this.uuid - + " by " - + player.getName() - + " it may misfire or fire for the wrong cutscene, I am not sure about the uuid handling here."); - Cutscene cutscene = Manager.getInstance(CutsceneManager.class).findByUUID(this.uuid); + if (event.getCurrentItem() != null) { + String uuid = + event + .getCurrentItem() + .getItemMeta() + .getPersistentDataContainer() + .get(ID, PersistentDataType.STRING); - if (cutscene == null) { - player.sendMessage(textComp("Unexpected error.")); - return; - } - if (clickType.isLeftClick()) { - Manager.getInstance(RecordingManager.class).startRecording(cutscene, player); + Cutscene cutscene = + Manager.getInstance(CutsceneManager.class).findByUUID(UUID.fromString(uuid)); + + if (cutscene == null) { + player.sendMessage(textComp("Unexpected error.")); + return; + } + if (clickType.isLeftClick()) { + Manager.getInstance(RecordingManager.class).startRecording(cutscene, player); + } } } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/recordings/StartRecordingGui.java b/src/main/java/me/unurled/sacredrealms/sr/gui/recordings/StartRecordingGui.java index d2ee1ed..9d1bc47 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/recordings/StartRecordingGui.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/recordings/StartRecordingGui.java @@ -4,17 +4,17 @@ import static me.unurled.sacredrealms.sr.utils.Items.glassPane; import java.util.ArrayList; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.cutscene.Cutscene; import me.unurled.sacredrealms.sr.components.cutscene.CutsceneManager; import me.unurled.sacredrealms.sr.gui.BackItem; import me.unurled.sacredrealms.sr.gui.ForwardItem; +import me.unurled.srcore.api.Manager; import org.jetbrains.annotations.NotNull; import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.gui.Markers; import xyz.xenondevs.invui.gui.PagedGui; +import xyz.xenondevs.invui.gui.structure.Markers; import xyz.xenondevs.invui.item.Item; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.builder.ItemBuilder; public class StartRecordingGui { private StartRecordingGui() {} @@ -28,7 +28,7 @@ public class StartRecordingGui { items.add(item); } - return PagedGui.itemsBuilder() + return PagedGui.items() .setStructure( "# # # # # # # # #", "# X X X X X X X #", diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/replay/ReplayGui.java b/src/main/java/me/unurled/sacredrealms/sr/gui/replay/ReplayGui.java index fac0077..1e52604 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/replay/ReplayGui.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/replay/ReplayGui.java @@ -4,17 +4,17 @@ import static me.unurled.sacredrealms.sr.utils.Items.glassPane; import java.util.ArrayList; import java.util.List; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.cutscene.Replay; import me.unurled.sacredrealms.sr.components.cutscene.ReplayManager; import me.unurled.sacredrealms.sr.gui.BackItem; import me.unurled.sacredrealms.sr.gui.ForwardItem; +import me.unurled.srcore.api.Manager; import org.jetbrains.annotations.NotNull; import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.gui.Markers; import xyz.xenondevs.invui.gui.PagedGui; +import xyz.xenondevs.invui.gui.structure.Markers; import xyz.xenondevs.invui.item.Item; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.builder.ItemBuilder; public class ReplayGui { private ReplayGui() {} @@ -25,7 +25,7 @@ public class ReplayGui { List items = new ArrayList<>(); for (Replay r : rm.replays()) {} - return PagedGui.itemsBuilder() + return PagedGui.items() .setStructure( "# # # # # # # # #", "# X X X X X X X #", diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/replay/ReplayItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/replay/ReplayItem.java index 4fca36a..31a13ed 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/replay/ReplayItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/replay/ReplayItem.java @@ -1,26 +1,25 @@ package me.unurled.sacredrealms.sr.gui.replay; -import static me.unurled.sacredrealms.sr.utils.Logger.error; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.textComp; import java.util.UUID; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; import me.unurled.sacredrealms.sr.components.cutscene.Cutscene; import me.unurled.sacredrealms.sr.components.cutscene.CutsceneManager; import me.unurled.sacredrealms.sr.components.cutscene.RecordingManager; +import me.unurled.srcore.api.Manager; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.persistence.PersistentDataType; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; public class ReplayItem extends AbstractItem { private static NamespacedKey ID = null; @@ -28,13 +27,13 @@ public class ReplayItem extends AbstractItem { private final UUID uuid; public ReplayItem(String name, UUID uuid) { - ID = new NamespacedKey(SR.plugin(), "cutscene_id"); + ID = new NamespacedKey(SR.getPlugin(), "cutscene_id"); this.name = name; this.uuid = uuid; } @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { + public ItemProvider getItemProvider() { ItemStack itemStack = new ItemStack(Material.PAPER); ItemMeta itemMeta = itemStack.getItemMeta(); itemMeta.displayName(textComp(name)); @@ -45,26 +44,29 @@ public class ReplayItem extends AbstractItem { @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { - error( - "Click on CutsceneItem.java: " - + this.uuid - + " by " - + player.getName() - + " it may misfire or fire for the wrong cutscene, I am not sure about the uuid handling here."); + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { + if (event.getCurrentItem() != null) { + String uuid = + event + .getCurrentItem() + .getItemMeta() + .getPersistentDataContainer() + .get(ID, PersistentDataType.STRING); - if (uuid == null) { - return; - } + if (uuid == null) { + return; + } - Cutscene cutscene = Manager.getInstance(CutsceneManager.class).findByUUID(this.uuid); + Cutscene cutscene = + Manager.getInstance(CutsceneManager.class).findByUUID(UUID.fromString(uuid)); - if (cutscene == null) { - player.sendMessage(textComp("Unexpected error.")); - return; - } - if (clickType.isLeftClick()) { - Manager.getInstance(RecordingManager.class).startRecording(cutscene, player); + if (cutscene == null) { + player.sendMessage(textComp("Unexpected error.")); + return; + } + if (clickType.isLeftClick()) { + Manager.getInstance(RecordingManager.class).startRecording(cutscene, player); + } } } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/CancelItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/CancelItem.java index a719131..ba1f061 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/CancelItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/CancelItem.java @@ -2,26 +2,44 @@ package me.unurled.sacredrealms.sr.gui.treasure; import static me.unurled.sacredrealms.sr.utils.Items.cancelItem; +import me.unurled.sacredrealms.sr.components.treasure.Treasure; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class CancelItem extends AbstractItem { public CancelItem() {} + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { + public ItemProvider getItemProvider() { return new ItemBuilder(cancelItem()); } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { player.closeInventory(); } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/ConfirmItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/ConfirmItem.java index ec4f95c..12eaf59 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/ConfirmItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/ConfirmItem.java @@ -1,23 +1,25 @@ package me.unurled.sacredrealms.sr.gui.treasure; +import static me.unurled.srcore.utils.Component.textComp; import static me.unurled.sacredrealms.sr.utils.Logger.log; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; import java.util.HashMap; import java.util.Map; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.treasure.Treasure; import me.unurled.sacredrealms.sr.components.treasure.TreasureManager; +import me.unurled.srcore.api.Manager; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class ConfirmItem extends AbstractItem { @@ -27,8 +29,14 @@ public class ConfirmItem extends AbstractItem { this.treasure = treasure; } + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { + public ItemProvider getItemProvider() { ItemStack confirm = new ItemStack(Material.GREEN_STAINED_GLASS_PANE); ItemMeta confirmMeta = confirm.getItemMeta(); confirmMeta.displayName(textComp("Confirm")); @@ -36,16 +44,28 @@ public class ConfirmItem extends AbstractItem { return new ItemBuilder(confirm); } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { Map items = new HashMap<>(); for (int i = 0; i < player.getInventory().getContents().length; i++) { if (i < 9 || i > 35) { log("Skipping slot " + i); continue; } - ItemStack content = player.getOpenInventory().getItem(i); + if (event.getClickedInventory() == null) { + log("Clicked inventory is null"); + continue; + } + ItemStack content = event.getClickedInventory().getItem(i); if (content != null && content.getType() != Material.AIR) { items.put(i, content); log("Added item to items: " + content + " at slot " + i); diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/DeleteItem.java b/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/DeleteItem.java index 0b5b459..5a0fede 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/DeleteItem.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/DeleteItem.java @@ -1,20 +1,22 @@ package me.unurled.sacredrealms.sr.gui.treasure; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.textComp; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.treasure.Treasure; import me.unurled.sacredrealms.sr.components.treasure.TreasureManager; +import me.unurled.srcore.api.Manager; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; -import xyz.xenondevs.invui.Click; -import xyz.xenondevs.invui.item.AbstractItem; -import xyz.xenondevs.invui.item.ItemBuilder; +import xyz.xenondevs.invui.item.Item; import xyz.xenondevs.invui.item.ItemProvider; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.AbstractItem; +import xyz.xenondevs.invui.window.Window; public class DeleteItem extends AbstractItem { @@ -24,8 +26,14 @@ public class DeleteItem extends AbstractItem { this.treasure = treasure; } + /** + * Gets the {@link ItemProvider}. This method gets called every time a {@link Window} is notified + * ({@link #notifyWindows()}). + * + * @return The {@link ItemProvider} + */ @Override - public @NotNull ItemProvider getItemProvider(@NotNull Player viewer) { + public ItemProvider getItemProvider() { ItemStack delete = new ItemStack(Material.RED_STAINED_GLASS_PANE); ItemMeta deleteMeta = delete.getItemMeta(); deleteMeta.displayName(textComp("Delete")); @@ -33,9 +41,17 @@ public class DeleteItem extends AbstractItem { return new ItemBuilder(delete); } + /** + * A method called if the {@link ItemStack} associated to this {@link Item} has been clicked by a + * player. + * + * @param clickType The {@link ClickType} the {@link Player} performed. + * @param player The {@link Player} who clicked on the {@link ItemStack}. + * @param event The {@link InventoryClickEvent} associated with this click. + */ @Override public void handleClick( - @NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) { + @NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { // delete treasure if (!player.hasPermission("sr.treasure.delete")) { return; diff --git a/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/TreasureGUI.java b/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/TreasureGUI.java index 17488e1..3caa159 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/TreasureGUI.java +++ b/src/main/java/me/unurled/sacredrealms/sr/gui/treasure/TreasureGUI.java @@ -11,6 +11,7 @@ import xyz.xenondevs.invui.inventory.Inventory; import xyz.xenondevs.invui.inventory.VirtualInventory; import xyz.xenondevs.invui.inventory.event.UpdateReason; import xyz.xenondevs.invui.item.Item; +import xyz.xenondevs.invui.item.impl.SimpleItem; public class TreasureGUI { @@ -19,10 +20,10 @@ public class TreasureGUI { @NotNull public static Gui createGui(@NotNull Treasure treasure) { ItemStack itemStack = glassPane(); - Item pane = Item.simple(itemStack); + Item pane = new SimpleItem(itemStack); Inventory inventory = new VirtualInventory(27); - inventory.addPreUpdateHandler( + inventory.setPreUpdateHandler( (itemPreUpdateEvent) -> { if (itemPreUpdateEvent.isAdd() || itemPreUpdateEvent.isRemove() diff --git a/src/main/java/me/unurled/sacredrealms/sr/utils/CutsceneUtil.java b/src/main/java/me/unurled/sacredrealms/sr/utils/CutsceneUtil.java index 5ad46cb..e8aadad 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/utils/CutsceneUtil.java +++ b/src/main/java/me/unurled/sacredrealms/sr/utils/CutsceneUtil.java @@ -1,11 +1,14 @@ package me.unurled.sacredrealms.sr.utils; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.textComp; import java.time.Duration; +import java.util.ArrayList; +import java.util.List; import net.kyori.adventure.key.Key; import net.kyori.adventure.title.Title; import net.kyori.adventure.title.Title.Times; +import org.bukkit.Location; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/me/unurled/sacredrealms/sr/utils/Items.java b/src/main/java/me/unurled/sacredrealms/sr/utils/Items.java index 7e2a757..1af206e 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/utils/Items.java +++ b/src/main/java/me/unurled/sacredrealms/sr/utils/Items.java @@ -1,15 +1,14 @@ package me.unurled.sacredrealms.sr.utils; import static me.unurled.sacredrealms.sr.utils.SRPlayerUtils.syncSRToPlayer; -import static me.unurled.sacredrealms.sr.utils.component.Component.comp; -import static me.unurled.sacredrealms.sr.utils.component.Component.textComp; +import static me.unurled.srcore.utils.Component.comp; +import static me.unurled.srcore.utils.Component.textComp; import com.google.gson.JsonElement; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.atomic.AtomicReference; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.components.attributes.Attribute; import me.unurled.sacredrealms.sr.components.item.Item; import me.unurled.sacredrealms.sr.components.item.ItemManager; @@ -17,6 +16,7 @@ import me.unurled.sacredrealms.sr.components.item.ItemStackDeserializer; import me.unurled.sacredrealms.sr.components.item.ItemStackSerializer; import me.unurled.sacredrealms.sr.components.player.PlayerManager; import me.unurled.sacredrealms.sr.components.player.SRPlayer; +import me.unurled.srcore.api.Manager; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Player; diff --git a/src/main/java/me/unurled/sacredrealms/sr/utils/Logger.java b/src/main/java/me/unurled/sacredrealms/sr/utils/Logger.java index 2f945f8..7fbfc31 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/utils/Logger.java +++ b/src/main/java/me/unurled/sacredrealms/sr/utils/Logger.java @@ -3,7 +3,6 @@ package me.unurled.sacredrealms.sr.utils; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.logger.slf4j.ComponentLogger; -/** The LoggerUtils class is a class that is used to log messages to the console. */ public class Logger { private static final java.util.logging.Logger logger = java.util.logging.Logger.getLogger("SR"); @@ -11,56 +10,26 @@ public class Logger { private Logger() {} - /** - * Log a message to the console - * - * @param message the message to log - */ public static void log(String message) { logger.info(message); } - /** - * Log a warning to the console - * - * @param message the message to log - */ public static void warn(String message) { logger.warning(message); } - /** - * Log an error to the console - * - * @param message the message to log - */ public static void error(String message) { logger.severe(message); } - /** - * Log a message to the console - * - * @param message the message to log - */ public static void log(Component message) { componentLogger.info(message); } - /** - * Log a warning to the console - * - * @param message the message to log - */ public static void warn(Component message) { componentLogger.warn(message); } - /** - * Log an error to the console - * - * @param message the message to log - */ public static void error(Component message) { componentLogger.error(message); } diff --git a/src/main/java/me/unurled/sacredrealms/sr/utils/SRPlayerUtils.java b/src/main/java/me/unurled/sacredrealms/sr/utils/SRPlayerUtils.java index 2118cd6..fd327d0 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/utils/SRPlayerUtils.java +++ b/src/main/java/me/unurled/sacredrealms/sr/utils/SRPlayerUtils.java @@ -1,14 +1,14 @@ package me.unurled.sacredrealms.sr.utils; -import static me.unurled.sacredrealms.sr.utils.component.Component.comp; +import static me.unurled.srcore.utils.Component.comp; import java.util.List; import java.util.Random; -import me.unurled.sacredrealms.sr.Manager; import me.unurled.sacredrealms.sr.SR; import me.unurled.sacredrealms.sr.components.attributes.Attribute; import me.unurled.sacredrealms.sr.components.player.PlayerManager; import me.unurled.sacredrealms.sr.components.player.SRPlayer; +import me.unurled.srcore.api.Manager; import org.bukkit.attribute.AttributeInstance; import org.bukkit.entity.Display; import org.bukkit.entity.Entity; @@ -40,9 +40,11 @@ public class SRPlayerUtils { float value = (float) ((speed + items) / 500.0f); value = Math.min(value, 1.0f); value = Math.max(value, 0f); - AttributeInstance attribute1 = p.getAttribute(org.bukkit.attribute.Attribute.MOVEMENT_SPEED); + AttributeInstance attribute1 = + p.getAttribute(org.bukkit.attribute.Attribute.GENERIC_MOVEMENT_SPEED); if (attribute1 != null) attribute1.setBaseValue(value); - AttributeInstance attribute2 = p.getAttribute(org.bukkit.attribute.Attribute.FLYING_SPEED); + AttributeInstance attribute2 = + p.getAttribute(org.bukkit.attribute.Attribute.GENERIC_FLYING_SPEED); if (attribute2 != null) attribute2.setBaseValue(value); p.setFlySpeed(value); p.setWalkSpeed(value); @@ -55,7 +57,7 @@ public class SRPlayerUtils { // default is 100 so 20 double health = (sr.getAttribute(Attribute.HEALTH) + sr.getTotalItemAttribute(Attribute.HEALTH)) / 5; - AttributeInstance attribute = p.getAttribute(org.bukkit.attribute.Attribute.MAX_HEALTH); + AttributeInstance attribute = p.getAttribute(org.bukkit.attribute.Attribute.GENERIC_MAX_HEALTH); if (attribute != null) attribute.setBaseValue(health); p.sendHealthUpdate(); p.updateInventory(); @@ -127,6 +129,6 @@ public class SRPlayerUtils { } height++; } - }.runTaskTimer(SR.plugin(), 0, 1); + }.runTaskTimer(SR.getPlugin(), 0, 1); } } diff --git a/src/main/java/me/unurled/sacredrealms/sr/utils/component/Component.java b/src/main/java/me/unurled/sacredrealms/sr/utils/component/Component.java deleted file mode 100644 index 70c361a..0000000 --- a/src/main/java/me/unurled/sacredrealms/sr/utils/component/Component.java +++ /dev/null @@ -1,77 +0,0 @@ -package me.unurled.sacredrealms.sr.utils.component; - -import java.util.List; -import net.kyori.adventure.audience.Audience; -import net.kyori.adventure.text.TextComponent; -import net.kyori.adventure.text.TranslatableComponent; -import net.kyori.adventure.text.minimessage.MiniMessage; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.Contract; -import org.jetbrains.annotations.NotNull; - -/** Utility class for working with components. */ -public class Component { - private static MiniMessage miniMessage; - - private Component() {} - - /** - * Converts a string to a MiniMessage component. - * - * @param msg the string to convert - * @return the MiniMessage component - */ - public static net.kyori.adventure.text.@NotNull Component comp(String msg) { - if (miniMessage == null) { - miniMessage = MiniMessage.miniMessage(); - } - return miniMessage.deserialize(msg); - } - - /** - * Converts a string to a TextComponent. - * - * @param msg the string to convert - * @return the TextComponent - */ - public static net.kyori.adventure.text.@NotNull TextComponent textComp(String msg) { - if (miniMessage == null) { - miniMessage = MiniMessage.miniMessage(); - } - return (TextComponent) miniMessage.deserialize(msg); - } - - /** - * Converts a list of strings to a list of MiniMessage components. - * - * @param list the list of strings to convert - * @return the list of MiniMessage components - */ - public static List fromStringList( - @NotNull List list) { - return list.stream().map(Component::comp).toList(); - } - - /** - * Gets an audience for a player. - * - * @param player the player - * @return the audience - */ - @Contract(pure = true) - public static @NotNull Audience audience(Player player) { - return Audience.audience(player); - } - - /** - * Translates using the key and arguments. - * - * @param key the key - * @param args the arguments - * @return the translated string - */ - @Contract(value = "_, _ -> new", pure = true) - public static @NotNull TranslatableComponent translate(String key, TextComponent... args) { - return net.kyori.adventure.text.Component.translatable(key, args); - } -} diff --git a/src/main/java/me/unurled/sacredrealms/sr/utils/component/TranslatedComponent.java b/src/main/java/me/unurled/sacredrealms/sr/utils/component/TranslatedComponent.java deleted file mode 100644 index ddddc8d..0000000 --- a/src/main/java/me/unurled/sacredrealms/sr/utils/component/TranslatedComponent.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.unurled.sacredrealms.sr.utils.component; - -import static me.unurled.sacredrealms.sr.utils.component.Component.translate; - -import net.kyori.adventure.text.TranslatableComponent; - -public enum TranslatedComponent { - ERROR, - NOT_PLAYER, - NO_PERMISSION, - PLAYER_NOT_FOUND; - - TranslatableComponent component; - - TranslatedComponent() {} - - public static void init() { - ERROR.setComponent(translate("error")); - NOT_PLAYER.setComponent(translate("not.player")); - NO_PERMISSION.setComponent(translate("no.permission")); - PLAYER_NOT_FOUND.setComponent(translate("player.not.found")); - } - - private void setComponent(TranslatableComponent component) { - this.component = component; - } - - public TranslatableComponent component() { - return component; - } -} diff --git a/src/main/resources/sr/Bundle_en_US.properties b/src/main/resources/sr/Bundle_en_US.properties deleted file mode 100644 index 972c6f8..0000000 --- a/src/main/resources/sr/Bundle_en_US.properties +++ /dev/null @@ -1,5 +0,0 @@ -sacred.realms=Sacred Realms: {0} -player.not.found=Player not found. -error=An error occurred while executing this command. Please contact an admin. -no.permission=You do not have permission to use this command. -not.player=You must be a player to use this command. \ No newline at end of file