From 5791632d3521ff4317e0f0e712e6b24b850778bd Mon Sep 17 00:00:00 2001 From: PssbleTrngle Date: Fri, 6 May 2022 16:48:04 +0200 Subject: [PATCH 1/4] add fabric-permission-api provider --- fabric-1.18.2/build.gradle | 6 ++ .../dynmap/fabric_1_18_2/DynmapPlugin.java | 68 ++++++++++++------- .../permissions/FabricPermissions.java | 50 ++++++++++++++ 3 files changed, 98 insertions(+), 26 deletions(-) create mode 100644 fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java diff --git a/fabric-1.18.2/build.gradle b/fabric-1.18.2/build.gradle index b839b315..ed2622e5 100644 --- a/fabric-1.18.2/build.gradle +++ b/fabric-1.18.2/build.gradle @@ -17,6 +17,10 @@ configurations { implementation.extendsFrom(shadow) } +repositories { + maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } +} + dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" @@ -26,6 +30,8 @@ dependencies { compileOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' shadow project(path: ':DynmapCore', configuration: 'shadow') + + modCompileOnly "me.lucko:fabric-permissions-api:0.1-SNAPSHOT" } processResources { diff --git a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/DynmapPlugin.java b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/DynmapPlugin.java index 49a1955b..818e9ed9 100644 --- a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/DynmapPlugin.java +++ b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/DynmapPlugin.java @@ -7,6 +7,7 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerChunkEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.FluidBlock; @@ -48,6 +49,7 @@ import org.dynmap.fabric_1_18_2.event.CustomServerChunkEvents; import org.dynmap.fabric_1_18_2.event.CustomServerLifecycleEvents; import org.dynmap.fabric_1_18_2.event.PlayerEvents; import org.dynmap.fabric_1_18_2.mixin.BiomeEffectsAccessor; +import org.dynmap.fabric_1_18_2.permissions.FabricPermissions; import org.dynmap.fabric_1_18_2.permissions.FilePermissions; import org.dynmap.fabric_1_18_2.permissions.OpPermissions; import org.dynmap.fabric_1_18_2.permissions.PermissionProvider; @@ -137,13 +139,13 @@ public class DynmapPlugin { int baseidx = 0; Iterator iter = bsids.iterator(); - DynmapBlockState.Builder bld = new DynmapBlockState.Builder(); + DynmapBlockState.Builder bld = new DynmapBlockState.Builder(); while (iter.hasNext()) { BlockState bs = iter.next(); int idx = bsids.getRawId(bs); if (idx >= stateByID.length) { int plen = stateByID.length; - stateByID = Arrays.copyOf(stateByID, idx*11/10); // grow array by 10% + stateByID = Arrays.copyOf(stateByID, idx * 11 / 10); // grow array by 10% Arrays.fill(stateByID, plen, stateByID.length, DynmapBlockState.AIR); } Block b = bs.getBlock(); @@ -173,16 +175,26 @@ public class DynmapPlugin { //Log.info("statename=" + bn + "[" + statename + "], lightAtten=" + lightAtten); // Fill in base attributes bld.setBaseState(basebs).setStateIndex(idx - baseidx).setBlockName(bn).setStateName(statename).setMaterial(mat.toString()).setLegacyBlockID(idx).setAttenuatesLight(lightAtten); - if (mat.isSolid()) { bld.setSolid(); } - if (mat == Material.AIR) { bld.setAir(); } - if (mat == Material.WOOD) { bld.setLog(); } - if (mat == Material.LEAVES) { bld.setLeaves(); } - if ((!bs.getFluidState().isEmpty()) && !(bs.getBlock() instanceof FluidBlock)) { - bld.setWaterlogged(); - } + if (mat.isSolid()) { + bld.setSolid(); + } + if (mat == Material.AIR) { + bld.setAir(); + } + if (mat == Material.WOOD) { + bld.setLog(); + } + if (mat == Material.LEAVES) { + bld.setLeaves(); + } + if ((!bs.getFluidState().isEmpty()) && !(bs.getBlock() instanceof FluidBlock)) { + bld.setWaterlogged(); + } DynmapBlockState dbs = bld.build(); // Build state stateByID[idx] = dbs; - if (basebs == null) { basebs = dbs; } + if (basebs == null) { + basebs = dbs; + } } } // for (int gidx = 0; gidx < DynmapBlockState.getGlobalIndexMax(); gidx++) { @@ -348,18 +360,16 @@ public class DynmapPlugin { Log.verboseinfo("biome[" + i + "]: hum=" + hum + ", tmp=" + tmp + ", mult=" + Integer.toHexString(watermult)); BiomeMap bmap = BiomeMap.NULL; - if (rl != null) { // If resource location, lookup by this - bmap = BiomeMap.byBiomeResourceLocation(rl); - } - else { - bmap = BiomeMap.byBiomeID(i); + if (rl != null) { // If resource location, lookup by this + bmap = BiomeMap.byBiomeResourceLocation(rl); + } else { + bmap = BiomeMap.byBiomeID(i); } if (bmap.isDefault() || (bmap == BiomeMap.NULL)) { bmap = new BiomeMap((rl != null) ? BiomeMap.NO_INDEX : i, id, tmp, hum, rl); Log.verboseinfo("Add custom biome [" + bmap.toString() + "] (" + i + ")"); cnt++; - } - else { + } else { bmap.setTemperature(tmp); bmap.setRainfall(hum); } @@ -395,11 +405,17 @@ public class DynmapPlugin { /* Set up player login/quit event handler */ registerPlayerLoginListener(); - /* Initialize permissions handler */ - permissions = FilePermissions.create(); - if (permissions == null) { - permissions = new OpPermissions(new String[]{"webchat", "marker.icons", "marker.list", "webregister", "stats", "hide.self", "show.self"}); + if (FabricLoader.getInstance().isModLoaded("fabric-permissions-api-v0")) { + Log.info("Using fabric-permissions-api for access control"); + permissions = new FabricPermissions(); + } else { + /* Initialize permissions handler */ + permissions = FilePermissions.create(); + if (permissions == null) { + permissions = new OpPermissions(new String[]{"webchat", "marker.icons", "marker.list", "webregister", "stats", "hide.self", "show.self"}); + } } + /* Get and initialize data folder */ File dataDirectory = new File("dynmap"); @@ -628,14 +644,14 @@ public class DynmapPlugin { FabricWorld fw = getWorld(world, false); ChunkPos chunkPos = chunk.getPos(); - int ymax = Integer.MIN_VALUE; - int ymin = Integer.MAX_VALUE; + int ymax = Integer.MIN_VALUE; + int ymin = Integer.MAX_VALUE; ChunkSection[] sections = chunk.getSectionArray(); for (int i = 0; i < sections.length; i++) { if ((sections[i] != null) && (!sections[i].isEmpty())) { - int sy = sections[i].getYOffset(); - if (sy < ymin) ymin = sy; - if ((sy+16) > ymax) ymax = sy + 16; + int sy = sections[i].getYOffset(); + if (sy < ymin) ymin = sy; + if ((sy + 16) > ymax) ymax = sy + 16; } } if (ymax != Integer.MIN_VALUE) { diff --git a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java new file mode 100644 index 00000000..8cd65ece --- /dev/null +++ b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java @@ -0,0 +1,50 @@ +package org.dynmap.fabric_1_18_2.permissions; + +import me.lucko.fabric.api.permissions.v0.Permissions; +import net.minecraft.entity.player.PlayerEntity; +import org.dynmap.DynmapCore; +import org.dynmap.Log; +import org.dynmap.fabric_1_18_2.DynmapMod; +import org.dynmap.fabric_1_18_2.DynmapPlugin; + +import java.util.Set; +import java.util.stream.Collectors; + +public class FabricPermissions implements PermissionProvider { + + private String permissionKey(String perm) { + return "dynmap." + perm; + } + + @Override + public Set hasOfflinePermissions(String player, Set perms) { + Log.info("Requesting offline permissions: " + String.join(",", perms) + " for " + player); + return perms.stream() + .filter(perm -> hasOfflinePermission(player, perm)) + .collect(Collectors.toSet()); + } + + @Override + public boolean hasOfflinePermission(String player, String perm) { + Log.info("Requesting offline permission: " + perm + " for " + player); + return DynmapPlugin.plugin.isOp(player.toLowerCase()); + } + + @Override + public boolean has(PlayerEntity player, String permission) { + Log.info("Requesting privilege: " + permission); + return player != null && Permissions.check(player, permissionKey(permission)); + } + + @Override + public boolean hasPermissionNode(PlayerEntity player, String permission) { + if (player != null) { + String name = player.getName().getString().toLowerCase(); + Log.info("Requesting permission node: " + permission + " for " + name); + return DynmapPlugin.plugin.isOp(name); + } + Log.info("Requesting permission node: " + permission); + return false; + } + +} From b2a072c45cc61ecdd43f8908376af7763d2633a8 Mon Sep 17 00:00:00 2001 From: PssbleTrngle Date: Fri, 6 May 2022 19:55:28 +0200 Subject: [PATCH 2/4] LuckPerms permission provider for offline support --- fabric-1.18.2/build.gradle | 2 + .../dynmap/fabric_1_18_2/DynmapPlugin.java | 11 +- .../permissions/FabricPermissions.java | 5 +- .../permissions/LuckPermissions.java | 105 ++++++++++++++++++ 4 files changed, 116 insertions(+), 7 deletions(-) create mode 100644 fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/LuckPermissions.java diff --git a/fabric-1.18.2/build.gradle b/fabric-1.18.2/build.gradle index ed2622e5..c5e0e773 100644 --- a/fabric-1.18.2/build.gradle +++ b/fabric-1.18.2/build.gradle @@ -18,6 +18,7 @@ configurations { } repositories { + mavenCentral() maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } } @@ -32,6 +33,7 @@ dependencies { shadow project(path: ':DynmapCore', configuration: 'shadow') modCompileOnly "me.lucko:fabric-permissions-api:0.1-SNAPSHOT" + compileOnly 'net.luckperms:api:5.4' } processResources { diff --git a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/DynmapPlugin.java b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/DynmapPlugin.java index 818e9ed9..f75589c0 100644 --- a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/DynmapPlugin.java +++ b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/DynmapPlugin.java @@ -49,10 +49,7 @@ import org.dynmap.fabric_1_18_2.event.CustomServerChunkEvents; import org.dynmap.fabric_1_18_2.event.CustomServerLifecycleEvents; import org.dynmap.fabric_1_18_2.event.PlayerEvents; import org.dynmap.fabric_1_18_2.mixin.BiomeEffectsAccessor; -import org.dynmap.fabric_1_18_2.permissions.FabricPermissions; -import org.dynmap.fabric_1_18_2.permissions.FilePermissions; -import org.dynmap.fabric_1_18_2.permissions.OpPermissions; -import org.dynmap.fabric_1_18_2.permissions.PermissionProvider; +import org.dynmap.fabric_1_18_2.permissions.*; import org.dynmap.permissions.PermissionsHandler; import org.dynmap.renderer.DynmapBlockState; @@ -405,7 +402,11 @@ public class DynmapPlugin { /* Set up player login/quit event handler */ registerPlayerLoginListener(); - if (FabricLoader.getInstance().isModLoaded("fabric-permissions-api-v0")) { + if (FabricLoader.getInstance().isModLoaded("luckperms")) { + Log.info("Using luckperms for access control"); + permissions = new LuckPermissions(); + } + else if (FabricLoader.getInstance().isModLoaded("fabric-permissions-api-v0")) { Log.info("Using fabric-permissions-api for access control"); permissions = new FabricPermissions(); } else { diff --git a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java index 8cd65ece..feb58ac2 100644 --- a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java +++ b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java @@ -2,16 +2,17 @@ package org.dynmap.fabric_1_18_2.permissions; import me.lucko.fabric.api.permissions.v0.Permissions; import net.minecraft.entity.player.PlayerEntity; -import org.dynmap.DynmapCore; import org.dynmap.Log; -import org.dynmap.fabric_1_18_2.DynmapMod; import org.dynmap.fabric_1_18_2.DynmapPlugin; +import org.dynmap.json.simple.parser.JSONParser; import java.util.Set; import java.util.stream.Collectors; public class FabricPermissions implements PermissionProvider { + private final JSONParser parser = new JSONParser(); + private String permissionKey(String perm) { return "dynmap." + perm; } diff --git a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/LuckPermissions.java b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/LuckPermissions.java new file mode 100644 index 00000000..f98fd208 --- /dev/null +++ b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/LuckPermissions.java @@ -0,0 +1,105 @@ +package org.dynmap.fabric_1_18_2.permissions; + +import me.lucko.fabric.api.permissions.v0.Permissions; +import net.luckperms.api.LuckPerms; +import net.luckperms.api.LuckPermsProvider; +import net.luckperms.api.cacheddata.CachedPermissionData; +import net.luckperms.api.model.user.User; +import net.luckperms.api.util.Tristate; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.server.MinecraftServer; +import org.dynmap.Log; +import org.dynmap.fabric_1_18_2.DynmapPlugin; +import org.dynmap.json.simple.JSONArray; +import org.dynmap.json.simple.JSONObject; +import org.dynmap.json.simple.parser.JSONParser; +import org.dynmap.json.simple.parser.ParseException; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; + +public class LuckPermissions implements PermissionProvider { + + private final JSONParser parser = new JSONParser(); + private LuckPerms api = null; + + private Optional getApi() { + if (api != null) return Optional.of(api); + try { + api = LuckPermsProvider.get(); + return Optional.of(api); + } catch (Exception ex) { + Log.warning("Trying to access LuckPerms before it has loaded"); + return Optional.empty(); + } + } + + private Optional cachedUUID(String username) { + try { + BufferedReader reader = new BufferedReader(new FileReader(MinecraftServer.USER_CACHE_FILE)); + JSONArray cache = (JSONArray) parser.parse(reader); + for (Object it : cache) { + JSONObject user = (JSONObject) it; + if (user.get("name").toString().equalsIgnoreCase(username)) { + String uuid = user.get("uuid").toString(); + Log.info("Found cached UUID for " + username + ": " + uuid); + return Optional.of(UUID.fromString(uuid)); + } + } + + reader.close(); + } catch (IOException | ParseException ex) { + Log.warning("Unable to read usercache.json"); + } + + return Optional.empty(); + } + + private String permissionKey(String perm) { + return "dynmap." + perm; + } + + @Override + public Set hasOfflinePermissions(String player, Set perms) { + Log.info("Requesting offline permissions: " + String.join(",", perms) + " for " + player); + return perms.stream() + .filter(perm -> hasOfflinePermission(player, perm)) + .collect(Collectors.toSet()); + } + + @Override + public boolean hasOfflinePermission(String player, String perm) { + Log.info("Requesting offline permission: " + perm + " for " + player); + if (DynmapPlugin.plugin.isOp(player.toLowerCase())) return true; + Optional api = getApi(); + Optional uuid = cachedUUID(player); + if (!uuid.isPresent() || !api.isPresent()) return false; + User user = api.get().getUserManager().loadUser(uuid.get()).join(); + CachedPermissionData permissions = user.getCachedData().getPermissionData(); + Tristate state = permissions.checkPermission(permissionKey(perm)); + return state.asBoolean(); + } + + @Override + public boolean has(PlayerEntity player, String permission) { + Log.info("Requesting privilege: " + permission); + return player != null && Permissions.check(player, permissionKey(permission)); + } + + @Override + public boolean hasPermissionNode(PlayerEntity player, String permission) { + if (player != null) { + String name = player.getName().getString().toLowerCase(); + Log.info("Requesting permission node: " + permission + " for " + name); + return DynmapPlugin.plugin.isOp(name); + } + Log.info("Requesting permission node: " + permission); + return false; + } + +} From 8763ad91e4a4404640648e7f36068749fe3ebca3 Mon Sep 17 00:00:00 2001 From: PssbleTrngle Date: Fri, 6 May 2022 20:02:19 +0200 Subject: [PATCH 3/4] allow op players --- .../dynmap/fabric_1_18_2/permissions/FabricPermissions.java | 5 ++++- .../dynmap/fabric_1_18_2/permissions/LuckPermissions.java | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java index feb58ac2..a957d6b8 100644 --- a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java +++ b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java @@ -34,7 +34,10 @@ public class FabricPermissions implements PermissionProvider { @Override public boolean has(PlayerEntity player, String permission) { Log.info("Requesting privilege: " + permission); - return player != null && Permissions.check(player, permissionKey(permission)); + if (player == null) return false; + String name = player.getName().getString().toLowerCase(); + if (DynmapPlugin.plugin.isOp(name)) return true; + return Permissions.check(player, permissionKey(permission)); } @Override diff --git a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/LuckPermissions.java b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/LuckPermissions.java index f98fd208..a893563d 100644 --- a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/LuckPermissions.java +++ b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/LuckPermissions.java @@ -88,7 +88,10 @@ public class LuckPermissions implements PermissionProvider { @Override public boolean has(PlayerEntity player, String permission) { Log.info("Requesting privilege: " + permission); - return player != null && Permissions.check(player, permissionKey(permission)); + if (player == null) return false; + String name = player.getName().getString().toLowerCase(); + if (DynmapPlugin.plugin.isOp(name)) return true; + return Permissions.check(player, permissionKey(permission)); } @Override From a2951b798d0bbf12f53082a95eb5bb4a5103a8a8 Mon Sep 17 00:00:00 2001 From: PssbleTrngle Date: Thu, 12 May 2022 15:38:48 +0200 Subject: [PATCH 4/4] remove debug logging --- .../fabric_1_18_2/permissions/FabricPermissions.java | 7 ------- .../dynmap/fabric_1_18_2/permissions/LuckPermissions.java | 6 ------ 2 files changed, 13 deletions(-) diff --git a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java index a957d6b8..c572acc4 100644 --- a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java +++ b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/FabricPermissions.java @@ -11,15 +11,12 @@ import java.util.stream.Collectors; public class FabricPermissions implements PermissionProvider { - private final JSONParser parser = new JSONParser(); - private String permissionKey(String perm) { return "dynmap." + perm; } @Override public Set hasOfflinePermissions(String player, Set perms) { - Log.info("Requesting offline permissions: " + String.join(",", perms) + " for " + player); return perms.stream() .filter(perm -> hasOfflinePermission(player, perm)) .collect(Collectors.toSet()); @@ -27,13 +24,11 @@ public class FabricPermissions implements PermissionProvider { @Override public boolean hasOfflinePermission(String player, String perm) { - Log.info("Requesting offline permission: " + perm + " for " + player); return DynmapPlugin.plugin.isOp(player.toLowerCase()); } @Override public boolean has(PlayerEntity player, String permission) { - Log.info("Requesting privilege: " + permission); if (player == null) return false; String name = player.getName().getString().toLowerCase(); if (DynmapPlugin.plugin.isOp(name)) return true; @@ -44,10 +39,8 @@ public class FabricPermissions implements PermissionProvider { public boolean hasPermissionNode(PlayerEntity player, String permission) { if (player != null) { String name = player.getName().getString().toLowerCase(); - Log.info("Requesting permission node: " + permission + " for " + name); return DynmapPlugin.plugin.isOp(name); } - Log.info("Requesting permission node: " + permission); return false; } diff --git a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/LuckPermissions.java b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/LuckPermissions.java index a893563d..829c8a80 100644 --- a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/LuckPermissions.java +++ b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/permissions/LuckPermissions.java @@ -47,7 +47,6 @@ public class LuckPermissions implements PermissionProvider { JSONObject user = (JSONObject) it; if (user.get("name").toString().equalsIgnoreCase(username)) { String uuid = user.get("uuid").toString(); - Log.info("Found cached UUID for " + username + ": " + uuid); return Optional.of(UUID.fromString(uuid)); } } @@ -66,7 +65,6 @@ public class LuckPermissions implements PermissionProvider { @Override public Set hasOfflinePermissions(String player, Set perms) { - Log.info("Requesting offline permissions: " + String.join(",", perms) + " for " + player); return perms.stream() .filter(perm -> hasOfflinePermission(player, perm)) .collect(Collectors.toSet()); @@ -74,7 +72,6 @@ public class LuckPermissions implements PermissionProvider { @Override public boolean hasOfflinePermission(String player, String perm) { - Log.info("Requesting offline permission: " + perm + " for " + player); if (DynmapPlugin.plugin.isOp(player.toLowerCase())) return true; Optional api = getApi(); Optional uuid = cachedUUID(player); @@ -87,7 +84,6 @@ public class LuckPermissions implements PermissionProvider { @Override public boolean has(PlayerEntity player, String permission) { - Log.info("Requesting privilege: " + permission); if (player == null) return false; String name = player.getName().getString().toLowerCase(); if (DynmapPlugin.plugin.isOp(name)) return true; @@ -98,10 +94,8 @@ public class LuckPermissions implements PermissionProvider { public boolean hasPermissionNode(PlayerEntity player, String permission) { if (player != null) { String name = player.getName().getString().toLowerCase(); - Log.info("Requesting permission node: " + permission + " for " + name); return DynmapPlugin.plugin.isOp(name); } - Log.info("Requesting permission node: " + permission); return false; }