Working so far

This commit is contained in:
2022-03-18 13:51:46 -05:00
parent c6e4b86b8f
commit 4f5d3bfbb1
14 changed files with 621 additions and 0 deletions

View File

@ -0,0 +1,26 @@
package dev.plex;
import dev.plex.command.DisguiseToggleCMD;
import dev.plex.command.UndisguiseAllCMD;
import dev.plex.listener.DisguiseListener;
import dev.plex.module.PlexModule;
public class LibsDisguises extends PlexModule
{
public static boolean enabled = true;
DisguiseListener disguiseListener;
@Override
public void enable()
{
registerCommand(new DisguiseToggleCMD());
registerCommand(new UndisguiseAllCMD());
registerListener(new DisguiseListener());
disguiseListener = new DisguiseListener();
disguiseListener.getCommands();
}
@Override
public void disable()
{
}
}

View File

@ -0,0 +1,30 @@
package dev.plex.command;
import dev.plex.LibsDisguises;
import dev.plex.command.annotation.CommandParameters;
import dev.plex.command.annotation.CommandPermissions;
import dev.plex.listener.UndisguiseEvent;
import dev.plex.rank.enums.Rank;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@CommandParameters(name = "disguisetoggle", description = "Toggle LibsDisguises", aliases = "dtoggle")
@CommandPermissions(level = Rank.ADMIN, permission = "plex.libsdisguises.disguisetoggle")
public class DisguiseToggleCMD extends PlexCommand
{
@Override
protected Component execute(@NotNull CommandSender commandSender, @Nullable Player player, @NotNull String[] strings)
{
LibsDisguises.enabled = !LibsDisguises.enabled;
if (!LibsDisguises.enabled)
{
Bukkit.getServer().getPluginManager().callEvent(new UndisguiseEvent(true));
}
return Component.text(commandSender.getName() + " - " + (LibsDisguises.enabled ? "Enabling LibsDisguises" : "Disabling LibsDisguises")).color((LibsDisguises.enabled ? NamedTextColor.AQUA : NamedTextColor.RED));
}
}

View File

@ -0,0 +1,34 @@
package dev.plex.command;
import dev.plex.command.annotation.CommandParameters;
import dev.plex.command.annotation.CommandPermissions;
import dev.plex.listener.UndisguiseEvent;
import dev.plex.rank.enums.Rank;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@CommandParameters(name = "undisguiseall", usage = "/<command> [-a]", description = "Undisguise all players", aliases = "undisall,uall")
@CommandPermissions(level = Rank.ADMIN, permission = "plex.libsdisguises.undisguiseall")
public class UndisguiseAllCMD extends PlexCommand
{
@Override
protected Component execute(@NotNull CommandSender sender, @Nullable Player player, @NotNull String[] args)
{
if (args.length == 0)
{
Bukkit.getServer().getPluginManager().callEvent(new UndisguiseEvent(false));
return Component.text(sender.getName() + " - Undisguising all non-admins").color(NamedTextColor.RED);
}
else if (args[0].equalsIgnoreCase("-a"))
{
Bukkit.getServer().getPluginManager().callEvent(new UndisguiseEvent(true));
return Component.text(sender.getName() + " - Undisguising all players").color(NamedTextColor.RED);
}
return usage();
}
}

View File

@ -0,0 +1,81 @@
package dev.plex.listener;
import dev.plex.LibsDisguises;
import dev.plex.cache.DataUtils;
import dev.plex.player.PlexPlayer;
import dev.plex.util.PlexLog;
import java.util.ArrayList;
import java.util.List;
import me.libraryaddict.disguise.DisguiseAPI;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.PluginCommandYamlParser;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.plugin.Plugin;
public class DisguiseListener extends PlexListener
{
final List<Command> commands = new ArrayList<>();
@EventHandler
public void onDisguiseToggle(UndisguiseEvent event)
{
for (Player player : Bukkit.getOnlinePlayers())
{
if (event.isUndisguiseAdmins())
{
DisguiseAPI.undisguiseToAll(player);
}
else
{
PlexPlayer plexPlayer = DataUtils.getPlayer(player.getUniqueId());
if (!plugin.getRankManager().isAdmin(plexPlayer))
{
DisguiseAPI.undisguiseToAll(player);
}
}
}
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event)
{
String message = event.getMessage();
// Don't check the arguments
message = message.replaceAll("\\s.*", "").replaceFirst("/", "");
if (!LibsDisguises.enabled)
{
for (Command command : commands)
{
for (String commandAliases : command.getAliases())
{
if (message.equalsIgnoreCase(command.getName()) || message.equalsIgnoreCase(commandAliases))
{
event.getPlayer().sendMessage(Component.text("LibsDisguises is currently disabled.").color(NamedTextColor.RED));
event.setCancelled(true);
break;
}
}
}
}
}
public List<Command> getCommands()
{
for (Plugin plugin : Bukkit.getPluginManager().getPlugins())
{
if (plugin.getName().equals("LibsDisguises"))
{
List<Command> commandList = PluginCommandYamlParser.parse(plugin);
commands.addAll(commandList);
}
}
PlexLog.log("Successfully fetched all LibsDisguises commands!");
return commands;
}
}

View File

@ -0,0 +1,32 @@
package dev.plex.listener;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
/**
* Event that is run when all players are undisguised
*/
@EqualsAndHashCode(callSuper = false)
@Data
public class UndisguiseEvent extends Event
{
private static final HandlerList handlers = new HandlerList();
/**
* Determines if admins should be undisguised or not
*/
private final boolean undisguiseAdmins;
public static HandlerList getHandlerList()
{
return handlers;
}
@Override
public HandlerList getHandlers()
{
return handlers;
}
}

View File

@ -0,0 +1,4 @@
name: LibsDisguises
main: dev.plex.LibsDisguises
description: Control LibsDisguises with Plex
version: 1.0