From d8fc8ddb6b5bc8d47067430ea93ae0b2293dde6c Mon Sep 17 00:00:00 2001 From: petulikan1 Date: Sun, 9 Jun 2024 19:38:47 +0200 Subject: [PATCH] Initial commit --- .gitignore | 29 +++++++++ PearlFIx.iml | 27 ++++++++ src/config.yml | 4 ++ src/me/petulikan1/PearlFix/EventListener.java | 27 ++++++++ src/me/petulikan1/PearlFix/Loader.java | 28 +++++++++ src/me/petulikan1/PearlFix/Utils.java | 61 +++++++++++++++++++ src/plugin.yml | 5 ++ 7 files changed, 181 insertions(+) create mode 100644 .gitignore create mode 100644 PearlFIx.iml create mode 100644 src/config.yml create mode 100644 src/me/petulikan1/PearlFix/EventListener.java create mode 100644 src/me/petulikan1/PearlFix/Loader.java create mode 100644 src/me/petulikan1/PearlFix/Utils.java create mode 100644 src/plugin.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f68d109 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +### IntelliJ IDEA ### +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/PearlFIx.iml b/PearlFIx.iml new file mode 100644 index 0000000..dd87ab9 --- /dev/null +++ b/PearlFIx.iml @@ -0,0 +1,27 @@ + + + + + + + SPIGOT + MCP + + 1 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/config.yml b/src/config.yml new file mode 100644 index 0000000..c83ecb2 --- /dev/null +++ b/src/config.yml @@ -0,0 +1,4 @@ +Translations: + Console: "Prevented teleport of player {0} using {1}" # {0} = player's nickname, {1} = teleport cause (ender_pearl/chorus_fruit) + Player: "Hey! You can't teleport using {0} outside the border!" # {0} teleport cause (same like above) + diff --git a/src/me/petulikan1/PearlFix/EventListener.java b/src/me/petulikan1/PearlFix/EventListener.java new file mode 100644 index 0000000..30c13f4 --- /dev/null +++ b/src/me/petulikan1/PearlFix/EventListener.java @@ -0,0 +1,27 @@ +package me.petulikan1.PearlFix; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerTeleportEvent; + +public class EventListener implements Listener { + + @EventHandler + public void onTeleport(PlayerTeleportEvent e) { + if (e.getCause() == PlayerTeleportEvent.TeleportCause.ENDER_PEARL || e.getCause() == PlayerTeleportEvent.TeleportCause.CHORUS_FRUIT) { + Location to = e.getTo(); + World world = to.getWorld(); + if (!world.getWorldBorder().isInside(to)) { + e.setCancelled(true); + Utils.msg("Console", Bukkit.getConsoleSender(), e.getPlayer().getName(), e.getCause()); + Utils.msg("Player", e.getPlayer(), e.getCause()); + return; + } + } + } + + +} diff --git a/src/me/petulikan1/PearlFix/Loader.java b/src/me/petulikan1/PearlFix/Loader.java new file mode 100644 index 0000000..bd50e6f --- /dev/null +++ b/src/me/petulikan1/PearlFix/Loader.java @@ -0,0 +1,28 @@ +package me.petulikan1.PearlFix; + +import lombok.Getter; +import org.bukkit.Bukkit; +import org.bukkit.event.HandlerList; +import org.bukkit.plugin.java.JavaPlugin; + +public class Loader extends JavaPlugin { + + + private EventListener listener = null; + @Getter + protected static Loader main; + + @Override + public void onEnable() { + main = this; + Bukkit.getPluginManager().registerEvents(listener = new EventListener(), this); + saveDefaultConfig(); + } + + + @Override + public void onDisable() { + if (listener != null) + HandlerList.unregisterAll(listener); + } +} diff --git a/src/me/petulikan1/PearlFix/Utils.java b/src/me/petulikan1/PearlFix/Utils.java new file mode 100644 index 0000000..db8e9b4 --- /dev/null +++ b/src/me/petulikan1/PearlFix/Utils.java @@ -0,0 +1,61 @@ +package me.petulikan1.PearlFix; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; +import net.kyori.adventure.translation.Translatable; +import org.bukkit.command.CommandSender; + +public class Utils { + + private final static PlainTextComponentSerializer plainTextComponentSerializer = PlainTextComponentSerializer.builder().build(); + + private final static LegacyComponentSerializer legacySection + = LegacyComponentSerializer.legacySection().toBuilder().useUnusualXRepeatedCharacterHexFormat().hexColors().extractUrls() + .build(); + + private static final MiniMessage mm = MiniMessage.builder().build(); + + public static String plainText(T t) { + return plainTextComponentSerializer.serialize(Component.translatable(t)); + } + + public static String plainText(String msg) { + return mm.serialize(legacySection.deserialize(plainTextComponentSerializer.serialize(Component.text(msg)))); + } + + public static String getTranslation(String key) { + return Loader.getMain().getConfig().getString("Translations." + key, "NO_TRANSLATION_FOUND!"); + } + + public static void msg(String key, CommandSender s) { + if (s == null) + throw new RuntimeException("CommandSender can't be null!"); + s.sendMessage(component(key)); + } + + public static void msg(String key, CommandSender s, Object... objects) { + if (s == null) + throw new RuntimeException("CommandSender can't be null!"); + s.sendMessage(component(key, objects)); + } + + public static Component component(String key) { + return mm.deserialize(getTranslation(key)); + } + + public static Component component(String key, Object... objects) { + return mm.deserialize(replacedTranslation(key, objects)); + } + + public static String replacedTranslation(String key, Object... objects) { + String translation = getTranslation(key); + int i = 0; + for (Object o : objects) { + translation = translation.replace("{" + i + "}", o + ""); + i++; + } + return translation; + } +} diff --git a/src/plugin.yml b/src/plugin.yml new file mode 100644 index 0000000..a65b993 --- /dev/null +++ b/src/plugin.yml @@ -0,0 +1,5 @@ +main: me.petulikan1.PearlFix.Loader +name: PearlFix +author: petulikan1 +version: 1.0 +website: https://github.com/petulikan1