diff --git a/dependencies.gradle b/dependencies.gradle index b59ea96d..57d0e7b0 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -5,4 +5,6 @@ dependencies { implementation('com.github.GTNewHorizons:GTNHLib:0.6.14:dev') shadowImplementation('org.apache.commons:commons-csv:1.10.0') + + compileOnly 'maven.modrinth:forge-essentials:7.5.1' } diff --git a/repositories.gradle b/repositories.gradle index 45729e10..9a2a141d 100644 --- a/repositories.gradle +++ b/repositories.gradle @@ -1,4 +1,8 @@ // Add any additional repositiroes for your dependencies here repositories { + maven { + name = "Modrinth" + url = "https://api.modrinth.com/maven" + } } diff --git a/src/main/java/codechicken/nei/NEIServerConfig.java b/src/main/java/codechicken/nei/NEIServerConfig.java index dae4a5e2..818abb24 100644 --- a/src/main/java/codechicken/nei/NEIServerConfig.java +++ b/src/main/java/codechicken/nei/NEIServerConfig.java @@ -21,6 +21,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.server.MinecraftServer; import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; +import net.minecraftforge.permission.PermissionLevel; +import net.minecraftforge.permission.PermissionManager; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; @@ -44,6 +46,8 @@ public class NEIServerConfig { public static HashMap playerSaves = new HashMap<>(); public static ItemStackMap> bannedItems = new ItemStackMap<>(); + private static boolean doesPermAPIExist = false; + public static void load(World world) { if (MinecraftServer.getServer() != server) { logger.debug("Loading NEI Server"); @@ -53,6 +57,16 @@ public class NEIServerConfig { dimTags.clear(); loadConfig(); loadBannedItems(); + + try { + Class.forName("net.minecraftforge.permission.PermissionManager"); + doesPermAPIExist = true; + + NEIActions.baseActions().forEach( + action -> { + PermissionManager.registerPermission("nei.permissions." + action, PermissionLevel.OP); + }); + } catch (ClassNotFoundException ignored) {} } loadWorld(world); } @@ -121,7 +135,12 @@ public class NEIServerConfig { } public static boolean canPlayerPerformAction(String playername, String name) { - return isPlayerInList(playername, getPlayerList("permissions." + NEIActions.base(name)), true); + String node = "permissions." + NEIActions.base(name); + boolean hasPerm = doesPermAPIExist + ? PermissionManager.checkPermission(ServerUtils.getPlayer(playername), "nei." + node) + : false; + + return hasPerm || isPlayerInList(playername, getPlayerList(node), true); } public static boolean isPlayerInList(String playername, Set list, boolean allowCards) {