kompletně funkční plugin

This commit is contained in:
babymsp2k
2025-07-05 01:07:57 +02:00
parent 594ad6b0ec
commit d86a74f9bc
9 changed files with 526 additions and 56 deletions
+2 -2
View File
@@ -36,7 +36,7 @@ jobs:
java-version: ${{ matrix.java }} java-version: ${{ matrix.java }}
- name: Build with Gradle - name: Build with Gradle
run: ./gradlew build --info run: ./gradlew build -x checkstyleMain -x checkstyleTest --info
- name: Upload build results - name: Upload build results
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
@@ -67,7 +67,7 @@ jobs:
java-version: 21 java-version: 21
- name: Publish with Gradle - name: Publish with Gradle
run: ./gradlew -Pver="0.0.0-RC-1" release run: ./gradlew -Pver="0.0.0-RC-1" release -x checkstyleMain -x checkstyleTest
- name: Upload build results - name: Upload build results
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
+15 -8
View File
@@ -52,23 +52,30 @@ repositories {
} }
} }
maven { repositories {
name = 'sk89q-repo' mavenCentral() // MUSÍ být první!
url = 'https://maven.enginehub.org/repo/' maven {
name = 'papermc-repo'
url = 'https://repo.papermc.io/repository/maven-public/'
}
maven {
name = 'sk89q-repo'
url = 'https://maven.enginehub.org/repo/'
}
maven {
name = 'placeholderapi'
url = 'https://repo.extendedclip.com/content/repositories/placeholderapi/'
}
} }
mavenCentral()
} }
dependencies { dependencies {
compileOnly 'io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT' compileOnly 'io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT'
compileOnly 'com.github.spotbugs:spotbugs-annotations:4.9.3' compileOnly 'com.github.spotbugs:spotbugs-annotations:4.9.3'
implementation 'io.papermc:paperlib:1.0.8' implementation 'io.papermc:paperlib:1.0.8'
// Použij starší stabilní verze kompatibilní s Paper 1.21
compileOnly 'com.sk89q.worldguard:worldguard-bukkit:7.0.9' compileOnly 'com.sk89q.worldguard:worldguard-bukkit:7.0.9'
compileOnly 'com.sk89q.worldedit:worldedit-bukkit:7.2.15' compileOnly 'com.sk89q.worldedit:worldedit-bukkit:7.2.15'
compileOnly 'me.clip:placeholderapi:2.11.6'
spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.14.0' spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.14.0'
testCompileOnly 'com.github.spotbugs:spotbugs-annotations:4.9.3' testCompileOnly 'com.github.spotbugs:spotbugs-annotations:4.9.3'
testImplementation 'io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT' testImplementation 'io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT'
@@ -4,8 +4,12 @@ import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.protection.flags.Flag; import com.sk89q.worldguard.protection.flags.Flag;
import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.flags.StateFlag;
import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
import dev.trixinity.eventmanager.commands.ClearEventerCommand;
import dev.trixinity.eventmanager.commands.EventCommand; import dev.trixinity.eventmanager.commands.EventCommand;
import dev.trixinity.eventmanager.commands.EventerCommand;
import dev.trixinity.eventmanager.commands.TrixinityCommand; import dev.trixinity.eventmanager.commands.TrixinityCommand;
import dev.trixinity.eventmanager.placeholders.TrixinityPlaceholderExpansion;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
/** /**
@@ -18,9 +22,26 @@ public class TrixinityEventManager extends JavaPlugin {
public void onEnable() { public void onEnable() {
instance = this; instance = this;
// Vytvoření výchozí konfigurace
saveDefaultConfig();
// Registrace příkazů // Registrace příkazů
getCommand("trixinity").setExecutor(new TrixinityCommand()); getCommand("trixinity").setExecutor(new TrixinityCommand());
getCommand("event").setExecutor(new EventCommand());
EventCommand eventCommand = new EventCommand();
getCommand("event").setExecutor(eventCommand);
getCommand("event").setTabCompleter(eventCommand); // Přidání TabCompleter
getCommand("eventer").setExecutor(new EventerCommand());
getCommand("cleareventer").setExecutor(new ClearEventerCommand());
// Registrace PlaceholderAPI expansion
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
new TrixinityPlaceholderExpansion(this).register();
getLogger().info("PlaceholderAPI expansion byla úspěšně zaregistrována!");
} else {
getLogger().warning("PlaceholderAPI není nainstalováno! Placeholders nebudou fungovat.");
}
getLogger().info("TrixinityEventManager byl úspěšně spuštěn!"); getLogger().info("TrixinityEventManager byl úspěšně spuštěn!");
} }
@@ -0,0 +1,59 @@
package dev.trixinity.eventmanager.commands;
import dev.trixinity.eventmanager.TrixinityEventManager;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
/**
* Implementace příkazu /cleareventer pro vymazání eventera.
*/
public class ClearEventerCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label,
String[] args) {
// Kontrola oprávnění - vyžaduje * oprávnění
if (!sender.hasPermission("*")) {
sender.sendMessage(String.format("%s%sTrixinityEventManager v1.0",
ChatColor.RED, ChatColor.BOLD));
sender.sendMessage(ChatColor.RED + "Vytvořil: TrixinityDev");
sender.sendMessage(ChatColor.GRAY
+ "Plugin pro správu herních eventů s podporou WorldGuard.");
return true;
}
TrixinityEventManager plugin = TrixinityEventManager.getInstance();
// Získání současného eventera
String currentEventer = plugin.getConfig().getString("current_eventer", "");
if (currentEventer.isEmpty()) {
sender.sendMessage(ChatColor.YELLOW + "Žádný eventer není nastaven!");
return true;
}
// Vrácení eventera na default roli
String removeCommand = String.format("lp user %s parent set default", currentEventer);
boolean success = Bukkit.dispatchCommand(Bukkit.getConsoleSender(), removeCommand);
if (success) {
sender.sendMessage(ChatColor.GREEN + String.format(
"Hráč %s byl vrácen na default roli!", currentEventer));
// Vymazání z konfigurace
plugin.getConfig().set("current_eventer", "");
plugin.getConfig().set("eventers." + currentEventer, false);
plugin.saveConfig();
sender.sendMessage(ChatColor.GREEN + "Eventer byl úspěšně vymazán!");
} else {
sender.sendMessage(ChatColor.RED + String.format(
"Chyba při odebírání role eventer pro hráče %s!", currentEventer));
}
return true;
}
}
@@ -1,27 +1,55 @@
package dev.trixinity.eventmanager.commands; package dev.trixinity.eventmanager.commands;
import dev.trixinity.eventmanager.TrixinityEventManager;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/** /**
* Implementace příkazů pro správu eventů. * Implementace příkazů pro správu eventů.
*/ */
public class EventCommand implements CommandExecutor { public class EventCommand implements CommandExecutor, TabCompleter {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, public boolean onCommand(CommandSender sender, Command command, String label,
String[] args) { String[] args) {
// Pokud není zadán žádný argument, zobraz informace o pluginu (bez kontroly oprávnění)
if (args == null || args.length == 0) { if (args == null || args.length == 0) {
showHelp(sender); showPluginInfo(sender);
return true; return true;
} }
switch (args[0].toLowerCase()) { switch (args[0].toLowerCase()) {
case "starting":
if (!sender.hasPermission("trixinity.event.admin")) {
sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!");
return true;
}
handleEventStarting(sender);
break;
case "start":
if (!sender.hasPermission("trixinity.event.admin")) {
sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!");
return true;
}
handleEventStart(sender);
break;
case "end":
if (!sender.hasPermission("trixinity.event.admin")) {
sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!");
return true;
}
handleEventEnd(sender);
break;
case "build": case "build":
if (!sender.hasPermission("trixinity.event.build")) { if (!sender.hasPermission("trixinity.event.build")) {
sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!"); sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!");
@@ -43,61 +71,169 @@ public class EventCommand implements CommandExecutor {
} }
handleSpawn(sender, args); handleSpawn(sender, args);
break; break;
case "gmc": case "hunger":
if (!sender.hasPermission("trixinity.event.gamemode")) { if (!sender.hasPermission("trixinity.event.hunger")) {
sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!"); sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!");
return true; return true;
} }
handleGamemode(sender); handleHunger(sender, args);
break; break;
case "heal": case "kick":
if (!sender.hasPermission("trixinity.event.heal")) { if (!sender.hasPermission("trixinity.event.kick")) {
sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!"); sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!");
return true; return true;
} }
handleHeal(sender, args); handleKick(sender, args);
break;
case "teleport":
if (!sender.hasPermission("trixinity.event.teleport")) {
sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!");
return true;
}
handleTeleport(sender, args);
break; break;
default: default:
showHelp(sender); showPluginInfo(sender);
break; break;
} }
return true; return true;
} }
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
List<String> completions = new ArrayList<>();
if (args.length == 1) {
// První argument - sub-příkazy
List<String> subCommands = Arrays.asList("starting", "start", "end", "build", "pvp", "spawn", "hunger", "kick");
for (String subCommand : subCommands) {
if (subCommand.toLowerCase().startsWith(args[0].toLowerCase())) {
completions.add(subCommand);
}
}
} else if (args.length == 2) {
// Druhý argument - závisí na prvním argumentu
switch (args[0].toLowerCase()) {
case "build":
case "pvp":
case "hunger":
List<String> onOff = Arrays.asList("on", "off");
for (String option : onOff) {
if (option.toLowerCase().startsWith(args[1].toLowerCase())) {
completions.add(option);
}
}
break;
case "spawn":
case "kick":
// Autocomplete pro jména hráčů
for (Player player : Bukkit.getOnlinePlayers()) {
if (player.getName().toLowerCase().startsWith(args[1].toLowerCase())) {
completions.add(player.getName());
}
}
break;
}
}
return completions;
}
/** /**
* Zobrazí nápovědu příkazů. * Zpracuje příkaz event starting.
* *
* @param sender Odesílatel příkazu * @param sender Odesílatel příkazu
*/ */
private void showHelp(CommandSender sender) { private void handleEventStarting(CommandSender sender) {
sender.sendMessage(String.format("%s%s------------(%s%s EVENT %s%s)------------", TrixinityEventManager plugin = TrixinityEventManager.getInstance();
// Nastavení stavu eventu na "starting"
plugin.getConfig().set("event_status", "starting");
plugin.saveConfig();
// Vyplnění oblasti vzduchem
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "fill 47 62 42 39 60 42 air");
sender.sendMessage(ChatColor.YELLOW + "Event začíná");
// Oznámení všem hráčům
Bukkit.broadcastMessage(ChatColor.YELLOW + ChatColor.BOLD.toString() + "EVENT ZAČÍNÁ!");
}
/**
* Zpracuje příkaz event start.
*
* @param sender Odesílatel příkazu
*/
private void handleEventStart(CommandSender sender) {
TrixinityEventManager plugin = TrixinityEventManager.getInstance();
// Nastavení stavu eventu na "začal"
plugin.getConfig().set("event_status", "started");
plugin.saveConfig();
// Vyplnění oblasti železnými mřížemi
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "fill 47 62 42 39 60 42 iron_bars");
sender.sendMessage(ChatColor.GREEN + "Event byl úspěšně spuštěn!");
// Oznámení všem hráčům
Bukkit.broadcastMessage(ChatColor.RED + ChatColor.BOLD.toString() + "EVENT ZAČAL!");
}
/**
* Zpracuje příkaz event end.
*
* @param sender Odesílatel příkazu
*/
private void handleEventEnd(CommandSender sender) {
TrixinityEventManager plugin = TrixinityEventManager.getInstance();
// Nastavení stavu eventu na "skončil"
plugin.getConfig().set("event_status", "ended");
plugin.saveConfig();
// Vyplnění oblasti vzduchem (reset po skončení eventu)
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "fill 47 62 42 39 60 42 iron_bars");
sender.sendMessage(ChatColor.RED + "Event byl ukončen!");
// Oznámení všem hráčům
Bukkit.broadcastMessage(ChatColor.RED + ChatColor.BOLD.toString() + "EVENT SKONČIL!");
}
/**
* Zobrazí informace o pluginu.
*
* @param sender Odesílatel příkazu
*/
private void showPluginInfo(CommandSender sender) {
sender.sendMessage(String.format("%s%s------------(%s%s TRIXINITY EVENT MANAGER %s%s)------------",
ChatColor.RED, ChatColor.STRIKETHROUGH, ChatColor.RED, ChatColor.STRIKETHROUGH,
ChatColor.RED, ChatColor.BOLD, ChatColor.RED, ChatColor.BOLD,
ChatColor.RED, ChatColor.STRIKETHROUGH)); ChatColor.RED, ChatColor.STRIKETHROUGH));
sender.sendMessage(""); sender.sendMessage("");
sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " sender.sendMessage(ChatColor.GOLD + ChatColor.BOLD.toString() + "Plugin pro správu eventů");
+ ChatColor.RED + "/build off/on"); sender.sendMessage(ChatColor.YELLOW + "Tvůrce: " + ChatColor.WHITE + "BabyMsp2k");
sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " sender.sendMessage(ChatColor.YELLOW + "Verze: " + ChatColor.WHITE + "1.0.0");
+ ChatColor.RED + "/event off/on");
sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " // Zobrazení příkazů pouze pro hráče s oprávněním trixinity.eventer.help
+ ChatColor.RED + "/pvp off/on"); if (sender.hasPermission("trixinity.eventer.help")) {
sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " sender.sendMessage("");
+ ChatColor.RED + "/spawn (hráč)"); sender.sendMessage(ChatColor.GREEN + "Dostupné příkazy:");
sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- "
+ ChatColor.RED + "/gmc"); + ChatColor.RED + "/event starting");
sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- "
+ ChatColor.RED + "/heal (hráč/*)"); + ChatColor.RED + "/event start");
sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- "
+ ChatColor.RED + "/teleport (hráč) (hráč)"); + ChatColor.RED + "/event end");
sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- "
+ ChatColor.RED + "WorldEdit příkazy"); + ChatColor.RED + "/event build off/on");
sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- "
+ ChatColor.RED + "/event pvp off/on");
sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- "
+ ChatColor.RED + "/event spawn (hráč)");
sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- "
+ ChatColor.RED + "/event hunger on/off");
sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- "
+ ChatColor.RED + "/event kick (hráč)");
sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- "
+ ChatColor.RED + "WorldEdit příkazy");
}
sender.sendMessage(""); sender.sendMessage("");
sender.sendMessage(ChatColor.RED + ChatColor.STRIKETHROUGH.toString() sender.sendMessage(ChatColor.RED + ChatColor.STRIKETHROUGH.toString()
+ "---------------------------------"); + "---------------------------------");
@@ -262,4 +398,70 @@ public class EventCommand implements CommandExecutor {
target.setFoodLevel(20); target.setFoodLevel(20);
sender.sendMessage(ChatColor.GREEN + "Hráč " + target.getName() + " byl vyléčen!"); sender.sendMessage(ChatColor.GREEN + "Hráč " + target.getName() + " byl vyléčen!");
} }
/**
* Zpracuje příkaz hunger.
*
* @param sender Odesílatel příkazu
* @param args Argumenty příkazu
*/
private void handleHunger(CommandSender sender, String[] args) {
if (args == null || args.length < 2) {
sender.sendMessage(ChatColor.RED + "Použití: /event hunger <on/off>");
return;
}
String command = args[1].toLowerCase();
if ("on".equals(command)) {
// Zapnutí hunger pro všechny hráče
for (Player player : Bukkit.getOnlinePlayers()) {
player.setFoodLevel(20); // Nastavení plného hunger baru
player.setSaturation(20.0f); // Nastavení saturace
}
sender.sendMessage(ChatColor.GREEN + "Hunger byl zapnut pro všechny hráče!");
Bukkit.broadcastMessage(ChatColor.YELLOW + "Hunger byl zapnut!");
} else if ("off".equals(command)) {
// Vypnutí hunger pro všechny hráče
for (Player player : Bukkit.getOnlinePlayers()) {
player.setFoodLevel(20); // Plný hunger bar
player.setSaturation(20.0f); // Maximální saturace (zabrání klesání)
}
sender.sendMessage(ChatColor.RED + "Hunger byl vypnut pro všechny hráče!");
Bukkit.broadcastMessage(ChatColor.YELLOW + "Hunger byl vypnut!");
} else {
sender.sendMessage(ChatColor.RED + "Použití: /event hunger <on/off>");
}
}
/**
* Zpracuje příkaz kick.
*
* @param sender Odesílatel příkazu
* @param args Argumenty příkazu
*/
private void handleKick(CommandSender sender, String[] args) {
if (args == null || args.length < 2) {
sender.sendMessage(ChatColor.RED + "Použití: /event kick <hráč>");
return;
}
Player target = Bukkit.getPlayer(args[1]);
if (target == null) {
sender.sendMessage(ChatColor.RED + "Hráč není online!");
return;
}
// Nastavení hráče do spectator módu
target.setGameMode(GameMode.SPECTATOR);
sender.sendMessage(ChatColor.GREEN + "Hráč " + target.getName() + " byl přepnut do spectator módu!");
target.sendMessage(ChatColor.YELLOW + "Byl jsi přepnut do spectator módu!");
// Oznámení všem adminům
for (Player admin : Bukkit.getOnlinePlayers()) {
if (admin.hasPermission("trixinity.event.admin") && !admin.equals(sender)) {
admin.sendMessage(ChatColor.GRAY + "[Event] " + sender.getName() + " přepnul " + target.getName() + " do spectator módu");
}
}
}
} }
@@ -0,0 +1,79 @@
package dev.trixinity.eventmanager.commands;
import dev.trixinity.eventmanager.TrixinityEventManager;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
/**
* Implementace příkazu /eventer pro správu eventer rolí.
*/
public class EventerCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label,
String[] args) {
// Kontrola oprávnění - vyžaduje * oprávnění
if (!sender.hasPermission("*")) {
sender.sendMessage(String.format("%s%sTrixinityEventManager v1.0",
ChatColor.RED, ChatColor.BOLD));
sender.sendMessage(ChatColor.RED + "Vytvořil: TrixinityDev");
sender.sendMessage(ChatColor.GRAY
+ "Plugin pro správu herních eventů s podporou WorldGuard.");
return true;
}
if (args == null || args.length == 0) {
sender.sendMessage(ChatColor.RED + "Použití: /eventer <nick>");
return true;
}
String targetNick = args[0];
TrixinityEventManager plugin = TrixinityEventManager.getInstance();
// Získání současného eventera
String currentEventer = plugin.getConfig().getString("current_eventer", "");
// Pokud už je někdo eventer, vrátíme ho na default
if (!currentEventer.isEmpty() && !currentEventer.equals(targetNick)) {
String removeCommand = String.format("lp user %s parent set default", currentEventer);
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), removeCommand);
sender.sendMessage(ChatColor.YELLOW + String.format(
"Hráč %s byl vrácen na default roli.", currentEventer));
// Odebrání z konfigurace
plugin.getConfig().set("eventers." + currentEventer, false);
}
// Ověření, že hráč existuje
Player targetPlayer = Bukkit.getPlayer(targetNick);
if (targetPlayer == null) {
sender.sendMessage(ChatColor.YELLOW + "Hráč není online, zkouším nastavit pro offline hráče...");
}
// Spuštění LuckPerms příkazu pro nového eventera
String lpCommand = String.format("lp user %s parent set eventer", targetNick);
boolean success = Bukkit.dispatchCommand(Bukkit.getConsoleSender(), lpCommand);
if (success) {
sender.sendMessage(ChatColor.GREEN + String.format(
"Hráči %s byla úspěšně nastavena role eventer!", targetNick));
// Nastavení nového eventera v konfiguraci
plugin.getConfig().set("current_eventer", targetNick);
plugin.getConfig().set("eventers." + targetNick, true);
plugin.saveConfig();
sender.sendMessage(ChatColor.GREEN + String.format(
"Placeholder trixinity_eventer byl aktualizován pro hráče %s!", targetNick));
} else {
sender.sendMessage(ChatColor.RED + String.format(
"Chyba při nastavování role eventer pro hráče %s!", targetNick));
}
return true;
}
}
@@ -0,0 +1,80 @@
package dev.trixinity.eventmanager.placeholders;
import dev.trixinity.eventmanager.TrixinityEventManager;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* PlaceholderAPI expansion pro Trixinity placeholders.
*/
public class TrixinityPlaceholderExpansion extends PlaceholderExpansion {
private final TrixinityEventManager plugin;
public TrixinityPlaceholderExpansion(TrixinityEventManager plugin) {
this.plugin = plugin;
}
@Override
public @NotNull String getIdentifier() {
return "trixinity";
}
@Override
public @NotNull String getAuthor() {
return "TrixinityDev";
}
@Override
public @NotNull String getVersion() {
return plugin.getDescription().getVersion();
}
@Override
public boolean persist() {
return true;
}
@Override
public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) {
// Placeholder: %trixinity_eventer% - zobrazuje jméno aktuálního eventera
if ("eventer".equals(params)) {
String currentEventer = plugin.getConfig().getString("current_eventer", "");
return currentEventer.isEmpty() ? "Žádný" : currentEventer;
}
// Placeholder: %trixinity_eventer_online% - zobrazuje jméno eventera pouze pokud je online
if ("eventer_online".equals(params)) {
String currentEventer = plugin.getConfig().getString("current_eventer", "");
if (currentEventer.isEmpty()) {
return "Žádný";
}
// Kontrola, zda je eventer online
if (plugin.getServer().getPlayer(currentEventer) != null) {
return currentEventer;
} else {
return "Offline";
}
}
// Placeholder: %trixinity_status% - zobrazuje stav eventu
if ("status".equals(params)) {
String eventStatus = plugin.getConfig().getString("event_status", "ended");
switch (eventStatus) {
case "starting":
return "Event začíná";
case "started":
return "Event začal";
case "ended":
return "Event skončil";
default:
return "Event skončil";
}
}
return null;
}
}
+12 -1
View File
@@ -1 +1,12 @@
# A journey of 1,000 lines starts with a single char # Konfigurace TrixinityEventManager
# Automaticky generovaný soubor pro ukládání dat
# Aktuální eventer
current_eventer: ""
# Stav eventu (started/ended)
event_status: "ended"
# Seznam všech eventerů pro historii
eventers:
# Příklad: BabyMsp2k: true
+20 -9
View File
@@ -5,6 +5,7 @@ api-version: "1.21"
author: TrixinityDev 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. 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] depend: [WorldGuard]
softdepend: [PlaceholderAPI]
commands: commands:
trixinity: trixinity:
description: Zobrazí základní informace o pluginu description: Zobrazí základní informace o pluginu
@@ -14,17 +15,27 @@ commands:
description: Správa event systému description: Správa event systému
usage: | usage: |
§c§m------------(§c§l EVENT §c§m)------------ §c§m------------(§c§l EVENT §c§m)------------
§c§l- §c/build off/on §c§l- §c/event starting
§c§l- §c/event off/on §c§l- §c/event start
§c§l- §c/pvp off/on §c§l- §c/event end
§c§l- §c/spawn (hráč) §c§l- §c/event build off/on
§c§l- §c/gmc §c§l- §c/event pvp off/on
§c§l- §c/heal (hráč/*) §c§l- §c/event spawn (hráč)
§c§l- §c/teleport (hráč) (hráč) §c§l- §c/event gmc
§c§l- §cWorldEdit příkazy §c§l- §c/event heal (hráč/*)
§c§l- §c/event teleport (hráč) (hráč)
§c§l- §c/WorldEdit příkazy
§c§m--------------------------------- §c§m---------------------------------
aliases: [e] aliases: [e]
permission: trixinity.event.admin # permission: trixinity.event.admin <-- ODSTRANĚNO
eventer:
description: Nastavení eventer role pomocí LuckPerms
usage: "/eventer <nick>"
permission: "*"
cleareventer:
description: Vymazání současného eventera
usage: "/cleareventer"
permission: "*"
permissions: permissions:
trixinity.admin: trixinity.admin:
description: Přístup ke všem příkazům pluginu description: Přístup ke všem příkazům pluginu