3.0.0-SNAPSHOT-#1
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
package net.t2code.opsecurity.events;
|
||||
|
||||
import net.t2code.opsecurity.config.language.Language;
|
||||
import net.t2code.opsecurity.config.opWhitelist.OPWhitelist;
|
||||
import net.t2code.opsecurity.enums.OpCommandRequest;
|
||||
import net.t2code.opsecurity.objects.PlayerCash;
|
||||
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
|
||||
import net.t2code.t2codelib.SPIGOT.api.player.T2CnameHistory;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.server.ServerCommandEvent;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class OpCommand implements Listener {
|
||||
@EventHandler
|
||||
public void onOPServer(ServerCommandEvent event) {
|
||||
if (!OPWhitelist.enable.valueBoolean) return;
|
||||
if ((event.getCommand().toLowerCase().startsWith("op ") || event.getCommand().toLowerCase().startsWith("minecraft:op "))) {
|
||||
switch (isNotOPWTL(event.getCommand())) {
|
||||
case mustOnline:
|
||||
T2Csend.sender(event.getSender(), Language.playerMustBeOnlineToOp.value);
|
||||
event.setCancelled(true);
|
||||
break;
|
||||
case notWhitelisted:
|
||||
T2Csend.sender(event.getSender(), Language.opWhitelistOpCommand.value);
|
||||
event.setCancelled(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onOpPlayer(PlayerCommandPreprocessEvent event) {
|
||||
if (!OPWhitelist.enable.valueBoolean) return;
|
||||
if ((event.getMessage().toLowerCase().startsWith("/op ") || event.getMessage().toLowerCase().startsWith("/minecraft:op "))) {
|
||||
switch (isNotOPWTL(event.getMessage())) {
|
||||
case mustOnline:
|
||||
T2Csend.player(event.getPlayer(), Language.playerMustBeOnlineToOp.value);
|
||||
event.setCancelled(true);
|
||||
break;
|
||||
case notWhitelisted:
|
||||
T2Csend.player(event.getPlayer(), Language.opWhitelistOpCommand.value);
|
||||
event.setCancelled(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private OpCommandRequest isNotOPWTL(String command) {
|
||||
if (command.charAt(0) == '/') command = command.replaceFirst("/", "");
|
||||
String arg = command.replace("op ", "");
|
||||
Player target = Bukkit.getPlayer(arg);
|
||||
if (OPWhitelist.playerMustBeOnlineToOp.valueBoolean) {
|
||||
if (target == null) return OpCommandRequest.mustOnline;
|
||||
if (!PlayerCash.getOpHashMap().get(target.getName()).playerName.equals(target.getName())) return OpCommandRequest.notWhitelisted;
|
||||
if (!PlayerCash.getOpHashMap().get(target.getName()).uuid.equals(target.getUniqueId().toString().replace("-", ""))) return OpCommandRequest.notWhitelisted;
|
||||
}
|
||||
String targetUUID;
|
||||
if (target != null) {
|
||||
targetUUID = target.getUniqueId().toString();
|
||||
} else {
|
||||
try {
|
||||
targetUUID = T2CnameHistory.NameLookup.getPlayerUUID(arg);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
if (!PlayerCash.getOpHashMap().get(target.getName()).playerName.equals(arg)) return OpCommandRequest.notWhitelisted;
|
||||
if (!PlayerCash.getOpHashMap().get(target.getName()).uuid.equals(targetUUID.replace("-", ""))) return OpCommandRequest.notWhitelisted;
|
||||
return OpCommandRequest.ok;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user