Skip to content

Commit f86d16f

Browse files
committed
add back permission check
1 parent e5b4976 commit f86d16f

2 files changed

Lines changed: 13 additions & 4 deletions

File tree

src/main/java/one/devos/nautical/canary/Config.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,17 @@
1515
import com.mojang.serialization.codecs.RecordCodecBuilder;
1616

1717
import net.fabricmc.loader.api.FabricLoader;
18+
import net.minecraft.server.permissions.PermissionLevel;
1819

19-
public record Config(boolean printBlockStateReport, int diagnosticsPermissionLevel,
20+
public record Config(boolean printBlockStateReport, PermissionLevel diagnosticsPermissionLevel,
2021
List<String> trackedDataWhitelist, List<String> stateBuilderWhitelist) {
2122

2223
public static final Path PATH = FabricLoader.getInstance().getConfigDir().resolve("canary.json");
2324
private static final Gson gson = new GsonBuilder().setPrettyPrinting().create();
2425

2526
public static final Codec<Config> CODEC = RecordCodecBuilder.create(instance -> instance.group(
2627
Codec.BOOL.optionalFieldOf("print_blockstate_report", false).forGetter(Config::printBlockStateReport),
27-
Codec.INT.optionalFieldOf("desync_diagnostics_permission_level", 4).forGetter(Config::diagnosticsPermissionLevel),
28+
PermissionLevel.CODEC.optionalFieldOf("desync_diagnostics_permission_level", PermissionLevel.OWNERS).forGetter(Config::diagnosticsPermissionLevel),
2829
Codec.STRING.listOf().optionalFieldOf("tracked_data_whitelist", List.of()).forGetter(Config::trackedDataWhitelist),
2930
Codec.STRING.listOf().optionalFieldOf("state_builder_whitelist", List.of()).forGetter(Config::stateBuilderWhitelist)
3031
).apply(instance, Config::new));
@@ -37,7 +38,7 @@ public static Config load() {
3738

3839
private static Config makeDefault() {
3940
return new Config(
40-
false, 4,
41+
false, PermissionLevel.OWNERS,
4142
List.of("com.example.mymod.Utilities"),
4243
List.of("net.example.examplemod.Utils")
4344
);

src/main/java/one/devos/nautical/canary/feature/desync/RequestDiagnosticsPacket.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import net.minecraft.network.codec.StreamCodec;
88
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
99
import net.minecraft.server.level.ServerPlayer;
10+
import net.minecraft.server.permissions.Permission;
11+
import net.minecraft.server.permissions.PermissionLevel;
1012
import net.minecraft.world.level.block.Block;
1113
import net.minecraft.world.level.block.state.BlockState;
1214
import one.devos.nautical.canary.CanaryPackets;
@@ -22,7 +24,7 @@ public enum RequestDiagnosticsPacket implements CustomPacketPayload {
2224

2325
public static void handle(RequestDiagnosticsPacket ignored, ServerPlayNetworking.Context context) {
2426
ServerPlayer player = context.player();
25-
if (true){//player.hasPermissions(Config.INSTANCE.diagnosticsPermissionLevel())) {
27+
if (hasPermission(player)) {
2628
player.sendSystemMessage(Component.literal("Diagnostics en route. Check the client log for results."));
2729
} else {
2830
player.sendSystemMessage(Component.literal("You don't have permission for that."));
@@ -52,4 +54,10 @@ public static void handle(RequestDiagnosticsPacket ignored, ServerPlayNetworking
5254
public Type<? extends CustomPacketPayload> type() {
5355
return CanaryPackets.REQUEST_DIAGNOSTICS;
5456
}
57+
58+
private static boolean hasPermission(ServerPlayer player) {
59+
PermissionLevel level = Config.INSTANCE.diagnosticsPermissionLevel();
60+
Permission permission = new Permission.HasCommandLevel(level);
61+
return player.permissions().hasPermission(permission);
62+
}
5563
}

0 commit comments

Comments
 (0)