T2C-OPSecurity/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/OPCommand.java

89 lines
3.6 KiB
Java

// This claas was created by JaTiTV
package de.jatitv.opsecurity.listener;
import de.jatitv.opsecurity.Util;
import de.jatitv.opsecurity.config.languages.SelectMessages;
import de.jatitv.opsecurity.config.config.SelectConfig;
import de.jatitv.opsecurity.system.Main;
import de.jatitv.opsecurity.system.NameHistory;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Creplace;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import java.io.IOException;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.server.ServerCommandEvent;
public class OPCommand implements Listener {
@EventHandler
public void onOPServer(ServerCommandEvent event) {
if ((event.getCommand().toLowerCase().startsWith("op ") || event.getCommand().toLowerCase().startsWith("minecraft:op ")) && SelectConfig.opWhitelistEnable) {
switch (this.isNotOPWTL(event.getCommand())) {
case 1:
T2Csend.sender(event.getSender(), Util.getPrefix() + " " + SelectMessages.PlayerMustBeOnlineToOp);
event.setCancelled(true);
break;
case 2:
T2Csend.sender(event.getSender(), (T2Creplace.replace(Util.getPrefix(), Util.getPrefix() + " " + SelectMessages.OP_opCommand)));
event.setCancelled(true);
break;
}
}
}
@EventHandler
public void onOpPlayer(PlayerCommandPreprocessEvent event) {
if (SelectConfig.opWhitelistEnable) {
if ((event.getMessage().toLowerCase().startsWith("/op ") || event.getMessage().toLowerCase().startsWith("/minecraft:op "))) {
switch (this.isNotOPWTL(event.getMessage())) {
case 1:
T2Csend.sender(event.getPlayer(), Util.getPrefix() + " " + SelectMessages.PlayerMustBeOnlineToOp);
event.setCancelled(true);
break;
case 2:
T2Csend.player(event.getPlayer(), T2Creplace.replace(Util.getPrefix(), Util.getPrefix() + " " + SelectMessages.OP_opCommand));
event.setCancelled(true);
break;
}
}
}
}
private int isNotOPWTL(String command) {
if (!command.contains("op")) return 0;
if (command.charAt(0) == '/') command = command.replaceFirst("/", "");
String arg = command.replace("op ", "");
if (SelectConfig.playerMustBeOnlineToOp) {
if (Main.getOpHashMap().containsKey(arg.toLowerCase())) {
Player target = Bukkit.getPlayer(arg);
if (target == null) {
return 1;
}
if (Main.getOpHashMap().get(target.getName().toLowerCase()).UUID.equals(target.getUniqueId().toString().replace("-", ""))) {
return 0;
} else return 2;
} else return 2;
} else {
if (Main.getOpHashMap().containsKey(arg.toLowerCase())) {
String targetUUID = null;
try {
targetUUID = NameHistory.getPlayerUUID(arg);
} catch (IOException e) {
e.printStackTrace();
}
if (Main.getOpHashMap().get(arg.toLowerCase()).UUID.equals(targetUUID)) {
return 0;
} else return 2;
} else return 2;
}
}
}