Gotta combine the gamemode commands
This commit is contained in:
3
.idea/misc.xml
generated
3
.idea/misc.xml
generated
@@ -12,4 +12,7 @@
|
|||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
</component>
|
</component>
|
||||||
|
<component name="UnicodeBrowser">
|
||||||
|
<option name="fontName" value="JetBrains Mono" />
|
||||||
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@@ -27,12 +27,15 @@ repositories {
|
|||||||
name = 'sonatype'
|
name = 'sonatype'
|
||||||
url = 'https://oss.sonatype.org/content/groups/public/'
|
url = 'https://oss.sonatype.org/content/groups/public/'
|
||||||
}
|
}
|
||||||
|
maven { url "https://repo.dmulloy2.net/repository/public/" }
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly 'io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT'
|
compileOnly 'io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT'
|
||||||
implementation 'com.google.code.gson:gson:2.10.1'
|
implementation 'com.google.code.gson:gson:2.10.1'
|
||||||
implementation files("libs/PDK-1.3.4.jar")
|
implementation files("libs/PDK-1.3.3.jar")
|
||||||
|
compileOnly 'com.comphenix.protocol:ProtocolLib:5.1.0'
|
||||||
|
implementation 'com.maxmind.geoip2:geoip2:2.17.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
def targetJavaVersion = 17
|
def targetJavaVersion = 17
|
||||||
|
|||||||
45
build.sh
Executable file
45
build.sh
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Run Gradle build
|
||||||
|
./gradlew build
|
||||||
|
|
||||||
|
# Check if the build was successful
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Gradle build successful."
|
||||||
|
|
||||||
|
# SFTP upload
|
||||||
|
SFTP_HOST="home-server"
|
||||||
|
SFTP_USER="trouper"
|
||||||
|
SFTP_REMOTE_DIR="/home/trouper/minecraft/data/plugins/"
|
||||||
|
|
||||||
|
# Create a temporary file with a unique name
|
||||||
|
TEMP_FILE=$(mktemp)
|
||||||
|
|
||||||
|
# Specify the local file to upload
|
||||||
|
LOCAL_FILE="/run/media/trouper/'1TB drive'/IJ/IdeaProjects/UltraUtils/build/libs/UltraUtils-0.0.1.jar"
|
||||||
|
|
||||||
|
# Write the SFTP commands to the temporary file
|
||||||
|
echo "put $LOCAL_FILE $SFTP_REMOTE_DIR" > "$TEMP_FILE"
|
||||||
|
echo "bye" >> "$TEMP_FILE"
|
||||||
|
|
||||||
|
# Use sftp non-interactively with the specified commands
|
||||||
|
sftp -oStrictHostKeyChecking=no -P 689 -oBatchMode=no -b "$TEMP_FILE" "$SFTP_USER@$SFTP_HOST"
|
||||||
|
|
||||||
|
# Remove the temporary file
|
||||||
|
rm -f "$TEMP_FILE"
|
||||||
|
|
||||||
|
# SSH command to reload the plugin on the host
|
||||||
|
#SSH_COMMANDS=(
|
||||||
|
# "pm reload UltraUtils"
|
||||||
|
# "execute at @a run playsound minecraft:entity.experience_orb.pickup master @a \~ \~ \~ 100 1 1"
|
||||||
|
# "tellraw @a '\"'[Server] Reload Complete, Upload Successful.'\"'"
|
||||||
|
#)
|
||||||
|
|
||||||
|
#for cmd in "${SSH_COMMANDS[@]}"; do
|
||||||
|
# ssh -oStrictHostKeyChecking=no -oBatchMode=no "$SFTP_USER@$SFTP_HOST" "docker exec docker_mc_1 mc-send-to-console $cmd"
|
||||||
|
#done
|
||||||
|
|
||||||
|
echo "Plugin Uploaded."
|
||||||
|
else
|
||||||
|
echo "Gradle build failed."
|
||||||
|
fi
|
||||||
2
gradlew
vendored
Normal file → Executable file
2
gradlew
vendored
Normal file → Executable file
@@ -31,7 +31,7 @@
|
|||||||
#
|
#
|
||||||
# Busybox and similar reduced shells will NOT work, because this script
|
# Busybox and similar reduced shells will NOT work, because this script
|
||||||
# requires all of these POSIX shell features:
|
# requires all of these POSIX shell features:
|
||||||
# * functions;
|
# * me.trouper.ultrautils.functions;
|
||||||
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||||
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||||
# * compound commands having a testable exit status, especially «case»;
|
# * compound commands having a testable exit status, especially «case»;
|
||||||
|
|||||||
BIN
libs/PDK-1.3.3.jar
Normal file
BIN
libs/PDK-1.3.3.jar
Normal file
Binary file not shown.
@@ -2,12 +2,19 @@ package me.trouper.ultrautils;
|
|||||||
|
|
||||||
import io.github.itzispyder.pdk.PDK;
|
import io.github.itzispyder.pdk.PDK;
|
||||||
import io.github.itzispyder.pdk.utils.misc.JsonSerializable;
|
import io.github.itzispyder.pdk.utils.misc.JsonSerializable;
|
||||||
|
import me.trouper.ultrautils.commands.EnderChestCommand;
|
||||||
import me.trouper.ultrautils.commands.UltraUtilsCommand;
|
import me.trouper.ultrautils.commands.UltraUtilsCommand;
|
||||||
|
import me.trouper.ultrautils.commands.admin.BroadcastCommand;
|
||||||
|
import me.trouper.ultrautils.commands.admin.MacroToolCommand;
|
||||||
|
import me.trouper.ultrautils.commands.admin.WorldCommand;
|
||||||
import me.trouper.ultrautils.commands.gamemode.*;
|
import me.trouper.ultrautils.commands.gamemode.*;
|
||||||
import me.trouper.ultrautils.commands.mobility.FlyCommand;
|
import me.trouper.ultrautils.commands.mobility.FlyCommand;
|
||||||
import me.trouper.ultrautils.commands.mobility.SpeedCommand;
|
import me.trouper.ultrautils.commands.mobility.SpeedCommand;
|
||||||
import me.trouper.ultrautils.commands.workstations.*;
|
import me.trouper.ultrautils.commands.workstations.*;
|
||||||
import me.trouper.ultrautils.data.config.Config;
|
import me.trouper.ultrautils.data.config.Config;
|
||||||
|
import me.trouper.ultrautils.data.config.Storage;
|
||||||
|
import me.trouper.ultrautils.events.JoinLeaveEvent;
|
||||||
|
import me.trouper.ultrautils.events.MacroUseEvent;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
@@ -18,7 +25,9 @@ public final class UltraUtils extends JavaPlugin {
|
|||||||
|
|
||||||
private static UltraUtils instance;
|
private static UltraUtils instance;
|
||||||
private static final File configFile = new File("plugins/UltraUtils/main-config.json");
|
private static final File configFile = new File("plugins/UltraUtils/main-config.json");
|
||||||
|
private static final File storagefile = new File("plugins/UltraUtils/storage.json");
|
||||||
public static Config config = JsonSerializable.load(configFile, Config.class, new Config());
|
public static Config config = JsonSerializable.load(configFile, Config.class, new Config());
|
||||||
|
public static Storage storage = JsonSerializable.load(storagefile, Storage.class, new Storage());
|
||||||
public static final Logger log = Bukkit.getLogger();
|
public static final Logger log = Bukkit.getLogger();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -58,12 +67,17 @@ public final class UltraUtils extends JavaPlugin {
|
|||||||
new StonecutterCommand().register();
|
new StonecutterCommand().register();
|
||||||
new FlyCommand().register();
|
new FlyCommand().register();
|
||||||
new SpeedCommand().register();
|
new SpeedCommand().register();
|
||||||
|
new WorldCommand().register();
|
||||||
|
new BroadcastCommand().register();
|
||||||
|
new MacroToolCommand().register();
|
||||||
|
new EnderChestCommand().register();
|
||||||
|
|
||||||
// Events
|
// Events
|
||||||
|
new JoinLeaveEvent().register();
|
||||||
|
new MacroUseEvent().register();
|
||||||
|
|
||||||
log.info("""
|
log.info("""
|
||||||
Finished!
|
Finished, UltraUtils has loaded.
|
||||||
UltraUtils has loaded.
|
|
||||||
""");
|
""");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,10 +86,11 @@ public final class UltraUtils extends JavaPlugin {
|
|||||||
|
|
||||||
// Init
|
// Init
|
||||||
config = JsonSerializable.load(configFile, Config.class,new Config());
|
config = JsonSerializable.load(configFile, Config.class,new Config());
|
||||||
|
storage = JsonSerializable.load(storagefile, Storage.class,new Storage());
|
||||||
|
|
||||||
// Save
|
// Save
|
||||||
config.save();
|
config.save();
|
||||||
|
storage.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package me.trouper.ultrautils.commands;
|
||||||
|
|
||||||
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
|
import me.trouper.ultrautils.functions.Text;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@CommandRegistry(value = "enderchest",permission = @Permission("ultrautils.enderchest"),playersOnly = true)
|
||||||
|
public class EnderChestCommand implements CustomCommand {
|
||||||
|
@Override
|
||||||
|
public void dispatchCommand(CommandSender sender, Command command, Args args) {
|
||||||
|
Player user = (Player) sender;
|
||||||
|
Player target = Bukkit.getPlayer(args.get(0).toString());
|
||||||
|
if (target == null) target = user;
|
||||||
|
if (user.equals(target)) {
|
||||||
|
user.openInventory(user.getEnderChest());
|
||||||
|
} else if (user.hasPermission("ultrautils.enderchest.others")) {
|
||||||
|
user.openInventory(target.getEnderChest());
|
||||||
|
} else {
|
||||||
|
user.sendMessage(Text.prefix("You lack the permission to see other player's enderchest."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,17 +6,59 @@ import io.github.itzispyder.pdk.commands.CustomCommand;
|
|||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
import me.trouper.ultrautils.UltraUtils;
|
import me.trouper.ultrautils.UltraUtils;
|
||||||
|
import me.trouper.ultrautils.functions.ImageUtils;
|
||||||
|
import me.trouper.ultrautils.functions.Text;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scoreboard.Objective;
|
||||||
|
import org.bukkit.scoreboard.Scoreboard;
|
||||||
|
import org.bukkit.scoreboard.ScoreboardManager;
|
||||||
|
import org.bukkit.scoreboard.Team;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@CommandRegistry(value = "ultrautils", permission = @Permission("ultrautils.admin"), printStackTrace = true)
|
@CommandRegistry(value = "ultrautils", permission = @Permission("ultrautils.admin"), printStackTrace = true)
|
||||||
public class UltraUtilsCommand implements CustomCommand {
|
public class UltraUtilsCommand implements CustomCommand {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender sender, Args args) {
|
public void dispatchCommand(CommandSender sender, Command command, Args args) {
|
||||||
Player p = (Player) sender;
|
Player p = (Player) sender;
|
||||||
|
|
||||||
switch (args.get(0).toString()) {
|
switch (args.get(0).toString()) {
|
||||||
|
case "resetscoreboard" -> {
|
||||||
|
p.sendMessage(Text.prefix("Starting vanilla scoreboard reset..."));
|
||||||
|
ScoreboardManager manager = Bukkit.getScoreboardManager();
|
||||||
|
if (manager == null) return;
|
||||||
|
Scoreboard board = manager.getMainScoreboard();
|
||||||
|
for (Objective objective : board.getObjectives()) {
|
||||||
|
p.sendMessage(Text.color("&7Removing objective &a%s&7.".formatted(objective.getName())));
|
||||||
|
objective.unregister();
|
||||||
|
}
|
||||||
|
for (Team team : board.getTeams()) {
|
||||||
|
p.sendMessage(Text.color("&7Removing team &a%s&7.".formatted(team.getName())));
|
||||||
|
team.unregister();
|
||||||
|
}
|
||||||
|
for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) {
|
||||||
|
p.sendMessage(Text.color("&7Removing entry &a%s&7.".formatted(offlinePlayer.getName())));
|
||||||
|
board.resetScores(offlinePlayer);
|
||||||
|
}
|
||||||
|
p.sendMessage(Text.prefix("Scoreboard reset complete!"));
|
||||||
|
}
|
||||||
|
case "image" -> {
|
||||||
|
String url = args.get(1).toString();
|
||||||
|
List<String> imageLines = ImageUtils.imageToList("https://crafatar.com/avatars/0e68b123-6df9-4201-a822-4ffae822d429?size=8");
|
||||||
|
imageLines.set(2,imageLines.get(2) + " ");
|
||||||
|
imageLines.set(3,imageLines.get(3) + " §bNice One");
|
||||||
|
imageLines.set(4,imageLines.get(4) + " §fImage Printer");
|
||||||
|
imageLines.set(5,imageLines.get(5) + " ");
|
||||||
|
imageLines.set(7,imageLines.get(7) + " §8§m==========================");
|
||||||
|
imageLines.set(0,imageLines.get(0) + " §8§m==========================");
|
||||||
|
Bukkit.broadcastMessage(String.join("\n", imageLines));
|
||||||
|
}
|
||||||
case "toggle" -> {
|
case "toggle" -> {
|
||||||
switch (args.get(1).toString()) {
|
switch (args.get(1).toString()) {
|
||||||
case "debug" -> {
|
case "debug" -> {
|
||||||
@@ -25,13 +67,18 @@ public class UltraUtilsCommand implements CustomCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
default -> {
|
||||||
|
sender.sendMessage(Component.text(Text.prefix(
|
||||||
|
"&bAuthor:&f obvWolf"
|
||||||
|
)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
b.then(b.arg("toggle")
|
b.then(b.arg("toggle")
|
||||||
.then(b.arg("debug"))
|
.then(b.arg("debug")))
|
||||||
);
|
.then(b.arg("resetscoreboard"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package me.trouper.ultrautils.commands.admin;
|
||||||
|
|
||||||
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
|
import me.trouper.ultrautils.UltraUtils;
|
||||||
|
import me.trouper.ultrautils.functions.Text;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
@CommandRegistry(value = "broadcast", permission = @Permission("ultrautils.broadcast"))
|
||||||
|
public class BroadcastCommand implements CustomCommand {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispatchCommand(CommandSender commandSender, Command command, Args args) {
|
||||||
|
Bukkit.getServer().broadcast(Component.text(Text.color(UltraUtils.config.broadcastPrefix + args.getAll().toString())));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispatchCompletions(CompletionBuilder completionBuilder, CommandSender sender) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
package me.trouper.ultrautils.commands.admin;
|
||||||
|
|
||||||
|
import com.google.gson.JsonArray;
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
|
import me.trouper.ultrautils.UltraUtils;
|
||||||
|
import me.trouper.ultrautils.functions.Text;
|
||||||
|
import org.bukkit.NamespacedKey;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.persistence.PersistentDataContainer;
|
||||||
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@CommandRegistry(value = "macrotool",permission = @Permission("ultrautils.macrotool"),playersOnly = true,printStackTrace = true)
|
||||||
|
public class MacroToolCommand implements CustomCommand {
|
||||||
|
@Override
|
||||||
|
public void dispatchCommand(CommandSender sender, Command cmd, Args args) {
|
||||||
|
Player p = (Player) sender;
|
||||||
|
String command = args.getAll(1).toString();
|
||||||
|
ItemStack item = p.getInventory().getItemInMainHand();
|
||||||
|
if (item.isEmpty()) {
|
||||||
|
p.sendMessage(Text.prefix("You must hold out an item!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (args.get(0).toString()) {
|
||||||
|
case "add" -> {
|
||||||
|
p.sendMessage(Text.prefix("Adding the macro &e%s&7 to your item.".formatted(command)));
|
||||||
|
addMacro(item,command);
|
||||||
|
}
|
||||||
|
case "remove" -> {
|
||||||
|
p.sendMessage(Text.prefix("Removing the macro &e%s&7 from your item.".formatted(command)));
|
||||||
|
removeMacro(item,command);
|
||||||
|
}
|
||||||
|
case "clear" -> {
|
||||||
|
p.sendMessage(Text.prefix("Cleared the macros on your item."));
|
||||||
|
clearMacros(item);
|
||||||
|
}
|
||||||
|
case "get" -> {
|
||||||
|
p.sendMessage(Text.prefix("Macros: &b%s".formatted(getMacros(item).toString())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
|
b.then(b.arg("add","clear","get"))
|
||||||
|
.then(b.arg("remove")
|
||||||
|
.then(b.arg(getMacros(((Player) sender).getInventory().getItemInMainHand()))));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final NamespacedKey MACROS_KEY = new NamespacedKey(UltraUtils.getInstance(), "macros");
|
||||||
|
|
||||||
|
public void setMacros(ItemStack item, List<String> commands) {
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
PersistentDataContainer data = meta.getPersistentDataContainer();
|
||||||
|
|
||||||
|
JsonObject obj = new JsonObject();
|
||||||
|
JsonArray macroList = new JsonArray();
|
||||||
|
|
||||||
|
for (String macro : commands) {
|
||||||
|
macroList.add(macro);
|
||||||
|
}
|
||||||
|
|
||||||
|
obj.add("macro-commands", macroList);
|
||||||
|
data.set(MACROS_KEY,PersistentDataType.STRING, obj.toString());
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addMacro(ItemStack item, String command) {
|
||||||
|
List<String> currentCommands = getMacros(item);
|
||||||
|
currentCommands.add(command);
|
||||||
|
setMacros(item,currentCommands);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeMacro(ItemStack item, String command) {
|
||||||
|
List<String> currentCommands = getMacros(item);
|
||||||
|
if (!currentCommands.remove(command)) return;
|
||||||
|
setMacros(item,currentCommands);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearMacros(ItemStack item) {
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
PersistentDataContainer data = meta.getPersistentDataContainer();
|
||||||
|
data.remove(MACROS_KEY);
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getMacros(ItemStack item) {
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
PersistentDataContainer data = meta.getPersistentDataContainer();
|
||||||
|
List<String> commands = new ArrayList<>();
|
||||||
|
|
||||||
|
String json = data.get(MACROS_KEY, PersistentDataType.STRING);
|
||||||
|
|
||||||
|
if (json == null) return new ArrayList<>();
|
||||||
|
|
||||||
|
JsonObject loaded = JsonParser.parseString(json).getAsJsonObject();
|
||||||
|
|
||||||
|
for (JsonElement element : loaded.get("macro-commands").getAsJsonArray()) {
|
||||||
|
commands.add(element.getAsString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return commands;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
package me.trouper.ultrautils.commands.admin;
|
||||||
|
|
||||||
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
|
import io.github.itzispyder.pdk.utils.ServerUtils;
|
||||||
|
import me.trouper.ultrautils.functions.Text;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@CommandRegistry(value = "world",permission = @Permission("ultrautils.world"),printStackTrace = true)
|
||||||
|
public class WorldCommand implements CustomCommand {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispatchCommand(CommandSender sender, Command command, Args args) {
|
||||||
|
String worldName = args.get(0).toString();
|
||||||
|
World world = Bukkit.getWorld(worldName);
|
||||||
|
if (world == null) {
|
||||||
|
sender.sendMessage(Text.prefix("That world does not exist!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Player target = Bukkit.getPlayer(args.get(1).toString());
|
||||||
|
if (target == null && !(sender instanceof Player)) {
|
||||||
|
sender.sendMessage(Text.prefix("You must be a player, or specify a target user to execute this command!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (target == null) target = (Player) sender;
|
||||||
|
Location where = world.getSpawnLocation();
|
||||||
|
if (where == null) where = new Location(world,0,64,0);
|
||||||
|
|
||||||
|
|
||||||
|
if (target.equals((Player) sender)) {
|
||||||
|
target.teleport(where);
|
||||||
|
sender.sendMessage(Text.prefix("Successfully moved you to &e%s&7.".formatted(world.getName())));
|
||||||
|
|
||||||
|
} else if (sender.hasPermission("ultrautils.world.others")) {
|
||||||
|
target.teleport(where);
|
||||||
|
target.sendMessage(Text.prefix("You have been moved to &a%s&7.".formatted(world.getName())));
|
||||||
|
sender.sendMessage(Text.prefix("Moved &a%s&7 to &e%s&7.".formatted(target.getName(),world.getName())));
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(Text.prefix("You do not have permission to move other players."));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
|
List<String> worlds = new ArrayList<>();
|
||||||
|
for (World world : Bukkit.getWorlds()) {
|
||||||
|
worlds.add(world.getName());
|
||||||
|
}
|
||||||
|
List<String> players = new ArrayList<>();
|
||||||
|
for (Player player : ServerUtils.players()) {
|
||||||
|
players.add(player.getName());
|
||||||
|
}
|
||||||
|
b.then(b.arg(worlds)
|
||||||
|
.then(b.arg(players)));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,25 +1,22 @@
|
|||||||
package me.trouper.ultrautils.commands.gamemode;
|
package me.trouper.ultrautils.commands.gamemode;
|
||||||
|
|
||||||
import functions.Text;
|
|
||||||
import io.github.itzispyder.pdk.commands.Args;
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
import io.github.itzispyder.pdk.utils.ServerUtils;
|
import me.trouper.ultrautils.functions.Text;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
@CommandRegistry(value = "gma",permission = @Permission("ultrautils.gamemode.adventure"),printStackTrace = true)
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandRegistry(value = "gma",permission = @Permission("ultrautils.gamemode.adventure"))
|
|
||||||
public class GMACommand implements CustomCommand {
|
public class GMACommand implements CustomCommand {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender commandSender, Args args) {
|
public void dispatchCommand(CommandSender commandSender, Command command, Args args) {
|
||||||
Player target = Bukkit.getPlayer(args.get(0).toString());
|
Player target = Bukkit.getPlayer(args.get(0).toString());
|
||||||
if (target == null && (commandSender instanceof Player)) target = (Player) commandSender;
|
if (target == null && (commandSender instanceof Player)) target = (Player) commandSender;
|
||||||
if (target == null) {
|
if (target == null) {
|
||||||
@@ -34,11 +31,7 @@ public class GMACommand implements CustomCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
List<String> players = new ArrayList<>();
|
b.arg(Bukkit.getOnlinePlayers(),Player::getName);
|
||||||
for (Player player : ServerUtils.players()) {
|
|
||||||
players.add(player.getName());
|
|
||||||
}
|
|
||||||
b.then(b.arg(players));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,22 @@
|
|||||||
package me.trouper.ultrautils.commands.gamemode;
|
package me.trouper.ultrautils.commands.gamemode;
|
||||||
|
|
||||||
import functions.Text;
|
|
||||||
import io.github.itzispyder.pdk.commands.Args;
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
import io.github.itzispyder.pdk.utils.ServerUtils;
|
import me.trouper.ultrautils.functions.Text;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
@CommandRegistry(value = "gmc",permission = @Permission("ultrautils.gamemode.creative"),printStackTrace = true)
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandRegistry(value = "gmc",permission = @Permission("ultrautils.gamemode.creative"))
|
|
||||||
public class GMCCommand implements CustomCommand {
|
public class GMCCommand implements CustomCommand {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender commandSender, Args args) {
|
public void dispatchCommand(CommandSender commandSender, Command command, Args args) {
|
||||||
Player target = Bukkit.getPlayer(args.get(0).toString());
|
Player target = Bukkit.getPlayer(args.get(0).toString());
|
||||||
if (target == null && (commandSender instanceof Player)) target = (Player) commandSender;
|
if (target == null && (commandSender instanceof Player)) target = (Player) commandSender;
|
||||||
if (target == null) {
|
if (target == null) {
|
||||||
@@ -33,11 +30,7 @@ public class GMCCommand implements CustomCommand {
|
|||||||
GamemodeCommand.setGameMode(commandSender,target,GameMode.CREATIVE,"ultrautils.gamemode.creative");}
|
GamemodeCommand.setGameMode(commandSender,target,GameMode.CREATIVE,"ultrautils.gamemode.creative");}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
List<String> players = new ArrayList<>();
|
b.arg(Bukkit.getOnlinePlayers(),Player::getName);
|
||||||
for (Player player : ServerUtils.players()) {
|
|
||||||
players.add(player.getName());
|
|
||||||
}
|
|
||||||
b.then(b.arg(players));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,22 @@
|
|||||||
package me.trouper.ultrautils.commands.gamemode;
|
package me.trouper.ultrautils.commands.gamemode;
|
||||||
|
|
||||||
import functions.Text;
|
|
||||||
import io.github.itzispyder.pdk.commands.Args;
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
import io.github.itzispyder.pdk.utils.ServerUtils;
|
import me.trouper.ultrautils.functions.Text;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
@CommandRegistry(value = "gms",permission = @Permission("ultrautils.gamemode.survival"),printStackTrace = true)
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandRegistry(value = "gms",permission = @Permission("ultrautils.gamemode.survival"))
|
|
||||||
public class GMSCommand implements CustomCommand {
|
public class GMSCommand implements CustomCommand {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender commandSender, Args args) {
|
public void dispatchCommand(CommandSender commandSender, Command command, Args args) {
|
||||||
Player target = Bukkit.getPlayer(args.get(0).toString());
|
Player target = Bukkit.getPlayer(args.get(0).toString());
|
||||||
if (target == null && (commandSender instanceof Player)) target = (Player) commandSender;
|
if (target == null && (commandSender instanceof Player)) target = (Player) commandSender;
|
||||||
if (target == null) {
|
if (target == null) {
|
||||||
@@ -33,11 +30,7 @@ public class GMSCommand implements CustomCommand {
|
|||||||
GamemodeCommand.setGameMode(commandSender,target,GameMode.SURVIVAL,"ultrautils.gamemode.survival");}
|
GamemodeCommand.setGameMode(commandSender,target,GameMode.SURVIVAL,"ultrautils.gamemode.survival");}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
List<String> players = new ArrayList<>();
|
b.arg(Bukkit.getOnlinePlayers(),Player::getName);
|
||||||
for (Player player : ServerUtils.players()) {
|
|
||||||
players.add(player.getName());
|
|
||||||
}
|
|
||||||
b.then(b.arg(players));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,22 @@
|
|||||||
package me.trouper.ultrautils.commands.gamemode;
|
package me.trouper.ultrautils.commands.gamemode;
|
||||||
|
|
||||||
import functions.Text;
|
|
||||||
import io.github.itzispyder.pdk.commands.Args;
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
import io.github.itzispyder.pdk.utils.ServerUtils;
|
import me.trouper.ultrautils.functions.Text;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
@CommandRegistry(value = "gmsp",permission = @Permission("ultrautils.gamemode.spectator"),printStackTrace = true)
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandRegistry(value = "gmc",permission = @Permission("ultrautils.gamemode.spectator"))
|
|
||||||
public class GMSPCommand implements CustomCommand {
|
public class GMSPCommand implements CustomCommand {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender commandSender, Args args) {
|
public void dispatchCommand(CommandSender commandSender, Command command, Args args) {
|
||||||
Player target = Bukkit.getPlayer(args.get(0).toString());
|
Player target = Bukkit.getPlayer(args.get(0).toString());
|
||||||
if (target == null && (commandSender instanceof Player)) target = (Player) commandSender;
|
if (target == null && (commandSender instanceof Player)) target = (Player) commandSender;
|
||||||
if (target == null) {
|
if (target == null) {
|
||||||
@@ -34,11 +31,7 @@ public class GMSPCommand implements CustomCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
List<String> players = new ArrayList<>();
|
b.arg(Bukkit.getOnlinePlayers(),Player::getName);
|
||||||
for (Player player : ServerUtils.players()) {
|
|
||||||
players.add(player.getName());
|
|
||||||
}
|
|
||||||
b.then(b.arg(players));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,26 +1,24 @@
|
|||||||
package me.trouper.ultrautils.commands.gamemode;
|
package me.trouper.ultrautils.commands.gamemode;
|
||||||
|
|
||||||
import functions.Text;
|
|
||||||
import io.github.itzispyder.pdk.commands.Args;
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
import io.github.itzispyder.pdk.utils.ServerUtils;
|
import me.trouper.ultrautils.functions.Text;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandRegistry(value = "gamemode", permission = @Permission("ultrautils.gamemode"))
|
@CommandRegistry(value = "gamemode", permission = @Permission("ultrautils.gamemode"),printStackTrace = true)
|
||||||
public class GamemodeCommand implements CustomCommand {
|
public class GamemodeCommand implements CustomCommand {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender sender, Args args) {
|
public void dispatchCommand(CommandSender sender, Command command, Args args) {
|
||||||
Player target = Bukkit.getPlayer(args.get(1).toString());
|
Player target = Bukkit.getPlayer(args.get(1).toString());
|
||||||
if (target == null && (sender instanceof Player)) target = (Player) sender;
|
if (target == null && (sender instanceof Player)) target = (Player) sender;
|
||||||
if (target == null) {
|
if (target == null) {
|
||||||
@@ -36,13 +34,9 @@ public class GamemodeCommand implements CustomCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
List<String> players = new ArrayList<>();
|
|
||||||
for (Player player : ServerUtils.players()) {
|
|
||||||
players.add(player.getName());
|
|
||||||
}
|
|
||||||
b.then(b.arg("adventure","creative","survival","spectator")
|
b.then(b.arg("adventure","creative","survival","spectator")
|
||||||
.then(b.arg(players))
|
.then(b.arg(Bukkit.getOnlinePlayers(),Player::getName))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,24 @@
|
|||||||
package me.trouper.ultrautils.commands.mobility;
|
package me.trouper.ultrautils.commands.mobility;
|
||||||
|
|
||||||
import functions.Text;
|
|
||||||
import io.github.itzispyder.pdk.commands.Args;
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
import io.github.itzispyder.pdk.utils.ServerUtils;
|
import io.github.itzispyder.pdk.utils.ServerUtils;
|
||||||
|
import me.trouper.ultrautils.functions.Text;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@CommandRegistry(value = "fly", permission = @Permission("ultrautils.flight"))
|
@CommandRegistry(value = "fly", permission = @Permission("ultrautils.flight"),printStackTrace = true)
|
||||||
public class FlyCommand implements CustomCommand {
|
public class FlyCommand implements CustomCommand {
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender sender, Args args) {
|
public void dispatchCommand(CommandSender sender, Command command, Args args) {
|
||||||
Player user = (Player) sender;
|
Player user = (Player) sender;
|
||||||
Player target = Bukkit.getPlayer(args.get(1).toString());
|
Player target = Bukkit.getPlayer(args.get(1).toString());
|
||||||
if (target == null && (sender instanceof Player)) target = (Player) sender;
|
if (target == null && (sender instanceof Player)) target = (Player) sender;
|
||||||
@@ -41,7 +42,7 @@ public class FlyCommand implements CustomCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
List<String> players = new ArrayList<>();
|
List<String> players = new ArrayList<>();
|
||||||
for (Player player : ServerUtils.players()) {
|
for (Player player : ServerUtils.players()) {
|
||||||
players.add(player.getName());
|
players.add(player.getName());
|
||||||
|
|||||||
@@ -1,25 +1,24 @@
|
|||||||
package me.trouper.ultrautils.commands.mobility;
|
package me.trouper.ultrautils.commands.mobility;
|
||||||
|
|
||||||
import functions.Text;
|
|
||||||
import io.github.itzispyder.pdk.commands.Args;
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
import io.github.itzispyder.pdk.utils.ServerUtils;
|
import io.github.itzispyder.pdk.utils.ServerUtils;
|
||||||
import me.trouper.ultrautils.UltraUtils;
|
import me.trouper.ultrautils.functions.Text;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@CommandRegistry(value = "speed", permission = @Permission("ultrautils.speed"))
|
@CommandRegistry(value = "speed", permission = @Permission("ultrautils.speed"),printStackTrace = true)
|
||||||
public class SpeedCommand implements CustomCommand {
|
public class SpeedCommand implements CustomCommand {
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender sender, Args args) {
|
public void dispatchCommand(CommandSender sender, Command command, Args args) {
|
||||||
String type = args.get(1).toString();
|
String type = args.get(1).toString();
|
||||||
float speed = args.get(0).toFloat();
|
float speed = args.get(0).toFloat();
|
||||||
Player user = (Player) sender;
|
Player user = (Player) sender;
|
||||||
@@ -48,7 +47,7 @@ public class SpeedCommand implements CustomCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
List<String> players = new ArrayList<>();
|
List<String> players = new ArrayList<>();
|
||||||
for (Player player : ServerUtils.players()) {
|
for (Player player : ServerUtils.players()) {
|
||||||
players.add(player.getName());
|
players.add(player.getName());
|
||||||
|
|||||||
@@ -5,19 +5,20 @@ import io.github.itzispyder.pdk.commands.CommandRegistry;
|
|||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandRegistry(value = "anvil", permission = @Permission("ultrautils.anvil"),playersOnly = true)
|
@CommandRegistry(value = "anvil", permission = @Permission("ultrautils.anvil"),playersOnly = true)
|
||||||
public class AnvilCommand implements CustomCommand {
|
public class AnvilCommand implements CustomCommand {
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender sender, Args args) {
|
public void dispatchCommand(CommandSender sender, Command command, Args args) {
|
||||||
Player p = (Player) sender;
|
Player p = (Player) sender;
|
||||||
p.openAnvil(p.getLocation(),true);
|
p.openAnvil(p.getLocation(),true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,19 +5,20 @@ import io.github.itzispyder.pdk.commands.CommandRegistry;
|
|||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandRegistry(value = "cartography", permission = @Permission("ultrautils.cartography"),playersOnly = true)
|
@CommandRegistry(value = "cartography", permission = @Permission("ultrautils.cartography"),playersOnly = true)
|
||||||
public class CartographyCommand implements CustomCommand {
|
public class CartographyCommand implements CustomCommand {
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender sender, Args args) {
|
public void dispatchCommand(CommandSender sender, Command command, Args args) {
|
||||||
Player p = (Player) sender;
|
Player p = (Player) sender;
|
||||||
p.openCartographyTable(p.getLocation(),true);
|
p.openCartographyTable(p.getLocation(),true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,19 +5,20 @@ import io.github.itzispyder.pdk.commands.CommandRegistry;
|
|||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandRegistry(value = "craft", permission = @Permission("ultrautils.craft"),playersOnly = true)
|
@CommandRegistry(value = "craft", permission = @Permission("ultrautils.craft"),playersOnly = true)
|
||||||
public class CraftingCommand implements CustomCommand {
|
public class CraftingCommand implements CustomCommand {
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender sender, Args args) {
|
public void dispatchCommand(CommandSender sender, Command command, Args args) {
|
||||||
Player p = (Player) sender;
|
Player p = (Player) sender;
|
||||||
p.openWorkbench(p.getLocation(),true);
|
p.openWorkbench(p.getLocation(),true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,19 +5,20 @@ import io.github.itzispyder.pdk.commands.CommandRegistry;
|
|||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandRegistry(value = "grindstone", permission = @Permission("ultrautils.grind"),playersOnly = true)
|
@CommandRegistry(value = "grindstone", permission = @Permission("ultrautils.grind"),playersOnly = true)
|
||||||
public class GrindstoneCommand implements CustomCommand {
|
public class GrindstoneCommand implements CustomCommand {
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender sender, Args args) {
|
public void dispatchCommand(CommandSender sender, Command command, Args args) {
|
||||||
Player p = (Player) sender;
|
Player p = (Player) sender;
|
||||||
p.openGrindstone(p.getLocation(),true);
|
p.openGrindstone(p.getLocation(),true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,19 +5,20 @@ import io.github.itzispyder.pdk.commands.CommandRegistry;
|
|||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandRegistry(value = "smith", permission = @Permission("ultrautils.smith"),playersOnly = true)
|
@CommandRegistry(value = "smith", permission = @Permission("ultrautils.smith"),playersOnly = true)
|
||||||
public class LoomCommand implements CustomCommand {
|
public class LoomCommand implements CustomCommand {
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender sender, Args args) {
|
public void dispatchCommand(CommandSender sender, Command command, Args args) {
|
||||||
Player p = (Player) sender;
|
Player p = (Player) sender;
|
||||||
p.openLoom(p.getLocation(),true);
|
p.openLoom(p.getLocation(),true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,19 +5,20 @@ import io.github.itzispyder.pdk.commands.CommandRegistry;
|
|||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandRegistry(value = "smith", permission = @Permission("ultrautils.smith"),playersOnly = true)
|
@CommandRegistry(value = "smith", permission = @Permission("ultrautils.smith"),playersOnly = true)
|
||||||
public class SmithingCommand implements CustomCommand {
|
public class SmithingCommand implements CustomCommand {
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender sender, Args args) {
|
public void dispatchCommand(CommandSender sender, Command command, Args args) {
|
||||||
Player p = (Player) sender;
|
Player p = (Player) sender;
|
||||||
p.openSmithingTable(p.getLocation(),true);
|
p.openSmithingTable(p.getLocation(),true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,19 +5,20 @@ import io.github.itzispyder.pdk.commands.CommandRegistry;
|
|||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandRegistry(value = "stonecutter", permission = @Permission("ultrautils.stonecut"),playersOnly = true)
|
@CommandRegistry(value = "stonecutter", permission = @Permission("ultrautils.stonecut"),playersOnly = true)
|
||||||
public class StonecutterCommand implements CustomCommand {
|
public class StonecutterCommand implements CustomCommand {
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender sender, Args args) {
|
public void dispatchCommand(CommandSender sender, Command command, Args args) {
|
||||||
Player p = (Player) sender;
|
Player p = (Player) sender;
|
||||||
p.openStonecutter(p.getLocation(),true);
|
p.openStonecutter(p.getLocation(),true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b, CommandSender sender) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
4
src/main/java/me/trouper/ultrautils/data/IPLocation.java
Normal file
4
src/main/java/me/trouper/ultrautils/data/IPLocation.java
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
package me.trouper.ultrautils.data;
|
||||||
|
|
||||||
|
public record IPLocation(String country, String countryCode, String region, String regionCode, String city, String zip, String lat, String lon, String timezone, String isp, String org, String as) {
|
||||||
|
}
|
||||||
7
src/main/java/me/trouper/ultrautils/data/IpInfo.java
Normal file
7
src/main/java/me/trouper/ultrautils/data/IpInfo.java
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
package me.trouper.ultrautils.data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
public record IpInfo(String ip, String country, String region, String city, String zip, String lat, String lon, String isp, String org, String as, int timesSeen, long lastSeen) {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,20 @@
|
|||||||
package me.trouper.ultrautils.data;
|
package me.trouper.ultrautils.data.config;
|
||||||
|
|
||||||
public class Storage {
|
import io.github.itzispyder.pdk.utils.misc.JsonSerializable;
|
||||||
|
import me.trouper.ultrautils.data.IpInfo;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class Storage implements JsonSerializable<Storage> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public File getFile() {
|
||||||
|
File file = new File("plugins/UltraUtils/storage.json");
|
||||||
|
file.getParentFile().mkdirs();
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<UUID> whitelist = new ArrayList<>();
|
||||||
|
public Map<String, IpInfo> ipInfoLog = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,10 +14,14 @@ public class Config implements JsonSerializable<Config> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String prefix = "&9UltraCore> &7";
|
public String prefix = "&9UltraCore> &7";
|
||||||
|
public String broadcastPrefix = "&1[&9&lBROADCAST&1] &b";
|
||||||
public boolean debugMode = false;
|
public boolean debugMode = false;
|
||||||
public Plugin plugin = new Plugin();
|
public Plugin plugin = new Plugin();
|
||||||
|
|
||||||
public class Plugin {
|
public class Plugin {
|
||||||
|
public boolean useWhitelist = true;
|
||||||
|
public String pingWebhook = "https://discord.com/api/webhooks/1223301987714596934/1CfWcm-K0vhFjFUQEhxZXwDqrTSKVMK--AtOhv1qxZ7zUwIHZ0ZoJ2iWv_ZPoHd09Ctd";
|
||||||
|
public String joinWebhook = "https://discord.com/api/webhooks/1223301987714596934/1CfWcm-K0vhFjFUQEhxZXwDqrTSKVMK--AtOhv1qxZ7zUwIHZ0ZoJ2iWv_ZPoHd09Ctd";
|
||||||
public String joinMessage = "&8[&2+&8] &a%s&7 has joined.";
|
public String joinMessage = "&8[&2+&8] &a%s&7 has joined.";
|
||||||
public String leaveMessage = "&8[&4-&8] &c%s&7 has left.";
|
public String leaveMessage = "&8[&4-&8] &c%s&7 has left.";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
package me.trouper.ultrautils.events;
|
package me.trouper.ultrautils.events;
|
||||||
|
|
||||||
import functions.Text;
|
|
||||||
import io.github.itzispyder.pdk.events.CustomListener;
|
import io.github.itzispyder.pdk.events.CustomListener;
|
||||||
import me.trouper.ultrautils.UltraUtils;
|
import me.trouper.ultrautils.UltraUtils;
|
||||||
import me.trouper.ultrautils.data.config.Config;
|
import me.trouper.ultrautils.functions.Text;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
@@ -17,7 +16,7 @@ public class JoinLeaveEvent implements CustomListener {
|
|||||||
e.joinMessage(null);
|
e.joinMessage(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
e.joinMessage(Component.text(Text.color(UltraUtils.config.plugin.joinMessage)));
|
e.joinMessage(Component.text(Text.color(UltraUtils.config.plugin.joinMessage.formatted(e.getPlayer().getName()))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
@@ -26,6 +25,6 @@ public class JoinLeaveEvent implements CustomListener {
|
|||||||
e.quitMessage(null);
|
e.quitMessage(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
e.quitMessage(Component.text(Text.color(UltraUtils.config.plugin.leaveMessage)));
|
e.quitMessage(Component.text(Text.color(UltraUtils.config.plugin.leaveMessage.formatted(e.getPlayer().getName()))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package me.trouper.ultrautils.events;
|
||||||
|
|
||||||
|
import io.github.itzispyder.pdk.events.CustomListener;
|
||||||
|
import me.trouper.ultrautils.commands.admin.MacroToolCommand;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class MacroUseEvent implements CustomListener {
|
||||||
|
MacroToolCommand mtc = new MacroToolCommand();
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onClick(PlayerInteractEvent e) {
|
||||||
|
Player p = e.getPlayer();
|
||||||
|
if (!p.hasPermission("ultrautils.macrotool")) return;
|
||||||
|
if (e.getItem() == null) return;
|
||||||
|
switch (e.getAction()) {
|
||||||
|
case RIGHT_CLICK_AIR,RIGHT_CLICK_BLOCK -> {
|
||||||
|
List<String> commands = mtc.getMacros(e.getItem());
|
||||||
|
for (String command : commands) {
|
||||||
|
p.performCommand(command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
100
src/main/java/me/trouper/ultrautils/functions/IPUtils.java
Normal file
100
src/main/java/me/trouper/ultrautils/functions/IPUtils.java
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
package me.trouper.ultrautils.functions;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
|
import me.trouper.ultrautils.UltraUtils;
|
||||||
|
import me.trouper.ultrautils.data.IpInfo;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.http.HttpClient;
|
||||||
|
import java.net.http.HttpRequest;
|
||||||
|
import java.net.http.HttpResponse;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class IPUtils {
|
||||||
|
|
||||||
|
public static Map<String, JsonObject> reportInfo = new HashMap<>();
|
||||||
|
|
||||||
|
public static String getGeoIPJson(String ip) {
|
||||||
|
try {
|
||||||
|
HttpRequest request = HttpRequest.newBuilder()
|
||||||
|
.uri(URI.create("http://ip-api.com/json/" + ip))
|
||||||
|
.header("X-RapidAPI-Key", "152bf8edc6msh42401aab686811fp144d68jsn3f14a7aec380")
|
||||||
|
.header("X-RapidAPI-Host", "ip-geo-location.p.rapidapi.com")
|
||||||
|
.method("GET", HttpRequest.BodyPublishers.noBody())
|
||||||
|
.build();
|
||||||
|
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
|
||||||
|
return response.body();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
return "{}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IpInfo getInfo(String ip) {
|
||||||
|
if (UltraUtils.storage.ipInfoLog.containsKey(ip)) {
|
||||||
|
IpInfo seen = UltraUtils.storage.ipInfoLog.get(ip);
|
||||||
|
if (TimeUtils.isWithin(LocalDateTime.now(),TimeUtils.convertToLocalDateTime(seen.lastSeen()),5)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
IpInfo updated = new IpInfo(seen.ip(),seen.country(),seen.region(),seen.city(),seen.zip(),seen.lat(),seen.lon(),seen.isp(),seen.org(),seen.as(),seen.timesSeen() + 1, TimeUtils.convertToUnixTimestamp(LocalDateTime.now()));
|
||||||
|
UltraUtils.storage.ipInfoLog.replace(ip,updated);
|
||||||
|
UltraUtils.storage.save();
|
||||||
|
return updated;
|
||||||
|
}
|
||||||
|
String json = IPUtils.getGeoIPJson(ip);
|
||||||
|
JsonObject loaded = JsonParser.parseString(json).getAsJsonObject();
|
||||||
|
IpInfo ipInfo = new IpInfo(ip,
|
||||||
|
loaded.get("country").getAsString(),
|
||||||
|
loaded.get("regionName").getAsString(),
|
||||||
|
loaded.get("city").getAsString(),
|
||||||
|
loaded.get("zip").getAsString(),
|
||||||
|
loaded.get("lat").getAsString(),
|
||||||
|
loaded.get("lon").getAsString(),
|
||||||
|
loaded.get("isp").getAsString(),
|
||||||
|
loaded.get("org").getAsString(),
|
||||||
|
loaded.get("as").getAsString(),
|
||||||
|
0,
|
||||||
|
TimeUtils.convertToUnixTimestamp(LocalDateTime.now())
|
||||||
|
);
|
||||||
|
UltraUtils.storage.ipInfoLog.put(ip,ipInfo);
|
||||||
|
UltraUtils.storage.save();
|
||||||
|
return ipInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static JsonObject IPReportInfo(String ip) {
|
||||||
|
if (reportInfo.containsKey(ip)) return reportInfo.get(ip);
|
||||||
|
try {
|
||||||
|
String apiUrl = "https://api.abuseipdb.com/api/v2/reports";
|
||||||
|
|
||||||
|
String ipAddress = "167.86.121.64";
|
||||||
|
int page = 5;
|
||||||
|
int perPage = 25;
|
||||||
|
|
||||||
|
URI uri = new URI(apiUrl + "?ipAddress=" + ipAddress + "&page=" + page + "&perPage=" + perPage);
|
||||||
|
|
||||||
|
HttpClient httpClient = HttpClient.newHttpClient();
|
||||||
|
|
||||||
|
HttpRequest request = HttpRequest.newBuilder()
|
||||||
|
.uri(uri)
|
||||||
|
.header("Key", "b009a77fa7ec89e521e94388356c8970ca8efbf8fa84c6eb588212caaef399cf8fbd781e3884f2d4")
|
||||||
|
.header("Accept", "application/json")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
// Send the request and handle the response
|
||||||
|
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
|
||||||
|
|
||||||
|
|
||||||
|
// Print the response body
|
||||||
|
return JsonParser.parseString(response.body()).getAsJsonObject();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
return new JsonObject();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int totalReports(String ip) {
|
||||||
|
return IPReportInfo(ip).getAsJsonObject("data").get("total").getAsInt();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
package me.trouper.ultrautils.functions;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.format.TextColor;
|
||||||
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ImageUtils {
|
||||||
|
|
||||||
|
public static List<Component> imageToLarge(String URL) {
|
||||||
|
try {
|
||||||
|
URL url = new URL(URL);
|
||||||
|
BufferedImage img = ImageIO.read(url);
|
||||||
|
List<Component> lines = new ArrayList<>();
|
||||||
|
Component message = Component.text("");
|
||||||
|
|
||||||
|
for (int y = 0; y < img.getHeight(); y++) {
|
||||||
|
for (int x = 0; x < img.getWidth(); x++) {
|
||||||
|
int rgb = img.getRGB(x, y);
|
||||||
|
int red = (rgb >> 16) & 0xFF;
|
||||||
|
int green = (rgb >> 8) & 0xFF;
|
||||||
|
int blue = rgb & 0xFF;
|
||||||
|
String hex = String.format("#%02x%02x%02x", red, green, blue);
|
||||||
|
message = message.append(Component.text("█").color(TextColor.fromHexString(hex)));
|
||||||
|
}
|
||||||
|
lines.add(message);
|
||||||
|
message = Component.text(""); // Reset builder for next line
|
||||||
|
}
|
||||||
|
return lines;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace(); // Handle or log the exception appropriately
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static List<Component> imageToComps(String URL) {
|
||||||
|
try {
|
||||||
|
URL url = new URL(URL);
|
||||||
|
BufferedImage img = ImageIO.read(url);
|
||||||
|
List<Component> lines = new ArrayList<>();
|
||||||
|
Component message = Component.text("");
|
||||||
|
int width = 0;
|
||||||
|
|
||||||
|
for (int y = 0; y < img.getHeight(); y++) {
|
||||||
|
for (int x = 0; x < img.getWidth(); x++) {
|
||||||
|
int rgb = img.getRGB(x, y);
|
||||||
|
Color color = Color.fromARGB(rgb);
|
||||||
|
String hex = color.toString().replaceAll("Color:\\[argb0xFF", "").replaceAll("\\]", "");
|
||||||
|
message = message.append(Component.text("█").color(TextColor.fromHexString("#" + hex)));
|
||||||
|
|
||||||
|
if ((width++) >= 7) {
|
||||||
|
lines.add(message);
|
||||||
|
message = Component.text("");
|
||||||
|
width = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return lines;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<String> imageToList(String URL) {
|
||||||
|
try {
|
||||||
|
URL url = new URL(URL);
|
||||||
|
BufferedImage img = ImageIO.read(url);
|
||||||
|
List<String> lines = new ArrayList<>();
|
||||||
|
StringBuilder message = new StringBuilder();
|
||||||
|
int width = 0;
|
||||||
|
|
||||||
|
for (int y = 0; y < img.getHeight(); y++) {
|
||||||
|
for (int x = 0; x < img.getWidth(); x++) {
|
||||||
|
int rgb = img.getRGB(x, y);
|
||||||
|
Color color = Color.fromARGB(rgb);
|
||||||
|
String hex = color.toString().replaceAll("Color:\\[argb0xFF", "").replaceAll("\\]", "");
|
||||||
|
ChatColor chat = ChatColor.of("#" + hex);
|
||||||
|
message.append(chat).append("█");
|
||||||
|
|
||||||
|
if ((width++) >= 7) {
|
||||||
|
lines.add(message.toString());
|
||||||
|
message = new StringBuilder();
|
||||||
|
width = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return lines;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package functions;
|
package me.trouper.ultrautils.functions;
|
||||||
|
|
||||||
|
|
||||||
import me.trouper.ultrautils.UltraUtils;
|
import me.trouper.ultrautils.UltraUtils;
|
||||||
22
src/main/java/me/trouper/ultrautils/functions/TimeUtils.java
Normal file
22
src/main/java/me/trouper/ultrautils/functions/TimeUtils.java
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package me.trouper.ultrautils.functions;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
|
|
||||||
|
public class TimeUtils {
|
||||||
|
|
||||||
|
public static boolean isWithin(LocalDateTime time1, LocalDateTime time2, int maxDifferenceSeconds) {
|
||||||
|
long differenceSeconds = Math.abs(java.time.Duration.between(time1, time2).getSeconds());
|
||||||
|
|
||||||
|
return differenceSeconds <= maxDifferenceSeconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long convertToUnixTimestamp(LocalDateTime localDateTime) {
|
||||||
|
return localDateTime.toEpochSecond(ZoneOffset.UTC);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static LocalDateTime convertToLocalDateTime(long unixTimestamp) {
|
||||||
|
return LocalDateTime.ofInstant(Instant.ofEpochSecond(unixTimestamp), ZoneOffset.UTC);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ api-version: 1.19
|
|||||||
authors: [ obvWolf ]
|
authors: [ obvWolf ]
|
||||||
description: A Utility plugin for server management and moderation.
|
description: A Utility plugin for server management and moderation.
|
||||||
website: https://trouper.me/
|
website: https://trouper.me/
|
||||||
|
depend: [ ProtocolLib ]
|
||||||
permissions:
|
permissions:
|
||||||
ultrautils.admin:
|
ultrautils.admin:
|
||||||
default: op
|
default: op
|
||||||
@@ -54,6 +55,23 @@ permissions:
|
|||||||
ultrautils.flight.others:
|
ultrautils.flight.others:
|
||||||
defualt: op
|
defualt: op
|
||||||
description: Enable or disable flight for specific players
|
description: Enable or disable flight for specific players
|
||||||
|
ultrautils.world:
|
||||||
|
default: op
|
||||||
|
description: Change worlds
|
||||||
|
ultrautils.world.others:
|
||||||
|
default: op
|
||||||
|
description: allows change other people's world
|
||||||
|
ultrautils.macrotool:
|
||||||
|
default: op
|
||||||
|
description: Allows the user to assign commands to tools.
|
||||||
|
ultrautils.enderchest:
|
||||||
|
default: op
|
||||||
|
description: Open Enderchest
|
||||||
|
ultrautils.enderchest.others:
|
||||||
|
default: op
|
||||||
|
description: veiw anyone's enderchest
|
||||||
|
ultrautils.whitelist:
|
||||||
|
default: op
|
||||||
|
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
@@ -116,3 +134,30 @@ commands:
|
|||||||
usage: /fly [<player>]
|
usage: /fly [<player>]
|
||||||
aliases:
|
aliases:
|
||||||
- flight
|
- flight
|
||||||
|
speed:
|
||||||
|
permission: ultrautils.speed
|
||||||
|
description: Change player's default speeds
|
||||||
|
usage: /speed <int> [walk|flight] [<player>]
|
||||||
|
world:
|
||||||
|
permission: ultrautils.world
|
||||||
|
description: Switch worlds
|
||||||
|
usage: /world [<world>] [<player>]
|
||||||
|
broadcast:
|
||||||
|
permission: ultrautils.broadcast
|
||||||
|
description: sends a message to the whole server
|
||||||
|
usage: /broadcast <message>
|
||||||
|
macrotool:
|
||||||
|
permission: ultrautils.macrotool
|
||||||
|
description: Assigns a command to an item of your choice
|
||||||
|
usage: /macrotool <command>
|
||||||
|
aliases:
|
||||||
|
- mt
|
||||||
|
- powertool
|
||||||
|
- macro
|
||||||
|
enderchest:
|
||||||
|
permission: ultrautils.enderchest
|
||||||
|
usage: /enderchest [<player>]
|
||||||
|
whitelist:
|
||||||
|
permission: ultrautils.whitelist
|
||||||
|
description: whitelist
|
||||||
|
usage: /whitelist [add|remove|list|on|off]
|
||||||
Reference in New Issue
Block a user