mirror of
https://github.com/plexusorg/Module-LibsDisguises.git
synced 2025-07-03 02:36:42 +00:00
Working so far
This commit is contained in:
26
src/main/java/dev/plex/LibsDisguises.java
Normal file
26
src/main/java/dev/plex/LibsDisguises.java
Normal 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()
|
||||
{
|
||||
}
|
||||
}
|
30
src/main/java/dev/plex/command/DisguiseToggleCMD.java
Normal file
30
src/main/java/dev/plex/command/DisguiseToggleCMD.java
Normal 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));
|
||||
}
|
||||
}
|
34
src/main/java/dev/plex/command/UndisguiseAllCMD.java
Normal file
34
src/main/java/dev/plex/command/UndisguiseAllCMD.java
Normal 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();
|
||||
}
|
||||
}
|
81
src/main/java/dev/plex/listener/DisguiseListener.java
Normal file
81
src/main/java/dev/plex/listener/DisguiseListener.java
Normal 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;
|
||||
}
|
||||
}
|
32
src/main/java/dev/plex/listener/UndisguiseEvent.java
Normal file
32
src/main/java/dev/plex/listener/UndisguiseEvent.java
Normal 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;
|
||||
}
|
||||
}
|
4
src/main/resources/module.yml
Normal file
4
src/main/resources/module.yml
Normal file
@ -0,0 +1,4 @@
|
||||
name: LibsDisguises
|
||||
main: dev.plex.LibsDisguises
|
||||
description: Control LibsDisguises with Plex
|
||||
version: 1.0
|
Reference in New Issue
Block a user