Compare commits

...

24 Commits
3.0.3 ... main

Author SHA1 Message Date
JaTiTV 621458f59a fix 2024-07-11 13:27:05 +02:00
JaTiTV cefdc37707 dev-24 2024-07-08 00:52:53 +02:00
JaTiTV 6489b6bb7a Update pom.xml 2024-07-06 08:55:19 +02:00
JaTiTV 56e704c7f0 api to T2CodeLib 16.7_dev-22 2024-07-05 09:36:54 +02:00
JaTiTV 10e8994ab8 Update pom.xml 2024-07-04 07:18:14 +02:00
JaTiTV 75edfe88d5 code changes
Descriptions adapted
API changes
java update to java 11
2024-07-04 07:17:35 +02:00
JaTiTV a89cdb837d . 2024-07-04 00:46:30 +02:00
JaTiTV 09c81238c7 Delete Languages.java 2024-07-03 03:33:28 +02:00
JaTiTV 35ac13b695 Config build change to new ConfigBuilder 2024-07-03 03:32:03 +02:00
JaTiTV c89430b219 3.2
In this update, minor bugs have been fixed and the config has been slightly revised.

Config changes:
- check.onJoin -> check.onJoin.enable
- check.onInteract -> check.onInteract.enable
- check.onCommand -> check.onCommand.enable
- check.onChat -> check.onChat.enable
- add check.onCommand.whitelist

A whitelist has been added for commands for which no check is performed.
2024-03-31 13:35:45 +02:00
JaTiTV 052592cff6 3.1.3
The notify.allBungeePlayer option did not work as it should, this bug was fixed
2023-06-19 21:09:03 +02:00
JaTiTV f5dfca5f72 3.1.2
- API update to Minecraft version 1.20
- T2CodeLib API update to 15.0 (this version is required from now on)
2023-06-08 06:58:46 +02:00
JaTiTV 0dc694d29f Security bugfixes and improved debug messages 2023-04-23 16:35:32 +02:00
JaTiTV 9351c0dfb7 better debug information & async bugfix 2023-04-23 12:53:25 +02:00
JaTiTV 98fd0409fd load bugfix
Fixed an error that occurred when loading the plugin, because since paper build 404 the T2CodeLib was loaded only after OPSecurity
2023-02-28 00:15:48 +01:00
JaTiTV a2bd88ac7c 3.1.0 | add API 2022-12-28 08:12:36 +01:00
JaTiTV dba1e57b91 code changes 2022-12-23 00:38:55 +01:00
JaTiTV e14f91c584 Update OPWhitelist.java 2022-12-22 02:14:04 +01:00
JaTiTV 1547c16093 3.0.7 | Bugfix
- noOpPlayerDeop.enable' was missing in opWhitelist.yml and was read in incorrectly
- kick.customCommand.Enable' was corrected to 'kick.customCommand.enable' in config.yml
2022-12-12 11:38:45 +01:00
JaTiTV 44507458e5 3.0.6 2022-11-20 20:17:55 +01:00
JaTiTV ea54d85ecc 3.0.5
https://git.t2code.net/JaTiTV/T2C-OPSecurity/releases/tag/3.0.5
2022-11-19 03:12:53 +01:00
JaTiTV 43e51fee59 3.0.4
Bugfix:
- In Permission Whitelist, the customCommands function did not work as expected.
2022-11-17 21:07:15 +01:00
JaTiTV 466314f206 Merge branch 'main' of https://git.t2code.net/JaTiTV/OPSecurity 2022-11-15 02:33:22 +01:00
JaTiTV 47a9080dba Update pom.xml 2022-11-15 02:31:56 +01:00
26 changed files with 1168 additions and 685 deletions

View File

@ -6,7 +6,8 @@
<groupId>net.t2code</groupId> <groupId>net.t2code</groupId>
<artifactId>T2C-OPSecurity</artifactId> <artifactId>T2C-OPSecurity</artifactId>
<version>3.0.3_SNAPSHOT-1</version> <version>3.3_DEV-24</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>T2C-OPSecurity</name> <name>T2C-OPSecurity</name>
@ -24,8 +25,8 @@
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version> <version>3.8.1</version>
<configuration> <configuration>
<source>${java.version}</source> <source>11</source>
<target>${java.version}</target> <target>11</target>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
@ -56,13 +57,9 @@
<repositories> <repositories>
<!-- spigot --> <!-- spigot -->
<repository> <repository>
<id>spigotmc-repo</id> <id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url> <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository> </repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
<!-- t2code --> <!-- t2code -->
<repository> <repository>
<id>T2Code</id> <id>T2Code</id>
@ -75,23 +72,24 @@
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId> <artifactId>spigot-api</artifactId>
<version>1.19.2-R0.1-SNAPSHOT</version> <version>1.20-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- t2code --> <!-- t2code -->
<dependency> <dependency>
<groupId>net.t2code</groupId> <groupId>net.t2code</groupId>
<artifactId>T2CodeLib</artifactId> <artifactId>T2CodeLib</artifactId>
<version>DEV-13.4</version> <version>16.7</version>
<classifier>snapshot-2</classifier> <classifier>dev-24</classifier>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>1.18.24</version> <version>1.18.30</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
</dependencies> </dependencies>
</project> </project>

View File

@ -0,0 +1,61 @@
package net.t2code.opsecurity.API;
import net.t2code.opsecurity.check.OpCheck;
import net.t2code.opsecurity.check.PermissionCheck;
import net.t2code.opsecurity.config.opWhitelist.OPWhitelist;
import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist;
import net.t2code.opsecurity.objects.PlayerCache;
import net.t2code.opsecurity.objects.PlayerObject;
import net.t2code.t2codelib.SPIGOT.api.debug.T2C_Debug;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class T2COpSecAPI {
public static boolean checkOPWhiteList(Player player) {
if (!(boolean) OPWhitelist.VALUES.enable.getValue()) return true;
String debug = T2C_Debug.debugCode();
return OpCheck.opWhitelist(player, debug);
}
public static boolean checkPermissionWhiteList(Player player, String debug) {
if (!(boolean) PermissionWhitelist.VALUES.enable.getValue()) return true;
return PermissionCheck.permWhitelist(player, debug);
}
public static T2COpSecAPIPlayerStatus detailCheckOPWhiteList(Player player) {
if (!(boolean) OPWhitelist.VALUES.enable.getValue()) return T2COpSecAPIPlayerStatus.playerOnOpWhitelist;
List<String> nameList = new ArrayList<>();
List<String> uuidList = new ArrayList<>();
for (Map.Entry<String, PlayerObject> playerObject : PlayerCache.getOpHashMap().entrySet()) {
nameList.add(playerObject.getValue().playerName);
uuidList.add(playerObject.getValue().uuid);
}
if (!nameList.contains(player.getName())) {
return T2COpSecAPIPlayerStatus.playerNameNotOnTheOpWhitelist;
}
if (!uuidList.contains(player.getUniqueId().toString().replace("-", ""))) {
return T2COpSecAPIPlayerStatus.playerUuidNotOnTheOpWhitelist;
}
return T2COpSecAPIPlayerStatus.playerOnOpWhitelist;
}
public static T2COpSecAPIPlayerStatus detailCheckPermissionWhiteList(Player player) {
if (!(boolean)PermissionWhitelist.VALUES.enable.getValue()) return T2COpSecAPIPlayerStatus.playerOnPermissionWhitelist;
List<String> nameList = new ArrayList<>();
List<String> uuidList = new ArrayList<>();
for (Map.Entry<String, PlayerObject> playerObject : PlayerCache.getPermissionHashMap().entrySet()) {
nameList.add(playerObject.getValue().playerName);
uuidList.add(playerObject.getValue().uuid);
}
if (!nameList.contains(player.getName())) {
return T2COpSecAPIPlayerStatus.playerNameNotOnThePermissionWhitelist;
}
if (!uuidList.contains(player.getUniqueId().toString().replace("-", ""))) {
return T2COpSecAPIPlayerStatus.playerUuidNotOnThePermissionWhitelist;
}
return T2COpSecAPIPlayerStatus.playerOnPermissionWhitelist;
}
}

View File

@ -0,0 +1,10 @@
package net.t2code.opsecurity.API;
public enum T2COpSecAPIPlayerStatus {
playerOnOpWhitelist,
playerNameNotOnTheOpWhitelist,
playerUuidNotOnTheOpWhitelist,
playerOnPermissionWhitelist,
playerNameNotOnThePermissionWhitelist,
playerUuidNotOnThePermissionWhitelist
}

View File

@ -1,31 +0,0 @@
package net.t2code.opsecurity;
import lombok.Getter;
public class Util {
@Getter
private static String infoText = "";
@Getter
private static String requiredT2CodeLibVersion = "13.4";
@Getter
private static String prefix = "§8[§4T2C§8-§2OP§4Security§8]";
@Getter
private static Integer spigotID = 90739;
@Getter
private static String git = "JaTiTV/T2C-OPSecurity";
@Getter
private static Integer bstatsID = 10858;
@Getter
private static String spigot = "https://www.spigotmc.org/resources/" + getSpigotID();
@Getter
private static String discord = "http://dc.t2code.net";
}

View File

@ -1,96 +1,109 @@
package net.t2code.opsecurity.check; package net.t2code.opsecurity.check;
import net.t2code.opsecurity.config.config.Config; import net.t2code.opsecurity.config.config.Config;
import net.t2code.opsecurity.config.language.Language; import net.t2code.opsecurity.config.language.Languages;
import net.t2code.opsecurity.config.opWhitelist.OPWhitelist; import net.t2code.opsecurity.config.opWhitelist.OPWhitelist;
import net.t2code.opsecurity.events.Events; import net.t2code.opsecurity.events.Events;
import net.t2code.opsecurity.objects.PlayerCash; import net.t2code.opsecurity.objects.PlayerCache;
import net.t2code.opsecurity.objects.PlayerObject; import net.t2code.opsecurity.objects.PlayerObject;
import net.t2code.opsecurity.system.BungeeSenderReceiver; import net.t2code.opsecurity.system.BungeeSenderReceiver;
import net.t2code.opsecurity.system.Main; import net.t2code.opsecurity.system.Main;
import net.t2code.t2codelib.SPIGOT.api.commands.T2Ccmd; import net.t2code.t2codelib.SPIGOT.api.commands.T2C_Cmd;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import net.t2code.t2codelib.SPIGOT.api.debug.T2C_Debug;
import net.t2code.t2codelib.SPIGOT.api.messages.T2C_Send;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.List;
import java.util.Map; import java.util.Map;
public class OpCheck { public class OpCheck {
public static Boolean onCheck(Player player, Boolean join) { public static Boolean onCheck(Player player, Boolean join, String debug) {
if (!OPWhitelist.enable.valueBoolean) return false; if (!(boolean) OPWhitelist.VALUES.enable.getValue()) return false;
if (!player.isOp()) return false; if (!player.isOp()) return false;
if (opWhitelist(player)) return false; if (opWhitelist(player, debug)) return false;
if (join) T2Csend.console(Language.opWhitelistNotifyOnJoin.value.replace("[player]", player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId()))); if (join) T2C_Send.console(Languages.VALUES.opWhitelistNotifyOnJoin.getValue().toString().replace("[player]", player.getName()).replace("%player_name%",player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId())));
Bukkit.getScheduler().runTask(Main.getPlugin(), new Runnable() { Bukkit.getScheduler().runTask(Main.getPlugin(), new Runnable() {
@Override @Override
public void run() { public void run() {
execute(player, join); execute(player, join, debug);
} }
}); });
return true; return true;
} }
private static void execute(Player player, Boolean join) { private static void execute(Player player, Boolean join, String debug) {
if (Config.notifyJoinWarning.valueBoolean && join) { if ((boolean)Config.VALUES.notifyJoinWarning.getValue() && join) {
if (Config.notifyBungee.valueBoolean) { if ((boolean)Config.VALUES.notifyBungee.getValue()) {
BungeeSenderReceiver.sendToBungee(Language.opWhitelistNotifyOnJoin.value.replace("[player]", player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId()))); BungeeSenderReceiver.sendToBungee(Languages.VALUES.opWhitelistNotifyOnJoin.getValue().toString().replace("[player]", player.getName()).replace("%player_name%",player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId())));
} else Events.notifyPlayer(Language.opWhitelistNotifyOnJoin.value.replace("[player]", player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId()))); } else
Events.notifyPlayer(Languages.VALUES.opWhitelistNotifyOnJoin.getValue().toString().replace("[player]", player.getName()).replace("%player_name%",player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId())));
} }
if (OPWhitelist.noOpPlayerSetGameModeEnable.valueBoolean) { if ((boolean)OPWhitelist.VALUES.noOpPlayerSetGameModeEnable.getValue()) {
player.setGameMode(OPWhitelist.noOpPlayerSetGameModeValue.valueGameMode); player.setGameMode(GameMode.valueOf( OPWhitelist.VALUES.noOpPlayerSetGameModeValue.getValue().toString()));
} }
if (OPWhitelist.noOpPlayerDeopEnable.valueBoolean) { if ((boolean)OPWhitelist.VALUES.noOpPlayerDeopEnable.getValue()) {
player.setOp(false); player.setOp(false);
if (OPWhitelist.noOpPlayerKickEnable.valueBoolean) { if ((boolean)OPWhitelist.VALUES.noOpPlayerKickEnable.getValue()) {
if (!OPWhitelist.customCommandsEnable.valueBoolean) { if (!(boolean)OPWhitelist.VALUES.customCommandsEnable.getValue()) {
if (Config.kickCustomCommand.valueBoolean) { if ((boolean) Config.VALUES.kickCustomCommand.getValue()) {
T2Ccmd.console(Config.kickCommand.valueString.replace("[player]", player.getName()).replace("[reason]", T2C_Cmd.console( Config.VALUES.kickCommand.getValue().toString().replace("[player]", player.getName()).replace("%player_name%",player.getName()).replace("[reason]",
OPWhitelist.noOpPlayerKickEnable.valueBoolean && OPWhitelist.noOpPlayerDeopEnable.valueBoolean && OPWhitelist.noOpPlayerDeopPlayerSendMessage.valueBoolean (boolean)OPWhitelist.VALUES.noOpPlayerKickEnable.getValue() && (boolean)OPWhitelist.VALUES.noOpPlayerDeopEnable.getValue() && (boolean)OPWhitelist.VALUES.noOpPlayerDeopPlayerSendMessage.getValue()
? Language.opWhitelistKick.value + "<br> <br>" + Language.opWhitelistDeop.value : Language.opWhitelistKick.value)); ? Languages.VALUES.opWhitelistKick.getValue().toString() + "<br> <br>" + Languages.VALUES.opWhitelistDeop.getValue().toString() : Languages.VALUES.opWhitelistKick.getValue().toString()));
} else player.kickPlayer(OPWhitelist.noOpPlayerDeopEnable.valueBoolean && OPWhitelist.noOpPlayerDeopPlayerSendMessage.valueBoolean } else player.kickPlayer((boolean)OPWhitelist.VALUES.noOpPlayerDeopEnable.getValue() && (boolean)OPWhitelist.VALUES.noOpPlayerDeopPlayerSendMessage.getValue()
? Language.opWhitelistKick.value + "\n \n" + Language.opWhitelistDeop.value : Language.opWhitelistKick.value); ? Languages.VALUES.opWhitelistKick.getValue() + "\n \n" + Languages.VALUES.opWhitelistDeop.getValue() : Languages.VALUES.opWhitelistKick.getValue().toString());
} }
T2Csend.console(Language.opWhitelistNotifyDeop.value.replace("[player]", player.getName().replace("[uuid]", String.valueOf(player.getUniqueId()))) + "<br>" T2C_Send.console("["+debug+ "]" + Languages.VALUES.opWhitelistNotifyDeop.getValue().toString().replace("[player]", player.getName()).replace("%player_name%",player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId())) + "<br>"
+ Language.opWhitelistNotifyKick.value.replace("[player]", player.getName().replace("[uuid]", String.valueOf(player.getUniqueId()))).replace("[uuid]", String.valueOf(player.getUniqueId()))); + Languages.VALUES.opWhitelistNotifyKick.getValue().toString().replace("[player]", player.getName()).replace("%player_name%",player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId())).replace("[uuid]", String.valueOf(player.getUniqueId())));
Events.notifyPlayer(Language.opWhitelistNotifyDeop.value.replace("[player]", player.getName()) + "<br>" Events.notifyPlayer(Languages.VALUES.opWhitelistNotifyDeop.getValue().toString().replace("[player]", player.getName()).replace("%player_name%",player.getName()) + "<br>"
+ Language.opWhitelistNotifyKick.value.replace("[player]", player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId()))); + Languages.VALUES.opWhitelistNotifyKick.getValue().toString().replace("[player]", player.getName()).replace("%player_name%",player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId())));
} else { } else {
T2Csend.console(Language.opWhitelistNotifyDeop.value.replace("[player]", player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId()))); T2C_Send.console("["+debug+ "]" + Languages.VALUES.opWhitelistNotifyDeop.getValue().toString().replace("[player]", player.getName()).replace("%player_name%",player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId())));
Events.notifyPlayer(Language.opWhitelistNotifyDeop.value.replace("[player]", player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId()))); Events.notifyPlayer(Languages.VALUES.opWhitelistNotifyDeop.getValue().toString().replace("[player]", player.getName()).replace("%player_name%",player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId())));
if (OPWhitelist.noOpPlayerDeopPlayerSendMessage.valueBoolean) { if ((boolean)OPWhitelist.VALUES.noOpPlayerDeopPlayerSendMessage.getValue()) {
Bukkit.getScheduler().runTaskLater(Main.getPlugin(), new Runnable() { Bukkit.getScheduler().runTaskLater(Main.getPlugin(), new Runnable() {
@Override @Override
public void run() { public void run() {
T2Csend.player(player, Language.opWhitelistDeop.value); T2C_Send.player(player, Languages.VALUES.opWhitelistDeop.getValue().toString());
} }
}, 5L); }, 5L);
} }
} }
} }
if (OPWhitelist.noOpPlayerKickEnable.valueBoolean) { if ((boolean)OPWhitelist.VALUES.noOpPlayerKickEnable.getValue()) {
if (!OPWhitelist.noOpPlayerDeopEnable.valueBoolean) { if (!(boolean)OPWhitelist.VALUES.noOpPlayerDeopEnable.getValue()) {
if (!OPWhitelist.customCommandsEnable.valueBoolean) { if (!(boolean)OPWhitelist.VALUES.customCommandsEnable.getValue()) {
if (Config.kickCustomCommand.valueBoolean) { if ((boolean)Config.VALUES.kickCustomCommand.getValue()) {
T2Ccmd.console(Config.kickCommand.valueString.replace("[player]", player.getName()).replace("[reason]", Language.opWhitelistKick.value)); T2C_Cmd.console(Config.VALUES.kickCommand.getValue().toString().replace("[player]", player.getName()).replace("%player_name%",player.getName()).replace("[reason]", Languages.VALUES.opWhitelistKick.getValue().toString()));
} else player.kickPlayer(Language.opWhitelistKick.value); } else player.kickPlayer(Languages.VALUES.opWhitelistKick.getValue().toString());
} }
T2Csend.console(Language.opWhitelistNotifyKick.value.replace("[player]", player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId()))); T2C_Send.console("["+debug+ "]" + Languages.VALUES.opWhitelistNotifyKick.getValue().toString().replace("[player]", player.getName()).replace("%player_name%",player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId())));
Events.notifyPlayer(Language.opWhitelistNotifyKick.value.replace("[player]", player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId()))); Events.notifyPlayer(Languages.VALUES.opWhitelistNotifyKick.getValue().toString().replace("[player]", player.getName()).replace("%player_name%",player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId())));
} }
} }
if (OPWhitelist.customCommandsEnable.valueBoolean) { if ((boolean)OPWhitelist.VALUES.customCommandsEnable.getValue()) {
for (String cmd : OPWhitelist.customCommandsCommands.valueStringList) { for (String cmd : (List<String>)OPWhitelist.VALUES.customCommandsCommands.getValue()) {
T2Ccmd.console(cmd.replace("[player]", player.getName())); T2C_Cmd.console(cmd.replace("[player]", player.getName()).replace("%player_name%",player.getName()));
} }
} }
} }
public static Boolean opWhitelist(Player player) { public static Boolean opWhitelist(Player player, String debug) {
for (Map.Entry<String, PlayerObject> playerObject : PlayerCash.getOpHashMap().entrySet()) { for (Map.Entry<String, PlayerObject> playerObject : PlayerCache.getOpHashMap().entrySet()) {
if (playerObject.getValue().playerName.equals(player.getName()) && playerObject.getValue().uuid.equals(player.getUniqueId().toString())) return true; T2C_Debug.debug(Main.getPlugin(), "[" + debug + "] --------- " + player.getName()+" ---------");
T2C_Debug.debug(Main.getPlugin(), "[" + debug + "] opWhitelist playerObject Name: " + playerObject.getValue().playerName);
T2C_Debug.debug(Main.getPlugin(), "[" + debug + "] opWhitelist Player Name: " + player.getName());
T2C_Debug.debug(Main.getPlugin(), "[" + debug + "] opWhitelist playerObject UUID: " + playerObject.getValue().uuid);
T2C_Debug.debug(Main.getPlugin(), "[" + debug + "] opWhitelist Player UUID: " + player.getUniqueId().toString().replace("-", ""));
if (playerObject.getValue().playerName.equals(player.getName()) && playerObject.getValue().uuid.equals(player.getUniqueId().toString().replace("-", ""))) {
T2C_Debug.debug(Main.getPlugin(), "[" + debug + "] opWhitelist Player on list!");
T2C_Debug.debug(Main.getPlugin(),"");
return true;
} else T2C_Debug.debug(Main.getPlugin(),"");
} }
return false; return false;
} }

