mirror of
https://github.com/plexusorg/Plex.git
synced 2024-12-23 01:27:37 +00:00
Many, many bug fixes
- Fix permission checks - Fix unban command - getOfflinePlexPlayer no longer uses cache - Register worlds before trying to load gamerules - Customizable ban messages
This commit is contained in:
parent
bb978f2ab4
commit
d4761d4386
@ -105,7 +105,7 @@ public class Plex extends JavaPlugin
|
|||||||
sqlPlayerData = new SQLPlayerData();
|
sqlPlayerData = new SQLPlayerData();
|
||||||
}
|
}
|
||||||
|
|
||||||
new ListenerHandler(); // this doesn't need a variable.
|
new ListenerHandler();
|
||||||
new CommandHandler();
|
new CommandHandler();
|
||||||
|
|
||||||
|
|
||||||
@ -119,14 +119,14 @@ public class Plex extends JavaPlugin
|
|||||||
banManager = new BanManager();
|
banManager = new BanManager();
|
||||||
PlexLog.log("Punishment System initialized");
|
PlexLog.log("Punishment System initialized");
|
||||||
|
|
||||||
|
generateWorlds();
|
||||||
|
|
||||||
serviceManager = new ServiceManager();
|
serviceManager = new ServiceManager();
|
||||||
PlexLog.log("Service Manager initialized");
|
PlexLog.log("Service Manager initialized");
|
||||||
|
|
||||||
serviceManager.startServices();
|
serviceManager.startServices();
|
||||||
PlexLog.log("Started " + serviceManager.serviceCount() + " services.");
|
PlexLog.log("Started " + serviceManager.serviceCount() + " services.");
|
||||||
|
|
||||||
generateWorlds();
|
|
||||||
|
|
||||||
reloadPlayers();
|
reloadPlayers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,6 +167,16 @@ public abstract class PlexCommand extends Command
|
|||||||
audience.sendMessage(component);
|
audience.sendMessage(component);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected boolean checkRank(CommandSender sender, Rank rank, String permission)
|
||||||
|
{
|
||||||
|
if (!isConsole(sender))
|
||||||
|
{
|
||||||
|
checkRank((Player)sender, rank, permission);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
protected boolean checkRank(Player player, Rank rank, String permission)
|
protected boolean checkRank(Player player, Rank rank, String permission)
|
||||||
{
|
{
|
||||||
PlexPlayer plexPlayer = getPlexPlayer(player);
|
PlexPlayer plexPlayer = getPlexPlayer(player);
|
||||||
@ -174,16 +184,14 @@ public abstract class PlexCommand extends Command
|
|||||||
{
|
{
|
||||||
if (!plexPlayer.getRank().equals(rank.toString()))
|
if (!plexPlayer.getRank().equals(rank.toString()))
|
||||||
{
|
{
|
||||||
send(player, tl("noPermissionRank", rank.toString()));
|
throw new CommandFailException(PlexUtils.tl("noPermissionRank", ChatColor.stripColor(rank.getLoginMSG())));
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (plugin.getRanksOrPermissions().equalsIgnoreCase("permissions"))
|
else if (plugin.getRanksOrPermissions().equalsIgnoreCase("permissions"))
|
||||||
{
|
{
|
||||||
if (!player.hasPermission(permission))
|
if (!player.hasPermission(permission))
|
||||||
{
|
{
|
||||||
send(player, tl("noPermissionNode", permission));
|
throw new CommandFailException(PlexUtils.tl("noPermissionNode", permission));
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -268,7 +276,7 @@ public abstract class PlexCommand extends Command
|
|||||||
|
|
||||||
protected PlexPlayer getOfflinePlexPlayer(UUID uuid)
|
protected PlexPlayer getOfflinePlexPlayer(UUID uuid)
|
||||||
{
|
{
|
||||||
PlexPlayer plexPlayer = PlayerCache.getPlexPlayer(uuid);
|
PlexPlayer plexPlayer = DataUtils.getPlayer(uuid);
|
||||||
if (plexPlayer == null)
|
if (plexPlayer == null)
|
||||||
{
|
{
|
||||||
throw new PlayerNotFoundException();
|
throw new PlayerNotFoundException();
|
||||||
|
@ -64,11 +64,10 @@ public class BanCMD extends PlexCommand
|
|||||||
punishment.setType(PunishmentType.BAN);
|
punishment.setType(PunishmentType.BAN);
|
||||||
punishment.setReason("");
|
punishment.setReason("");
|
||||||
punishment.setPunishedUsername(plexPlayer.getName());
|
punishment.setPunishedUsername(plexPlayer.getName());
|
||||||
//TODO: Debug End date
|
punishment.setEndDate(new Date(Instant.now().plusSeconds(PlexUtils.hoursToSeconds(24)).getEpochSecond()));
|
||||||
punishment.setEndDate(new Date(Instant.now().plusSeconds(10/*PlexUtils.secondsToHours(24)*/).getEpochSecond()));
|
|
||||||
punishment.setCustomTime(false);
|
punishment.setCustomTime(false);
|
||||||
plugin.getPunishmentManager().doPunishment(punishedPlayer, punishment);
|
plugin.getPunishmentManager().doPunishment(punishedPlayer, punishment);
|
||||||
PlexUtils.broadcast(tl("unbanningPlayer", sender.getName(), plexPlayer.getName()));
|
PlexUtils.broadcast(tl("banningPlayer", sender.getName(), plexPlayer.getName()));
|
||||||
if (Bukkit.getPlayer(targetUUID) != null)
|
if (Bukkit.getPlayer(targetUUID) != null)
|
||||||
{
|
{
|
||||||
Bukkit.getPlayer(targetUUID).kick(componentFromString("&cYou've been banned."));
|
Bukkit.getPlayer(targetUUID).kick(componentFromString("&cYou've been banned."));
|
||||||
@ -82,5 +81,4 @@ public class BanCMD extends PlexCommand
|
|||||||
{
|
{
|
||||||
return args.length == 1 && isAdmin(sender) ? PlexUtils.getPlayerNameList() : ImmutableList.of();
|
return args.length == 1 && isAdmin(sender) ? PlexUtils.getPlayerNameList() : ImmutableList.of();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -17,17 +17,20 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
@CommandPermissions(level = Rank.OP, permission = "plex.plex", source = RequiredCommandSource.ANY)
|
@CommandPermissions(level = Rank.OP, permission = "plex.plex", source = RequiredCommandSource.ANY)
|
||||||
@CommandParameters(name = "plex", usage = "/<command> [reload]", aliases = "plexhelp", description = "Show information about Plex or reload it")
|
@CommandParameters(name = "plex", usage = "/<command> [reload]", aliases = "plexhelp", description = "Show information about Plex or reload it")
|
||||||
public class PlexCMD extends PlexCommand {
|
public class PlexCMD extends PlexCommand
|
||||||
|
{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component execute(CommandSender sender, String[] args) {
|
public Component execute(CommandSender sender, String[] args)
|
||||||
if (args.length == 0) {
|
{
|
||||||
|
if (args.length == 0)
|
||||||
|
{
|
||||||
send(sender, ChatColor.LIGHT_PURPLE + "Plex. The long awaited TotalFreedomMod rewrite starts here...");
|
send(sender, ChatColor.LIGHT_PURPLE + "Plex. The long awaited TotalFreedomMod rewrite starts here...");
|
||||||
return componentFromString(ChatColor.LIGHT_PURPLE + "Plugin version: " + ChatColor.GOLD + "1.0");
|
return componentFromString(ChatColor.LIGHT_PURPLE + "Plugin version: " + ChatColor.GOLD + "1.0");
|
||||||
}
|
}
|
||||||
if (args[0].equals("reload"))
|
if (args[0].equals("reload"))
|
||||||
{
|
{
|
||||||
checkRank((Player)sender, Rank.SENIOR_ADMIN, "plex.reload");
|
checkRank(sender, Rank.SENIOR_ADMIN, "plex.reload");
|
||||||
Plex.get().config.load();
|
Plex.get().config.load();
|
||||||
send(sender, "Reloaded config file");
|
send(sender, "Reloaded config file");
|
||||||
Plex.get().messages.load();
|
Plex.get().messages.load();
|
||||||
@ -35,7 +38,9 @@ public class PlexCMD extends PlexCommand {
|
|||||||
Plex.get().getRankManager().importDefaultRanks();
|
Plex.get().getRankManager().importDefaultRanks();
|
||||||
send(sender, "Imported ranks");
|
send(sender, "Imported ranks");
|
||||||
send(sender, "Plex successfully reloaded.");
|
send(sender, "Plex successfully reloaded.");
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
throw new CommandArgumentException();
|
throw new CommandArgumentException();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -46,5 +51,4 @@ public class PlexCMD extends PlexCommand {
|
|||||||
{
|
{
|
||||||
return ImmutableList.of("reload");
|
return ImmutableList.of("reload");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -8,11 +8,14 @@ import dev.plex.command.annotation.CommandPermissions;
|
|||||||
import dev.plex.command.exception.PlayerNotBannedException;
|
import dev.plex.command.exception.PlayerNotBannedException;
|
||||||
import dev.plex.command.exception.PlayerNotFoundException;
|
import dev.plex.command.exception.PlayerNotFoundException;
|
||||||
import dev.plex.command.source.RequiredCommandSource;
|
import dev.plex.command.source.RequiredCommandSource;
|
||||||
|
import dev.plex.player.PlexPlayer;
|
||||||
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.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
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;
|
||||||
@ -33,9 +36,9 @@ public class UnbanCMD extends PlexCommand
|
|||||||
if (args.length == 1)
|
if (args.length == 1)
|
||||||
{
|
{
|
||||||
UUID targetUUID = PlexUtils.getFromName(args[0]);
|
UUID targetUUID = PlexUtils.getFromName(args[0]);
|
||||||
Player player = getNonNullPlayer(args[0]);
|
PlexPlayer plexPlayer = getOfflinePlexPlayer(targetUUID);
|
||||||
|
|
||||||
if (targetUUID == null || !DataUtils.hasPlayedBefore(targetUUID))
|
if (!DataUtils.hasPlayedBefore(targetUUID))
|
||||||
{
|
{
|
||||||
throw new PlayerNotFoundException();
|
throw new PlayerNotFoundException();
|
||||||
}
|
}
|
||||||
@ -46,7 +49,7 @@ public class UnbanCMD extends PlexCommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
plugin.getBanManager().unban(targetUUID);
|
plugin.getBanManager().unban(targetUUID);
|
||||||
PlexUtils.broadcast(tl("unbanningPlayer", sender.getName(), player.getName()));
|
PlexUtils.broadcast(tl("unbanningPlayer", sender.getName(), plexPlayer.getName()));
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ public class CommandHandler extends PlexBase
|
|||||||
commands.add(new DeopCMD());
|
commands.add(new DeopCMD());
|
||||||
commands.add(new OpAllCMD());
|
commands.add(new OpAllCMD());
|
||||||
commands.add(new OpCMD());
|
commands.add(new OpCMD());
|
||||||
|
commands.add(new RankCMD());
|
||||||
}
|
}
|
||||||
commands.add(new AdminworldCMD());
|
commands.add(new AdminworldCMD());
|
||||||
commands.add(new AdventureCMD());
|
commands.add(new AdventureCMD());
|
||||||
@ -31,7 +32,6 @@ public class CommandHandler extends PlexBase
|
|||||||
commands.add(new NameHistoryCMD());
|
commands.add(new NameHistoryCMD());
|
||||||
commands.add(new PlexCMD());
|
commands.add(new PlexCMD());
|
||||||
commands.add(new PunishmentsCMD());
|
commands.add(new PunishmentsCMD());
|
||||||
commands.add(new RankCMD());
|
|
||||||
commands.add(new SpectatorCMD());
|
commands.add(new SpectatorCMD());
|
||||||
commands.add(new SurvivalCMD());
|
commands.add(new SurvivalCMD());
|
||||||
commands.add(new UnbanCMD());
|
commands.add(new UnbanCMD());
|
||||||
|
@ -28,22 +28,13 @@ public class ChatListener extends PlexListener
|
|||||||
{
|
{
|
||||||
renderer.hasPrefix = true;
|
renderer.hasPrefix = true;
|
||||||
renderer.prefix = plexPlayer.getPrefix();
|
renderer.prefix = plexPlayer.getPrefix();
|
||||||
} else if (Plex.get().getRankManager().isAdmin(plexPlayer))
|
}
|
||||||
|
else if (Plex.get().getRankManager().isAdmin(plexPlayer))
|
||||||
{
|
{
|
||||||
renderer.hasPrefix = true;
|
renderer.hasPrefix = true;
|
||||||
renderer.prefix = plexPlayer.getRankFromString().getPrefix();
|
renderer.prefix = plexPlayer.getRankFromString().getPrefix();
|
||||||
}
|
}
|
||||||
event.renderer(renderer);
|
event.renderer(renderer);
|
||||||
/*if (!plexPlayer.getPrefix().isEmpty())
|
|
||||||
{
|
|
||||||
event.setFormat(String.format("%s %s §7» %s", plexPlayer.getPrefix(), ChatColor.RESET + plexPlayer.displayName(), event.getMessage()));
|
|
||||||
} else if (Plex.get().getRankManager().isAdmin(plexPlayer))
|
|
||||||
{
|
|
||||||
event.setFormat(String.format("%s %s §7» %s", plexPlayer.getRankFromString().getPrefix(), ChatColor.RESET + plexPlayer.displayName(), event.getMessage()));
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
event.setFormat(String.format("%s §7» %s", ChatColor.RESET + plexPlayer.displayName(), event.getMessage()));
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PlexChatRenderer implements ChatRenderer
|
public static class PlexChatRenderer implements ChatRenderer
|
||||||
|
@ -1,21 +1,25 @@
|
|||||||
package dev.plex.listener.impl;
|
package dev.plex.listener.impl;
|
||||||
|
|
||||||
import dev.plex.listener.PlexListener;
|
import dev.plex.listener.PlexListener;
|
||||||
|
import net.kyori.adventure.audience.Audience;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class LoginListener extends PlexListener
|
public class LoginListener extends PlexListener
|
||||||
{
|
{
|
||||||
//TODO: Customizable MSGS
|
private final String banMessage = plugin.config.getString("banning.message");
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPreLogin(AsyncPlayerPreLoginEvent event)
|
public void onPreLogin(AsyncPlayerPreLoginEvent event)
|
||||||
{
|
{
|
||||||
// PlexLog.log(String.valueOf(plugin.getBanManager().isBanned(event.getUniqueId())));
|
|
||||||
if (plugin.getBanManager().isBanned(event.getUniqueId()))
|
if (plugin.getBanManager().isBanned(event.getUniqueId()))
|
||||||
{
|
{
|
||||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED, "§cYou're currently banned from this server.\n§cPlease appeal at §6https://forum.telesphoreo.me");
|
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED,
|
||||||
|
LegacyComponentSerializer.legacyAmpersand().deserialize(banMessage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,31 +7,42 @@ import dev.plex.services.impl.GameRuleService;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
public class ServiceManager {
|
public class ServiceManager
|
||||||
|
{
|
||||||
private final List<AbstractService> services = Lists.newArrayList();
|
private final List<AbstractService> services = Lists.newArrayList();
|
||||||
|
|
||||||
public ServiceManager() {
|
public ServiceManager()
|
||||||
registerService(new BanService());
|
{
|
||||||
|
//registerService(new BanService());
|
||||||
registerService(new GameRuleService());
|
registerService(new GameRuleService());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startServices() {
|
public void startServices()
|
||||||
for (AbstractService service : services) {
|
{
|
||||||
if (!service.isRepeating()) {
|
for (AbstractService service : services)
|
||||||
|
{
|
||||||
|
if (!service.isRepeating())
|
||||||
|
{
|
||||||
Bukkit.getScheduler().runTask(Plex.get(), service::run);
|
Bukkit.getScheduler().runTask(Plex.get(), service::run);
|
||||||
} else if (service.isRepeating() && service.isAsynchronous()) {
|
}
|
||||||
|
else if (service.isRepeating() && service.isAsynchronous())
|
||||||
|
{
|
||||||
Bukkit.getScheduler().runTaskTimerAsynchronously(Plex.get(), service::run, 0, 20 * service.repeatInSeconds());
|
Bukkit.getScheduler().runTaskTimerAsynchronously(Plex.get(), service::run, 0, 20 * service.repeatInSeconds());
|
||||||
} else if (service.isRepeating() && !service.isAsynchronous()) {
|
}
|
||||||
|
else if (service.isRepeating() && !service.isAsynchronous())
|
||||||
|
{
|
||||||
Bukkit.getScheduler().runTaskTimer(Plex.get(), service::run, 0, 20 * service.repeatInSeconds());
|
Bukkit.getScheduler().runTaskTimer(Plex.get(), service::run, 0, 20 * service.repeatInSeconds());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerService(AbstractService service) {
|
private void registerService(AbstractService service)
|
||||||
|
{
|
||||||
services.add(service);
|
services.add(service);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int serviceCount() {
|
public int serviceCount()
|
||||||
|
{
|
||||||
return services.size();
|
return services.size();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -251,7 +251,7 @@ public class PlexUtils extends PlexBase
|
|||||||
|
|
||||||
public static long hoursToSeconds(long hours)
|
public static long hoursToSeconds(long hours)
|
||||||
{
|
{
|
||||||
return hours * 60 * 60;
|
return hours * 3600;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long minutesToSeconds(long minutes)
|
public static long minutesToSeconds(long minutes)
|
||||||
|
@ -1,10 +1,15 @@
|
|||||||
# Plex Configuration File
|
# Plex Configuration File
|
||||||
|
|
||||||
server:
|
server:
|
||||||
name: "ExampleFreedom"
|
name: "Plexus"
|
||||||
motd: "%servername% - Minecraft %mcversion%"
|
motd: "%servername% - Minecraft %mcversion%"
|
||||||
colorize_motd: true
|
colorize_motd: true
|
||||||
|
|
||||||
|
# Ban message is customized here. Additional messages can be configured in messages.yml
|
||||||
|
banning:
|
||||||
|
message: "&cYou are banned! Please appeal on the forums at https://forum.plex.us.org/"
|
||||||
|
|
||||||
|
|
||||||
# Settings for commands relating to Plex
|
# Settings for commands relating to Plex
|
||||||
commands:
|
commands:
|
||||||
# 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
|
||||||
|
@ -42,7 +42,7 @@ frozePlayer: "<b><v> - Froze <v>"
|
|||||||
unfrozePlayer: "<b><v> - Unfroze <v>"
|
unfrozePlayer: "<b><v> - Unfroze <v>"
|
||||||
noPermission: "<e>You cannot use this command!"
|
noPermission: "<e>You cannot use this command!"
|
||||||
# 1: the login message (uncolored) of the rank required to use the command
|
# 1: the login message (uncolored) of the rank required to use the command
|
||||||
noPermissionRank: "<e>You must be at least <v> rank to use this command!"
|
noPermissionRank: "<e>You must be at least <v> to use this command!"
|
||||||
noPermissionNode: "<e>You must have the permission: <v> to use this command!"
|
noPermissionNode: "<e>You must have the permission: <v> to use this command!"
|
||||||
noPermissionInGame: "<e>You must be in console to use this command!"
|
noPermissionInGame: "<e>You must be in console to use this command!"
|
||||||
noPermissionConsole: "<e>You must be in-game to use this command!"
|
noPermissionConsole: "<e>You must be in-game to use this command!"
|
||||||
|
Loading…
Reference in New Issue
Block a user