From 491028854cfd335d9af429030835d3c268474373 Mon Sep 17 00:00:00 2001 From: babymsp2k Date: Fri, 4 Jul 2025 23:38:56 +0200 Subject: [PATCH] =?UTF-8?q?za=C4=8D=C3=A1tek?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 11 +- settings.gradle | 2 +- .../exampleplugin/ExamplePlugin.java | 20 -- .../eventmanager/TrixinityEventManager.java | 32 +++ .../eventmanager/commands/EventCommand.java | 182 ++++++++++++++++++ .../commands/TrixinityCommand.java | 17 ++ src/main/resources/plugin.yml | 47 +++-- 7 files changed, 271 insertions(+), 40 deletions(-) delete mode 100644 src/main/java/com/crimsonwarpedcraft/exampleplugin/ExamplePlugin.java create mode 100644 src/main/java/dev/trixinity/eventmanager/TrixinityEventManager.java create mode 100644 src/main/java/dev/trixinity/eventmanager/commands/EventCommand.java create mode 100644 src/main/java/dev/trixinity/eventmanager/commands/TrixinityCommand.java diff --git a/build.gradle b/build.gradle index 12b03e9..04241ee 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { id 'java' } -group = "com.crimsonwarpedcraft.exampleplugin" +group = "dev.trixinity.eventmanager" static def getTime() { SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd-HHmm") @@ -65,14 +65,15 @@ repositories { } dependencies { - compileOnly 'io.papermc.paper:paper-api:1.21.7-R0.1-SNAPSHOT' + compileOnly 'io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT' compileOnly 'com.github.spotbugs:spotbugs-annotations:4.9.3' implementation 'io.papermc:paperlib:1.0.8' + implementation 'com.sk89q.worldguard:worldguard-bukkit:7.0.9' spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.14.0' testCompileOnly 'com.github.spotbugs:spotbugs-annotations:4.9.3' - testImplementation 'io.papermc.paper:paper-api:1.21.7-R0.1-SNAPSHOT' - testImplementation 'org.junit.jupiter:junit-jupiter:5.13.2' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.13.2' + testImplementation 'io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT' + testImplementation 'org.junit.jupiter:junit-jupiter:5.13.1' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.13.1' } test { diff --git a/settings.gradle b/settings.gradle index 1cd81f0..1e0641b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -rootProject.name = 'ExamplePlugin' \ No newline at end of file +rootProject.name = 'TrixinityEventManager' \ No newline at end of file diff --git a/src/main/java/com/crimsonwarpedcraft/exampleplugin/ExamplePlugin.java b/src/main/java/com/crimsonwarpedcraft/exampleplugin/ExamplePlugin.java deleted file mode 100644 index f418b71..0000000 --- a/src/main/java/com/crimsonwarpedcraft/exampleplugin/ExamplePlugin.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.crimsonwarpedcraft.exampleplugin; - -import io.papermc.lib.PaperLib; -import org.bukkit.plugin.java.JavaPlugin; - - -/** - * Created by Levi Muniz on 7/29/20. - * - * @author Copyright (c) Levi Muniz. All Rights Reserved. - */ -public class ExamplePlugin extends JavaPlugin { - - @Override - public void onEnable() { - PaperLib.suggestPaper(this); - - saveDefaultConfig(); - } -} diff --git a/src/main/java/dev/trixinity/eventmanager/TrixinityEventManager.java b/src/main/java/dev/trixinity/eventmanager/TrixinityEventManager.java new file mode 100644 index 0000000..34ade49 --- /dev/null +++ b/src/main/java/dev/trixinity/eventmanager/TrixinityEventManager.java @@ -0,0 +1,32 @@ +package dev.trixinity.eventmanager; + +import org.bukkit.plugin.java.JavaPlugin; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.protection.flags.Flag; +import com.sk89q.worldguard.protection.flags.StateFlag; +import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; + +public class TrixinityEventManager extends JavaPlugin { + + private static TrixinityEventManager instance; + + @Override + public void onEnable() { + instance = this; + + // Registrace příkazů + getCommand("trixinity").setExecutor(new TrixinityCommand()); + getCommand("event").setExecutor(new EventCommand()); + + getLogger().info("TrixinityEventManager byl úspěšně spuštěn!"); + } + + @Override + public void onDisable() { + getLogger().info("TrixinityEventManager byl vypnut!"); + } + + public static TrixinityEventManager getInstance() { + return instance; + } +} \ No newline at end of file diff --git a/src/main/java/dev/trixinity/eventmanager/commands/EventCommand.java b/src/main/java/dev/trixinity/eventmanager/commands/EventCommand.java new file mode 100644 index 0000000..1b19845 --- /dev/null +++ b/src/main/java/dev/trixinity/eventmanager/commands/EventCommand.java @@ -0,0 +1,182 @@ +package dev.trixinity.eventmanager.commands; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; +import org.bukkit.GameMode; + +public class EventCommand implements CommandExecutor { + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (args.length == 0) { + showHelp(sender); + return true; + } + + if (!sender.hasPermission("trixinity.event.*")) { + sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!"); + return true; + } + + switch (args[0].toLowerCase()) { + case "build": + handleBuild(sender, args); + break; + case "pvp": + handlePvP(sender, args); + break; + case "spawn": + handleSpawn(sender, args); + break; + case "gmc": + handleGamemode(sender); + break; + case "heal": + handleHeal(sender, args); + break; + case "teleport": + handleTeleport(sender, args); + break; + default: + showHelp(sender); + break; + } + + return true; + } + + private void showHelp(CommandSender sender) { + sender.sendMessage(ChatColor.RED + ChatColor.STRIKETHROUGH.toString() + "------------(" + + ChatColor.RED + ChatColor.BOLD.toString() + " EVENT " + + ChatColor.RED + ChatColor.STRIKETHROUGH.toString() + ")------------"); + sender.sendMessage(""); + sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/build off/on"); + sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/event off/on"); + sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/pvp off/on"); + sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/spawn (hráč)"); + sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/gmc"); + sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/heal (hráč/*)"); + sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/teleport (hráč) (hráč)"); + sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "WorldEdit příkazy"); + sender.sendMessage(""); + sender.sendMessage(ChatColor.RED + ChatColor.STRIKETHROUGH.toString() + "---------------------------------"); + } + + private void handleBuild(CommandSender sender, String[] args) { + if (args.length < 2) { + sender.sendMessage(ChatColor.RED + "Použití: /event build "); + return; + } + + String command = args[1].toLowerCase(); + if (command.equals("on")) { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "rg flag __global__ build -w EVENT allow"); + sender.sendMessage(ChatColor.GREEN + "Build mód byl zapnut!"); + } else if (command.equals("off")) { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "rg flag __global__ build -w EVENT deny"); + sender.sendMessage(ChatColor.RED + "Build mód byl vypnut!"); + } + } + + private void handlePvP(CommandSender sender, String[] args) { + if (args.length < 2) { + sender.sendMessage(ChatColor.RED + "Použití: /event pvp "); + return; + } + + String command = args[1].toLowerCase(); + if (command.equals("on")) { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "rg flag __global__ pvp -w EVENT allow"); + sender.sendMessage(ChatColor.GREEN + "PvP bylo zapnuto!"); + } else if (command.equals("off")) { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "rg flag __global__ pvp -w EVENT deny"); + sender.sendMessage(ChatColor.RED + "PvP bylo vypnuto!"); + } + } + + private void handleSpawn(CommandSender sender, String[] args) { + if (args.length < 2) { + if (sender instanceof Player) { + Bukkit.dispatchCommand(sender, "spawn"); + } else { + sender.sendMessage(ChatColor.RED + "Použití: /event spawn "); + } + return; + } + + Player target = Bukkit.getPlayer(args[1]); + if (target == null) { + sender.sendMessage(ChatColor.RED + "Hráč není online!"); + return; + } + + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "spawn " + target.getName()); + sender.sendMessage(ChatColor.GREEN + "Hráč " + target.getName() + " byl teleportován na spawn!"); + } + + private void handleGamemode(CommandSender sender) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "Tento příkaz může použít pouze hráč!"); + return; + } + + Player player = (Player) sender; + player.setGameMode(GameMode.CREATIVE); + sender.sendMessage(ChatColor.GREEN + "Herní mód byl změněn na Creative!"); + } + + private void handleHeal(CommandSender sender, String[] args) { + if (args.length < 2) { + if (sender instanceof Player) { + Player player = (Player) sender; + player.setHealth(player.getMaxHealth()); + player.setFoodLevel(20); + sender.sendMessage(ChatColor.GREEN + "Byl jsi vyléčen!"); + } else { + sender.sendMessage(ChatColor.RED + "Použití: /event heal "); + } + return; + } + + if (args[1].equals("*")) { + for (Player player : Bukkit.getOnlinePlayers()) { + player.setHealth(player.getMaxHealth()); + player.setFoodLevel(20); + } + sender.sendMessage(ChatColor.GREEN + "Všichni hráči byli vyléčeni!"); + return; + } + + Player target = Bukkit.getPlayer(args[1]); + if (target == null) { + sender.sendMessage(ChatColor.RED + "Hráč není online!"); + return; + } + + target.setHealth(target.getMaxHealth()); + target.setFoodLevel(20); + sender.sendMessage(ChatColor.GREEN + "Hráč " + target.getName() + " byl vyléčen!"); + } + + private void handleTeleport(CommandSender sender, String[] args) { + if (args.length < 3) { + sender.sendMessage(ChatColor.RED + "Použití: /event teleport "); + return; + } + + Player player = Bukkit.getPlayer(args[1]); + Player target = Bukkit.getPlayer(args[2]); + + if (player == null || target == null) { + sender.sendMessage(ChatColor.RED + "Jeden nebo oba hráči nejsou online!"); + return; + } + + player.teleport(target.getLocation()); + sender.sendMessage(ChatColor.GREEN + "Hráč " + player.getName() + " byl teleportován k hráči " + target.getName() + "!"); + } +} \ No newline at end of file diff --git a/src/main/java/dev/trixinity/eventmanager/commands/TrixinityCommand.java b/src/main/java/dev/trixinity/eventmanager/commands/TrixinityCommand.java new file mode 100644 index 0000000..2130c1d --- /dev/null +++ b/src/main/java/dev/trixinity/eventmanager/commands/TrixinityCommand.java @@ -0,0 +1,17 @@ +package dev.trixinity.eventmanager.commands; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.ChatColor; + +public class TrixinityCommand implements CommandExecutor { + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "TrixinityEventManager v1.0"); + sender.sendMessage(ChatColor.RED + "Vytvořil: TrixinityDev"); + sender.sendMessage(ChatColor.GRAY + "Plugin pro správu herních eventů s podporou WorldGuard."); + return true; + } +} \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e321786..48a8fad 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,20 +1,39 @@ main: ${PACKAGE}.${NAME} name: ${NAME} version: "${VERSION}" -api-version: "1.21.1" -author: AUTHOR -description: DESCRIPTION +api-version: "1.21" +author: TrixinityDev +description: Plugin pro správu eventů na Minecraft serveru s přehlednými příkazy, integrovanými WorldGuard příkazy a možností základního ovládání přes konzoli nebo přímo ze hry. +depend: [WorldGuard] commands: - ex: - description: Base command for EXAMPLE - usage: "For a list of commands, type /ex help" - aliases: example + trixinity: + description: Zobrazí základní informace o pluginu + usage: "/trixinity" + event: + description: Správa event systému + usage: | + §c§m------------(§c§l EVENT §c§m)------------ + §c§l- §c/build off/on + §c§l- §c/event off/on + §c§l- §c/pvp off/on + §c§l- §c/spawn (hráč) + §c§l- §c/gmc + §c§l- §c/heal (hráč/*) + §c§l- §c/teleport (hráč) (hráč) + §c§l- §cWorldEdit příkazy + §c§m--------------------------------- + aliases: [e] permissions: - example.test: - description: DESCRIPTION - default: true - example.*: - description: Grants all other permissions - default: false + trixinity.admin: + description: Přístup ke všem příkazům pluginu + default: op + trixinity.event.*: + description: Přístup ke všem event příkazům + default: op children: - example.test: true \ No newline at end of file + trixinity.event.build: true + trixinity.event.pvp: true + trixinity.event.spawn: true + trixinity.event.gamemode: true + trixinity.event.heal: true + trixinity.event.teleport: true \ No newline at end of file