Skip to content

Commit 22bec10

Browse files
committed
Add permissions
1 parent ee6ca54 commit 22bec10

5 files changed

Lines changed: 55 additions & 3 deletions

File tree

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ dependencies {
5454
// Add compatibility with lots of economy mods
5555
modImplementation include("eu.pb4:common-economy-api:${project.common_economy_api_version}")
5656

57+
include(modImplementation("me.lucko:fabric-permissions-api:${project.fabric_permissions_api_version}"))
58+
5759
// Used for unit tests
5860
testImplementation "net.fabricmc:fabric-loader-junit:${project.loader_version}"
5961
testImplementation "org.junit.platform:junit-platform-suite:${project.junit_platform_version}"

gradle.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ fabric_version=0.121.0+1.21.5
2121
polymer_version=0.12.3+1.21.5
2222
# https://github.com/Patbox/common-economy-api
2323
common_economy_api_version=1.1.1
24+
# https://github.com/lucko/fabric-permissions-api
25+
fabric_permissions_api_version=0.3.3
2426

2527
# For Unit Testing
2628
# See the [fabric-loader-unit maven artifacts](https://mvnrepository.com/artifact/net.fabricmc/fabric-loader-junit)

src/main/java/com/rwconnected/serverkit/command/GetTimeCommand.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class GetTimeCommand {
3939

4040
public static void register(CommandDispatcher<ServerCommandSource> dispatcher, CommandRegistryAccess commandRegistryAccess, CommandManager.RegistrationEnvironment registrationEnvironment) {
4141
var rtcCommand = CommandManager.literal("rtc")
42+
.requires(Permission.RTC.require())
4243
.executes(GetTimeCommand::help);
4344

4445
var getCommand = CommandManager.literal("get")

src/main/java/com/rwconnected/serverkit/command/LoginStreakCommand.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,40 +28,46 @@
2828
public class LoginStreakCommand {
2929
public static void register(CommandDispatcher<ServerCommandSource> serverCommandSourceCommandDispatcher, CommandRegistryAccess commandRegistryAccess, CommandManager.RegistrationEnvironment registrationEnvironment) {
3030
serverCommandSourceCommandDispatcher.register(CommandManager.literal("loginStreak")
31+
.requires(Permission.LOGIN_STREAK.require())
3132
.executes(ctx -> getStreak(ctx, false))
3233
.then(CommandManager.literal("help")
34+
.requires(Permission.LOGIN_STREAK_HELP.require())
3335
.executes(context -> {
3436
Log.source(context, Config.instance().loginStreak.welcomeMessage());
3537
return 1;
3638
})
3739
).then(CommandManager.literal("get")
40+
.requires(Permission.LOGIN_STREAK_GET.require())
3841
.executes(ctx -> getStreak(ctx, false))
3942
.then(CommandManager.argument("player", EntityArgumentType.player())
40-
.requires(source -> source.hasPermissionLevel(4))
43+
.requires(Permission.LOGIN_STREAK_GET_PLAYER.require())
4144
.executes(ctx -> getStreak(ctx, true))
4245
)
4346
).then(CommandManager.literal("set")
44-
.requires(source -> source.hasPermissionLevel(4))
47+
.requires(Permission.LOGIN_STREAK_SET.require())
4548
.then(CommandManager.literal("streak")
4649
.then(CommandManager.argument("streak", IntegerArgumentType.integer())
4750
.executes(ctx -> setStreak(ctx, false))
4851
.then(CommandManager.argument("player", EntityArgumentType.player())
52+
.requires(Permission.LOGIN_STREAK_SET_PLAYER.require())
4953
.executes(ctx -> setStreak(ctx, true))
5054
)
5155
)
5256
).then(CommandManager.literal("record")
5357
.then(CommandManager.argument("record", IntegerArgumentType.integer())
5458
.executes(ctx -> setRecord(ctx, false))
5559
.then(CommandManager.argument("player", EntityArgumentType.player())
60+
.requires(Permission.LOGIN_STREAK_SET_PLAYER.require())
5661
.executes(ctx -> setRecord(ctx, true))
5762
)
5863
)
5964
)
6065

6166
).then(CommandManager.literal("milestones")
67+
.requires(Permission.LOGIN_STREAK_MILESTONES.require())
6268
.executes(LoginStreakCommand::showMilestones)
6369
).then(CommandManager.literal("reward")
64-
.requires(source -> source.hasPermissionLevel(4))
70+
.requires(Permission.LOGIN_STREAK_REWARD.require())
6571
.then(CommandManager.argument("player", EntityArgumentType.player())
6672
.then(CommandManager.argument("amount", IntegerArgumentType.integer())
6773
.executes(LoginStreakCommand::reward)
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.rwconnected.serverkit.command;
2+
3+
import me.lucko.fabric.api.permissions.v0.Permissions;
4+
import net.minecraft.server.command.ServerCommandSource;
5+
import org.jetbrains.annotations.NotNull;
6+
7+
import java.util.function.Predicate;
8+
9+
/**
10+
* Vanilla permission levels:
11+
* 0: Normal player
12+
* 1: Moderators can bypass spawn protection
13+
* 2: Gamemasters have access to commands like /scoreboard, /advancement, /function, etc. and can use command blocks
14+
* 3: Admins have access to most commands including /op and /deop. So effectively these players can do anything.
15+
* 4: Owner has access to all commands
16+
*/
17+
public enum Permission {
18+
LOGIN_STREAK("loginStreak", 0),
19+
LOGIN_STREAK_HELP("loginStreak.help", 0),
20+
LOGIN_STREAK_MILESTONES("loginStreak.milestones", 0),
21+
LOGIN_STREAK_GET("loginStreak.get", 0),
22+
LOGIN_STREAK_GET_PLAYER("loginStreak.get.player", 1),
23+
LOGIN_STREAK_SET("loginStreak.set", 3),
24+
LOGIN_STREAK_SET_PLAYER("loginStreak.set.player", 3),
25+
LOGIN_STREAK_REWARD("loginStreak.reward", 3),
26+
27+
RTC("rtc", 2);
28+
29+
private final String permission;
30+
private final int defaultLevel;
31+
32+
Permission(String permission, int defaultLevel) {
33+
this.permission = permission;
34+
this.defaultLevel = defaultLevel;
35+
}
36+
37+
@NotNull
38+
public Predicate<ServerCommandSource> require() {
39+
return Permissions.require(this.permission, this.defaultLevel);
40+
}
41+
}

0 commit comments

Comments
 (0)