diff --git a/build.gradle b/build.gradle index db1f2b0..ba96044 100644 --- a/build.gradle +++ b/build.gradle @@ -30,8 +30,8 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" shadow('com.maxmind.geoip2:geoip2:4.2.0') - implementation "io.javalin:javalin:6.4.0" - implementation 'com.github.houbb:pinyin:0.4.0' + shadow("io.javalin:javalin:6.4.0") + shadow('com.github.houbb:pinyin:0.4.0') shadow('com.google.inject:guice:7.0.0') { exclude group: 'com.google.guava', module: 'guava' exclude group: 'com.google.guava', module: 'listenablefuture' diff --git a/src/main/java/io/ib67/sfcraft/module/SignatureService.java b/src/main/java/io/ib67/sfcraft/module/SignatureService.java index bf4a474..9616cb7 100644 --- a/src/main/java/io/ib67/sfcraft/module/SignatureService.java +++ b/src/main/java/io/ib67/sfcraft/module/SignatureService.java @@ -45,8 +45,9 @@ public class SignatureService { public byte[] createSignature(Signature signature) { var buf = Unpooled.buffer(); writeSignature(buf, signature); - buf = buf.slice(0, buf.readableBytes()); - return buf.array(); + var arr = new byte[buf.readableBytes()]; + buf.readBytes(arr); + return arr; } @SneakyThrows diff --git a/src/main/java/io/ib67/sfcraft/util/Permission.java b/src/main/java/io/ib67/sfcraft/util/Permission.java index 7b299de..4a55058 100644 --- a/src/main/java/io/ib67/sfcraft/util/Permission.java +++ b/src/main/java/io/ib67/sfcraft/util/Permission.java @@ -2,6 +2,7 @@ package io.ib67.sfcraft.util; import me.lucko.fabric.api.permissions.v0.Permissions; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; import java.util.Objects; @@ -15,10 +16,19 @@ public record Permission(String key, boolean byDefault) { } public boolean hasPermission(T t) { - if (Permissions.check(t, SFConsts.SPECIAL_SUDO)) return true; + if (check(t, SFConsts.SPECIAL_SUDO)) return true; if (byDefault) { - return !Permissions.check(t, "-"+key); + return !check(t, "-"+key); } - return Permissions.check(t, key); + return check(t, key); + } + + private boolean check(T t, String permission){ + if(t instanceof PlayerEntity player) { + if (player.getCommandTags().contains(permission)){ + return true; + } + } + return Permissions.check(t, permission); } }