View File

@ -1,30 +1,33 @@
package net.t2code.opsecurity.check; package net.t2code.opsecurity.check;
import net.t2code.opsecurity.config.config.Config; import net.t2code.opsecurity.config.config.Config;
import net.t2code.opsecurity.config.language.Language; import net.t2code.opsecurity.config.language.Languages;
import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist; import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist;
import net.t2code.opsecurity.events.Events; import net.t2code.opsecurity.events.Events;
import net.t2code.opsecurity.objects.PlayerCash; import net.t2code.opsecurity.objects.PlayerCache;
import net.t2code.opsecurity.objects.PlayerObject; import net.t2code.opsecurity.objects.PlayerObject;
import net.t2code.opsecurity.system.BungeeSenderReceiver; import net.t2code.opsecurity.system.BungeeSenderReceiver;
import net.t2code.opsecurity.system.Main; import net.t2code.opsecurity.system.Main;
import net.t2code.t2codelib.SPIGOT.api.commands.T2Ccmd; import net.t2code.t2codelib.SPIGOT.api.commands.T2C_Cmd;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import net.t2code.t2codelib.SPIGOT.api.debug.T2C_Debug;
import net.t2code.t2codelib.SPIGOT.api.messages.T2C_Send;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.List;
import java.util.Map; import java.util.Map;
public class PermissionCheck { public class PermissionCheck {
public static Boolean onCheck(Player player, Boolean join) { public static Boolean onCheck(Player player, Boolean join, String debug) {
if (!PermissionWhitelist.enable.valueBoolean) return false; if (!(boolean) PermissionWhitelist.VALUES.enable.getValue()) return false;
for (String perm : PermissionWhitelist.permissions.valueStringList) { for (String perm : (List<String>) PermissionWhitelist.VALUES.permissions.getValue()) {
if (!player.hasPermission(perm)) continue; if (!player.hasPermission(perm)) return false;
if (permWhitelist(player)) continue; T2C_Debug.debug(Main.getPlugin(), "[" + debug + "] check Permission: " + perm);
if (permWhitelist(player, debug)) return false;
Bukkit.getScheduler().runTask(Main.getPlugin(), new Runnable() { Bukkit.getScheduler().runTask(Main.getPlugin(), new Runnable() {
@Override @Override
public void run() { public void run() {
execute(player, join, perm); execute(player, join, perm, debug);
} }
}); });
return true; return true;
@ -32,31 +35,43 @@ public class PermissionCheck {
return false; return false;
} }
private static void execute(Player player, Boolean join, String perm) { private static void execute(Player player, Boolean join, String perm, String debug) {
if (join) T2Csend.console(Language.permissionWhitelistNotifyKick.value.replace("[player]", player.getName()).replace("[uuid]",String.valueOf(player.getUniqueId()))); if (join)
if (Config.notifyJoinWarning.valueBoolean && join) { T2C_Send.console("[" + debug + "]" + Languages.VALUES.permissionWhitelistNotifyKick.getValue().toString().replace("[player]", player.getName()).replace("%player_name%", player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId())));
if (Config.notifyBungee.valueBoolean) { if ((boolean) Config.VALUES.notifyJoinWarning.getValue() && join) {
BungeeSenderReceiver.sendToBungee(Language.permissionWhitelistNotifyOnJoin.value.replace("[player]", player.getName()).replace("[uuid]",String.valueOf(player.getUniqueId()))); if ((boolean) Config.VALUES.notifyBungee.getValue()) {
} else Events.notifyPlayer(Language.permissionWhitelistNotifyOnJoin.value.replace("[player]", player.getName()).replace("[uuid]",String.valueOf(player.getUniqueId()))); BungeeSenderReceiver.sendToBungee(Languages.VALUES.permissionWhitelistNotifyOnJoin.getValue().toString().replace("[player]", player.getName()).replace("%player_name%", player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId())));
} else
Events.notifyPlayer(Languages.VALUES.permissionWhitelistNotifyOnJoin.getValue().toString().replace("[player]", player.getName()).replace("%player_name%", player.getName()).replace("[uuid]", String.valueOf(player.getUniqueId())));
} }
if (PermissionWhitelist.playerWithPermissionKick.valueBoolean) { if ((boolean) PermissionWhitelist.VALUES.playerWithPermissionKick.getValue()) {
if (Config.kickCustomCommand.valueBoolean) { if ((boolean) Config.VALUES.kickCustomCommand.getValue()) {
T2Ccmd.console(Config.kickCommand.valueString.replace("[player]", player.getName()).replace("[reason]", Language.permissionWhitelistKick.value)); T2C_Cmd.console(Config.VALUES.kickCommand.getValue().toString().replace("[perm]", perm).replace("[player]", player.getName()).replace("%player_name%", player.getName()).replace("[reason]", Languages.VALUES.permissionWhitelistKick.getValue().toString()));
} else player.kickPlayer(Language.permissionWhitelistKick.value); } else player.kickPlayer(Languages.VALUES.permissionWhitelistKick.getValue().toString());
T2Csend.console(Language.permissionWhitelistNotifyKick.value.replace("[player]", T2C_Send.console("[" + debug + "]" + Languages.VALUES.permissionWhitelistNotifyKick.getValue().toString().replace("[player]",
player.getName()).replace("[perm]", perm).replace("[uuid]",String.valueOf(player.getUniqueId()))); player.getName()).replace("[perm]", perm).replace("[uuid]", String.valueOf(player.getUniqueId())));
} }
if (PermissionWhitelist.customCommandsCommands.valueBoolean) { if ((boolean) PermissionWhitelist.VALUES.customCommandsEnable.getValue()) {
for (String cmd : PermissionWhitelist.customCommandsCommands.valueStringList) { for (String cmd : (List<String>) PermissionWhitelist.VALUES.customCommandsCommands.getValue()) {
T2Ccmd.console(cmd.replace("[player]", player.getName()).replace("[perm]", perm)); T2C_Cmd.console(cmd.replace("[player]", player.getName()).replace("%player_name%", player.getName()).replace("[perm]", perm));
} }
} }
} }
private static Boolean permWhitelist(Player player) { public static Boolean permWhitelist(Player player, String debug) {
for (Map.Entry<String, PlayerObject> playerObject : PlayerCash.getPermissionHashMap().entrySet()) {
if (playerObject.getValue().playerName.equals(player.getName()) && playerObject.getValue().uuid.equals(player.getUniqueId().toString())) return true; for (Map.Entry<String, PlayerObject> playerObject : PlayerCache.getPermissionHashMap().entrySet()) {
T2C_Debug.debug(Main.getPlugin(), "[" + debug + "] --------- " + player.getName() + " ---------");
T2C_Debug.debug(Main.getPlugin(), "[" + debug + "] permWhitelist playerObject Name: " + playerObject.getValue().playerName);
T2C_Debug.debug(Main.getPlugin(), "[" + debug + "] permWhitelist Player Name: " + player.getName());
T2C_Debug.debug(Main.getPlugin(), "[" + debug + "] permWhitelist playerObject UUID: " + playerObject.getValue().uuid);
T2C_Debug.debug(Main.getPlugin(), "[" + debug + "] permWhitelist Player UUID: " + player.getUniqueId().toString().replace("-", ""));
if (playerObject.getValue().playerName.equals(player.getName()) && playerObject.getValue().uuid.equals(player.getUniqueId().toString().replace("-", ""))) {
T2C_Debug.debug(Main.getPlugin(), "[" + debug + "] permWhitelist Player on list!");
T2C_Debug.debug(Main.getPlugin(), "");
return true;
} else T2C_Debug.debug(Main.getPlugin(), "");
} }
return false; return false;
} }

View File

@ -6,23 +6,25 @@ import net.t2code.opsecurity.config.config.Config;
import net.t2code.opsecurity.config.opWhitelist.OPWhitelist; import net.t2code.opsecurity.config.opWhitelist.OPWhitelist;
import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist; import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist;
import net.t2code.opsecurity.system.Main; import net.t2code.opsecurity.system.Main;
import net.t2code.t2codelib.SPIGOT.api.debug.T2C_Debug;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class Timer { public class Timer {
public static void refreshTimer() { public static void refreshTimer() {
if (!(OPWhitelist.enable.valueBoolean && PermissionWhitelist.enable.valueBoolean)) return; if (!((boolean)OPWhitelist.VALUES.enable.getValue() && (boolean)PermissionWhitelist.VALUES.enable.getValue())) return;
if (!Config.checkTimerEnable.valueBoolean) return; if (!(boolean) Config.VALUES.checkTimerEnable.getValue()) return;
Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getPlugin(), new Runnable() { Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getPlugin(), new Runnable() {
@Override @Override
public void run() { public void run() {
for (Player player : Bukkit.getOnlinePlayers()) { for (Player player : Bukkit.getOnlinePlayers()) {
OpCheck.onCheck(player, false); String debug = T2C_Debug.debugCode();
PermissionCheck.onCheck(player, false); OpCheck.onCheck(player, false, debug);
PermissionCheck.onCheck(player, false, debug);
} }
} }
}, 0, 20L * Config.checkTimerRefreshInSec.valueInt); }, 0, 20L * (int) Config.VALUES.checkTimerRefreshInSec.getValue());
} }
} }

View File

@ -2,14 +2,10 @@
package net.t2code.opsecurity.command; package net.t2code.opsecurity.command;
import net.t2code.opsecurity.Util; import net.t2code.opsecurity.util.Util;
import net.t2code.opsecurity.config.config.Config; import net.t2code.opsecurity.config.config.Config;
import net.t2code.opsecurity.objects.PlayerCash;
import net.t2code.opsecurity.objects.PlayerObject;
import net.t2code.opsecurity.system.Main;
import net.t2code.opsecurity.system.Permissions; import net.t2code.opsecurity.system.Permissions;
import net.t2code.t2codelib.SPIGOT.api.commands.T2Ctab; import net.t2code.t2codelib.SPIGOT.api.commands.T2C_Tab;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -18,7 +14,6 @@ import org.bukkit.command.TabCompleter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
public class CmdExecuter implements CommandExecutor, TabCompleter { public class CmdExecuter implements CommandExecutor, TabCompleter {
@ -27,7 +22,7 @@ public class CmdExecuter implements CommandExecutor, TabCompleter {
if (args.length == 0) { if (args.length == 0) {
Commands.mainCommand(sender); Commands.mainCommand(sender);
} else { } else {
if (Config.onlyOPcanUseThePlugin.valueBoolean) { if ((boolean)Config.VALUES.onlyOPcanUseThePlugin.getValue()) {
if (!sender.isOp()) { if (!sender.isOp()) {
sender.sendMessage(Util.getPrefix() + "§cOnly OPs can use OPSecurity!"); sender.sendMessage(Util.getPrefix() + "§cOnly OPs can use OPSecurity!");
return false; return false;
@ -63,7 +58,7 @@ public class CmdExecuter implements CommandExecutor, TabCompleter {
@Override @Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String s, String[] args) { public List<String> onTabComplete(CommandSender sender, Command cmd, String s, String[] args) {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
T2Ctab.tab(list,sender,0,args,arg1); T2C_Tab.tab(list,sender,0,args,arg1);
return list; return list;
} }
} }

View File

@ -1,25 +1,25 @@
package net.t2code.opsecurity.command; package net.t2code.opsecurity.command;
import net.t2code.opsecurity.Util; import net.t2code.opsecurity.util.Util;
import net.t2code.opsecurity.check.OpCheck; import net.t2code.opsecurity.check.OpCheck;
import net.t2code.opsecurity.config.FileSelect;
import net.t2code.opsecurity.config.config.Config; import net.t2code.opsecurity.config.config.Config;
import net.t2code.opsecurity.config.language.Language; import net.t2code.opsecurity.config.language.Languages;
import net.t2code.opsecurity.enums.OpCommandRequest; import net.t2code.opsecurity.config.opWhitelist.OPWhitelist;
import net.t2code.opsecurity.objects.PlayerCash; import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist;
import net.t2code.opsecurity.system.Main; import net.t2code.opsecurity.system.Main;
import net.t2code.opsecurity.system.Permissions; import net.t2code.opsecurity.system.Permissions;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import net.t2code.t2codelib.SPIGOT.api.debug.T2C_Debug;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Ctemplate; import net.t2code.t2codelib.SPIGOT.api.messages.T2C_Send;
import net.t2code.t2codelib.SPIGOT.api.messages.T2C_Template;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class Commands { public class Commands {
public static void help(CommandSender sender){ public static void help(CommandSender sender) {
if (!sender.hasPermission(Permissions.help)) { if (!sender.hasPermission(Permissions.help)) {
T2Csend.sender(sender, Language.noPermissionForOpSec.value); T2C_Send.sender(sender, Languages.VALUES.noPermissionForOpSec.getValue().toString());
return; return;
} }
//todo to language file //todo to language file
@ -34,7 +34,7 @@ public class Commands {
} }
public static void mainCommand(CommandSender sender) { public static void mainCommand(CommandSender sender) {
if (Config.onlyOPcanUseThePlugin.valueBoolean) { if ((boolean) Config.VALUES.onlyOPcanUseThePlugin.getValue()) {
if (!sender.isOp()) { if (!sender.isOp()) {
sender.sendMessage(Util.getPrefix() + "§cOnly OPs can use OPSecurity!"); sender.sendMessage(Util.getPrefix() + "§cOnly OPs can use OPSecurity!");
return; return;
@ -54,23 +54,24 @@ public class Commands {
} }
if (sender instanceof Player) { if (sender instanceof Player) {
Player player = (Player) sender; Player player = (Player) sender;
if (Config.onlyOPcanUseThePlugin.valueBoolean) { if ((boolean) Config.VALUES.onlyOPcanUseThePlugin.getValue()) {
if (!OpCheck.opWhitelist(player)) { String debug = T2C_Debug.debugCode();
if (!OpCheck.opWhitelist(player, debug)) {
sender.sendMessage(Util.getPrefix() + " §4You are not on the Whitelist!"); // todo sender.sendMessage(Util.getPrefix() + " §4You are not on the Whitelist!"); // todo
return; return;
} }
} }
T2Csend.player(player, Language.reloadStart.value); T2C_Send.player(player, Languages.VALUES.reloadStart.getValue().toString());
} }
if (sender instanceof Player) T2Csend.player((Player) sender, Language.reloadEnd.value); if (sender instanceof Player) T2C_Send.player((Player) sender, Languages.VALUES.reloadEnd.getValue().toString());
Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------"); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------");
Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §6Plugin reload..."); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §6Plugin reload...");
Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------"); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------");
// Load.onLoad(Main.getPlugin(),Main.getAutor(),Main.getVersion()); // Load.onLoad(Main.getPlugin(),Main.getAutor(),Main.getVersion());
FileSelect.selectConfig(); Config.set(true);
FileSelect.selectLanguage(); Languages.set(true);
FileSelect.selectOpWhitelist(); OPWhitelist.set(true);
FileSelect.selectPermissionWhitelist(); PermissionWhitelist.set(true);
Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------"); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------");
Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §2Plugin successfully reloaded."); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §2Plugin successfully reloaded.");
Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------"); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------");
@ -81,6 +82,6 @@ public class Commands {
sender.sendMessage(Util.getPrefix() + "§cYou do not have permission for OPSecurity! §7<" + Permissions.info + ">"); sender.sendMessage(Util.getPrefix() + "§cYou do not have permission for OPSecurity! §7<" + Permissions.info + ">");
return; return;
} }
T2Ctemplate.sendInfo(sender,Main.getPlugin(),Util.getSpigotID(),Util.getDiscord(),Util.getInfoText()); T2C_Template.sendInfo(sender, Main.getPlugin(), Util.getSpigotID(), Util.getDiscord(), Util.getInfoText());
} }
} }

View File

@ -1,211 +0,0 @@
package net.t2code.opsecurity.config;
import net.t2code.opsecurity.Util;
import net.t2code.opsecurity.config.config.Config;
import net.t2code.opsecurity.config.language.Language;
import net.t2code.opsecurity.config.opWhitelist.OPWhitelist;
import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist;
import net.t2code.opsecurity.objects.PlayerCash;
import net.t2code.opsecurity.objects.PlayerObject;
import net.t2code.opsecurity.system.Main;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Creplace;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import net.t2code.t2codelib.SPIGOT.system.config.languages.SelectLibMsg;
import org.bukkit.GameMode;
import org.bukkit.Sound;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
import java.io.IOException;
import java.util.*;
public class FileSelect {
public static void selectConfig() {
File config = new File(Main.getPath(), "config.yml");
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config);
for (Config value : Config.values()) {
switch (value.cEnum) {
case STRING:
if (!yamlConfiguration.contains(value.path)) {
yamlConfiguration.set(value.path, value.valueString);
}
value.valueString = T2Creplace.replace(Util.getPrefix(), yamlConfiguration.getString(value.path));
break;
case SOUND:
if (!yamlConfiguration.contains(value.path)) {
yamlConfiguration.set(value.path, value.sound.toString());
}
try {
value.sound = Sound.valueOf(yamlConfiguration.getString(value.path));
} catch (Exception ex) {
T2Csend.console("§4\n§4\n§4\n" + SelectLibMsg.soundNotFound.replace("[prefix]", Util.getPrefix())
.replace("[sound]", "§8" + value.path + ": §6" + yamlConfiguration.getString(value.path)) + "§4\n§4\n§4\n");
}
break;
case BOOLEAN:
if (!yamlConfiguration.contains(value.path)) {
yamlConfiguration.set(value.path, value.valueBoolean);
}
value.valueBoolean = yamlConfiguration.getBoolean(value.path);
break;
case INTEGER:
if (!yamlConfiguration.contains(value.path)) {
yamlConfiguration.set(value.path, value.valueInt);
}
value.valueInt = yamlConfiguration.getInt(value.path);
break;
}
}
try {
yamlConfiguration.save(config);
} catch (IOException e) {
e.printStackTrace();
}
}
private static ArrayList<String> defaultLanguages = new ArrayList<>(Arrays.asList("german", "english"));
public static void selectLanguage() {
long long_ = System.currentTimeMillis();
for (String language : defaultLanguages) {
File config = new File(Main.getPath(), "languages/" + language + ".yml");
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config);
for (Language value : Language.values()) {
if (!yamlConfiguration.contains(value.path)) {
switch (language) {
case "german":
yamlConfiguration.set(value.path, value.german);
break;
case "english":
yamlConfiguration.set(value.path, value.english);
break;
}
}
}
T2Csend.debug(Main.getPlugin(), "save: " + language);
try {
yamlConfiguration.save(config);
} catch (IOException e) {
e.printStackTrace();
}
}
String selectMSG;
File config = new File(Main.getPath(), "languages/" + Config.language.valueString + ".yml");
T2Csend.debug(Main.getPlugin(), config.getAbsolutePath());
if (!config.isFile()) {
T2Csend.console(Util.getPrefix());
T2Csend.console(Util.getPrefix() + " §4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
T2Csend.console(Util.getPrefix() + " §4The selected §c" + Config.language.valueString + " §4language file was not found.");
T2Csend.console(Util.getPrefix() + " §6The default language §eEnglish §6is used!");
T2Csend.console(Util.getPrefix() + " §4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
T2Csend.console(Util.getPrefix());
config = new File(Main.getPath(), "languages/" + "english.yml");
selectMSG = "english";
} else selectMSG = Config.language.valueString;
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config);
for (Language value : Language.values()) {
T2Csend.debug(Main.getPlugin(), "Select: File: " + config.getName() + " Path: " + value.path);
value.value = T2Creplace.replace(Util.getPrefix(), yamlConfiguration.getString(value.path));
}
T2Csend.console(Util.getPrefix() + " §2Language successfully selected to: §6" + selectMSG + " §7- §e" + (System.currentTimeMillis() - long_) + "ms");
}
public static void selectOpWhitelist() {
PlayerCash.getOpHashMap().clear();
File config = new File(Main.getPath(), "opWhitelist.yml");
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config);
for (OPWhitelist value : OPWhitelist.values()) {
switch (value.cEnum) {
case BOOLEAN:
if (!yamlConfiguration.contains(value.path)) {
yamlConfiguration.set(value.path, value.valueBoolean);
}
value.valueBoolean = yamlConfiguration.getBoolean(value.path);
break;
case STRINGLIST:
if (!yamlConfiguration.contains(value.path)) {
yamlConfiguration.set(value.path, value.valueBoolean);
}
value.valueStringList = T2Creplace.replace(Util.getPrefix(), yamlConfiguration.getStringList(value.path));
break;
case PLAYERLIST:
if (!yamlConfiguration.contains(value.pathPlayerListPath)) {
yamlConfiguration.set(value.pathPlayerName.replace("KEY", "player1"), value.valuePlayerName);
yamlConfiguration.set(value.pathPlayerUuid.replace("KEY", "player1"), value.valuePlayerUuid);
yamlConfiguration.set(value.pathPlayerName.replace("KEY", "player2"), value.valuePlayerName);
yamlConfiguration.set(value.pathPlayerUuid.replace("KEY", "player2"), value.valuePlayerUuid);
}
for (String key : yamlConfiguration.getConfigurationSection(value.pathPlayerListPath).getKeys(false)) {
String name = yamlConfiguration.getString(value.pathPlayerName.replace("KEY", key));
PlayerObject playerObject = new PlayerObject(
name,
yamlConfiguration.getString(value.pathPlayerUuid.replace("KEY", key).replace("-", "")));
PlayerCash.getOpHashMap().put(name, playerObject);
}
break;
case GAMEMODE:
if (!yamlConfiguration.contains(value.path)) {
yamlConfiguration.set(value.path, value.valueGameMode.toString());
}
try {
value.valueGameMode = GameMode.valueOf(yamlConfiguration.getString(value.path).toUpperCase());
} catch (Exception ex) {
ex.printStackTrace();
value.valueGameMode = GameMode.SURVIVAL;
}
break;
}
}
try {
yamlConfiguration.save(config);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void selectPermissionWhitelist() {
PlayerCash.getPermissionHashMap().clear();
File config = new File(Main.getPath(), "permissionWhitelist.yml");
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config);
for (PermissionWhitelist value : PermissionWhitelist.values()) {
switch (value.cEnum) {
case BOOLEAN:
if (!yamlConfiguration.contains(value.path)) {
yamlConfiguration.set(value.path, value.valueBoolean);
}
value.valueBoolean = yamlConfiguration.getBoolean(value.path);
break;
case STRINGLIST:
if (!yamlConfiguration.contains(value.path)) {
yamlConfiguration.set(value.path, value.valueStringList);
}
value.valueStringList = T2Creplace.replace(Util.getPrefix(), yamlConfiguration.getStringList(value.path));
break;
case PLAYERLIST:
if (!yamlConfiguration.contains(value.pathPlayerListPath)) {
yamlConfiguration.set(value.pathPlayerName.replace("KEY", "player1"), value.valuePlayerName);
yamlConfiguration.set(value.pathPlayerUuid.replace("KEY", "player1"), value.valuePlayerUuid);
yamlConfiguration.set(value.pathPlayerName.replace("KEY", "player2"), value.valuePlayerName);
yamlConfiguration.set(value.pathPlayerUuid.replace("KEY", "player2"), value.valuePlayerUuid);
}
for (String key : yamlConfiguration.getConfigurationSection(value.pathPlayerListPath).getKeys(false)) {
String name = yamlConfiguration.getString(value.pathPlayerName.replace("KEY", key));
PlayerObject playerObject = new PlayerObject(
name,
yamlConfiguration.getString(value.pathPlayerUuid.replace("KEY", key).replace("-", "")));
PlayerCash.getPermissionHashMap().put(name, playerObject);
}
break;
}
}
try {
yamlConfiguration.save(config);
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@ -1,66 +1,171 @@
// This class was created by JaTiTV.
package net.t2code.opsecurity.config.config; package net.t2code.opsecurity.config.config;
import net.t2code.opsecurity.enums.ConfigParam; import net.t2code.opsecurity.system.Main;
import net.t2code.t2codelib.SPIGOT.api.minecraftVersion.T2CmcVersion; import net.t2code.opsecurity.util.Util;
import net.t2code.t2codelib.SPIGOT.api.minecraftVersion.T2C_McVersion;
import net.t2code.t2codelib.SPIGOT.api.yaml.T2C_ConfigWriter;
import net.t2code.t2codelib.util.T2C_ConfigItem;
import net.t2code.t2codelib.util.T2C_LanguageEnum;
import org.bukkit.Sound; import org.bukkit.Sound;
public enum Config { import java.io.File;
import java.util.HashMap;
import java.util.List;
language("plugin.language", "english", ConfigParam.STRING), public class Config {
onlyOPcanUseThePlugin("plugin.onlyOPcanUseThePlugin", true, ConfigParam.BOOLEAN),
updateCheckOnJoin("plugin.updateCheck.onJoin",true,ConfigParam.BOOLEAN), public enum VALUES implements T2C_ConfigItem {
updateCheckSeePreReleaseUpdates("plugin.updateCheck.seePreReleaseUpdates",true,ConfigParam.BOOLEAN),
updateCheckTimeInterval("plugin.updateCheck.timeInterval",60,ConfigParam.INTEGER),
checkOnJoin("check.onJoin", true, ConfigParam.BOOLEAN),
checkOnInteract("check.onInteract", true, ConfigParam.BOOLEAN),
checkOnCommand("check.onCommand", true, ConfigParam.BOOLEAN),
checkOnChat("check.onChat", true, ConfigParam.BOOLEAN),
checkTimerEnable("check.timer.enable", true, ConfigParam.BOOLEAN),
checkTimerRefreshInSec("check.timer.refreshInSec", 60, ConfigParam.INTEGER),
kickCustomCommand("kick.customCommand.Enable", false, ConfigParam.BOOLEAN),
kickCommand("kick.customCommand.command", "minecraft:kick [player] [reason]", ConfigParam.STRING),
notifyJoinWarning("notify.joinWarn.enable", true, ConfigParam.BOOLEAN),
notifyBungee("notify.allBungeePlayer.enable", false, ConfigParam.BOOLEAN),
notifySoundEnable("notify.soundEnable", true, ConfigParam.BOOLEAN),
notifySoundValue("notify.sound", sound(), ConfigParam.SOUND);
public String path; language("plugin.language", T2C_LanguageEnum.english, true,
public String valueString; new HashMap<>() {{
public Integer valueInt; put(T2C_LanguageEnum.german, List.of("Hier kannst du die Sprache des Plugins einstellen."));
public Boolean valueBoolean; put(T2C_LanguageEnum.english, List.of("Here you can set the language of the plugin."));
public Sound sound; }}),
public ConfigParam cEnum; onlyOPcanUseThePlugin("plugin.onlyOPcanUseThePlugin", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Hier kannst du festlegen, dass nur Spieler mit OP die Befehle des Plugins nutzen können."));
put(T2C_LanguageEnum.english, List.of("Here you can specify that only players with OP can use the commands of the plugin."));
}}),
Config(String path, String value, ConfigParam cEnum) { updateCheckOnJoin("plugin.updateCheck.onJoin", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Mit dieser Option kannst du festlegen, ob Spieler mit der Berechtigung 't2c.opsecurity.updatemsg' beim Beitritt eine Update-Nachricht erhalten, wenn ein Update für das Plugin verfügbar ist."));
put(T2C_LanguageEnum.english, List.of("In this option you can set if players with the permission 't2c.opsecurity.updatemsg' will get an update message on join when an update for the plugin is available."));
}}),
updateCheckSeePreReleaseUpdates("plugin.updateCheck.seePreReleaseUpdates", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("In dieser Option kannst du einstellen, ob du Beta- und Snapshot-Versionen in der Update-Prüfung erhalten und anzeigen möchtest."));
put(T2C_LanguageEnum.english, List.of("In this option you can set whether you want to receive and display beta and snapshot versions in the update check."));
}}),
updateCheckTimeInterval("plugin.updateCheck.timeInterval", 60, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Mit dieser Option kannst du das Zeitintervall in Minuten festlegen, in dem Aktualisierungen überprüft werden sollen."));
put(T2C_LanguageEnum.english, List.of("In this option you can set the time interval in minutes in which updates should be checked."));
}}),
checkOnJoin("check.onJoin.enable", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Aktiviere die Prüfung, ob der Spieler berechtigt ist, wenn er dem Server beitritt."));
put(T2C_LanguageEnum.english, List.of("Activate the checks whether the player is authorised when joining the player."));
}}),
checkOnInteract("check.onInteract.enable", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Aktiviere die Prüfung, ob der Spieler für Spielerinteraktionen autorisiert ist."));
put(T2C_LanguageEnum.english, List.of("Activate the checks whether the player is authorised for player interactions."));
}}),
checkOnCommand("check.onCommand.enable", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Aktiviere die Prüfung, ob der Spieler berechtigt ist, wenn er einen Befehl ausführt."));
put(T2C_LanguageEnum.english, List.of("Activate the checks whether the player is authorised when the player executes a command."));
}}),
checkOnCommandWhitelist("check.onCommand.whitelist", List.of("command 1", "command 2"), true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Hier kannst du Befehle angeben, für die die Prüfung nicht durchgeführt wird."));
put(T2C_LanguageEnum.english, List.of("Here you can specify commands for which the check is not carried out."));
}}),
checkOnChat("check.onChat.enable", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Aktiviere die Überprüfung, ob der Spieler autorisiert ist, wenn er eine Chat-Nachricht schreibt."));
put(T2C_LanguageEnum.english, List.of("Activate the checks whether the player is authorised when the player writes a chat message."));
}}),
checkTimerEnable("check.timer.enable", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Aktiviere die Überprüfung aller Spieler in einem Zeitintervall."));
put(T2C_LanguageEnum.english, List.of("Activate the check of all players in a time interval."));
}}),
checkTimerRefreshInSec("check.timer.refreshInSec", 60, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Hier stellst du die Sekunden ein, mit denen die Prüfung in einem Zeitintervall durchgeführt wird."));
put(T2C_LanguageEnum.english, List.of("Here you set the seconds with which the check is carried out in a time interval."));
}}),
kickCustomCommand("kick.customCommand.enable", false, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Soll ein separater Kick-Befehl für den Kick verwendet werden? Zum Beispiel, wenn du ein eigenes Verbotssystem verwenden."));
put(T2C_LanguageEnum.english, List.of("Should a separate kick command be used for the kick? For example, if you use your own ban system."));
}}),
kickCommand("kick.customCommand.command", "minecraft:kick [player] [reason]", true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Hier kannst du den benutzerdefinierten Kick-Befehl einstellen."));
put(T2C_LanguageEnum.english, List.of("This is where you set the user-defined kick command."));
}}),
notifyJoinWarning("notify.warn.enable", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Sollen Spieler mit der Berechtigung 't2c.opsecurity.notify' gewarnt werden, wenn ein Spieler entdeckt wird, der nicht berechtigt ist, mit OP / einer Permission auf dem Server zu sein."));
put(T2C_LanguageEnum.english, List.of("Should players with the permission 't2c.opsecurity.notify' be warned if a player is detected who is not authorised to be on the server with OP / a permission."));
}}),
notifyBungee("notify.allProxyPlayer.enable", false, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Sollen die Warnungen an das gesamte Netzwerk (true) oder nur an den einzelnen Server (false) gesendet werden.", "Damit diese Funktion funktioniert, muss die T2CodeLib auf deinem Proxy vorhanden sein und in deren Config die API für T2C-OPSecurity aktiviert werden!"));
put(T2C_LanguageEnum.english, List.of("Should the warnings be sent on the entire network (true) or only on the individual server (false).", "For this function to work, the T2CodeLib must be present on your proxy and the API for T2C-OPSecurity must be activated in its config!"));
}}),
notifySoundEnable("notify.soundEnable", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Soll ein Sound abgespielt werden, bei einer Benachrichtigung?"));
put(T2C_LanguageEnum.english, List.of("Should a sound be played during the warnings?"));
}}),
notifySoundValue("notify.sound", sound(), true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Welcher Sound soll bei Benachrichtigung abgespielt werden?"));
put(T2C_LanguageEnum.english, List.of("Which sound should be played during the warnings?"));
}}),
;
private final String path;
private Object value;
private final boolean forceSet;
private final HashMap<T2C_LanguageEnum, List<String>> comments;
VALUES(String path, Object value, boolean forceSet, HashMap<T2C_LanguageEnum, List<String>> comments) {
this.path = path; this.path = path;
this.valueString = value; this.value = value;
this.cEnum = cEnum; this.forceSet = forceSet;
this.comments = comments;
} }
Config(String path, Sound value, ConfigParam cEnum) { @Override
this.path = path; public String getPath() {
this.sound = value; return path;
this.cEnum = cEnum;
} }
Config(String path, Integer value, ConfigParam cEnum) { @Override
this.path = path; public Object getValue() {
this.valueInt = value; return value;
this.cEnum = cEnum;
} }
Config(String path, Boolean value, ConfigParam cEnum) { @Override
this.path = path; public boolean getForceSet() {
this.valueBoolean = value; return forceSet;
this.cEnum = cEnum;
} }
public static Sound sound() { @Override
if (T2CmcVersion.isMc1_8()) { public HashMap<T2C_LanguageEnum, List<String>> getComments() {
return comments;
}
@Override
public String getLanguagePath() {
return language.path;
}
@Override
public void setValue(Object newValue) {
value = newValue;
}
}
public static void set(boolean isReload) {
T2C_ConfigWriter.createConfig(Util.getPrefix(), new File(Main.getPath(), "config.yml"), VALUES.values(), isReload, Util.getConfigLogo());
}
private static Sound sound() {
if (T2C_McVersion.isMc1_8()) {
return Sound.valueOf("NOTE_PIANO"); return Sound.valueOf("NOTE_PIANO");
} else if (T2CmcVersion.isMc1_9() || T2CmcVersion.isMc1_10() || T2CmcVersion.isMc1_11() || T2CmcVersion.isMc1_12()) { } else if (T2C_McVersion.isMc1_9() || T2C_McVersion.isMc1_10() || T2C_McVersion.isMc1_11() || T2C_McVersion.isMc1_12()) {
return Sound.valueOf("BLOCK_NOTE_HARP"); return Sound.valueOf("BLOCK_NOTE_HARP");
} else return Sound.valueOf("BLOCK_NOTE_BLOCK_HARP"); } else return Sound.valueOf("BLOCK_NOTE_BLOCK_HARP");
} }

