89 lines
3.3 KiB
Java
89 lines
3.3 KiB
Java
// This claas was created by JaTiTV
|
|
|
|
package de.jatitv.opsecurity.listener;
|
|
|
|
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 de.jatitv.opsecurity.util.Replace;
|
|
import de.jatitv.opsecurity.util.send;
|
|
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 {
|
|
|
|
private int isNotOPWTL(String command) {
|
|
if (command.charAt(0) == '/') command = command.replaceFirst("/", "");
|
|
String arg = command.replace("op ", "");
|
|
|
|
|
|
String targetUUID = null;
|
|
|
|
if (SelectConfig.PlayerMustBeOnlineToOp) {
|
|
if (Main.opHashMap.containsKey(arg)) {
|
|
Player target = Bukkit.getPlayer(arg);
|
|
if (target == null) {
|
|
return 1;
|
|
}
|
|
if (Main.opHashMap.get(target.getName()).UUID.equals(target.getUniqueId().toString().replace("-", ""))) {
|
|
return 0;
|
|
} else return 2;
|
|
} else return 2;
|
|
} else {
|
|
if (Main.opHashMap.containsKey(arg)) {
|
|
try {
|
|
targetUUID = NameHistory.getPlayerUUID(arg);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
if (Main.opHashMap.get(arg).UUID.equals(targetUUID)) {
|
|
return 0;
|
|
} else return 2;
|
|
} else return 2;
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onOPServer(ServerCommandEvent event) {
|
|
if ((event.getCommand().toLowerCase().startsWith("op ") || event.getCommand().toLowerCase().startsWith("minecraft:op ")) && SelectConfig.OP_Whitelist_Enable) {
|
|
switch (this.isNotOPWTL(event.getCommand())) {
|
|
case 1:
|
|
send.sender(event.getSender(), Main.Prefix + " " + SelectMessages.PlayerMustBeOnlineToOp);
|
|
event.setCancelled(true);
|
|
break;
|
|
case 2:
|
|
send.sender(event.getSender(), (Replace.replace(Main.Prefix + " " + SelectMessages.OP_opCommand)));
|
|
event.setCancelled(true);
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
@EventHandler
|
|
public void onOpPlayer(PlayerCommandPreprocessEvent event) {
|
|
if (SelectConfig.OP_Whitelist_Enable){
|
|
if ((event.getMessage().toLowerCase().startsWith("/op ") || event.getMessage().toLowerCase().startsWith("/minecraft:op "))) {
|
|
switch (this.isNotOPWTL(event.getMessage())) {
|
|
case 1:
|
|
send.sender(event.getPlayer(), Main.Prefix + " " + SelectMessages.PlayerMustBeOnlineToOp);
|
|
event.setCancelled(true);
|
|
break;
|
|
case 2:
|
|
send.player(event.getPlayer(), Replace.replace( Main.Prefix + " " + SelectMessages.OP_opCommand));
|
|
event.setCancelled(true);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|