mirror of
https://github.com/plexusorg/Plex.git
synced 2024-12-23 01:27:37 +00:00
Merge branch 'master' into taah-cmd-blocker
# Conflicts: # src/main/java/dev/plex/Plex.java # src/main/java/dev/plex/listener/impl/CommandListener.java # src/main/java/dev/plex/services/impl/CommandBlockerService.java # src/main/resources/commands.yml
This commit is contained in:
commit
09bc47f3fb
2
.gitignore
vendored
2
.gitignore
vendored
@ -2,7 +2,7 @@
|
|||||||
/.idea/codeStyles/codeStyleConfig.xml
|
/.idea/codeStyles/codeStyleConfig.xml
|
||||||
*.iml
|
*.iml
|
||||||
/target/
|
/target/
|
||||||
/src/main/resources/build.properties
|
src/main/resources/build.properties
|
||||||
|
|
||||||
# OS
|
# OS
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
46
.idea/codeStyles/codeStyleConfig.xml
generated
46
.idea/codeStyles/codeStyleConfig.xml
generated
@ -1,46 +0,0 @@
|
|||||||
<component name="ProjectCodeStyleConfiguration">
|
|
||||||
<code_scheme name="Project" version="173">
|
|
||||||
<JavaCodeStyleSettings>
|
|
||||||
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="20" />
|
|
||||||
<option name="IMPORT_LAYOUT_TABLE">
|
|
||||||
<value>
|
|
||||||
<package name="" withSubpackages="true" static="false" />
|
|
||||||
<package name="" withSubpackages="true" static="true" />
|
|
||||||
</value>
|
|
||||||
</option>
|
|
||||||
</JavaCodeStyleSettings>
|
|
||||||
<JetCodeStyleSettings>
|
|
||||||
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
|
|
||||||
<value>
|
|
||||||
<package name="java.util" alias="false" withSubpackages="false" />
|
|
||||||
<package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
|
|
||||||
<package name="io.ktor" alias="false" withSubpackages="true" />
|
|
||||||
</value>
|
|
||||||
</option>
|
|
||||||
<option name="PACKAGES_IMPORT_LAYOUT">
|
|
||||||
<value>
|
|
||||||
<package name="" alias="false" withSubpackages="true" />
|
|
||||||
<package name="java" alias="false" withSubpackages="true" />
|
|
||||||
<package name="javax" alias="false" withSubpackages="true" />
|
|
||||||
<package name="kotlin" alias="false" withSubpackages="true" />
|
|
||||||
<package name="" alias="true" withSubpackages="true" />
|
|
||||||
</value>
|
|
||||||
</option>
|
|
||||||
</JetCodeStyleSettings>
|
|
||||||
<codeStyleSettings language="JAVA">
|
|
||||||
<option name="BRACE_STYLE" value="2" />
|
|
||||||
<option name="CLASS_BRACE_STYLE" value="2" />
|
|
||||||
<option name="METHOD_BRACE_STYLE" value="2" />
|
|
||||||
<option name="LAMBDA_BRACE_STYLE" value="2" />
|
|
||||||
<option name="ELSE_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="WHILE_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="CATCH_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="SPACE_AFTER_TYPE_CAST" value="false" />
|
|
||||||
<option name="IF_BRACE_FORCE" value="3" />
|
|
||||||
<option name="DOWHILE_BRACE_FORCE" value="3" />
|
|
||||||
<option name="WHILE_BRACE_FORCE" value="3" />
|
|
||||||
<option name="FOR_BRACE_FORCE" value="3" />
|
|
||||||
</codeStyleSettings>
|
|
||||||
</code_scheme>
|
|
||||||
</component>
|
|
@ -1,3 +1,3 @@
|
|||||||
# Plex
|
# Plex [![Build Status](https://ci.plex.us.org/job/Plex/job/master/badge/icon)](https://ci.plex.us.org/job/Plex/job/master/)
|
||||||
|
|
||||||
A new freedom plugin.
|
Plex is a new freedom plugin. It is an alternative to TotalFreedomMod. It has many of the features that make a freedom server unique, but also many features that TotalFreedomMod doesn’t have. For example, there is full support for using a permissions plugin instead of ranks. It is also much more performance oriented. You can use Redis to store indefinite bans and store player data in MongoDB, MariaDB, or SQLite. Plex is also fully customizable as you can change almost all of the messages within the plugin. Plex also has a module system which can be used to add additional functionality. Plex is not a rewrite, "debloat", or related to TotalFreedomMod. Plex is an entirely new experience.
|
||||||
|
15
build.gradle
15
build.gradle
@ -38,9 +38,9 @@ dependencies {
|
|||||||
library "org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3"
|
library "org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3"
|
||||||
library "org.apache.maven.resolver:maven-resolver-transport-http:1.7.3"
|
library "org.apache.maven.resolver:maven-resolver-transport-http:1.7.3"
|
||||||
library "org.apache.maven:maven-resolver-provider:3.8.5"
|
library "org.apache.maven:maven-resolver-provider:3.8.5"
|
||||||
library "org.eclipse.jetty:jetty-server:11.0.8"
|
library "org.eclipse.jetty:jetty-server:11.0.9"
|
||||||
library "org.eclipse.jetty:jetty-servlet:11.0.8"
|
library "org.eclipse.jetty:jetty-servlet:11.0.9"
|
||||||
library "org.eclipse.jetty:jetty-proxy:11.0.8"
|
library "org.eclipse.jetty:jetty-proxy:11.0.9"
|
||||||
library "com.google.code.gson:gson:2.9.0"
|
library "com.google.code.gson:gson:2.9.0"
|
||||||
compileOnly "io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT"
|
compileOnly "io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT"
|
||||||
implementation "org.bstats:bstats-base:3.0.0"
|
implementation "org.bstats:bstats-base:3.0.0"
|
||||||
@ -48,14 +48,21 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.plex"
|
group = "dev.plex"
|
||||||
version = "0.10-SNAPSHOT"
|
version = "1.0.1-SNAPSHOT"
|
||||||
description = "Plex"
|
description = "Plex"
|
||||||
|
|
||||||
shadowJar {
|
shadowJar {
|
||||||
archiveClassifier.set("")
|
archiveClassifier.set("")
|
||||||
|
archiveBaseName.set("Plex")
|
||||||
|
archiveVersion.set("")
|
||||||
relocate "org.bstats", "dev.plex"
|
relocate "org.bstats", "dev.plex"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.jar {
|
||||||
|
archiveBaseName.set("Plex")
|
||||||
|
archiveVersion.set("")
|
||||||
|
}
|
||||||
|
|
||||||
bukkit {
|
bukkit {
|
||||||
name = "Plex"
|
name = "Plex"
|
||||||
version = rootProject.version
|
version = rootProject.version
|
||||||
|
@ -1 +1 @@
|
|||||||
rootProject.name = 'Plex'
|
rootProject.name = "Plex"
|
@ -54,7 +54,7 @@ public class AdminList extends PlexBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gathers every admin's username (cached and in the database)
|
* Gathers every admins username (cached and in the database)
|
||||||
*
|
*
|
||||||
* @return An array list of the names of every admin
|
* @return An array list of the names of every admin
|
||||||
*/
|
*/
|
||||||
|
1
src/main/java/dev/plex/cache/DataUtils.java
vendored
1
src/main/java/dev/plex/cache/DataUtils.java
vendored
@ -5,7 +5,6 @@ import dev.plex.cache.player.PlayerCache;
|
|||||||
import dev.plex.player.PlexPlayer;
|
import dev.plex.player.PlexPlayer;
|
||||||
import dev.plex.storage.StorageType;
|
import dev.plex.storage.StorageType;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parent cache class
|
* Parent cache class
|
||||||
|
@ -1,15 +1,11 @@
|
|||||||
package dev.plex.cache.notes;
|
package dev.plex.cache.notes;
|
||||||
|
|
||||||
import com.google.common.reflect.TypeToken;
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
import dev.plex.Plex;
|
import dev.plex.Plex;
|
||||||
import dev.plex.cache.player.PlayerCache;
|
|
||||||
import dev.plex.player.PlexPlayer;
|
import dev.plex.player.PlexPlayer;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class PlayerNotes
|
public class PlayerNotes
|
||||||
|
@ -125,7 +125,8 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
|||||||
{
|
{
|
||||||
send(sender, messageComponent("noPermissionRank", ChatColor.stripColor(getLevel().getLoginMessage())));
|
send(sender, messageComponent("noPermissionRank", ChatColor.stripColor(getLevel().getLoginMessage())));
|
||||||
return true;
|
return true;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if (getLevel().isAtLeast(Rank.ADMIN) && !plexPlayer.isAdminActive())
|
if (getLevel().isAtLeast(Rank.ADMIN) && !plexPlayer.isAdminActive())
|
||||||
{
|
{
|
||||||
@ -133,14 +134,16 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (plugin.getSystem().equalsIgnoreCase("permissions"))
|
}
|
||||||
|
else if (plugin.getSystem().equalsIgnoreCase("permissions"))
|
||||||
{
|
{
|
||||||
if (!player.hasPermission(perms.permission()))
|
if (!player.hasPermission(perms.permission()))
|
||||||
{
|
{
|
||||||
send(sender, messageComponent("noPermissionNode", perms.permission()));
|
send(sender, messageComponent("noPermissionNode", perms.permission()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
PlexLog.error("Neither permissions or ranks were selected to be used in the configuration file!");
|
PlexLog.error("Neither permissions or ranks were selected to be used in the configuration file!");
|
||||||
send(sender, "There is a server misconfiguration. Please alert a developer or the owner");
|
send(sender, "There is a server misconfiguration. Please alert a developer or the owner");
|
||||||
@ -149,14 +152,15 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
|||||||
}
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Component component = this.execute(sender, isConsole(sender) ? null : (Player) sender, args);
|
Component component = this.execute(sender, isConsole(sender) ? null : (Player)sender, args);
|
||||||
if (component != null)
|
if (component != null)
|
||||||
{
|
{
|
||||||
send(sender, component);
|
send(sender, component);
|
||||||
}
|
}
|
||||||
} catch (PlayerNotFoundException | CommandFailException | ConsoleOnlyException | ConsoleMustDefinePlayerException | PlayerNotBannedException ex)
|
}
|
||||||
|
catch (PlayerNotFoundException | CommandFailException | ConsoleOnlyException | ConsoleMustDefinePlayerException | PlayerNotBannedException ex)
|
||||||
{
|
{
|
||||||
send(sender, MiniMessage.miniMessage().deserialize(ex.getMessage()));
|
send(sender, PlexUtils.mmDeserialize(ex.getMessage()));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -178,7 +182,8 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (params.aliases().split(",").length < 1)
|
}
|
||||||
|
else if (params.aliases().split(",").length < 1)
|
||||||
{
|
{
|
||||||
return getName().equalsIgnoreCase(label);
|
return getName().equalsIgnoreCase(label);
|
||||||
}
|
}
|
||||||
@ -232,7 +237,7 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
|||||||
{
|
{
|
||||||
if (!isConsole(sender))
|
if (!isConsole(sender))
|
||||||
{
|
{
|
||||||
return checkRank((Player) sender, rank, permission);
|
return checkRank((Player)sender, rank, permission);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -263,7 +268,8 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
|||||||
{
|
{
|
||||||
throw new CommandFailException(PlexUtils.messageString("noPermissionRank", ChatColor.stripColor(rank.getLoginMessage())));
|
throw new CommandFailException(PlexUtils.messageString("noPermissionRank", ChatColor.stripColor(rank.getLoginMessage())));
|
||||||
}
|
}
|
||||||
} else if (plugin.getSystem().equalsIgnoreCase("permissions"))
|
}
|
||||||
|
else if (plugin.getSystem().equalsIgnoreCase("permissions"))
|
||||||
{
|
{
|
||||||
if (!player.hasPermission(permission))
|
if (!player.hasPermission(permission))
|
||||||
{
|
{
|
||||||
@ -283,7 +289,8 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
|||||||
if (plugin.getSystem().equalsIgnoreCase("ranks"))
|
if (plugin.getSystem().equalsIgnoreCase("ranks"))
|
||||||
{
|
{
|
||||||
return rank.isAtLeast(Rank.ADMIN) ? plexPlayer.isAdminActive() && plexPlayer.getRankFromString().isAtLeast(rank) : plexPlayer.getRankFromString().isAtLeast(rank);
|
return rank.isAtLeast(Rank.ADMIN) ? plexPlayer.isAdminActive() && plexPlayer.getRankFromString().isAtLeast(rank) : plexPlayer.getRankFromString().isAtLeast(rank);
|
||||||
} else if (plugin.getSystem().equalsIgnoreCase("permissions"))
|
}
|
||||||
|
else if (plugin.getSystem().equalsIgnoreCase("permissions"))
|
||||||
{
|
{
|
||||||
return player.hasPermission(permission);
|
return player.hasPermission(permission);
|
||||||
}
|
}
|
||||||
@ -303,7 +310,7 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
|||||||
{
|
{
|
||||||
if (!isConsole(sender))
|
if (!isConsole(sender))
|
||||||
{
|
{
|
||||||
return checkTab((Player) sender, rank, permission);
|
return checkTab((Player)sender, rank, permission);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -323,7 +330,8 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
|||||||
if (plugin.getSystem().equalsIgnoreCase("ranks"))
|
if (plugin.getSystem().equalsIgnoreCase("ranks"))
|
||||||
{
|
{
|
||||||
return rank.isAtLeast(Rank.ADMIN) ? plexPlayer.isAdminActive() && plexPlayer.getRankFromString().isAtLeast(rank) : plexPlayer.getRankFromString().isAtLeast(rank);
|
return rank.isAtLeast(Rank.ADMIN) ? plexPlayer.isAdminActive() && plexPlayer.getRankFromString().isAtLeast(rank) : plexPlayer.getRankFromString().isAtLeast(rank);
|
||||||
} else if (plugin.getSystem().equalsIgnoreCase("permissions"))
|
}
|
||||||
|
else if (plugin.getSystem().equalsIgnoreCase("permissions"))
|
||||||
{
|
{
|
||||||
return player.hasPermission(permission);
|
return player.hasPermission(permission);
|
||||||
}
|
}
|
||||||
@ -536,7 +544,7 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
|||||||
*/
|
*/
|
||||||
protected Component mmString(String s)
|
protected Component mmString(String s)
|
||||||
{
|
{
|
||||||
return MiniMessage.miniMessage().deserialize(s);
|
return PlexUtils.mmDeserialize(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Rank getLevel()
|
public Rank getLevel()
|
||||||
|
22
src/main/java/dev/plex/command/blocker/BaseCommand.java
Normal file
22
src/main/java/dev/plex/command/blocker/BaseCommand.java
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
package dev.plex.command.blocker;
|
||||||
|
|
||||||
|
import dev.plex.rank.enums.Rank;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public class BaseCommand
|
||||||
|
{
|
||||||
|
private final Rank rank;
|
||||||
|
private final String message;
|
||||||
|
|
||||||
|
public BaseCommand(Rank r, String m)
|
||||||
|
{
|
||||||
|
rank = r;
|
||||||
|
message = m;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return "BaseCommand (Rank: " + (rank == null ? "ALL" : rank.name()) + ", Message: " + message + ")";
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,122 @@
|
|||||||
|
package dev.plex.command.blocker;
|
||||||
|
|
||||||
|
import dev.plex.PlexBase;
|
||||||
|
import dev.plex.rank.enums.Rank;
|
||||||
|
import dev.plex.util.PlexLog;
|
||||||
|
import dev.plex.util.PlexUtils;
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.*;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.bukkit.plugin.SimplePluginManager;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public class CommandBlockerManager extends PlexBase
|
||||||
|
{
|
||||||
|
private Set<BaseCommand> blockedCommands = new HashSet<>();
|
||||||
|
|
||||||
|
public boolean loadedYet;
|
||||||
|
|
||||||
|
private static CommandMap getCommandMap()
|
||||||
|
{
|
||||||
|
return plugin.getServer().getCommandMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void syncCommands()
|
||||||
|
{
|
||||||
|
loadedYet = false;
|
||||||
|
blockedCommands.clear();
|
||||||
|
|
||||||
|
CommandMap commandMap = getCommandMap();
|
||||||
|
|
||||||
|
List<String> raw = plugin.blockedCommands.getStringList("blockedCommands");
|
||||||
|
|
||||||
|
for (String cmd : raw)
|
||||||
|
{
|
||||||
|
int lastDelim = cmd.lastIndexOf(':');
|
||||||
|
|
||||||
|
String cmdWithoutMsg = cmd.substring(0, lastDelim);
|
||||||
|
String[] rawPieces = cmdWithoutMsg.split(":", 3);
|
||||||
|
|
||||||
|
String rawType = rawPieces[0].toLowerCase();
|
||||||
|
String rawRank = rawPieces[1].toLowerCase();
|
||||||
|
String regexOrMatch = rawPieces[2];
|
||||||
|
String message = cmd.substring(lastDelim + 1);
|
||||||
|
|
||||||
|
if (message.equals("_"))
|
||||||
|
{
|
||||||
|
message = PlexUtils.messageString("commandBlocked");
|
||||||
|
}
|
||||||
|
|
||||||
|
Rank rank = switch (rawRank)
|
||||||
|
{
|
||||||
|
case "e" -> null;
|
||||||
|
case "a" -> Rank.ADMIN;
|
||||||
|
case "s" -> Rank.SENIOR_ADMIN;
|
||||||
|
default -> null;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (rawType.equals("r"))
|
||||||
|
{
|
||||||
|
blockedCommands.add(new RegexCommand(Pattern.compile(regexOrMatch, Pattern.CASE_INSENSITIVE), rank, message));
|
||||||
|
}
|
||||||
|
else if (rawType.equals("m"))
|
||||||
|
{
|
||||||
|
int ind = regexOrMatch.indexOf(' ');
|
||||||
|
if (ind == -1 && regexOrMatch.endsWith(":"))
|
||||||
|
{
|
||||||
|
String pluginName = regexOrMatch.substring(0, regexOrMatch.length() - 1);
|
||||||
|
Plugin plugin = Arrays.stream(Bukkit.getServer().getPluginManager().getPlugins()).filter(pl -> pl.getName().equalsIgnoreCase(pluginName)).findAny().orElse(null);
|
||||||
|
if (plugin != null)
|
||||||
|
{
|
||||||
|
List<Command> commandList = PluginCommandYamlParser.parse(plugin);
|
||||||
|
for (Command command : commandList)
|
||||||
|
{
|
||||||
|
blockedCommands.add(new MatchCommand(command.getName(), rank, message));
|
||||||
|
blockedCommands.add(new MatchCommand(pluginName + ":" + command.getName(), rank, message));
|
||||||
|
for (String alias : command.getAliases())
|
||||||
|
{
|
||||||
|
blockedCommands.add(new MatchCommand(alias, rank, message));
|
||||||
|
blockedCommands.add(new MatchCommand(pluginName + ":" + alias, rank, message));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String blockedArgs = ind == -1 ? "" : regexOrMatch.substring(ind + 1);
|
||||||
|
if (!blockedArgs.isEmpty())
|
||||||
|
{
|
||||||
|
blockedArgs = " " + blockedArgs; // necessary in case no args
|
||||||
|
}
|
||||||
|
String cmdForSearch = ind == -1 ? regexOrMatch : regexOrMatch.substring(0, ind);
|
||||||
|
PluginCommand pluginCommand = Bukkit.getServer().getPluginCommand(cmdForSearch);
|
||||||
|
Plugin plugin = null;
|
||||||
|
if (pluginCommand != null) plugin = pluginCommand.getPlugin();
|
||||||
|
Command command = null;
|
||||||
|
if (commandMap != null) command = commandMap.getCommand(cmdForSearch);
|
||||||
|
if (command != null)
|
||||||
|
{
|
||||||
|
String pluginName = plugin == null ? null : plugin.getName();
|
||||||
|
blockedCommands.add(new MatchCommand(command.getName() + blockedArgs, rank, message));
|
||||||
|
if (pluginName != null) blockedCommands.add(new MatchCommand(pluginName + ":" + command.getName() + blockedArgs, rank, message));
|
||||||
|
List<String> aliases = command.getAliases();
|
||||||
|
for (String alias : aliases)
|
||||||
|
{
|
||||||
|
blockedCommands.add(new MatchCommand(alias + blockedArgs, rank, message));
|
||||||
|
if (pluginName != null) blockedCommands.add(new MatchCommand(pluginName + ":" + alias + blockedArgs, rank, message));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// fallback to basic blocking
|
||||||
|
blockedCommands.add(new MatchCommand(cmdForSearch + blockedArgs, rank, message));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
loadedYet = true;
|
||||||
|
}
|
||||||
|
}
|
21
src/main/java/dev/plex/command/blocker/MatchCommand.java
Normal file
21
src/main/java/dev/plex/command/blocker/MatchCommand.java
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package dev.plex.command.blocker;
|
||||||
|
|
||||||
|
import dev.plex.rank.enums.Rank;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public class MatchCommand extends BaseCommand
|
||||||
|
{
|
||||||
|
private final String match;
|
||||||
|
|
||||||
|
public MatchCommand(String r1, Rank r2, String m1)
|
||||||
|
{
|
||||||
|
super(r2, m1);
|
||||||
|
match = r1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return "MatchCommand (Rank: " + (getRank() == null ? "ALL" : getRank().name()) + ", Match: " + match + ", Message: " + getMessage() + ")";
|
||||||
|
}
|
||||||
|
}
|
23
src/main/java/dev/plex/command/blocker/RegexCommand.java
Normal file
23
src/main/java/dev/plex/command/blocker/RegexCommand.java
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
package dev.plex.command.blocker;
|
||||||
|
|
||||||
|
import dev.plex.rank.enums.Rank;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public class RegexCommand extends BaseCommand
|
||||||
|
{
|
||||||
|
private final Pattern regex;
|
||||||
|
|
||||||
|
public RegexCommand(Pattern r1, Rank r2, String m1)
|
||||||
|
{
|
||||||
|
super(r2, m1);
|
||||||
|
regex = r1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return "RegexCommand (Rank: " + (getRank() == null ? "ALL" : getRank().name()) + ", Regex: " + regex.toString() + ", Message: " + getMessage() + ")";
|
||||||
|
}
|
||||||
|
}
|
@ -7,9 +7,7 @@ import dev.plex.command.annotation.CommandPermissions;
|
|||||||
import dev.plex.command.source.RequiredCommandSource;
|
import dev.plex.command.source.RequiredCommandSource;
|
||||||
import dev.plex.player.PlexPlayer;
|
import dev.plex.player.PlexPlayer;
|
||||||
import dev.plex.rank.enums.Rank;
|
import dev.plex.rank.enums.Rank;
|
||||||
import dev.plex.util.PlexUtils;
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
@ -8,12 +8,15 @@ import dev.plex.command.annotation.System;
|
|||||||
import dev.plex.rank.enums.Rank;
|
import dev.plex.rank.enums.Rank;
|
||||||
import dev.plex.util.PlexLog;
|
import dev.plex.util.PlexLog;
|
||||||
import dev.plex.util.PlexUtils;
|
import dev.plex.util.PlexUtils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
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.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -59,6 +62,16 @@ public class DebugCMD extends PlexCommand
|
|||||||
}
|
}
|
||||||
return mmString("<aqua>Re-applied game all the game rules!");
|
return mmString("<aqua>Re-applied game all the game rules!");
|
||||||
}
|
}
|
||||||
|
if (args[0].equalsIgnoreCase("aliases"))
|
||||||
|
{
|
||||||
|
String commandName = args[1];
|
||||||
|
Command command = plugin.getServer().getCommandMap().getCommand(commandName);
|
||||||
|
if (command == null)
|
||||||
|
{
|
||||||
|
return mmString("<red>That command could not be found!");
|
||||||
|
}
|
||||||
|
return mmString("<aqua>Aliases for " + commandName + " are: " + Arrays.toString(command.getAliases().toArray(new String[0])));
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package dev.plex.command.impl;
|
package dev.plex.command.impl;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
|
||||||
import dev.plex.command.PlexCommand;
|
import dev.plex.command.PlexCommand;
|
||||||
import dev.plex.command.annotation.CommandParameters;
|
import dev.plex.command.annotation.CommandParameters;
|
||||||
import dev.plex.command.annotation.CommandPermissions;
|
import dev.plex.command.annotation.CommandPermissions;
|
||||||
@ -8,10 +7,8 @@ import dev.plex.command.source.RequiredCommandSource;
|
|||||||
import dev.plex.rank.enums.Rank;
|
import dev.plex.rank.enums.Rank;
|
||||||
import dev.plex.util.PlexUtils;
|
import dev.plex.util.PlexUtils;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
@ -37,6 +37,10 @@ public class ListCMD extends PlexCommand
|
|||||||
.append(Component.space())
|
.append(Component.space())
|
||||||
.append(Component.text(Bukkit.getMaxPlayers() == 1 ? "player." : "players.").color(NamedTextColor.GRAY));
|
.append(Component.text(Bukkit.getMaxPlayers() == 1 ? "player." : "players.").color(NamedTextColor.GRAY));
|
||||||
send(sender, header);
|
send(sender, header);
|
||||||
|
if (players.size() == 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
for (int i = 0; i < players.size(); i++)
|
for (int i = 0; i < players.size(); i++)
|
||||||
{
|
{
|
||||||
Player player = players.get(i);
|
Player player = players.get(i);
|
||||||
|
@ -11,7 +11,6 @@ import dev.plex.rank.enums.Rank;
|
|||||||
import dev.plex.util.PlexUtils;
|
import dev.plex.util.PlexUtils;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -51,13 +51,16 @@ public class PlexCMD extends PlexCommand
|
|||||||
plugin.indefBans.load(false);
|
plugin.indefBans.load(false);
|
||||||
plugin.getPunishmentManager().mergeIndefiniteBans();
|
plugin.getPunishmentManager().mergeIndefiniteBans();
|
||||||
send(sender, "Reloaded indefinite bans");
|
send(sender, "Reloaded indefinite bans");
|
||||||
|
plugin.blockedCommands.load();
|
||||||
|
plugin.getCommandBlockerManager().syncCommands();
|
||||||
|
send(sender, "Reloaded blocked commands file");
|
||||||
plugin.getRankManager().importDefaultRanks();
|
plugin.getRankManager().importDefaultRanks();
|
||||||
send(sender, "Imported ranks");
|
send(sender, "Imported ranks");
|
||||||
send(sender, "Plex successfully reloaded.");
|
|
||||||
plugin.setSystem(plugin.config.getString("system"));
|
plugin.setSystem(plugin.config.getString("system"));
|
||||||
plugin.getServiceManager().endServices();
|
plugin.getServiceManager().endServices();
|
||||||
plugin.getServiceManager().startServices();
|
plugin.getServiceManager().startServices();
|
||||||
PlexLog.debug("Restarted services");
|
PlexLog.debug("Restarted services");
|
||||||
|
send(sender, "Plex successfully reloaded.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
else if (args[0].equalsIgnoreCase("redis"))
|
else if (args[0].equalsIgnoreCase("redis"))
|
||||||
|
@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.SENIOR_ADMIN, permission = "plex.rawsay", source = RequiredCommandSource.ANY)
|
@CommandPermissions(level = Rank.SENIOR_ADMIN, permission = "plex.rawsay", source = RequiredCommandSource.ANY)
|
||||||
@CommandParameters(name = "rawsay", usage = "/<command> <message>", description = "Displays a message to everyone")
|
@CommandParameters(name = "rawsay", usage = "/<command> <message>", description = "Displays a raw message to everyone")
|
||||||
public class RawSayCMD extends PlexCommand
|
public class RawSayCMD extends PlexCommand
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
|
31
src/main/java/dev/plex/command/impl/SayCMD.java
Normal file
31
src/main/java/dev/plex/command/impl/SayCMD.java
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
package dev.plex.command.impl;
|
||||||
|
|
||||||
|
import dev.plex.command.PlexCommand;
|
||||||
|
import dev.plex.command.annotation.CommandParameters;
|
||||||
|
import dev.plex.command.annotation.CommandPermissions;
|
||||||
|
import dev.plex.command.source.RequiredCommandSource;
|
||||||
|
import dev.plex.rank.enums.Rank;
|
||||||
|
import dev.plex.util.PlexUtils;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
@CommandPermissions(level = Rank.ADMIN, permission = "plex.say", source = RequiredCommandSource.ANY)
|
||||||
|
@CommandParameters(name = "say", usage = "/<command> <message>", description = "Displays a message to everyone")
|
||||||
|
public class SayCMD extends PlexCommand
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
protected Component execute(@NotNull CommandSender sender, @Nullable Player playerSender, String[] args)
|
||||||
|
{
|
||||||
|
if (args.length == 0)
|
||||||
|
{
|
||||||
|
return usage();
|
||||||
|
}
|
||||||
|
|
||||||
|
PlexUtils.broadcast(PlexUtils.messageComponent("sayCommand", sender.getName(), StringUtils.join(args, " ")));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -7,8 +7,11 @@ import dev.plex.command.annotation.CommandPermissions;
|
|||||||
import dev.plex.command.source.RequiredCommandSource;
|
import dev.plex.command.source.RequiredCommandSource;
|
||||||
import dev.plex.player.PlexPlayer;
|
import dev.plex.player.PlexPlayer;
|
||||||
import dev.plex.rank.enums.Rank;
|
import dev.plex.rank.enums.Rank;
|
||||||
|
import dev.plex.util.PlexUtils;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.standard.StandardTags;
|
||||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
@ -47,15 +50,15 @@ public class TagCMD extends PlexCommand
|
|||||||
return usage("/tag set <prefix>");
|
return usage("/tag set <prefix>");
|
||||||
}
|
}
|
||||||
String prefix = StringUtils.join(args, " ", 1, args.length);
|
String prefix = StringUtils.join(args, " ", 1, args.length);
|
||||||
Component convertedComponent = removeEvents(noColorComponentFromString(prefix));
|
|
||||||
convertedComponent = removeEvents(MiniMessage.miniMessage().deserialize(LegacyComponentSerializer.legacySection().serialize(convertedComponent)));
|
Component convertedComponent = removeEvents(PlexUtils.mmCustomDeserialize(prefix = prefix.replace("<newline>", "").replace("<br>", ""), StandardTags.color(), StandardTags.rainbow(), StandardTags.decorations(), StandardTags.gradient(), StandardTags.transition())); //noColorComponentFromString(prefix)
|
||||||
|
|
||||||
if (PlainTextComponentSerializer.plainText().serialize(convertedComponent).length() > plugin.config.getInt("chat.max-tag-length", 16))
|
if (PlainTextComponentSerializer.plainText().serialize(convertedComponent).length() > plugin.config.getInt("chat.max-tag-length", 16))
|
||||||
{
|
{
|
||||||
return messageComponent("maximumPrefixLength", plugin.config.getInt("chat.max-tag-length", 16));
|
return messageComponent("maximumPrefixLength", plugin.config.getInt("chat.max-tag-length", 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
player.setPrefix(MiniMessage.miniMessage().serialize(convertedComponent));
|
player.setPrefix(prefix);
|
||||||
DataUtils.update(player);
|
DataUtils.update(player);
|
||||||
return messageComponent("prefixSetTo", MiniMessage.miniMessage().serialize(convertedComponent));
|
return messageComponent("prefixSetTo", MiniMessage.miniMessage().serialize(convertedComponent));
|
||||||
}
|
}
|
||||||
|
@ -5,24 +5,12 @@ import dev.plex.command.annotation.CommandParameters;
|
|||||||
import dev.plex.command.annotation.CommandPermissions;
|
import dev.plex.command.annotation.CommandPermissions;
|
||||||
import dev.plex.command.source.RequiredCommandSource;
|
import dev.plex.command.source.RequiredCommandSource;
|
||||||
import dev.plex.rank.enums.Rank;
|
import dev.plex.rank.enums.Rank;
|
||||||
import dev.plex.services.ServiceManager;
|
|
||||||
import dev.plex.services.impl.AutoWipeService;
|
|
||||||
import dev.plex.util.PlexUtils;
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.ADMIN, permission = "plex.toggledrops", source = RequiredCommandSource.ANY)
|
@CommandPermissions(level = Rank.ADMIN, permission = "plex.toggledrops", source = RequiredCommandSource.ANY)
|
||||||
@CommandParameters(name = "toggledrops", description = "Toggle immediately removing drops.", usage = "/<command>", aliases = "td")
|
@CommandParameters(name = "toggledrops", description = "Toggle immediately removing drops.", usage = "/<command>", aliases = "td")
|
||||||
public class ToggleDropsCMD extends PlexCommand
|
public class ToggleDropsCMD extends PlexCommand
|
||||||
|
@ -47,7 +47,7 @@ public class UnbanCMD extends PlexCommand
|
|||||||
PlexPlayer plexPlayer = getOfflinePlexPlayer(targetUUID);
|
PlexPlayer plexPlayer = getOfflinePlexPlayer(targetUUID);
|
||||||
if (!aBoolean)
|
if (!aBoolean)
|
||||||
{
|
{
|
||||||
send(sender, MiniMessage.miniMessage().deserialize(new PlayerNotBannedException().getMessage()));
|
send(sender, PlexUtils.mmDeserialize(new PlayerNotBannedException().getMessage()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
plugin.getPunishmentManager().unban(targetUUID);
|
plugin.getPunishmentManager().unban(targetUUID);
|
||||||
|
@ -65,7 +65,7 @@ public class Config extends YamlConfiguration
|
|||||||
if (loadFromFile)
|
if (loadFromFile)
|
||||||
{
|
{
|
||||||
YamlConfiguration externalYamlConfig = YamlConfiguration.loadConfiguration(file);
|
YamlConfiguration externalYamlConfig = YamlConfiguration.loadConfiguration(file);
|
||||||
InputStreamReader internalConfigFileStream = new InputStreamReader(Plex.get().getResource(name), StandardCharsets.UTF_8);
|
InputStreamReader internalConfigFileStream = new InputStreamReader(plugin.getResource(name), StandardCharsets.UTF_8);
|
||||||
YamlConfiguration internalYamlConfig = YamlConfiguration.loadConfiguration(internalConfigFileStream);
|
YamlConfiguration internalYamlConfig = YamlConfiguration.loadConfiguration(internalConfigFileStream);
|
||||||
|
|
||||||
// Gets all the keys inside the internal file and iterates through all of it's key pairs
|
// Gets all the keys inside the internal file and iterates through all of it's key pairs
|
||||||
@ -76,6 +76,7 @@ public class Config extends YamlConfiguration
|
|||||||
{
|
{
|
||||||
// If it doesn't contain the key, we set the key based off what was found inside the plugin jar
|
// If it doesn't contain the key, we set the key based off what was found inside the plugin jar
|
||||||
externalYamlConfig.setComments(string, internalYamlConfig.getComments(string));
|
externalYamlConfig.setComments(string, internalYamlConfig.getComments(string));
|
||||||
|
externalYamlConfig.setInlineComments(string, internalYamlConfig.getInlineComments(string));
|
||||||
externalYamlConfig.set(string, internalYamlConfig.get(string));
|
externalYamlConfig.set(string, internalYamlConfig.get(string));
|
||||||
PlexLog.log("Setting key: " + string + " in " + this.name + " to the default value(s) since it does not exist!");
|
PlexLog.log("Setting key: " + string + " in " + this.name + " to the default value(s) since it does not exist!");
|
||||||
added = true;
|
added = true;
|
||||||
|
@ -8,7 +8,7 @@ import org.bukkit.event.Event;
|
|||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event that is ran when a player is added to the admin list
|
* Event that is run when a player is added to the admin list
|
||||||
*/
|
*/
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Data
|
@Data
|
||||||
|
@ -8,7 +8,7 @@ import org.bukkit.event.Event;
|
|||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event that is ran when a player is removed from the admin list
|
* Event that is run when a player is removed from the admin list
|
||||||
*/
|
*/
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Data
|
@Data
|
||||||
|
@ -9,7 +9,7 @@ import org.bukkit.event.Event;
|
|||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event that is ran when an admin's rank is set
|
* Event that is run when an admins rank is set
|
||||||
*/
|
*/
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Data
|
@Data
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package dev.plex.event;
|
package dev.plex.event;
|
||||||
|
|
||||||
import dev.plex.player.PlexPlayer;
|
import dev.plex.player.PlexPlayer;
|
||||||
import java.util.UUID;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
@ -18,16 +18,17 @@ public class AdminListener extends PlexListener
|
|||||||
{
|
{
|
||||||
String userSender = event.getSender().getName();
|
String userSender = event.getSender().getName();
|
||||||
PlexPlayer target = event.getPlexPlayer();
|
PlexPlayer target = event.getPlexPlayer();
|
||||||
if (!target.getRank().isEmpty())
|
if (target.getRankFromString().isAtLeast(Rank.ADMIN))
|
||||||
{
|
{
|
||||||
PlexUtils.broadcast(messageComponent("adminReadded", userSender, target.getName(), target.getRankFromString().getReadable()));
|
PlexUtils.broadcast(messageComponent("adminReadded", userSender, target.getName(), target.getRankFromString().getReadable()));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
target.setRank(Rank.ADMIN.name());
|
target.setRank(Rank.ADMIN.name());
|
||||||
PlexUtils.broadcast(messageComponent("newAdminAdded", userSender, target.getName()));
|
PlexUtils.broadcast(messageComponent("newAdminAdded", userSender, target.getName()));
|
||||||
}
|
}
|
||||||
target.setAdminActive(true);
|
target.setAdminActive(true);
|
||||||
DataUtils.update(target);
|
DataUtils.update(target);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
@ -35,7 +36,6 @@ public class AdminListener extends PlexListener
|
|||||||
{
|
{
|
||||||
String userSender = event.getSender().getName();
|
String userSender = event.getSender().getName();
|
||||||
PlexPlayer target = event.getPlexPlayer();
|
PlexPlayer target = event.getPlexPlayer();
|
||||||
// target.setRank("");
|
|
||||||
target.setAdminActive(false);
|
target.setAdminActive(false);
|
||||||
DataUtils.update(target);
|
DataUtils.update(target);
|
||||||
PlexUtils.broadcast(messageComponent("adminRemoved", userSender, target.getName()));
|
PlexUtils.broadcast(messageComponent("adminRemoved", userSender, target.getName()));
|
||||||
|
@ -28,7 +28,7 @@ public class BlockListener extends PlexListener
|
|||||||
@EventHandler(priority = EventPriority.LOW)
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void onBlockPlace(BlockPlaceEvent event)
|
public void onBlockPlace(BlockPlaceEvent event)
|
||||||
{
|
{
|
||||||
List<String> blockedBlocksConfig = plugin.config.getStringList("blockedBlocks");
|
List<String> blockedBlocksConfig = plugin.config.getStringList("blocked_blocks");
|
||||||
if (blockedBlocksConfig != cachedBlockedBlocksConfig)
|
if (blockedBlocksConfig != cachedBlockedBlocksConfig)
|
||||||
{
|
{
|
||||||
blockedBlocks.clear();
|
blockedBlocks.clear();
|
||||||
@ -57,17 +57,17 @@ public class BlockListener extends PlexListener
|
|||||||
if (blockedBlocks.contains(block.getType()))
|
if (blockedBlocks.contains(block.getType()))
|
||||||
{
|
{
|
||||||
block.setType(Material.CAKE);
|
block.setType(Material.CAKE);
|
||||||
PlexUtils.disabledEffect(event.getPlayer(), block.getLocation().add(0.5,0.5,0.5));
|
PlexUtils.disabledEffect(event.getPlayer(), block.getLocation().add(0.5, 0.5, 0.5));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(SIGNS.contains(block.getType()))
|
if (SIGNS.contains(block.getType()))
|
||||||
{
|
{
|
||||||
Sign sign = (Sign) block.getState();
|
Sign sign = (Sign)block.getState();
|
||||||
boolean anythingChanged = false;
|
boolean anythingChanged = false;
|
||||||
for (int i = 0; i < sign.lines().size(); i++)
|
for (int i = 0; i < sign.lines().size(); i++)
|
||||||
{
|
{
|
||||||
Component line = sign.line(i);
|
Component line = sign.line(i);
|
||||||
if(line.clickEvent() != null)
|
if (line.clickEvent() != null)
|
||||||
{
|
{
|
||||||
anythingChanged = true;
|
anythingChanged = true;
|
||||||
sign.line(i, line.clickEvent(null));
|
sign.line(i, line.clickEvent(null));
|
||||||
|
@ -9,7 +9,10 @@ import io.papermc.paper.event.player.AsyncChatEvent;
|
|||||||
import net.kyori.adventure.audience.Audience;
|
import net.kyori.adventure.audience.Audience;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -51,14 +54,14 @@ public class ChatListener extends PlexListener
|
|||||||
return Component.empty()
|
return Component.empty()
|
||||||
.append(prefix)
|
.append(prefix)
|
||||||
.append(Component.space())
|
.append(Component.space())
|
||||||
.append(LegacyComponentSerializer.legacyAmpersand().deserialize("&" + plugin.config.getString("chat.name-color") + LegacyComponentSerializer.legacyAmpersand().serialize(sourceDisplayName)))
|
.append(MiniMessage.miniMessage().deserialize(plugin.config.getString("chat.name-color", "<white>"))).append(sourceDisplayName)
|
||||||
.append(Component.space())
|
.append(Component.space())
|
||||||
.append(Component.text("»").color(NamedTextColor.GRAY))
|
.append(Component.text("»").color(NamedTextColor.GRAY))
|
||||||
.append(Component.space())
|
.append(Component.space())
|
||||||
.append(message);
|
.append(message);
|
||||||
}
|
}
|
||||||
return Component.empty()
|
return Component.empty()
|
||||||
.append(LegacyComponentSerializer.legacyAmpersand().deserialize("&" + plugin.config.getString("chat.name-color") + LegacyComponentSerializer.legacyAmpersand().serialize(sourceDisplayName)))
|
.append(MiniMessage.miniMessage().deserialize(plugin.config.getString("chat.name-color", "<white>"))).append(sourceDisplayName)
|
||||||
.append(Component.space())
|
.append(Component.space())
|
||||||
.append(Component.text("»").color(NamedTextColor.GRAY))
|
.append(Component.text("»").color(NamedTextColor.GRAY))
|
||||||
.append(Component.space())
|
.append(Component.space())
|
||||||
|
@ -9,6 +9,9 @@ public class DropListener extends PlexListener
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerDropItem(PlayerDropItemEvent event)
|
public void onPlayerDropItem(PlayerDropItemEvent event)
|
||||||
{
|
{
|
||||||
if (!plugin.config.getBoolean("allowdrops")) event.setCancelled(true);
|
if (!plugin.config.getBoolean("allowdrops"))
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ public class PlayerListener extends PlexListener
|
|||||||
String loginMessage = plugin.getRankManager().getLoginMessage(plexPlayer);
|
String loginMessage = plugin.getRankManager().getLoginMessage(plexPlayer);
|
||||||
if (!loginMessage.isEmpty())
|
if (!loginMessage.isEmpty())
|
||||||
{
|
{
|
||||||
PlexUtils.broadcast(MiniMessage.miniMessage().deserialize("<aqua>" + player.getName() + " is " + loginMessage));
|
PlexUtils.broadcast(PlexUtils.mmDeserialize("<aqua>" + player.getName() + " is " + loginMessage));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plugin.getStorageType() != StorageType.MONGODB)
|
if (plugin.getStorageType() != StorageType.MONGODB)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package dev.plex.listener.impl;
|
package dev.plex.listener.impl;
|
||||||
|
|
||||||
import com.destroystokyo.paper.event.server.PaperServerListPingEvent;
|
import com.destroystokyo.paper.event.server.PaperServerListPingEvent;
|
||||||
|
import com.destroystokyo.paper.event.server.ServerTickEndEvent;
|
||||||
import dev.plex.listener.PlexListener;
|
import dev.plex.listener.PlexListener;
|
||||||
import dev.plex.util.PlexUtils;
|
import dev.plex.util.PlexUtils;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -8,6 +9,7 @@ import java.util.stream.Collectors;
|
|||||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.player.PlayerKickEvent;
|
||||||
|
|
||||||
public class ServerListener extends PlexListener
|
public class ServerListener extends PlexListener
|
||||||
{
|
{
|
||||||
|
@ -39,7 +39,7 @@ public class SpawnListener extends PlexListener
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plugin.config.getStringList("blockedEntities").stream().anyMatch(type -> type.equalsIgnoreCase(event.getEntityType().name())))
|
if (plugin.config.getStringList("blocked_entities").stream().anyMatch(type -> type.equalsIgnoreCase(event.getEntityType().name())))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
Location location = event.getLocation();
|
Location location = event.getLocation();
|
||||||
@ -56,7 +56,7 @@ public class SpawnListener extends PlexListener
|
|||||||
if (SPAWN_EGGS.contains(itemType))
|
if (SPAWN_EGGS.contains(itemType))
|
||||||
{
|
{
|
||||||
Block block = event.getBlock();
|
Block block = event.getBlock();
|
||||||
Location blockLoc = block.getLocation().add(0.5,0.5,0.5).add(((Directional) block.getBlockData()).getFacing().getDirection().multiply(0.8));
|
Location blockLoc = block.getLocation().add(0.5, 0.5, 0.5).add(((Directional)block.getBlockData()).getFacing().getDirection().multiply(0.8));
|
||||||
EntityType eggType = spawnEggToEntityType(itemType);
|
EntityType eggType = spawnEggToEntityType(itemType);
|
||||||
if (eggType != null)
|
if (eggType != null)
|
||||||
{
|
{
|
||||||
@ -109,7 +109,8 @@ public class SpawnListener extends PlexListener
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static EntityType spawnEggToEntityType(Material mat){
|
private static EntityType spawnEggToEntityType(Material mat)
|
||||||
|
{
|
||||||
EntityType eggType;
|
EntityType eggType;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -21,7 +21,6 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.block.BlockBreakEvent;
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
import org.bukkit.event.entity.EntitySpawnEvent;
|
import org.bukkit.event.entity.EntitySpawnEvent;
|
||||||
import org.bukkit.event.player.PlayerChangedWorldEvent;
|
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ public class PlexPlayer
|
|||||||
public Rank getRankFromString()
|
public Rank getRankFromString()
|
||||||
{
|
{
|
||||||
OfflinePlayer player = Bukkit.getOfflinePlayer(uuid);
|
OfflinePlayer player = Bukkit.getOfflinePlayer(uuid);
|
||||||
if (rank.isEmpty())
|
if (rank.isEmpty() || !isAdminActive())
|
||||||
{
|
{
|
||||||
if (player.isOp())
|
if (player.isOp())
|
||||||
{
|
{
|
||||||
|
@ -15,6 +15,7 @@ import lombok.SneakyThrows;
|
|||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.standard.StandardTags;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.json.JSONTokener;
|
import org.json.JSONTokener;
|
||||||
@ -95,7 +96,7 @@ public class RankManager
|
|||||||
{
|
{
|
||||||
if (!player.getPrefix().equals(""))
|
if (!player.getPrefix().equals(""))
|
||||||
{
|
{
|
||||||
return MiniMessage.miniMessage().deserialize(player.getPrefix());
|
return PlexUtils.mmCustomDeserialize(player.getPrefix(), StandardTags.color(), StandardTags.rainbow(), StandardTags.decorations(), StandardTags.gradient(), StandardTags.transition());
|
||||||
}
|
}
|
||||||
if (Plex.get().config.contains("titles.owners") && Plex.get().config.getStringList("titles.owners").contains(player.getName()))
|
if (Plex.get().config.contains("titles.owners") && Plex.get().config.getStringList("titles.owners").contains(player.getName()))
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package dev.plex.rank.enums;
|
package dev.plex.rank.enums;
|
||||||
|
|
||||||
|
import dev.plex.util.PlexUtils;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
@ -47,7 +48,7 @@ public enum Rank
|
|||||||
|
|
||||||
public Component getPrefix()
|
public Component getPrefix()
|
||||||
{
|
{
|
||||||
return MiniMessage.miniMessage().deserialize(this.prefix);
|
return PlexUtils.mmDeserialize(this.prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject toJSON()
|
public JSONObject toJSON()
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package dev.plex.rank.enums;
|
package dev.plex.rank.enums;
|
||||||
|
|
||||||
|
import dev.plex.util.PlexUtils;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
@ -39,7 +40,7 @@ public enum Title
|
|||||||
|
|
||||||
public Component getPrefix()
|
public Component getPrefix()
|
||||||
{
|
{
|
||||||
return MiniMessage.miniMessage().deserialize(this.prefix);
|
return PlexUtils.mmDeserialize(this.prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject toJSON()
|
public JSONObject toJSON()
|
||||||
|
@ -43,7 +43,16 @@ public class ServiceManager
|
|||||||
{
|
{
|
||||||
if (!service.isRepeating())
|
if (!service.isRepeating())
|
||||||
{
|
{
|
||||||
BukkitTask task = Bukkit.getScheduler().runTask(Plex.get(), service::run);
|
int time = service.repeatInSeconds();
|
||||||
|
BukkitTask task;
|
||||||
|
if (time == 0)
|
||||||
|
{
|
||||||
|
task = Bukkit.getScheduler().runTask(Plex.get(), service::run);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
task = Bukkit.getScheduler().runTaskLater(Plex.get(), service::run, time);
|
||||||
|
}
|
||||||
service.setTaskId(task.getTaskId());
|
service.setTaskId(task.getTaskId());
|
||||||
}
|
}
|
||||||
else if (service.isRepeating() && service.isAsynchronous())
|
else if (service.isRepeating() && service.isAsynchronous())
|
||||||
|
@ -5,7 +5,6 @@ import dev.plex.services.AbstractService;
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package dev.plex.storage;
|
package dev.plex.storage;
|
||||||
|
|
||||||
import com.mongodb.*;
|
|
||||||
import com.mongodb.client.MongoClient;
|
import com.mongodb.client.MongoClient;
|
||||||
import com.mongodb.client.MongoClients;
|
import com.mongodb.client.MongoClients;
|
||||||
import dev.morphia.Datastore;
|
import dev.morphia.Datastore;
|
||||||
@ -32,10 +31,14 @@ public class MongoConnection extends PlexBase
|
|||||||
if (database != null && !database.isEmpty())
|
if (database != null && !database.isEmpty())
|
||||||
{
|
{
|
||||||
connectionString = "mongodb://" + username + ":" + password + "@" + host + ":" + port + "/?authSource=" + database;
|
connectionString = "mongodb://" + username + ":" + password + "@" + host + ":" + port + "/?authSource=" + database;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
connectionString = "mongodb://" + username + ":" + password + "@" + host + ":" + port + "/";
|
connectionString = "mongodb://" + username + ":" + password + "@" + host + ":" + port + "/";
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
connectionString = "mongodb://" + host + ":" + port + "/";
|
connectionString = "mongodb://" + host + ":" + port + "/";
|
||||||
}
|
}
|
||||||
connectionString += "?uuidRepresentation=STANDARD";
|
connectionString += "?uuidRepresentation=STANDARD";
|
||||||
|
@ -45,7 +45,8 @@ public class SQLConnection extends PlexBase
|
|||||||
{
|
{
|
||||||
dataSource.setJdbcUrl("jdbc:sqlite:" + new File(plugin.getDataFolder(), "database.db").getAbsolutePath());
|
dataSource.setJdbcUrl("jdbc:sqlite:" + new File(plugin.getDataFolder(), "database.db").getAbsolutePath());
|
||||||
plugin.setStorageType(StorageType.SQLITE);
|
plugin.setStorageType(StorageType.SQLITE);
|
||||||
} else if (plugin.config.getString("data.central.storage").equalsIgnoreCase("mariadb"))
|
}
|
||||||
|
else if (plugin.config.getString("data.central.storage").equalsIgnoreCase("mariadb"))
|
||||||
{
|
{
|
||||||
Class.forName("org.mariadb.jdbc.Driver");
|
Class.forName("org.mariadb.jdbc.Driver");
|
||||||
dataSource.setJdbcUrl("jdbc:mariadb://" + host + ":" + port + "/" + database);
|
dataSource.setJdbcUrl("jdbc:mariadb://" + host + ":" + port + "/" + database);
|
||||||
@ -53,7 +54,8 @@ public class SQLConnection extends PlexBase
|
|||||||
dataSource.setPassword(password);
|
dataSource.setPassword(password);
|
||||||
Plex.get().setStorageType(StorageType.MARIADB);
|
Plex.get().setStorageType(StorageType.MARIADB);
|
||||||
}
|
}
|
||||||
} catch (ClassNotFoundException throwables)
|
}
|
||||||
|
catch (ClassNotFoundException throwables)
|
||||||
{
|
{
|
||||||
throwables.printStackTrace();
|
throwables.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -90,7 +92,8 @@ public class SQLConnection extends PlexBase
|
|||||||
"`note` VARCHAR(2000), " +
|
"`note` VARCHAR(2000), " +
|
||||||
"`timestamp` BIGINT" +
|
"`timestamp` BIGINT" +
|
||||||
");").execute();
|
");").execute();
|
||||||
} catch (SQLException throwables)
|
}
|
||||||
|
catch (SQLException throwables)
|
||||||
{
|
{
|
||||||
throwables.printStackTrace();
|
throwables.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -105,7 +108,8 @@ public class SQLConnection extends PlexBase
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
return dataSource.getConnection();
|
return dataSource.getConnection();
|
||||||
} catch (SQLException e)
|
}
|
||||||
|
catch (SQLException e)
|
||||||
{
|
{
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
@ -7,14 +7,23 @@ import dev.plex.PlexBase;
|
|||||||
import dev.plex.config.Config;
|
import dev.plex.config.Config;
|
||||||
import dev.plex.storage.StorageType;
|
import dev.plex.storage.StorageType;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.minimessage.Context;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.minimessage.ParsingException;
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.Tag;
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue;
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.standard.*;
|
||||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
import org.apache.commons.lang.math.NumberUtils;
|
import org.apache.commons.lang.math.NumberUtils;
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.PluginCommandYamlParser;
|
import org.bukkit.command.PluginCommandYamlParser;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
import org.json.simple.parser.JSONParser;
|
import org.json.simple.parser.JSONParser;
|
||||||
import org.json.simple.parser.ParseException;
|
import org.json.simple.parser.ParseException;
|
||||||
@ -28,6 +37,7 @@ import java.sql.Connection;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.Month;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
@ -145,6 +155,50 @@ public class PlexUtils extends PlexBase
|
|||||||
return ChatColor.translateAlternateColorCodes('&', string);
|
return ChatColor.translateAlternateColorCodes('&', string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final MiniMessage safeMessage = MiniMessage.builder().tags(TagResolver.builder().resolvers(
|
||||||
|
StandardTags.color(),
|
||||||
|
StandardTags.decorations(),
|
||||||
|
StandardTags.gradient(),
|
||||||
|
StandardTags.rainbow(),
|
||||||
|
StandardTags.reset()
|
||||||
|
).build()).build();
|
||||||
|
|
||||||
|
private static final MiniMessage eggMessage = MiniMessage.builder().tags(new TagResolver()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public @Nullable Tag resolve(@NotNull String name, @NotNull ArgumentQueue arguments, @NotNull Context ctx) throws ParsingException
|
||||||
|
{
|
||||||
|
return StandardTags.rainbow().resolve("rainbow", arguments, ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean has(@NotNull String name)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
).build();
|
||||||
|
|
||||||
|
public static Component mmDeserialize(String input)
|
||||||
|
{
|
||||||
|
/*Calendar calendar = Calendar.getInstance();
|
||||||
|
MiniMessage mm = (calendar.get(Calendar.MONTH) == Calendar.APRIL && calendar.get(Calendar.DAY_OF_MONTH) == 1 && (!plugin.config.contains("april_fools") || plugin.config.getBoolean("april_fools"))) ? eggMessage : safeMessage;
|
||||||
|
return mm.deserialize(PlainTextComponentSerializer.plainText().serialize(LegacyComponentSerializer.legacySection().deserialize(input)));*/
|
||||||
|
boolean aprilFools = plugin.config.getBoolean("april_fools");
|
||||||
|
LocalDateTime date = LocalDateTime.now();
|
||||||
|
if (aprilFools && date.getMonth() == Month.APRIL && date.getDayOfMonth() == 1)
|
||||||
|
{
|
||||||
|
Component component = PlainTextComponentSerializer.plainText().deserialize(input);
|
||||||
|
return MiniMessage.miniMessage().deserialize("<rainbow>" + PlainTextComponentSerializer.plainText().serialize(component));
|
||||||
|
}
|
||||||
|
return MiniMessage.miniMessage().deserialize(input);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Component mmCustomDeserialize(String input, TagResolver... resolvers)
|
||||||
|
{
|
||||||
|
return MiniMessage.builder().tags(TagResolver.builder().resolvers(resolvers).build()).build().deserialize(input);
|
||||||
|
}
|
||||||
|
|
||||||
public static Component messageComponent(String entry, Object... objects)
|
public static Component messageComponent(String entry, Object... objects)
|
||||||
{
|
{
|
||||||
return MiniMessage.miniMessage().deserialize(messageString(entry, objects));
|
return MiniMessage.miniMessage().deserialize(messageString(entry, objects));
|
||||||
|
@ -147,11 +147,6 @@ public class UpdateChecker extends PlexBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendMini(CommandSender sender, String message)
|
|
||||||
{
|
|
||||||
sender.sendMessage(MiniMessage.miniMessage().deserialize(message));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateJar(CommandSender sender)
|
public void updateJar(CommandSender sender)
|
||||||
{
|
{
|
||||||
CloseableHttpClient client = HttpClients.createDefault();
|
CloseableHttpClient client = HttpClients.createDefault();
|
||||||
@ -162,7 +157,7 @@ public class UpdateChecker extends PlexBase
|
|||||||
JSONObject object = new JSONObject(EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8));
|
JSONObject object = new JSONObject(EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8));
|
||||||
JSONObject artifact = object.getJSONArray("artifacts").getJSONObject(0);
|
JSONObject artifact = object.getJSONArray("artifacts").getJSONObject(0);
|
||||||
String name = artifact.getString("fileName");
|
String name = artifact.getString("fileName");
|
||||||
sendMini(sender, "<green>Downloading latest Plex jar file: " + name);
|
sender.sendMessage(PlexUtils.mmDeserialize("<green>Downloading latest Plex jar file: " + name));
|
||||||
CompletableFuture.runAsync(() ->
|
CompletableFuture.runAsync(() ->
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -171,7 +166,7 @@ public class UpdateChecker extends PlexBase
|
|||||||
new URL(DOWNLOAD_PAGE + "job/" + branch + "/lastSuccessfulBuild/artifact/build/libs/" + name),
|
new URL(DOWNLOAD_PAGE + "job/" + branch + "/lastSuccessfulBuild/artifact/build/libs/" + name),
|
||||||
new File(Bukkit.getUpdateFolderFile(), name)
|
new File(Bukkit.getUpdateFolderFile(), name)
|
||||||
);
|
);
|
||||||
sendMini(sender, "<green>Saved new jar. Please restart your server.");
|
sender.sendMessage(PlexUtils.mmDeserialize("<green>Saved new jar. Please restart your server."));
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
catch (IOException e)
|
||||||
{
|
{
|
||||||
|
@ -24,8 +24,8 @@ chat:
|
|||||||
# The maximum amount of characters a player can have for their tag
|
# The maximum amount of characters a player can have for their tag
|
||||||
# This does not include color tags such as <red> or <rainbow>
|
# This does not include color tags such as <red> or <rainbow>
|
||||||
max-tag-length: 64
|
max-tag-length: 64
|
||||||
# Color code for name color
|
# Color tag for name color
|
||||||
name-color: 'f'
|
name-color: '<white>'
|
||||||
|
|
||||||
# Should Plex use a "true op" system with ranks or only permission nodes
|
# Should Plex use a "true op" system with ranks or only permission nodes
|
||||||
# Options are "permissions" or "ranks"
|
# Options are "permissions" or "ranks"
|
||||||
@ -139,13 +139,13 @@ autowipe:
|
|||||||
allowdrops: true
|
allowdrops: true
|
||||||
|
|
||||||
# What blocks should be blocked?
|
# What blocks should be blocked?
|
||||||
blockedBlocks:
|
blocked_blocks:
|
||||||
- "SPAWNER"
|
- "SPAWNER"
|
||||||
- "STRUCTURE_BLOCK"
|
- "STRUCTURE_BLOCK"
|
||||||
- "JIGSAW"
|
- "JIGSAW"
|
||||||
|
|
||||||
# What entities should be blocked?
|
# What entities should be blocked?
|
||||||
blockedEntities:
|
blocked_entities:
|
||||||
- "WITHER"
|
- "WITHER"
|
||||||
- "ENDER_DRAGON"
|
- "ENDER_DRAGON"
|
||||||
- "MINECART_TNT"
|
- "MINECART_TNT"
|
||||||
|
@ -167,3 +167,8 @@ removedMobs: "<red>{0} - Removed {1} mobs"
|
|||||||
autoWipeDisabled: "<gray>Item wiping is currently disabled in the config!"
|
autoWipeDisabled: "<gray>Item wiping is currently disabled in the config!"
|
||||||
allowDropsDisabled: "<gray>No longer allowing drops from players."
|
allowDropsDisabled: "<gray>No longer allowing drops from players."
|
||||||
allowDropsEnabled: "<gray>Now allowing drops from players."
|
allowDropsEnabled: "<gray>Now allowing drops from players."
|
||||||
|
blockedCommandColor: "<gray>"
|
||||||
|
commandBlocked: "That command is blocked."
|
||||||
|
# 0 - The command sender
|
||||||
|
# 1 - The message being said
|
||||||
|
sayCommand: "[Server: {0}] {1}"
|
Loading…
Reference in New Issue
Block a user