View File

@ -4,6 +4,10 @@ import net.t2code.opsecurity.config.opWhitelist.OPWhitelist;
import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist; import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist;
import net.t2code.opsecurity.objects.PlayerObject; import net.t2code.opsecurity.objects.PlayerObject;
import net.t2code.opsecurity.system.Main; import net.t2code.opsecurity.system.Main;
import net.t2code.opsecurity.util.Util;
import net.t2code.t2codelib.SPIGOT.api.yaml.T2C_ConfigWriter;
import net.t2code.t2codelib.util.T2C_ConfigItem;
import net.t2code.t2codelib.util.T2C_LanguageEnum;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File; import java.io.File;
@ -12,8 +16,14 @@ import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class Converter { public class Converter {
private static YamlConfiguration yamlConfigurationOld;
private static YamlConfiguration opYml;
private static YamlConfiguration permYml;
public static void convert() { public static void convert() {
Path pathOld = Paths.get("plugins/OPSecurity/config.yml"); Path pathOld = Paths.get("plugins/OPSecurity/config.yml");
Path pathNew = Paths.get(Main.getPath() + "/config.yml"); Path pathNew = Paths.get(Main.getPath() + "/config.yml");
@ -23,52 +33,61 @@ public class Converter {
if (Files.exists(pathOld) && !Files.isDirectory(pathOld)) { if (Files.exists(pathOld) && !Files.isDirectory(pathOld)) {
File configOld = new File("plugins/OPSecurity/config.yml"); File configOld = new File("plugins/OPSecurity/config.yml");
YamlConfiguration yamlConfigurationOld = YamlConfiguration.loadConfiguration(configOld); yamlConfigurationOld = YamlConfiguration.loadConfiguration(configOld);
File opConfig = new File(Main.getPath(), "opWhitelist.yml"); File opConfig = new File(Main.getPath(), "opWhitelist.yml");
YamlConfiguration opYml = YamlConfiguration.loadConfiguration(opConfig); opYml = YamlConfiguration.loadConfiguration(opConfig);
File permConfig = new File(Main.getPath(), "permissionWhitelist.yml"); File permConfig = new File(Main.getPath(), "permissionWhitelist.yml");
YamlConfiguration permYml = YamlConfiguration.loadConfiguration(permConfig); permYml = YamlConfiguration.loadConfiguration(permConfig);
Config.language.valueString = yamlConfigurationOld.getString("Plugin.language");
Config.onlyOPcanUseThePlugin.valueBoolean = yamlConfigurationOld.getBoolean("Plugin.OnlyOPcanUseThePlugin");
Config.checkOnJoin.valueBoolean = yamlConfigurationOld.getBoolean("Check.OnJoin");
Config.checkOnInteract.valueBoolean = yamlConfigurationOld.getBoolean("Check.OnInteract");
Config.checkOnCommand.valueBoolean = yamlConfigurationOld.getBoolean("Check.OnCommand");
Config.checkOnChat.valueBoolean = yamlConfigurationOld.getBoolean("Check.OnChat");
Config.checkTimerEnable.valueBoolean = yamlConfigurationOld.getBoolean("Check.Timer.Enable");
Config.checkTimerRefreshInSec.valueInt = yamlConfigurationOld.getInt("Check.Timer.RefreshTime_inSec");
Config.kickCommand.valueString = yamlConfigurationOld.getString("Kick.Command"); setConfig("Plugin.language", Config.VALUES.language);
Config.notifyJoinWarning.valueBoolean = yamlConfigurationOld.getBoolean("Notify.JoinWarn.Enable"); setConfig("Plugin.OnlyOPcanUseThePlugin", Config.VALUES.onlyOPcanUseThePlugin);
Config.notifySoundEnable.valueBoolean = yamlConfigurationOld.getBoolean("Notify.Sound.Enable"); setConfig("Check.OnJoin", Config.VALUES.checkOnJoin);
Config.notifySoundValue.valueString = yamlConfigurationOld.getString("Notify.Sound.Sound"); setConfig("Check.OnInteract", Config.VALUES.checkOnInteract);
setConfig("Check.OnCommand", Config.VALUES.checkOnCommand);
setConfig("Check.OnChat", Config.VALUES.checkOnChat);
setConfig("Check.Timer.Enable", Config.VALUES.checkTimerEnable);
setConfig("Check.Timer.RefreshTime_inSec", Config.VALUES.checkTimerRefreshInSec);
setConfig("Kick.Command", Config.VALUES.kickCommand);
setConfig("Notify.JoinWarn.Enable", Config.VALUES.notifyJoinWarning);
setConfig("Notify.Sound.Enable", Config.VALUES.notifySoundEnable);
setConfig("Notify.Sound.Sound", Config.VALUES.notifySoundValue);
OPWhitelist.enable.valueBoolean = yamlConfigurationOld.getBoolean("OP_Whitelist.Enable"); setOPWhitelist("OP_Whitelist.Enable", OPWhitelist.VALUES.enable);
OPWhitelist.playerMustBeOnlineToOp.valueBoolean = yamlConfigurationOld.getBoolean("OP_Whitelist.PlayerMustBeOnlineToOp"); setOPWhitelist("OP_Whitelist.PlayerMustBeOnlineToOp", OPWhitelist.VALUES.playerMustBeOnlineToOp);
setOPWhitelist("OP_Whitelist.noOpPlayerDeop.Enable", OPWhitelist.VALUES.noOpPlayerDeopEnable);
setOPWhitelist("OP_Whitelist.noOpPlayerDeop.PlayerSendMessage", OPWhitelist.VALUES.noOpPlayerDeopPlayerSendMessage);
setOPWhitelist("OP_Whitelist.noOpPlayerKick.Enable", OPWhitelist.VALUES.noOpPlayerKickEnable);
setOPWhitelist("OP_Whitelist.customCommands.Enable", OPWhitelist.VALUES.customCommandsEnable);
setOPWhitelist("OP_Whitelist.customCommands.Commands", OPWhitelist.VALUES.customCommandsCommands);
OPWhitelist.noOpPlayerDeopEnable.valueBoolean = yamlConfigurationOld.getBoolean("OP_Whitelist.noOpPlayerDeop.Enable");
OPWhitelist.noOpPlayerDeopPlayerSendMessage.valueBoolean = yamlConfigurationOld.getBoolean("OP_Whitelist.noOpPlayerDeop.PlayerSendMessage");
OPWhitelist.noOpPlayerKickEnable.valueBoolean = yamlConfigurationOld.getBoolean("OP_Whitelist.noOpPlayerKick.Enable");
OPWhitelist.customCommandsEnable.valueBoolean = yamlConfigurationOld.getBoolean("OP_Whitelist.customCommands.Enable");
OPWhitelist.customCommandsCommands.valueStringList = yamlConfigurationOld.getStringList("OP_Whitelist.customCommands.Commands");
if (yamlConfigurationOld.contains("OP_Whitelist.Whitelist")) {
ArrayList<PlayerObject> opWhitelist = new ArrayList<>(); ArrayList<PlayerObject> opWhitelist = new ArrayList<>();
for (String key : yamlConfigurationOld.getConfigurationSection("OP_Whitelist.Whitelist").getKeys(false)) { for (String key : yamlConfigurationOld.getConfigurationSection("OP_Whitelist.Whitelist").getKeys(false)) {
PlayerObject player = new PlayerObject(key, PlayerObject player = new PlayerObject(key,
yamlConfigurationOld.getString("OP_Whitelist.Whitelist." + key + ".UUID").replace("-", "")); yamlConfigurationOld.getString("OP_Whitelist.Whitelist." + key + ".UUID").replace("-", ""));
opWhitelist.add(player); opWhitelist.add(player);
} }
for (PlayerObject playerObject : opWhitelist) { for (PlayerObject playerObject : opWhitelist) {
opYml.set("opWhitelist.whitelist.KEY.name".replace("KEY", playerObject.playerName), playerObject.playerName); PLAYERENUM.name.path = "opWhitelist.whitelist.KEY.name".replace("KEY", playerObject.playerName);
opYml.set("opWhitelist.whitelist.KEY.uuid".replace("KEY", playerObject.playerName), playerObject.uuid); PLAYERENUM.name.value = playerObject.playerName;
PLAYERENUM.uuid.path = "opWhitelist.whitelist.KEY.uuid".replace("KEY", playerObject.playerName);
PLAYERENUM.uuid.value = playerObject.uuid;
T2C_ConfigWriter.createConfig(Util.getPrefix(),new File(Main.getPath(), "opWhitelist.yml"), PLAYERENUM.values(),false, Util.getConfigLogo());
}
} }
PermissionWhitelist.enable.valueBoolean = yamlConfigurationOld.getBoolean("Permission_Whitelist.Enable");
PermissionWhitelist.permissions.valueStringList = yamlConfigurationOld.getStringList("Permission_Whitelist.Permissions");
PermissionWhitelist.playerWithPermissionKick.valueBoolean = yamlConfigurationOld.getBoolean("Permission_Whitelist.PlayerWhithPermission_kick"); setPermissionWhitelist("Permission_Whitelist.Enable", PermissionWhitelist.VALUES.enable);
PermissionWhitelist.customCommandsEnable.valueBoolean = yamlConfigurationOld.getBoolean("Permission_Whitelist.customCommands.Enable"); setPermissionWhitelist("Permission_Whitelist.Permissions", PermissionWhitelist.VALUES.permissions);
PermissionWhitelist.customCommandsCommands.valueStringList = yamlConfigurationOld.getStringList("Permission_Whitelist.customCommands.Commands"); setPermissionWhitelist("Permission_Whitelist.PlayerWhithPermission_kick", PermissionWhitelist.VALUES.playerWithPermissionKick);
setPermissionWhitelist("Permission_Whitelist.customCommands.Enable", PermissionWhitelist.VALUES.customCommandsEnable);
setPermissionWhitelist("Permission_Whitelist.customCommands.Commands", PermissionWhitelist.VALUES.customCommandsCommands);
ArrayList<PlayerObject> permWhitelist = new ArrayList<>(); ArrayList<PlayerObject> permWhitelist = new ArrayList<>();
for (String key : yamlConfigurationOld.getConfigurationSection("Permission_Whitelist.Whitelist").getKeys(false)) { for (String key : yamlConfigurationOld.getConfigurationSection("Permission_Whitelist.Whitelist").getKeys(false)) {
@ -93,4 +112,74 @@ public class Converter {
} }
} }
} }
private static void setConfig(String path, T2C_ConfigItem item) {
if (yamlConfigurationOld.contains(path)) {
item.setValue(yamlConfigurationOld.get(path));
}
}
private static void setOPWhitelist(String path, T2C_ConfigItem item) {
if (yamlConfigurationOld.contains(path)) {
item.setValue(opYml.get(path));
}
}
private static void setPermissionWhitelist(String path, T2C_ConfigItem item) {
if (yamlConfigurationOld.contains(path)) {
item.setValue(permYml.get(path));
}
}
private enum PLAYERENUM implements T2C_ConfigItem {
name("", "", true, new HashMap<>()),
uuid("", "", true, new HashMap<>()),
;
private String path;
private Object value;
private final boolean forceSet;
private final HashMap<T2C_LanguageEnum, List<String>> comments;
PLAYERENUM(String path, Object value, boolean forceSet, HashMap<T2C_LanguageEnum, List<String>> comments) {
this.path = path;
this.value = value;
this.forceSet = forceSet;
this.comments = comments;
}
@Override
public String getPath() {
return path;
}
@Override
public Object getValue() {
return value;
}
@Override
public boolean getForceSet() {
return forceSet;
}
@Override
public HashMap<T2C_LanguageEnum, List<String>> getComments() {
return comments;
}
@Override
public String getLanguagePath() {
return null;
}
@Override
public void setValue(Object newValue) {
value = newValue;
}
}
} }

View File

@ -1,80 +0,0 @@
package net.t2code.opsecurity.config.language;
public enum Language {
soundNotFound("plugin.soundNotFound",null,
"[prefix] <dark_red>Der Sound <gold>[sound]</gold> wurde nicht gefunden! Bitte überprüfe die Einstellungen.</dark_red>",
"[prefix] <dark_red>The sound <gold>[sound]</gold> could not be found! Please check your settings.</dark_red>"),
noPermission("plugin.NoPermission",null,
"<dark_red>Keine Berechtigung!</dark_red>",
"<dark_red>No Permission!</dark_red>"),
noPermissionForOpSec("plugin.NoPermission",null,
"[prefix] <red>Du hast keine Berechtigung für OPSecurity!</red>",
"[prefix] <red>You do not have permission for OPSecurity!</red>"),
playerMustBeOnlineToOp("plugin.PlayerMustBeOnlineToOp",null,
"[prefix] <dark_red>Der Spieler muss online sein, um OP zu erhalten!</dark_red>",
"[prefix] <dark_red>Player must be online to get op!</dark_red>"),
reloadStart("plugin.reload.start",null,
"[prefix] <gold>Plugin wird neu geladen...</gold>",
"[prefix] <gold>Plugin is reloaded...</gold>"),
reloadEnd("plugin.reload.end",null,
"[prefix] <green>Plugin wurde erfolgreich neu geladen.</green>",
"[prefix] <green>Plugin was successfully reloaded.</green>"),
opWhitelistOpCommand("opWhitelist.opCommand",null,
"[prefix] <dark_red>Der angegebene Spieler befindet sich nicht auf der OP_Whitelist!</dark_red>",
"[prefix] <dark_red>The specified player is not on the OP_Whitelist!</dark_red>"),
opWhitelistNotifyOnJoin("opWhitelist.notify.onJoin",null,
"[prefix] <dark_red>Spieler <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> ist dem Server beigetreten, befindet sich aber nicht auf der OP_Whitelist!</dark_red>",
"[prefix] <dark_red>Player <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> is joined to the server but is not on the OP_Whitelist!</dark_red>"),
opWhitelistNotifyDeop("opWhitelist.notify.deop",null,
"[prefix] <dark_red>Spieler <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> wurde OP entfernt da er nicht auf der Spielerliste steht!</dark_red>",
"[prefix] <dark_red>Player <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> was removed OP because he is not on the playerlist!</dark_red>"),
opWhitelistNotifyKick("opWhitelist.notify.kick",null,
"[prefix] <dark_red>Spieler <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> wurde gekickt, da er nicht auf der OP_Whitelist steht!</dark_red>",
"[prefix] <dark_red>Player <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> was kicked because he is not on the OP_Whitelist!</dark_red>"),
opWhitelistDeop("opWhitelist.deop",null,
"&4Dir wurde OP entfernt da du dazu keine Permission besitzt.",
"&4You have been removed from OP because you do not have permission."),
opWhitelistKick("opWhitelist.kick",null,
"&4Du hast OP, bist dazu aber nicht berechtigt. Deswegen wurdest du gekickt!",
"&4You have op but are not authorized to do so, that's why you were kicked!"),
permissionWhitelistNotifyOnJoin("permissionWhitelist.notify.onJoin",null,
"[prefix] <dark_red>Player <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> hat die Permission <gold>[perm]</gold> und ist dazu nicht berechtigt! <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> ist nicht in der Spielerliste!</dark_red>",
"[prefix] <dark_red>Player <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> has permission <gold>[perm]</gold> and is not authorized to do so! <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> is not on the Player list!</dark_red>"),
permissionWhitelistNotifyKick("permissionWhitelist.notify.kick",null,
"[prefix] <dark_red>Spieler <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> hat die Permission <gold>[perm]</gold> und ist dazu nicht berechtigt! Daher wurde er gekickt! <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> ist nicht in der Spielerliste!</dark_red>",
"[prefix] <dark_red>Player <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> has permission <gold>[perm]</gold> and is not authorized to do so! Therefore he was kicked! <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> is not on the Player list!</dark_red>"),
permissionWhitelistKick("permissionWhitelist.kick",null,
"<dark_red>Du wurdest gekickt, da du Permissions besitzt, für die du keine Berechtigung besitzt!</dark_red>",
"<dark_red>You were kicked because you have permissions to which you do not have permission!</dark_red>"),
exactKickReason("console.exactKickReason", null,
"[prefix] <dark_red>Genauer Grund:</dark_red> <gold>[reason]</gold>",
"[prefix] <dark_red>Exact reason:</dark_red> <gold>[reason]</gold>");
public String path;
public String value;
public String german;
public String english;
Language(String path,String value, String german,String english) {
this.path = path;
this.value=value;
this.german = german;
this.english = english;
}
}

View File

@ -0,0 +1,231 @@
package net.t2code.opsecurity.config.language;
import net.t2code.opsecurity.util.Util;
import net.t2code.opsecurity.config.config.Config;
import net.t2code.opsecurity.system.Main;
import net.t2code.t2codelib.SPIGOT.api.yaml.T2C_LanguageWriter;
import net.t2code.t2codelib.util.T2C_ConfigItemLanguages;
import net.t2code.t2codelib.util.T2C_LanguageEnum;
import java.util.HashMap;
import java.util.List;
public class Languages {
public enum VALUES implements T2C_ConfigItemLanguages {
otherLang("plugin", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, null);
put(T2C_LanguageEnum.english, null);
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Wenn du eine Eigene Sprache hinzufügen magst, dann kopiere einfach eine Sprachdatei und benenne sie in deine Sprache, dies kannst du dann in der config.yml einstellen.", ""));
put(T2C_LanguageEnum.english, List.of("If you want to add your own language, simply copy a language file and rename it to your language, you can then set this in config.yml.", ""));
}}),
soundNotFound("plugin.soundNotFound", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("[prefix] <dark_red>Der Sound <gold>[sound]</gold> wurde nicht gefunden! Bitte überprüfe die Einstellungen.</dark_red>"));
put(T2C_LanguageEnum.english, List.of("[prefix] <dark_red>The sound <gold>[sound]</gold> could not be found! Please check your settings.</dark_red>"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
noPermission("plugin.NoPermission", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("<dark_red>Keine Berechtigung!</dark_red>"));
put(T2C_LanguageEnum.english, List.of("<dark_red>No Permission!</dark_red>"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
noPermissionForOpSec("plugin.NoPermission", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("[prefix] <red>Du hast keine Berechtigung für OPSecurity!</red>"));
put(T2C_LanguageEnum.english, List.of("[prefix] <red>You do not have permission for OPSecurity!</red>"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
playerMustBeOnlineToOp("plugin.PlayerMustBeOnlineToOp", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("[prefix] <dark_red>Der Spieler muss online sein, um OP zu erhalten!</dark_red>"));
put(T2C_LanguageEnum.english, List.of("[prefix] <dark_red>Player must be online to get op!</dark_red>"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
reloadStart("plugin.reload.start", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("[prefix] <gold>Plugin wird neu geladen...</gold>"));
put(T2C_LanguageEnum.english, List.of("[prefix] <gold>Plugin is reloaded...</gold>"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
reloadEnd("plugin.reload.end", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("[prefix] <green>Plugin wurde erfolgreich neu geladen.</green>"));
put(T2C_LanguageEnum.english, List.of("[prefix] <green>Plugin was successfully reloaded.</green>"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
opWhitelistOpCommand("opWhitelist.opCommand", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("[prefix] <dark_red>Der angegebene Spieler befindet sich nicht auf der OP_Whitelist!</dark_red>"));
put(T2C_LanguageEnum.english, List.of("[prefix] <dark_red>The specified player is not on the OP_Whitelist!</dark_red>"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
opWhitelistNotifyOnJoin("opWhitelist.notify.onJoin", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("[prefix] <dark_red>Spieler <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> ist dem Server beigetreten, befindet sich aber nicht auf der OP_Whitelist!</dark_red>"));
put(T2C_LanguageEnum.english, List.of("[prefix] <dark_red>Player <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> is joined to the server but is not on the OP_Whitelist!</dark_red>"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
opWhitelistNotifyDeop("opWhitelist.notify.deop", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("[prefix] <dark_red>Spieler <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> wurde OP entfernt da er nicht auf der Spielerliste steht!</dark_red>"));
put(T2C_LanguageEnum.english, List.of("[prefix] <dark_red>Player <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> was removed OP because he is not on the playerlist!</dark_red>"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
opWhitelistNotifyKick("opWhitelist.notify.kick", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("[prefix] <dark_red>Spieler <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> wurde gekickt, da er nicht auf der OP_Whitelist steht!</dark_red>"));
put(T2C_LanguageEnum.english, List.of("[prefix] <dark_red>Player <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> was kicked because he is not on the OP_Whitelist!</dark_red>"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
opWhitelistDeop("opWhitelist.deop", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("&4Dir wurde OP entfernt da du dazu keine Permission besitzt."));
put(T2C_LanguageEnum.english, List.of("&4You have been removed from OP because you do not have permission."));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
opWhitelistKick("opWhitelist.kick", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("&4Du hast OP, bist dazu aber nicht berechtigt. Deswegen wurdest du gekickt!"));
put(T2C_LanguageEnum.english, List.of("&4You have op but are not authorized to do so, that's why you were kicked!"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
permissionWhitelistNotifyOnJoin("permissionWhitelist.notify.onJoin", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("[prefix] <dark_red>Player <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> hat die Permission <gold>[perm]</gold> und ist dazu nicht berechtigt! <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> ist nicht in der Spielerliste!</dark_red>"));
put(T2C_LanguageEnum.english, List.of("[prefix] <dark_red>Player <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> has permission <gold>[perm]</gold> and is not authorized to do so! <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> is not on the Player list!</dark_red>"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
permissionWhitelistNotifyKick("permissionWhitelist.notify.kick", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("[prefix] <dark_red>Spieler <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> hat die Permission <gold>[perm]</gold> und ist dazu nicht berechtigt! Daher wurde er gekickt! <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> ist nicht in der Spielerliste!</dark_red>"));
put(T2C_LanguageEnum.english, List.of("[prefix] <dark_red>Player <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> has permission <gold>[perm]</gold> and is not authorized to do so! Therefore he was kicked! <gold><hover:show_text:'<gold>Name:</gold> <yellow>[player]</yellow><br><gold>UUID:</gold> <yellow>[uuid]</yellow>'>[player]</hover></gold> is not on the Player list!</dark_red>"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
permissionWhitelistKick("permissionWhitelist.kick", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("&4Du wurdest gekickt, da du Permissions besitzt, für die du keine Berechtigung besitzt!"));
put(T2C_LanguageEnum.english, List.of("&4You were kicked because you have permissions to which you do not have permission!"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
exactKickReason("console.exactKickReason", null,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("[prefix] <dark_red>Genauer Grund:</dark_red> <gold>[reason]</gold>"));
put(T2C_LanguageEnum.english, List.of("[prefix] <dark_red>Exact reason:</dark_red> <gold>[reason]</gold>"));
}},
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of());
put(T2C_LanguageEnum.english, List.of());
}}),
;
private final String path;
private Object value;
private final HashMap<T2C_LanguageEnum, List<String>> lang;
private final HashMap<T2C_LanguageEnum, List<String>> comments;
VALUES(String path, Object value, HashMap<T2C_LanguageEnum, List<String>> lang, HashMap<T2C_LanguageEnum, List<String>> comments) {
this.path = path;
this.value = value;
this.lang = lang;
this.comments = comments;
}
@Override
public String getPath() {
return path;
}
@Override
public Object getValue() {
if (value == null) {
return lang.get(T2C_LanguageEnum.english);
}
return value;
}
@Override
public HashMap<T2C_LanguageEnum, List<String>> getLanguage() {
return lang;
}
@Override
public HashMap<T2C_LanguageEnum, List<String>> getComments() {
return comments;
}
@Override
public void setValue(Object newValue) {
value = newValue;
}
}
public static void set(boolean isReload) {
T2C_LanguageWriter.createConfig(Util.getPrefix(), Main.getPath(), VALUES.values(), Config.VALUES.language.getValue().toString(), isReload, Util.getConfigLogo());
}
}

View File

@ -1,60 +1,155 @@
// This class was created by JaTiTV.
package net.t2code.opsecurity.config.opWhitelist; package net.t2code.opsecurity.config.opWhitelist;
import net.t2code.opsecurity.enums.ConfigParam; import net.t2code.opsecurity.config.config.Config;
import net.t2code.opsecurity.objects.PlayerCache;
import net.t2code.opsecurity.objects.PlayerObject;
import net.t2code.opsecurity.system.Main;
import net.t2code.opsecurity.util.Util;
import net.t2code.t2codelib.SPIGOT.api.yaml.T2C_ConfigWriter;
import net.t2code.t2codelib.util.T2C_ConfigItem;
import net.t2code.t2codelib.util.T2C_LanguageEnum;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.configuration.file.YamlConfiguration;
import java.util.Arrays; import java.io.File;
import java.util.HashMap;
import java.util.List; import java.util.List;
public enum OPWhitelist { public class OPWhitelist {
enable("opWhitelist.enable", false, ConfigParam.BOOLEAN),
playerMustBeOnlineToOp("opWhitelist.playerMustBeOnlineToOp", true, ConfigParam.BOOLEAN),
noOpPlayerDeopEnable("opWhitelist.enable", true, ConfigParam.BOOLEAN),
noOpPlayerDeopPlayerSendMessage("opWhitelist.noOpPlayerDeop.playerSendMessage", true, ConfigParam.BOOLEAN),
noOpPlayerKickEnable("opWhitelist.noOpPlayerKick.enable", true, ConfigParam.BOOLEAN),
noOpPlayerSetGameModeEnable("opWhitelist.noOpPlayerSetGameMode.enable", true, ConfigParam.BOOLEAN),
noOpPlayerSetGameModeValue("opWhitelist.noOpPlayerSetGameMode.gameMode", GameMode.SURVIVAL, ConfigParam.GAMEMODE),
customCommandsEnable("opWhitelist.customCommands.enable", false, ConfigParam.BOOLEAN),
customCommandsCommands("opWhitelist.customCommands.commands", Arrays.asList("kick [player] &4You have op but are not authorized to do so, that's why you were kicked!")
, ConfigParam.STRINGLIST),
player("opWhitelist.whitelist","opWhitelist.whitelist.KEY.name", "opWhitelist.whitelist.KEY.uuid", "PlayerName", "00000000000000000000000000000000", ConfigParam.PLAYERLIST);
public String path; public enum VALUES implements T2C_ConfigItem {
public String pathPlayerListPath;
public String pathPlayerName;
public String pathPlayerUuid;
public String valuePlayerName;
public String valuePlayerUuid;
public List<String> valueStringList;
public Boolean valueBoolean; enable("opWhitelist.enable", false, true,
public GameMode valueGameMode; new HashMap<>() {{
public ConfigParam cEnum; put(T2C_LanguageEnum.german, List.of("Hiermit aktivierst du die OP-Whitelist."));
put(T2C_LanguageEnum.english, List.of("This activates the OP whitelist."));
}}),
playerMustBeOnlineToOp("opWhitelist.playerMustBeOnlineToOp", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Wenn diese Option aktiviert ist, muss der Spieler dem OP gegeben werden soll sich auf dem Server befinden.", "Dies gilt auch wenn man einen Spieler per Console OP geben möchte."));
put(T2C_LanguageEnum.english, List.of("If this option is activated, the player to whom the OP is to be given must be on the server.", "This also applies if you want to OP a player via console."));
}}),
noOpPlayerDeopEnable("opWhitelist.noOpPlayerDeop.enable", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Sollen den Spielern die OP besitzen, die aber nicht auf der Whitelist stehen, OP entfernt bekommen?"));
put(T2C_LanguageEnum.english, List.of("Should players who have OP but are not on the whitelist have OP removed?"));
}}),
noOpPlayerDeopPlayerSendMessage("opWhitelist.noOpPlayerDeop.playerSendMessage", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Sollen Spieler eine Benachrichtigung erhalten, wenn sie OP entfernt bekommen?"));
put(T2C_LanguageEnum.english, List.of("Should players receive a notification when they get OP removed?"));
}}),
noOpPlayerKickEnable("opWhitelist.noOpPlayerKick.enable", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Hier legst du fest ob ein Spieler gekickt werden soll, wenn er OP besitzt und nicht auf der Whitelist steht."));
put(T2C_LanguageEnum.english, List.of("Here you determine whether a player should be kicked if he has OP and is not on the whitelist."));
}}),
noOpPlayerSetGameModeEnable("opWhitelist.noOpPlayerSetGameMode.enable", true, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Sollen Spieler, die OP besitzen und nicht auf der Whitelist stehen in einen bestimmten Gamemode gesetzt werden?"));
put(T2C_LanguageEnum.english, List.of("Should players who own OP and are not on the whitelist be set to a specific gamemode?"));
}}),
noOpPlayerSetGameModeValue("opWhitelist.noOpPlayerSetGameMode.gameMode", GameMode.SURVIVAL, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Hier legst du den Gamemode fest, in den Spieler gesetzt werden sollen, die OP besitzen und nicht auf der Whitelist stehen."));
put(T2C_LanguageEnum.english, List.of("Here you define the game mode in which players who have OP and are not on the whitelist are to be set."));
}}),
customCommandsEnable("opWhitelist.customCommands.enable", false, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Soll ein bestimmter befehl ausgeführt werden, wenn ein Spieler OP hat und nicht auf der Whitelist steht."));
put(T2C_LanguageEnum.english, List.of("Should a certain command be executed if a player has OP and is not on the whitelist."));
}}),
customCommandsCommands("opWhitelist.customCommands.commands", List.of("kick [player] &4You have op but are not authorized to do so, that's why you were kicked!"), true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of("Hier kann man Mehrere Commands einfügen, die ausgeführt werden, wenn ein Spieler OP hat und nicht auf der Whitelist steht."));
put(T2C_LanguageEnum.english, List.of("Here you can add several commands that are executed when a player has OP and is not on the whitelist."));
}}),
OPWhitelist(String path, GameMode value, ConfigParam cEnum) { playerSection("opWhitelist.whitelist", null, true,
new HashMap<>() {{
put(T2C_LanguageEnum.german, List.of(
"Hier legst du wie im Beispiel die Spieler an, die OP besitzen dürfen.",
"Wichtig:",
" Es muss der Spielername und die UUID angegeben werden!",
" Der Spielername muss mit Groß/Kleinschreibung eingefügt werden!",
"Die UUID eines Spielers kannst du hier finden: https://mcuuid.net",
"Wenn dein Server nicht im OnlineModus ist, werden alle Spieler andere UUIDs erhalten, dann findest du die UUID eines Spielers in deiner Console, wenn der Spieler den Server betritt."
));
put(T2C_LanguageEnum.english, List.of(
"Here, as in the example, you create the players who are allowed to own OP.",
"Important:",
" The player name and the UUID must be entered!",
" The player name must be inserted with upper/lower case!",
"You can find the UUID of a player here: https://mcuuid.net",
"If your server is not in online mode, all players will receive different UUIDs, then you will find the UUID of a player in your console when the player enters the server."
));
}}),
player1name("opWhitelist.whitelist.player1.name", "player1", false, new HashMap<>()),
player1uuid("opWhitelist.whitelist.player1.uuid", "00000000000000000000000000000000", false, new HashMap<>()),
player2name("opWhitelist.whitelist.player2.name", "player2", false, new HashMap<>()),
player2uuid("opWhitelist.whitelist.player2.uuid", "00000000000000000000000000000000", false, new HashMap<>()),
;
private final String path;
private Object value;
private final boolean forceSet;
private final HashMap<T2C_LanguageEnum, List<String>> comments;
VALUES(String path, Object value, boolean forceSet, HashMap<T2C_LanguageEnum, List<String>> comments) {
this.path = path; this.path = path;
this.valueGameMode = value; this.value = value;
this.cEnum = cEnum; this.forceSet = forceSet;
this.comments = comments;
} }
OPWhitelist(String listPath,String pathPlayerName, String pathUuid, String playerName, String uuid, ConfigParam cEnum) { @Override
this.pathPlayerListPath = listPath; public String getPath() {
this.pathPlayerName = pathPlayerName; return path;
this.pathPlayerUuid = pathUuid;
this.valuePlayerName = playerName;
this.valuePlayerUuid = uuid;
this.cEnum = cEnum;
} }
OPWhitelist(String path, List<String> value, ConfigParam cEnum) { @Override
this.path = path; public Object getValue() {
this.valueStringList = value; return value;
this.cEnum = cEnum;
} }
OPWhitelist(String path, Boolean value, ConfigParam cEnum) { @Override
this.path = path; public boolean getForceSet() {
this.valueBoolean = value; return forceSet;
this.cEnum = cEnum; }
@Override
public HashMap<T2C_LanguageEnum, List<String>> getComments() {
return comments;
}
@Override
public String getLanguagePath() {
return Config.VALUES.language.getValue().toString();
}
@Override
public void setValue(Object newValue) {
value = newValue;
}
}
public static void set(boolean isReload) {
File file = new File(Main.getPath(), "opWhitelist.yml");
T2C_ConfigWriter.createConfig(Util.getPrefix(), file, VALUES.values(), isReload, Util.getConfigLogo());
getPlayer(file);
}
private static void getPlayer(File file) {
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(file);
for (String key : yamlConfiguration.getConfigurationSection(VALUES.playerSection.getPath()).getKeys(false)) {
String name = yamlConfiguration.getString(VALUES.playerSection.getPath() + "." + key + ".name");
String uuid = yamlConfiguration.getString(VALUES.playerSection.getPath() + "." + key + ".uuid").replace("-", "");
PlayerObject playerObject = new PlayerObject(
name,
uuid);
PlayerCache.getOpHashMap().put(name, playerObject);
}
} }
} }

View File

@ -1,47 +1,127 @@
// This class was created by JaTiTV.
package net.t2code.opsecurity.config.permissionWhitelist; package net.t2code.opsecurity.config.permissionWhitelist;
import net.t2code.opsecurity.enums.ConfigParam; import net.t2code.opsecurity.config.config.Config;
import net.t2code.opsecurity.objects.PlayerCache;
import net.t2code.opsecurity.objects.PlayerObject;
import net.t2code.opsecurity.system.Main;
import net.t2code.opsecurity.util.Util;
import net.t2code.t2codelib.SPIGOT.api.yaml.T2C_ConfigWriter;
import net.t2code.t2codelib.util.T2C_ConfigItem;
import net.t2code.t2codelib.util.T2C_LanguageEnum;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
public enum PermissionWhitelist { public class PermissionWhitelist {
enable("permissionWhitelist.enable", false, ConfigParam.BOOLEAN),
playerWithPermissionKick("permissionWhitelist.playerWithPermissionKick", true, ConfigParam.BOOLEAN),
permissions("permissionWhitelist.permissions", Arrays.asList("*", "t2c.opsecurity.admin"), ConfigParam.STRINGLIST),
customCommandsEnable("permissionWhitelist.customCommands.enable", false, ConfigParam.BOOLEAN),
customCommandsCommands("permissionWhitelist.customCommands.commands", Arrays.asList("lp user [player] permission unset *", "lp user [player] permission unset t2c.opsecurity.admin")
, ConfigParam.STRINGLIST),
player("permissionWhitelist.whitelist", "permissionWhitelist.whitelist.KEY.name", "permissionWhitelist.whitelist.KEY.uuid", "PlayerName", "00000000000000000000000000000000", ConfigParam.PLAYERLIST);
public String path; public enum VALUES implements T2C_ConfigItem {
public String pathPlayerListPath;
public String pathPlayerName;
public String pathPlayerUuid;
public String valuePlayerName;
public String valuePlayerUuid;
public List<String> valueStringList;
public Boolean valueBoolean;
public ConfigParam cEnum;
PermissionWhitelist(String listPath, String pathPlayerName, String pathUuid, String playerName, String uuid, ConfigParam cEnum) { enable("permissionWhitelist.enable", false, true,
this.pathPlayerListPath = listPath; new HashMap<>() {{
this.pathPlayerName = pathPlayerName; put(T2C_LanguageEnum.english, List.of());
this.pathPlayerUuid = pathUuid; put(T2C_LanguageEnum.german, List.of());
this.valuePlayerName = playerName; }}),
this.valuePlayerUuid = uuid; playerWithPermissionKick("permissionWhitelist.playerWithPermissionKick", true, true,
this.cEnum = cEnum; new HashMap<>() {{
put(T2C_LanguageEnum.english, List.of());
put(T2C_LanguageEnum.german, List.of());
}}),
permissions("permissionWhitelist.permissions", Arrays.asList("*", "t2c.opsecurity.admin"), true,
new HashMap<>() {{
put(T2C_LanguageEnum.english, List.of());
put(T2C_LanguageEnum.german, List.of());
}}),
customCommandsEnable("permissionWhitelist.customCommands.enable", false, true,
new HashMap<>() {{
put(T2C_LanguageEnum.english, List.of());
put(T2C_LanguageEnum.german, List.of());
}}),
customCommandsCommands("permissionWhitelist.customCommands.commands", Arrays.asList("lp user [player] permission unset *", "lp user [player] permission unset t2c.opsecurity.admin"), true,
new HashMap<>() {{
put(T2C_LanguageEnum.english, List.of());
put(T2C_LanguageEnum.german, List.of());
}}),
playerSection("permissionWhitelist.whitelist", null, true,
new HashMap<>() {{
put(T2C_LanguageEnum.english, List.of());
put(T2C_LanguageEnum.german, List.of());
}}),
player1name("permissionWhitelist.whitelist.player1.name", "player1", false,
new HashMap<>()),
player1uuid("permissionWhitelist.whitelist.player1.uuid", "00000000000000000000000000000000", false,
new HashMap<>()),
player2name("permissionWhitelist.whitelist.player2.name", "player2", false,
new HashMap<>()),
player2uuid("permissionWhitelist.whitelist.player2.uuid", "00000000000000000000000000000000", false,
new HashMap<>()),
;
private final String path;
private Object value;
private final boolean forceSet;
private final HashMap<T2C_LanguageEnum, List<String>> comments;
VALUES(String path, Object value, boolean forceSet, HashMap<T2C_LanguageEnum, List<String>> comments) {
this.path = path;
this.value = value;
this.forceSet = forceSet;
this.comments = comments;
} }
PermissionWhitelist(String path, List<String> value, ConfigParam cEnum) { @Override
this.path = path; public String getPath() {
this.valueStringList = value; return path;
this.cEnum = cEnum;
} }
PermissionWhitelist(String path, Boolean value, ConfigParam cEnum) { @Override
this.path = path; public Object getValue() {
this.valueBoolean = value; return value;
this.cEnum = cEnum; }
@Override
public boolean getForceSet() {
return forceSet;
}
@Override
public HashMap<T2C_LanguageEnum, List<String>> getComments() {
return comments;
}
@Override
public String getLanguagePath() {
return Config.VALUES.language.getValue().toString();
}
@Override
public void setValue(Object newValue) {
value = newValue;
}
}
public static void set(boolean isReload) {
File file = new File(Main.getPath(), "permissionWhitelist.yml");
T2C_ConfigWriter.createConfig(Util.getPrefix(), file, VALUES.values(), isReload, Util.getConfigLogo());
getPlayer(file);
}
private static void getPlayer(File file) {
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(file);
for (String key : yamlConfiguration.getConfigurationSection(VALUES.playerSection.getPath()).getKeys(false)) {
String name = yamlConfiguration.getString(VALUES.playerSection.getPath() + "." + key + ".name");
String uuid = yamlConfiguration.getString(VALUES.playerSection.getPath() + "." + key + ".uuid").replace("-", "");
PlayerObject playerObject = new PlayerObject(
name,
uuid);
PlayerCache.getOpHashMap().put(name, playerObject);
}
} }
} }

View File

@ -1,44 +1,70 @@
package net.t2code.opsecurity.events; package net.t2code.opsecurity.events;
import net.t2code.opsecurity.Util; import net.t2code.opsecurity.util.Util;
import net.t2code.opsecurity.config.config.Config;
import net.t2code.opsecurity.check.OpCheck; import net.t2code.opsecurity.check.OpCheck;
import net.t2code.opsecurity.check.PermissionCheck; import net.t2code.opsecurity.check.PermissionCheck;
import net.t2code.opsecurity.config.config.Config;
import net.t2code.opsecurity.system.Main; import net.t2code.opsecurity.system.Main;
import net.t2code.opsecurity.system.Permissions; import net.t2code.opsecurity.system.Permissions;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import net.t2code.t2codelib.SPIGOT.api.debug.T2C_Debug;
import net.t2code.t2codelib.SPIGOT.api.update.T2CupdateAPI; import net.t2code.t2codelib.SPIGOT.api.messages.T2C_Send;
import net.t2code.t2codelib.SPIGOT.api.update.T2C_UpdateAPI;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Sound;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.*; import org.bukkit.event.player.*;
import java.util.List;
public class Events implements Listener { public class Events implements Listener {
public static void notifyPlayer(String msg) { public static void notifyPlayer(String msg) {
if (!Config.notifyJoinWarning.valueBoolean) return; if (!(boolean) Config.VALUES.notifyJoinWarning.getValue()) return;
for (Player notifyPlayer : Bukkit.getOnlinePlayers()) { for (Player notifyPlayer : Bukkit.getOnlinePlayers()) {
if (!notifyPlayer.hasPermission(Permissions.notify)) continue; if (!notifyPlayer.hasPermission(Permissions.notify)) continue;
T2Csend.player(notifyPlayer, msg); T2C_Send.player(notifyPlayer, msg);
if (Config.notifySoundEnable.valueBoolean) notifyPlayer.playSound(notifyPlayer.getLocation(), Config.notifySoundValue.sound, 3, 1); if ((boolean) Config.VALUES.notifySoundEnable.getValue()){
notifyPlayer.playSound(notifyPlayer.getLocation(), Sound.valueOf(Config.VALUES.notifySoundValue.getValue().toString()), 3, 1);
}
} }
} }
@EventHandler @EventHandler
public void CommandSendEvent(PlayerCommandPreprocessEvent event) { public void CommandSendEvent(PlayerCommandPreprocessEvent event) {
if (!Config.checkOnCommand.valueBoolean) return; if (!(boolean) Config.VALUES.checkOnCommand.getValue()) return;
Player player = event.getPlayer(); Player player = event.getPlayer();
if (OpCheck.onCheck(player, false) || PermissionCheck.onCheck(player, false)) { String debug = T2C_Debug.debugCode();
for (String s : (List<String>) Config.VALUES.checkOnCommandWhitelist.getValue()) {
if (event.getMessage().startsWith("/" + s)) {
return;
}
}
if (OpCheck.onCheck(player, false, debug)) {
if (event.isCancelled()) return;
event.setCancelled(true);
}
String debug2 = T2C_Debug.debugCode();
if (PermissionCheck.onCheck(player, false, debug2)) {
if (event.isCancelled()) return; if (event.isCancelled()) return;
event.setCancelled(true); event.setCancelled(true);
} }
} }
@EventHandler @EventHandler
public void PlayerChatEvent(PlayerChatEvent event) { public void PlayerChatEvent(PlayerChatEvent event) {
if (!Config.checkOnChat.valueBoolean) return; if (!(boolean) Config.VALUES.checkOnChat.getValue()) return;
Player player = event.getPlayer(); Player player = event.getPlayer();
if (OpCheck.onCheck(player, false) || PermissionCheck.onCheck(player, false)) { String debug = T2C_Debug.debugCode();
if (OpCheck.onCheck(player, false, debug)) {
if (event.isCancelled()) return;
event.setCancelled(true);
}
String debug2 = T2C_Debug.debugCode();
if (PermissionCheck.onCheck(player, false, debug2)) {
if (event.isCancelled()) return; if (event.isCancelled()) return;
event.setCancelled(true); event.setCancelled(true);
} }
@ -46,12 +72,17 @@ public class Events implements Listener {
@EventHandler @EventHandler
public void onInteract(PlayerInteractEvent event) { public void onInteract(PlayerInteractEvent event) {
if (!Config.checkOnInteract.valueBoolean) return; if (!(boolean) Config.VALUES.checkOnInteract.getValue()) return;
Player player = event.getPlayer();
Bukkit.getScheduler().runTaskLaterAsynchronously(Main.getPlugin(), new Runnable() { Bukkit.getScheduler().runTaskLaterAsynchronously(Main.getPlugin(), new Runnable() {
@Override @Override
public void run() { public void run() {
if (OpCheck.onCheck(player, false) || PermissionCheck.onCheck(player, false)) { Player player = event.getPlayer();
String debug = T2C_Debug.debugCode();
if (OpCheck.onCheck(player, false, debug)) {
event.setCancelled(true);
}
String debug2 = T2C_Debug.debugCode();
if (PermissionCheck.onCheck(player, false, debug2)) {
event.setCancelled(true); event.setCancelled(true);
} }
} }
@ -60,13 +91,15 @@ public class Events implements Listener {
@EventHandler @EventHandler
public void onJoinCheck(PlayerJoinEvent event) { public void onJoinCheck(PlayerJoinEvent event) {
if (!Config.checkOnJoin.valueBoolean) return; if (!(boolean) Config.VALUES.checkOnJoin.getValue()) return;
Player player = event.getPlayer();
Bukkit.getScheduler().runTaskLaterAsynchronously(Main.getPlugin(), new Runnable() { Bukkit.getScheduler().runTaskLaterAsynchronously(Main.getPlugin(), new Runnable() {
@Override @Override
public void run() { public void run() {
OpCheck.onCheck(player, true); Player player = event.getPlayer();
PermissionCheck.onCheck(player, true); String debug = T2C_Debug.debugCode();
OpCheck.onCheck(player, true, debug);
String debug2 = T2C_Debug.debugCode();
PermissionCheck.onCheck(player, true, debug2);
} }
}, 1L); }, 1L);
} }
@ -74,6 +107,6 @@ public class Events implements Listener {
@EventHandler @EventHandler
public void onJoinEvent(PlayerLoginEvent event) { public void onJoinEvent(PlayerLoginEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
T2CupdateAPI.join(Main.getPlugin(), Util.getPrefix(), Permissions.updatemsg, player, Util.getSpigotID(), Util.getDiscord()); T2C_UpdateAPI.join(Main.getPlugin(), Util.getPrefix(), Permissions.updatemsg, player, Util.getSpigotID(), Util.getDiscord());
} }
} }

View File

@ -1,13 +1,14 @@
package net.t2code.opsecurity.events; package net.t2code.opsecurity.events;
import net.t2code.opsecurity.check.OpCheck; import net.t2code.opsecurity.config.language.Languages;
import net.t2code.opsecurity.config.language.Language;
import net.t2code.opsecurity.config.opWhitelist.OPWhitelist; import net.t2code.opsecurity.config.opWhitelist.OPWhitelist;
import net.t2code.opsecurity.enums.OpCommandRequest; import net.t2code.opsecurity.enums.OpCommandRequest;
import net.t2code.opsecurity.objects.PlayerCash; import net.t2code.opsecurity.objects.PlayerCache;
import net.t2code.opsecurity.objects.PlayerObject; import net.t2code.opsecurity.objects.PlayerObject;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import net.t2code.opsecurity.system.Main;
import net.t2code.t2codelib.SPIGOT.api.player.T2CnameHistory; import net.t2code.t2codelib.SPIGOT.api.debug.T2C_Debug;
import net.t2code.t2codelib.SPIGOT.api.messages.T2C_Send;
import net.t2code.t2codelib.SPIGOT.api.player.T2C_NameHistory;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -21,15 +22,15 @@ import java.util.Map;
public class OpCommand implements Listener { public class OpCommand implements Listener {
@EventHandler @EventHandler
public void onOPServer(ServerCommandEvent event) { public void onOPServer(ServerCommandEvent event) {
if (!OPWhitelist.enable.valueBoolean) return; if (!(boolean) OPWhitelist.VALUES.enable.getValue()) return;
if ((event.getCommand().toLowerCase().startsWith("op ") || event.getCommand().toLowerCase().startsWith("minecraft:op "))) { if ((event.getCommand().toLowerCase().startsWith("op ") || event.getCommand().toLowerCase().startsWith("minecraft:op "))) {
switch (isNotOPWTL(event.getCommand())) { switch (isNotOPWTL(event.getCommand())) {
case mustOnline: case mustOnline:
T2Csend.sender(event.getSender(), Language.playerMustBeOnlineToOp.value); T2C_Send.sender(event.getSender(), Languages.VALUES.playerMustBeOnlineToOp.getValue().toString());
event.setCancelled(true); event.setCancelled(true);
break; break;
case notWhitelisted: case notWhitelisted:
T2Csend.sender(event.getSender(), Language.opWhitelistOpCommand.value); T2C_Send.sender(event.getSender(), Languages.VALUES.opWhitelistOpCommand.getValue());
event.setCancelled(true); event.setCancelled(true);
break; break;
} }
@ -38,15 +39,15 @@ public class OpCommand implements Listener {
@EventHandler @EventHandler
public void onOpPlayer(PlayerCommandPreprocessEvent event) { public void onOpPlayer(PlayerCommandPreprocessEvent event) {
if (!OPWhitelist.enable.valueBoolean) return; if (!(boolean) OPWhitelist.VALUES.enable.getValue()) return;
if ((event.getMessage().toLowerCase().startsWith("/op ") || event.getMessage().toLowerCase().startsWith("/minecraft:op "))) { if ((event.getMessage().toLowerCase().startsWith("/op ") || event.getMessage().toLowerCase().startsWith("/minecraft:op "))) {
switch (isNotOPWTL(event.getMessage())) { switch (isNotOPWTL(event.getMessage())) {
case mustOnline: case mustOnline:
T2Csend.player(event.getPlayer(), Language.playerMustBeOnlineToOp.value); T2C_Send.player(event.getPlayer(), Languages.VALUES.playerMustBeOnlineToOp.getValue().toString());
event.setCancelled(true); event.setCancelled(true);
break; break;
case notWhitelisted: case notWhitelisted:
T2Csend.player(event.getPlayer(), Language.opWhitelistOpCommand.value); T2C_Send.player(event.getPlayer(), Languages.VALUES.opWhitelistOpCommand.getValue().toString());
event.setCancelled(true); event.setCancelled(true);
break; break;
} }
@ -57,16 +58,18 @@ public class OpCommand implements Listener {
if (command.charAt(0) == '/') command = command.replaceFirst("/", ""); if (command.charAt(0) == '/') command = command.replaceFirst("/", "");
String arg = command.replace("op ", ""); String arg = command.replace("op ", "");
Player target = Bukkit.getPlayer(arg); Player target = Bukkit.getPlayer(arg);
if (OPWhitelist.playerMustBeOnlineToOp.valueBoolean) {
if ((boolean)OPWhitelist.VALUES.playerMustBeOnlineToOp.getValue()) {
if (target == null) return OpCommandRequest.mustOnline; if (target == null) return OpCommandRequest.mustOnline;
if (!opWhitelist(target.getName(), target.getUniqueId().toString())) return OpCommandRequest.notWhitelisted; if (!opWhitelist(target.getName(), target.getUniqueId().toString())) return OpCommandRequest.notWhitelisted;
} }
String targetUUID; String targetUUID;
if (target != null) { if (target != null) {
targetUUID = target.getUniqueId().toString(); targetUUID = target.getUniqueId().toString();
} else { } else {
try { try {
targetUUID = T2CnameHistory.NameLookup.getPlayerUUID(arg); targetUUID = T2C_NameHistory.NameLookup.getPlayerUUID(arg);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -76,8 +79,16 @@ public class OpCommand implements Listener {
} }
private static Boolean opWhitelist(String playerName, String playerUuid) { private static Boolean opWhitelist(String playerName, String playerUuid) {
for (Map.Entry<String, PlayerObject> playerObject : PlayerCash.getOpHashMap().entrySet()) { for (Map.Entry<String, PlayerObject> playerObject : PlayerCache.getOpHashMap().entrySet()) {
if (playerObject.getValue().playerName.equals(playerName) && playerObject.getValue().uuid.equals(playerUuid)) return true; T2C_Debug.debug(Main.getPlugin(), "--------- " + playerName);
T2C_Debug.debug(Main.getPlugin(),"opWhitelist (op command) playerObject Name: "+playerObject.getValue().playerName );
T2C_Debug.debug(Main.getPlugin(),"opWhitelist (op command) Player Name: "+ playerName );
T2C_Debug.debug(Main.getPlugin(),"opWhitelist (op command) playerObject UUID: "+playerObject.getValue().uuid );
T2C_Debug.debug(Main.getPlugin(),"opWhitelist (op command) Player UUID: "+ playerUuid );
if (playerObject.getValue().playerName.equals(playerName) && playerObject.getValue().uuid.equals(playerUuid.replace("-", ""))) {
T2C_Debug.debug(Main.getPlugin(),"opWhitelist (op command) on list!");
return true;
}
} }
return false; return false;
} }

View File

@ -2,9 +2,9 @@
package net.t2code.opsecurity.events; package net.t2code.opsecurity.events;
import net.t2code.opsecurity.Util; import net.t2code.opsecurity.util.Util;
import net.t2code.opsecurity.system.Main; import net.t2code.opsecurity.system.Main;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import net.t2code.t2codelib.SPIGOT.api.messages.T2C_Send;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent;
@ -20,7 +20,7 @@ public class PlugManCommand implements Listener {
|| (event.getCommand().toLowerCase().contains("plugman restart") && event.getCommand().toLowerCase().contains(Main.getPlugin().getDescription().getName().toLowerCase())) || (event.getCommand().toLowerCase().contains("plugman restart") && event.getCommand().toLowerCase().contains(Main.getPlugin().getDescription().getName().toLowerCase()))
) { ) {
event.setCancelled(true); event.setCancelled(true);
T2Csend.console(Util.getPrefix() + " §4OPSecurity cannot be deactivated!"); T2C_Send.console(Util.getPrefix() + " §4OPSecurity cannot be deactivated!");
} }
} }
@ -32,7 +32,7 @@ public class PlugManCommand implements Listener {
|| (event.getMessage().toLowerCase().startsWith("/plugman restart") && event.getMessage().toLowerCase().contains(Main.getPlugin().getDescription().getName().toLowerCase())) || (event.getMessage().toLowerCase().startsWith("/plugman restart") && event.getMessage().toLowerCase().contains(Main.getPlugin().getDescription().getName().toLowerCase()))
) { ) {
event.setCancelled(true); event.setCancelled(true);
T2Csend.player(event.getPlayer(), Util.getPrefix() + " §4OPSecurity cannot be deactivated!"); T2C_Send.player(event.getPlayer(), Util.getPrefix() + " §4OPSecurity cannot be deactivated!");
} }
} }
} }

View File

@ -1,10 +1,11 @@
package net.t2code.opsecurity.objects; package net.t2code.opsecurity.objects;
import lombok.Getter; import lombok.Getter;
import java.util.HashMap; import java.util.HashMap;
public class PlayerCash { public class PlayerCache {
@Getter @Getter
private static HashMap<String, PlayerObject> opHashMap = new HashMap<String, PlayerObject>(); private static HashMap<String, PlayerObject> opHashMap = new HashMap<String, PlayerObject>();
@Getter @Getter

View File

@ -1,7 +1,8 @@
package net.t2code.opsecurity.system; package net.t2code.opsecurity.system;
import net.t2code.opsecurity.events.Events; import net.t2code.opsecurity.events.Events;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import net.t2code.t2codelib.SPIGOT.api.debug.T2C_Debug;
import net.t2code.t2codelib.util.T2C_Util;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.messaging.PluginMessageListener; import org.bukkit.plugin.messaging.PluginMessageListener;
@ -19,7 +20,7 @@ public class BungeeSenderReceiver implements PluginMessageListener {
e.printStackTrace(); e.printStackTrace();
} }
for (Player player : Bukkit.getOnlinePlayers()) { for (Player player : Bukkit.getOnlinePlayers()) {
player.sendPluginMessage(Main.getPlugin(), "t2c:opsec", stream.toByteArray()); player.sendPluginMessage(Main.getPlugin(), T2C_Util.getPluginChannel_OPSecurity(), stream.toByteArray());
return; return;
} }
} }
@ -27,11 +28,11 @@ public class BungeeSenderReceiver implements PluginMessageListener {
@Override @Override
public void onPluginMessageReceived(String channel, Player player, byte[] message) { public void onPluginMessageReceived(String channel, Player player, byte[] message) {
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(message)); DataInputStream stream = new DataInputStream(new ByteArrayInputStream(message));
T2Csend.debug(Main.getPlugin(), "stream: " + stream.toString()); T2C_Debug.debug(Main.getPlugin(), "stream: " + stream.toString());
try { try {
String subChannel = stream.readUTF(); String subChannel = stream.readUTF();
String information = stream.readUTF(); String information = stream.readUTF();
if (subChannel.equals("T2Cconsole")) { if (subChannel.equals(T2C_Util.getPluginSubChannel_Console())) {
Events.notifyPlayer(information); Events.notifyPlayer(information);
} }
} catch (IOException e) { } catch (IOException e) {

View File

@ -1,18 +1,23 @@
package net.t2code.opsecurity.system; package net.t2code.opsecurity.system;
import net.t2code.opsecurity.Util; import net.t2code.opsecurity.util.Util;
import net.t2code.opsecurity.check.Timer;
import net.t2code.opsecurity.command.CmdExecuter; import net.t2code.opsecurity.command.CmdExecuter;
import net.t2code.opsecurity.config.FileSelect;
import net.t2code.opsecurity.config.config.Config; import net.t2code.opsecurity.config.config.Config;
import net.t2code.opsecurity.config.config.Converter; import net.t2code.opsecurity.config.config.Converter;
import net.t2code.opsecurity.config.language.Languages;
import net.t2code.opsecurity.config.opWhitelist.OPWhitelist;
import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist;
import net.t2code.opsecurity.events.Events; import net.t2code.opsecurity.events.Events;
import net.t2code.opsecurity.events.OpCommand; import net.t2code.opsecurity.events.OpCommand;
import net.t2code.opsecurity.events.PlugManCommand; import net.t2code.opsecurity.events.PlugManCommand;
import net.t2code.opsecurity.check.Timer; import net.t2code.t2codelib.SPIGOT.api.debug.T2C_Debug;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Ctemplate; import net.t2code.t2codelib.SPIGOT.api.messages.T2C_Template;
import net.t2code.t2codelib.SPIGOT.api.register.T2Cregister; import net.t2code.t2codelib.SPIGOT.api.register.T2C_Register;
import net.t2code.t2codelib.SPIGOT.api.update.T2CupdateAPI; import net.t2code.t2codelib.SPIGOT.api.update.T2C_UpdateAPI;
import org.checkerframework.checker.units.qual.C; import net.t2code.t2codelib.SPIGOT.system.config.config.T2C_LibConfig;
import net.t2code.t2codelib.util.T2C_Util;
import org.bukkit.Bukkit;
import java.util.List; import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
@ -20,7 +25,7 @@ import java.util.logging.Level;
public class Load { public class Load {
public static void onLoad(Main plugin, List<String> autor, String version) { public static void onLoad(Main plugin, List<String> autor, String version) {
long long_ = T2Ctemplate.onLoadHeader(Util.getPrefix(), autor, version, Util.getSpigot(), Util.getDiscord()); long long_ = T2C_Template.onLoadHeader(Util.getPrefix(), autor, version, Util.getSpigot(), Util.getDiscord());
try { try {
Converter.convert(); Converter.convert();
} catch (Exception ex) { } catch (Exception ex) {
@ -28,22 +33,25 @@ public class Load {
ex.printStackTrace(); ex.printStackTrace();
} }
FileSelect.selectConfig(); Config.set(false);
FileSelect.selectLanguage(); Languages.set(false);
FileSelect.selectOpWhitelist(); OPWhitelist.set(false);
FileSelect.selectPermissionWhitelist(); PermissionWhitelist.set(false);
plugin.getCommand("t2c-opsecurity").setExecutor(new CmdExecuter()); plugin.getCommand("t2c-opsecurity").setExecutor(new CmdExecuter());
T2Cregister.listener(new OpCommand(), plugin); T2C_Register.listener(new OpCommand(), plugin);
T2Cregister.listener(new PlugManCommand(), plugin); T2C_Register.listener(new PlugManCommand(), plugin);
T2Cregister.listener(new Events(), plugin); T2C_Register.listener(new Events(), plugin);
if ((boolean) T2C_LibConfig.VALUES.proxy.getValue()) {
Bukkit.getMessenger().registerOutgoingPluginChannel(plugin, T2C_Util.getPluginChannel_OPSecurity());
T2C_Debug.debug(plugin, "registerIncomingPluginChannel §e:" + T2C_Util.getPluginChannel_OPSecurity());
}
Timer.refreshTimer(); Timer.refreshTimer();
Permissions.register(); Permissions.register();
T2CupdateAPI.onUpdateCheck(plugin, Util.getPrefix(),Util.getGit(),Util.getSpigotID(),Util.getDiscord(), Config.updateCheckOnJoin.valueBoolean, T2C_UpdateAPI.onUpdateCheck(plugin, Util.getPrefix(), Util.getGit(), Util.getSpigotID(), Util.getDiscord(), (boolean) Config.VALUES.updateCheckOnJoin.getValue(),
Config.updateCheckSeePreReleaseUpdates.valueBoolean, Config.updateCheckTimeInterval.valueInt); (boolean) Config.VALUES.updateCheckSeePreReleaseUpdates.getValue(), (int) Config.VALUES.updateCheckTimeInterval.getValue());
Metrics.Bstats(plugin, Util.getBstatsID()); Metrics.Bstats(plugin, Util.getBstatsID());
T2Ctemplate.onLoadFooter(Util.getPrefix(), long_); T2C_Template.onLoadFooter(Util.getPrefix(), long_);
} }
} }

View File

@ -1,8 +1,8 @@
package net.t2code.opsecurity.system; package net.t2code.opsecurity.system;
import lombok.Getter; import lombok.Getter;
import net.t2code.opsecurity.Util; import net.t2code.opsecurity.util.Util;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Ctemplate; import net.t2code.t2codelib.SPIGOT.api.messages.T2C_Template;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
@ -32,6 +32,20 @@ public final class Main extends JavaPlugin {
autor = this.getDescription().getAuthors(); autor = this.getDescription().getAuthors();
version = this.getDescription().getVersion(); version = this.getDescription().getVersion();
if (pluginNotFound("T2CodeLib", 96388, Util.getRequiredT2CodeLibVersion())) return; if (pluginNotFound("T2CodeLib", 96388, Util.getRequiredT2CodeLibVersion())) return;
load();
}
private static void load(){
if (!Bukkit.getPluginManager().getPlugin("T2CodeLib").isEnabled()){
Bukkit.getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
@Override
public void run() {
load();
}
},5L);
return;
}
t2codeLib = true; t2codeLib = true;
Load.onLoad(plugin,autor,version); Load.onLoad(plugin,autor,version);
} }
@ -39,11 +53,11 @@ public final class Main extends JavaPlugin {
@Override @Override
public void onDisable() { public void onDisable() {
// Plugin shutdown logic // Plugin shutdown logic
if (t2codeLib) T2Ctemplate.onDisable(Util.getPrefix(), autor, version, Util.getSpigot(), Util.getDiscord()); if (t2codeLib) T2C_Template.onDisable(Util.getPrefix(),plugin);
} }
private static Boolean pluginNotFound(String pl, Integer spigotID, String ver) { private static Boolean pluginNotFound(String pl, Integer spigotID, String ver) {
if (Bukkit.getPluginManager().getPlugin(pl) == null) { if (Bukkit.getPluginManager().getPlugin(pl) == null || !Bukkit.getPluginManager().isPluginEnabled(pl)) {
plugin.getLogger().log(Level.SEVERE, "Plugin can not be loaded!"); plugin.getLogger().log(Level.SEVERE, "Plugin can not be loaded!");
Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §e" + pl + " §4could not be found. Please download it here: " Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §e" + pl + " §4could not be found. Please download it here: "
+ "§6https://spigotmc.org/resources/" + pl + "." + spigotID + " §4to be able to use this plugin."); + "§6https://spigotmc.org/resources/" + pl + "." + spigotID + " §4to be able to use this plugin.");

View File

@ -1,6 +1,6 @@
package net.t2code.opsecurity.system; package net.t2code.opsecurity.system;
import net.t2code.t2codelib.SPIGOT.api.register.T2Cregister; import net.t2code.t2codelib.SPIGOT.api.register.T2C_Register;
import org.bukkit.permissions.PermissionDefault; import org.bukkit.permissions.PermissionDefault;
public class Permissions { public class Permissions {
@ -16,17 +16,17 @@ public class Permissions {
public static final PermissionDefault notOp = PermissionDefault.NOT_OP; public static final PermissionDefault notOp = PermissionDefault.NOT_OP;
protected static void register() { protected static void register() {
T2Cregister.permission(notify, op, Main.getPlugin()); T2C_Register.permission(notify, op, Main.getPlugin());
T2Cregister.permissionDescription(notify,"Players with this permission get the update message when joining if an update is available",Main.getPlugin()); T2C_Register.permissionDescription(notify,"Players with this permission get the update message when joining if an update is available",Main.getPlugin());
T2Cregister.permission(updatemsg, op, Main.getPlugin()); T2C_Register.permission(updatemsg, op, Main.getPlugin());
T2Cregister.permission(reload, op, Main.getPlugin()); T2C_Register.permission(reload, op, Main.getPlugin());
T2Cregister.permission(info, op, Main.getPlugin()); T2C_Register.permission(info, op, Main.getPlugin());
T2Cregister.permission(help, op, Main.getPlugin()); T2C_Register.permission(help, op, Main.getPlugin());
T2Cregister.permission(admin, op, notify, true, Main.getPlugin()); T2C_Register.permission(admin, op, notify, true, Main.getPlugin());
T2Cregister.permission(admin, op, updatemsg, true, Main.getPlugin()); T2C_Register.permission(admin, op, updatemsg, true, Main.getPlugin());
T2Cregister.permission(admin, op, reload, true, Main.getPlugin()); T2C_Register.permission(admin, op, reload, true, Main.getPlugin());
T2Cregister.permission(admin, op, info, true, Main.getPlugin()); T2C_Register.permission(admin, op, info, true, Main.getPlugin());
T2Cregister.permission(admin, op, help, true, Main.getPlugin()); T2C_Register.permission(admin, op, help, true, Main.getPlugin());
} }
} }

View File

@ -0,0 +1,40 @@
package net.t2code.opsecurity.util;
import lombok.Getter;
import net.t2code.t2codelib.util.T2C_Util;
import java.util.ArrayList;
import java.util.Arrays;
public class Util {
@Getter
private static String infoText = "";
@Getter
private static String requiredT2CodeLibVersion = "16.7";
@Getter
private static String prefix = "§8[§4T2C§8-§2OP§4Security§8]";
@Getter
private static Integer spigotID = 90739;
@Getter
private static String git = "JaTiTV/T2C-OPSecurity";
@Getter
private static Integer bstatsID = 10858;
@Getter
private static String spigot = "https://spigotmc.org/resources/" + getSpigotID();
@Getter
private static String discord = "http://dc.t2code.net";
public static String[] getConfigLogo() {
ArrayList<String> arrayList = new ArrayList<>(T2C_Util.getConfigT2CodeLogo());
arrayList.addAll(Arrays.asList("", "# Spigot: " + spigot));
return arrayList.toArray(new String[0]);
}
}

View File

@ -6,9 +6,11 @@ api-version: 1.13
load: STARTUP load: STARTUP
prefix: T2C-OPSecurity prefix: T2C-OPSecurity
authors: [ JaTiTV ] authors: [ JaTiTV ]
softdepend: softdepend:
- T2CodeLib - T2CodeLib
- OPSecurity
commands: commands:
t2c-opsecurity: t2c-opsecurity:
aliases: [opsec, opsecurity] aliases: [opsec, opsecurity]