Compare commits

...

3 commits

Author SHA1 Message Date
Luna bef172ce2c
Merge 56f36294ec into db50f0b7ae 2023-08-06 16:26:32 +02:00
EnZaXD db50f0b7ae
Use more Java 17 features in classes (#349)
* Use more Java 17 features in classes

* created more new lines

* fixed long lines
2023-08-06 17:19:43 +03:00
IuCC 91371ba990
/rainbow command (#347) 2023-07-07 23:51:38 +03:00
6 changed files with 90 additions and 90 deletions

View file

@ -6,6 +6,7 @@ Extras is a Bukkit plugin that that adds extra functionality to the Kaboom serve
| Command | Aliases | Permission | Description |
|-----------------------|---------------------|-----------------------------|---------------------------------------------------------|
| /broadcastrainbow | /bcr | extras.broadcastrainbow | Broadcasts a rainbow message |
| /broadcastminimessage | /broadcastmm, /bcmm | extras.broadcastminimessage | Broadcasts a deserialized MiniMessage component |
| /broadcastraw | /bcraw, /tellraw | extras.broadcastraw | Broadcasts raw text to the server |
| /broadcastvanilla | /bcv | extras.broadcastvanilla | Broadcasts text in vanilla style |

View file

@ -38,6 +38,7 @@ public final class Main extends JavaPlugin {
prefixConfig = YamlConfiguration.loadConfiguration(prefixConfigFile);
/* Commands */
this.getCommand("broadcastrainbow").setExecutor(new CommandBroadcastRainbow());
this.getCommand("broadcastminimessage").setExecutor(new CommandBroadcastMM());
this.getCommand("broadcastvanilla").setExecutor(new CommandBroadcastVanilla());
this.getCommand("clearchat").setExecutor(new CommandClearChat());
@ -57,7 +58,7 @@ public final class Main extends JavaPlugin {
this.getCommand("spidey").setExecutor(new CommandSpidey());
this.getCommand("tellraw").setExecutor(new CommandTellraw());
this.getCommand("username").setExecutor(new CommandUsername());
/* Block-related modules */
BlockPhysics.init(this);

View file

@ -0,0 +1,32 @@
package pw.kaboom.extras.commands;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import javax.annotation.Nonnull;
public final class CommandBroadcastRainbow implements CommandExecutor {
private static final MiniMessage MINI_MESSAGE = MiniMessage.miniMessage();
public boolean onCommand(final @Nonnull CommandSender sender,
final @Nonnull Command command,
final @Nonnull String label,
final String[] args) {
if (args.length == 0) {
sender.sendMessage(Component
.text("Usage: /" + label + " <message ..>",
NamedTextColor.RED));
return true;
}
final String strippedTags = MINI_MESSAGE.stripTags(String.join(" ", args));
final Component component = MINI_MESSAGE.deserialize("<rainbow>" + strippedTags);
Bukkit.getServer().broadcast(component);
return true;
}
}

View file

@ -11,6 +11,7 @@ import org.bukkit.plugin.java.JavaPlugin;
import pw.kaboom.extras.Main;
import java.util.Arrays;
import java.util.Objects;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
@ -22,33 +23,18 @@ public final class ServerCommand implements Listener {
private static final Pattern SELECTOR_PATTERN = Pattern.compile("(?>\\s)*@[aepsr](?>\\s)*");
private static final Logger LOGGER = JavaPlugin.getPlugin(Main.class).getLogger();
private static final String[] COMMANDS = { "execute", "clone", "fill", "forceload", "kick",
"locate", "locatebiome", "me", "msg", "reload", "save-all", "say", "spreadplayers",
"stop", "summon", "teammsg", "teleport", "tell", "tellraw", "tm", "tp", "w", "place",
"fillbiome", "ride" };
public static boolean checkExecuteCommand(final String cmd) {
return ("execute".equalsIgnoreCase(cmd)
|| "clone".equalsIgnoreCase(cmd)
|| "fill".equalsIgnoreCase(cmd)
|| "forceload".equalsIgnoreCase(cmd)
|| "kick".equalsIgnoreCase(cmd)
|| "locate".equalsIgnoreCase(cmd)
|| "locatebiome".equalsIgnoreCase(cmd)
|| "me".equalsIgnoreCase(cmd)
|| "msg".equalsIgnoreCase(cmd)
|| "reload".equalsIgnoreCase(cmd)
|| "save-all".equalsIgnoreCase(cmd)
|| "say".equalsIgnoreCase(cmd)
|| "spreadplayers".equalsIgnoreCase(cmd)
|| "stop".equalsIgnoreCase(cmd)
|| "summon".equalsIgnoreCase(cmd)
|| "teammsg".equalsIgnoreCase(cmd)
|| "teleport".equalsIgnoreCase(cmd)
|| "tell".equalsIgnoreCase(cmd)
|| "tellraw".equalsIgnoreCase(cmd)
|| "tm".equalsIgnoreCase(cmd)
|| "tp".equalsIgnoreCase(cmd)
|| "w".equalsIgnoreCase(cmd)
|| "place".equalsIgnoreCase(cmd)
|| "fillbiome".equalsIgnoreCase(cmd)
|| "ride".equalsIgnoreCase(cmd)
);
for (String command : COMMANDS) {
if (command.equalsIgnoreCase(cmd)) {
return true;
}
}
return false;
}
private static String checkSelectors(final String[] arr) {
@ -87,8 +73,7 @@ public final class ServerCommand implements Listener {
try {
switch (commandName) {
case "/minecraft:execute":
case "/execute":
case "/minecraft:execute", "/execute" -> {
if (arr.length >= 2) {
int asAtCount = 0;
Matcher asAtMatcher = AS_AT_PATTERN.matcher(command.toLowerCase());
@ -113,41 +98,36 @@ public final class ServerCommand implements Listener {
return "cancel";
}
final String[] executeCommand = Arrays.copyOfRange(
arr, i + 1, arr.length);
arr, i + 1, arr.length);
final String result = checkCommand(sender,
String.join(" ", executeCommand), true, depth + 1);
String.join(" ", executeCommand), true, depth + 1);
if (result == null) {
continue;
} else if (result.equals("cancel")) {
return "cancel";
}
final String pureExecute = String.join(
" ", Arrays.copyOfRange(arr, 0, i + 1));
" ", Arrays.copyOfRange(arr, 0, i + 1));
final String finalResult = checkCommand(sender,
pureExecute + " " + result, isConsoleCommand, depth + 1);
if (finalResult == null) {
return pureExecute + " " + result;
}
return finalResult;
pureExecute + " " + result, isConsoleCommand, depth + 1);
return Objects.requireNonNullElseGet(finalResult,
() -> pureExecute + " " + result);
}
}
break;
case "/minecraft:fill":
case "/fill":
}
case "/minecraft:fill", "/fill" -> {
if (command.contains("auto")) {
return command.replace("auto", "[auto]");
}
break;
case "/minecraft:give":
case "/give":
}
case "/minecraft:give", "/give" -> {
if (Double.parseDouble(arr[arr.length - 1]) > 64) {
// Limit item count
arr[arr.length - 1] = "64";
return String.join(" ", arr);
}
break;
case "/minecraft:particle":
case "/particle":
}
case "/minecraft:particle", "/particle" -> {
int[] numArgs = {14, 10};
for (int i : numArgs) {
if (arr.length < i || arr.length > i + 2) {
@ -159,22 +139,13 @@ public final class ServerCommand implements Listener {
return String.join(" ", arr);
}
}
break;
case "/minecraft:ban":
case "/ban":
case "/minecraft:kick":
case "/kick":
case "/minecraft:tell":
case "/tell":
case "/minecraft:msg":
case "/msg":
case "/minecraft:w":
case "/w":
case "/minecraft:say":
case "/say":
}
case "/minecraft:ban", "/ban", "/minecraft:kick", "/kick",
"/minecraft:tell", "/tell", "/minecraft:msg", "/msg",
"/minecraft:w", "/w", "/minecraft:say", "/say" -> {
return checkSelectors(arr);
case "/minecraft:spreadplayers":
case "/spreadplayers":
}
case "/minecraft:spreadplayers", "/spreadplayers" -> {
if (arr.length == 7 && (arr[6].contains("@e") || arr[6].contains("@a"))) {
return "cancel";
} else if (arr.length >= 5) {
@ -189,34 +160,28 @@ public final class ServerCommand implements Listener {
}
return String.join(" ", arr);
}
break;
case "/viaversion:viaver":
case "/viaversion:viaversion":
case "/viaversion:vvbukkit":
case "/viaver":
case "/viaversion":
case "/vvbukkit":
}
case "/viaversion:viaver", "/viaversion:viaversion", "/viaversion:vvbukkit",
"/viaver", "/viaversion", "/vvbukkit" -> {
if (arr.length >= 2
&& "debug".equalsIgnoreCase(arr[1])) {
return "cancel";
}
break;
case "/scissors:scissors":
case "/scissors":
if(arr.length >= 2
&& "reload".equalsIgnoreCase(arr[1])) {
}
case "/scissors:scissors", "/scissors" -> {
if (arr.length >= 2
&& "reload".equalsIgnoreCase(arr[1])) {
return "cancel";
}
break;
case "/geyser-spigot:geyser":
case "/geyser":
}
case "/geyser-spigot:geyser", "/geyser" -> {
if (arr.length >= 2
&& "dump".equalsIgnoreCase(arr[1])) {
return "cancel";
}
break;
default:
break;
}
default -> {
}
}
} catch (NumberFormatException exception) {
// Do nothing
@ -229,15 +194,12 @@ public final class ServerCommand implements Listener {
void onServerCommand(final ServerCommandEvent event) {
final CommandSender sender = event.getSender();
if (sender instanceof BlockCommandSender) {
final CommandBlock commandBlock = (CommandBlock) ((BlockCommandSender) sender)
.getBlock().getState();
if (sender instanceof BlockCommandSender blockCommandSender) {
final var commandBlock = (CommandBlock) blockCommandSender.getBlock().getState();
commandBlock.setCommand("");
commandBlock.update();
} else if (sender instanceof CommandMinecart) {
final CommandMinecart commandMinecart = (CommandMinecart) sender;
} else if (sender instanceof CommandMinecart commandMinecart) {
commandMinecart.setCommand("");
}

View file

@ -13,7 +13,7 @@ import org.bukkit.event.Listener;
import com.destroystokyo.paper.event.server.AsyncTabCompleteEvent;
public final class ServerTabComplete implements Listener {
private static HashMap<UUID, String> loginNameList = new HashMap<UUID, String>();
private static final HashMap<UUID, String> loginNameList = new HashMap<>();
@EventHandler
void onAsyncTabComplete(final AsyncTabCompleteEvent event) {
@ -39,13 +39,13 @@ public final class ServerTabComplete implements Listener {
return;
}
if (event.getCompletions().size() == 0) {
if (event.getCompletions().isEmpty()) {
event.setCancelled(true);
}
}
static List<String> getOpCompletions(final String argsFragment) {
ArrayList<String> deops = new ArrayList<String>();
final List<String> deops = new ArrayList<>();
for (Player player : Bukkit.getOnlinePlayers()) {
if (!player.isOp()) {
String loginName = loginNameList.get(player.getUniqueId());
@ -58,7 +58,7 @@ public final class ServerTabComplete implements Listener {
}
static List<String> getDeopCompletions(final String argsFragment) {
ArrayList<String> ops = new ArrayList<String>();
final List<String> ops = new ArrayList<>();
for (Player player : Bukkit.getOnlinePlayers()) {
if (player.isOp()) {
String loginName = loginNameList.get(player.getUniqueId());

View file

@ -9,6 +9,10 @@ commands:
aliases: [ broadcastmm, bcmm ]
description: Broadcasts a deserialized MiniMessage component
permission: extras.broadcastminimessage
broadcastrainbow:
aliases: [ bcr ]
description: Broadcasts a rainbow message
permission: extras.broadcastrainbow
broadcastraw:
aliases: [ bcraw, tellraw ]
description: Broadcasts raw text to the server
@ -72,4 +76,4 @@ commands:
permission: extras.spidey
username:
description: Changes your username on the server
permission: extras.username
permission: extras.username