Skip to content

Commit 069c5f0

Browse files
committed
fix consolable commands only support for global permission
1 parent 533aa18 commit 069c5f0

4 files changed

Lines changed: 101 additions & 37 deletions

File tree

src/main/java/org/lime/velocircon/RconService.java

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
import org.lime.velocircon.permissions.PermissionFactory;
1313
import org.lime.velocircon.server.RconBinder;
1414
import org.lime.velocircon.server.RconServer;
15+
import org.lime.velocircon.sources.BaseRconCommandSource;
16+
import org.lime.velocircon.sources.PermissibleRconCommandSource;
17+
import org.lime.velocircon.sources.RootRconCommandSource;
1518
import org.lime.velocircon.utils.NettyFutureUtils;
1619
import org.slf4j.Logger;
1720

@@ -98,15 +101,27 @@ public String password() {
98101
}
99102
@Override
100103
public CompletableFuture<Component> execute(String command) {
101-
RconCommandSource source = new RconCommandSource(
102-
command,
103-
this.plugin,
104-
this.server.getScheduler(),
105-
this.permissionFactories,
106-
FLUSH_MILLISECONDS,
107-
FLUSH_WAIT_COUNT,
108-
this.consoleOutput,
109-
this.componentLogger);
104+
BaseRconCommandSource source;
105+
if (permissionFactories.isEmpty()) {
106+
source = new RootRconCommandSource(
107+
command,
108+
this.plugin,
109+
this.server.getScheduler(),
110+
FLUSH_MILLISECONDS,
111+
FLUSH_WAIT_COUNT,
112+
this.consoleOutput,
113+
this.componentLogger);
114+
} else {
115+
source = new PermissibleRconCommandSource(
116+
command,
117+
this.plugin,
118+
this.server.getScheduler(),
119+
this.permissionFactories,
120+
FLUSH_MILLISECONDS,
121+
FLUSH_WAIT_COUNT,
122+
this.consoleOutput,
123+
this.componentLogger);
124+
}
110125
return this.server
111126
.getCommandManager()
112127
.executeAsync(source, command)

src/main/java/org/lime/velocircon/RconCommandSource.java renamed to src/main/java/org/lime/velocircon/sources/BaseRconCommandSource.java

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,23 @@
1-
package org.lime.velocircon;
1+
package org.lime.velocircon.sources;
22

33
import com.velocitypowered.api.command.CommandSource;
4-
import com.velocitypowered.api.permission.Tristate;
54
import com.velocitypowered.api.scheduler.Scheduler;
65
import net.kyori.adventure.audience.MessageType;
76
import net.kyori.adventure.identity.Identity;
8-
import net.kyori.adventure.platform.facet.FacetPointers;
97
import net.kyori.adventure.permission.PermissionChecker;
8+
import net.kyori.adventure.platform.facet.FacetPointers;
109
import net.kyori.adventure.pointer.Pointers;
1110
import net.kyori.adventure.text.Component;
1211
import net.kyori.adventure.text.logger.slf4j.ComponentLogger;
1312
import org.jetbrains.annotations.NotNull;
14-
import org.lime.velocircon.permissions.PermissionFactory;
15-
import org.slf4j.Logger;
1613

1714
import java.util.ArrayList;
18-
import java.util.Collection;
1915
import java.util.List;
2016
import java.util.concurrent.CompletableFuture;
2117
import java.util.concurrent.ConcurrentLinkedQueue;
2218
import java.util.concurrent.TimeUnit;
2319

24-
public class RconCommandSource
20+
public abstract class BaseRconCommandSource
2521
implements CommandSource {
2622
private final Pointers pointers = CommandSource.super.pointers().toBuilder()
2723
.withDynamic(PermissionChecker.POINTER, this::getPermissionChecker)
@@ -33,25 +29,22 @@ public class RconCommandSource
3329
private final String command;
3430
private final Object plugin;
3531
private final Scheduler scheduler;
36-
private final Collection<PermissionFactory> permissionFactories;
3732
private final long flushMs;
3833
private final int flushWaitCount;
3934
private final boolean consoleOutput;
4035
private final ComponentLogger componentLogger;
4136

42-
public RconCommandSource(
37+
public BaseRconCommandSource(
4338
String command,
4439
Object plugin,
4540
Scheduler scheduler,
46-
Collection<PermissionFactory> permissionFactories,
4741
long flushMs,
4842
int flushWaitCount,
4943
boolean consoleOutput,
5044
ComponentLogger componentLogger) {
5145
this.command = command;
5246
this.plugin = plugin;
5347
this.scheduler = scheduler;
54-
this.permissionFactories = permissionFactories;
5548
this.flushMs = flushMs;
5649
this.flushWaitCount = flushWaitCount;
5750
this.consoleOutput = consoleOutput;
@@ -67,23 +60,6 @@ public void sendMessage(@NotNull Identity identity, @NotNull Component message,
6760
.append(message));
6861
}
6962

70-
@Override
71-
public @NotNull Tristate getPermissionValue(@NotNull String permission) {
72-
if (permissionFactories.isEmpty())
73-
return Tristate.TRUE;
74-
Tristate current = Tristate.UNDEFINED;
75-
for (var permissionFactory : permissionFactories) {
76-
var value = permissionFactory.check(permission);
77-
switch (value) {
78-
case FALSE -> {
79-
return Tristate.FALSE;
80-
}
81-
case TRUE -> current = Tristate.TRUE;
82-
}
83-
}
84-
return current;
85-
}
86-
8763
@Override
8864
public @NotNull Pointers pointers() {
8965
return pointers;
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package org.lime.velocircon.sources;
2+
3+
import com.velocitypowered.api.permission.Tristate;
4+
import com.velocitypowered.api.scheduler.Scheduler;
5+
import net.kyori.adventure.text.logger.slf4j.ComponentLogger;
6+
import org.jetbrains.annotations.NotNull;
7+
import org.lime.velocircon.permissions.PermissionFactory;
8+
9+
import java.util.Collection;
10+
11+
public class PermissibleRconCommandSource
12+
extends BaseRconCommandSource {
13+
private final Collection<PermissionFactory> permissionFactories;
14+
15+
public PermissibleRconCommandSource(
16+
String command,
17+
Object plugin,
18+
Scheduler scheduler,
19+
Collection<PermissionFactory> permissionFactories,
20+
long flushMs,
21+
int flushWaitCount,
22+
boolean consoleOutput,
23+
ComponentLogger componentLogger) {
24+
super(command, plugin, scheduler, flushMs, flushWaitCount, consoleOutput, componentLogger);
25+
this.permissionFactories = permissionFactories;
26+
}
27+
28+
29+
@Override
30+
public @NotNull Tristate getPermissionValue(@NotNull String permission) {
31+
if (permissionFactories.isEmpty())
32+
return Tristate.TRUE;
33+
Tristate current = Tristate.UNDEFINED;
34+
for (var permissionFactory : permissionFactories) {
35+
var value = permissionFactory.check(permission);
36+
switch (value) {
37+
case FALSE -> {
38+
return Tristate.FALSE;
39+
}
40+
case TRUE -> current = Tristate.TRUE;
41+
}
42+
}
43+
return current;
44+
}
45+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.lime.velocircon.sources;
2+
3+
import com.velocitypowered.api.permission.Tristate;
4+
import com.velocitypowered.api.proxy.ConsoleCommandSource;
5+
import com.velocitypowered.api.scheduler.Scheduler;
6+
import net.kyori.adventure.text.logger.slf4j.ComponentLogger;
7+
import org.jetbrains.annotations.NotNull;
8+
9+
public class RootRconCommandSource
10+
extends BaseRconCommandSource
11+
implements ConsoleCommandSource {
12+
public RootRconCommandSource(
13+
String command,
14+
Object plugin,
15+
Scheduler scheduler,
16+
long flushMs,
17+
int flushWaitCount,
18+
boolean consoleOutput,
19+
ComponentLogger componentLogger) {
20+
super(command, plugin, scheduler, flushMs, flushWaitCount, consoleOutput, componentLogger);
21+
}
22+
23+
24+
@Override
25+
public @NotNull Tristate getPermissionValue(@NotNull String permission) {
26+
return Tristate.TRUE;
27+
}
28+
}

0 commit comments

Comments
 (0)