Skip to content

Commit bb8b22b

Browse files
committed
Merge remote-tracking branch 'upstream/master' into claude/titan-minestom-deployment-XhoNO
# Conflicts: # .github/workflows/ci.yml # api/src/main/java/net/luckperms/api/platform/Platform.java # build.gradle
2 parents 7dfab00 + 441ab57 commit bb8b22b

184 files changed

Lines changed: 5717 additions & 2937 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,13 @@ jobs:
2828
uses: actions/setup-java@v4
2929
with:
3030
distribution: 'temurin'
31-
java-version: |
32-
25
33-
21
31+
java-version: '25'
3432

3533
- name: Setup Gradle
3634
uses: gradle/actions/setup-gradle@v4
3735

3836
- name: Run build and tests with Gradle wrapper
39-
run: ./gradlew test build publish cyclonedxBom -PdockerTests -Dorg.gradle.java.installations.fromEnv=JAVA_HOME_25_X64
37+
run: ./gradlew test build publish cyclonedxBom -PdockerTests
4038
env:
4139
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4240
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

api/build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
group = 'net.luckperms'
22

3-
sourceCompatibility = 1.8
4-
targetCompatibility = 1.8
3+
tasks.withType(JavaCompile).configureEach {
4+
options.release = 8
5+
}
56

67
jar {
78
manifest {

api/src/main/java/net/luckperms/api/platform/Platform.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ enum Type {
7979
NEOFORGE("NeoForge"),
8080
FORGE("Forge"),
8181
MINESTOM("Minestom"),
82-
STANDALONE("Standalone");
82+
STANDALONE("Standalone"),
83+
HYTALE("Hytale");
8384

8485
private final String friendlyName;
8586

build.gradle

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,23 @@
11
plugins {
22
alias(libs.plugins.licenser) apply false
33
id 'org.cyclonedx.bom' version '3.0.1'
4+
alias(libs.plugins.loom) apply false
45
}
56

67
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
78
import org.gradle.api.tasks.testing.logging.TestLogEvent
89

9-
defaultTasks 'licenseFormat', 'build'
10-
1110
subprojects {
1211
apply plugin: 'java'
1312
apply plugin: 'maven-publish'
14-
apply plugin: 'org.cadixdev.licenser'
13+
apply plugin: 'dev.yumi.gradle.licenser'
1514

1615
group = 'me.lucko.luckperms'
1716
version = '5.6-SNAPSHOT'
1817

19-
sourceCompatibility = 11
20-
targetCompatibility = 11
21-
2218
tasks.withType(JavaCompile).configureEach {
2319
options.encoding = 'UTF-8'
20+
options.release = 11
2421
}
2522

2623
tasks.withType(Test).configureEach {
@@ -38,18 +35,11 @@ subprojects {
3835
}
3936

4037
def determinePatchVersion = {
41-
// get the name of the last tag
42-
def tagInfo = new ByteArrayOutputStream()
43-
exec {
38+
def tagInfo = providers.exec {
4439
commandLine 'git', 'describe', '--tags'
45-
standardOutput = tagInfo
46-
}
47-
tagInfo = tagInfo.toString()
40+
}.standardOutput.asText.get().trim()
4841

49-
if (!tagInfo.contains('-')) {
50-
return 0
51-
}
52-
return tagInfo.split("-")[1]
42+
return tagInfo.contains('-') ? tagInfo.split('-')[1] : 0
5343
}
5444

5545
project.ext.majorVersion = '5'
@@ -59,9 +49,8 @@ subprojects {
5949
project.ext.fullVersion = project.ext.apiVersion + '.' + project.ext.patchVersion
6050

6151
license {
62-
header = rootProject.file('HEADER.txt')
63-
include '**/*.java'
64-
newLine = true
52+
rule(rootProject.file("HEADER.txt"))
53+
exclude '*.xml'
6554
}
6655

6756
repositories {

bukkit/src/main/java/me/lucko/luckperms/bukkit/calculator/BukkitCalculatorFactory.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,20 @@
3030
import me.lucko.luckperms.common.cacheddata.CacheMetadata;
3131
import me.lucko.luckperms.common.calculator.CalculatorFactory;
3232
import me.lucko.luckperms.common.calculator.PermissionCalculator;
33+
import me.lucko.luckperms.common.calculator.PermissionCalculatorMonitored;
3334
import me.lucko.luckperms.common.calculator.processor.DirectProcessor;
3435
import me.lucko.luckperms.common.calculator.processor.PermissionProcessor;
3536
import me.lucko.luckperms.common.calculator.processor.RegexProcessor;
3637
import me.lucko.luckperms.common.calculator.processor.SpongeWildcardProcessor;
3738
import me.lucko.luckperms.common.calculator.processor.WildcardProcessor;
3839
import me.lucko.luckperms.common.config.ConfigKeys;
3940
import me.lucko.luckperms.common.model.HolderType;
41+
import net.luckperms.api.node.Node;
4042
import net.luckperms.api.query.QueryOptions;
4143

4244
import java.util.ArrayList;
4345
import java.util.List;
46+
import java.util.Map;
4447

4548
public class BukkitCalculatorFactory implements CalculatorFactory {
4649
private final LPBukkitPlugin plugin;
@@ -50,25 +53,25 @@ public BukkitCalculatorFactory(LPBukkitPlugin plugin) {
5053
}
5154

5255
@Override
53-
public PermissionCalculator build(QueryOptions queryOptions, CacheMetadata metadata) {
56+
public PermissionCalculator build(QueryOptions queryOptions, Map<String, Node> sourceMap, CacheMetadata metadata) {
5457
List<PermissionProcessor> processors = new ArrayList<>(8);
5558

56-
processors.add(new DirectProcessor());
59+
processors.add(new DirectProcessor(sourceMap));
5760

5861
if (this.plugin.getConfiguration().get(ConfigKeys.APPLY_BUKKIT_CHILD_PERMISSIONS)) {
59-
processors.add(new ChildProcessor(this.plugin));
62+
processors.add(new ChildProcessor(this.plugin, sourceMap));
6063
}
6164

6265
if (this.plugin.getConfiguration().get(ConfigKeys.APPLYING_REGEX)) {
63-
processors.add(new RegexProcessor());
66+
processors.add(new RegexProcessor(sourceMap));
6467
}
6568

6669
if (this.plugin.getConfiguration().get(ConfigKeys.APPLYING_WILDCARDS)) {
67-
processors.add(new WildcardProcessor());
70+
processors.add(new WildcardProcessor(sourceMap));
6871
}
6972

7073
if (this.plugin.getConfiguration().get(ConfigKeys.APPLYING_WILDCARDS_SPONGE)) {
71-
processors.add(new SpongeWildcardProcessor());
74+
processors.add(new SpongeWildcardProcessor(sourceMap));
7275
}
7376

7477
boolean op = queryOptions.option(BukkitContextManager.OP_OPTION).orElse(false);
@@ -82,6 +85,6 @@ public PermissionCalculator build(QueryOptions queryOptions, CacheMetadata metad
8285
processors.add(OpProcessor.INSTANCE);
8386
}
8487

85-
return new PermissionCalculator(this.plugin, metadata, processors);
88+
return new PermissionCalculatorMonitored(this.plugin, metadata, processors);
8689
}
8790
}

bukkit/src/main/java/me/lucko/luckperms/bukkit/calculator/ChildProcessor.java

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,28 +26,37 @@
2626
package me.lucko.luckperms.bukkit.calculator;
2727

2828
import me.lucko.luckperms.bukkit.LPBukkitPlugin;
29+
import me.lucko.luckperms.bukkit.inject.server.LuckPermsPermissionMap;
2930
import me.lucko.luckperms.common.cacheddata.result.TristateResult;
30-
import me.lucko.luckperms.common.calculator.processor.AbstractSourceBasedProcessor;
31+
import me.lucko.luckperms.common.calculator.processor.AbstractPermissionProcessor;
3132
import me.lucko.luckperms.common.calculator.processor.PermissionProcessor;
33+
import net.luckperms.api.node.Node;
3234
import net.luckperms.api.util.Tristate;
3335

34-
import java.util.Collections;
3536
import java.util.HashMap;
3637
import java.util.Map;
3738
import java.util.concurrent.atomic.AtomicBoolean;
3839

3940
/**
4041
* Permission Processor for Bukkits "child" permission system.
4142
*/
42-
public class ChildProcessor extends AbstractSourceBasedProcessor implements PermissionProcessor {
43+
public class ChildProcessor extends AbstractPermissionProcessor implements PermissionProcessor {
4344
private static final TristateResult.Factory RESULT_FACTORY = new TristateResult.Factory(ChildProcessor.class);
4445

4546
private final LPBukkitPlugin plugin;
47+
private final Map<String, Node> sourceMap;
48+
4649
private final AtomicBoolean needsRefresh = new AtomicBoolean(false);
47-
private Map<String, TristateResult> childPermissions = Collections.emptyMap();
50+
private Map<String, TristateResult> childPermissions;
4851

49-
public ChildProcessor(LPBukkitPlugin plugin) {
52+
public ChildProcessor(LPBukkitPlugin plugin, Map<String, Node> sourceMap) {
5053
this.plugin = plugin;
54+
this.sourceMap = sourceMap;
55+
refresh();
56+
}
57+
58+
private void refresh() {
59+
this.childPermissions = processChildPermissions(this.sourceMap, this.plugin.getPermissionMap());
5160
}
5261

5362
@Override
@@ -59,20 +68,18 @@ public TristateResult hasPermission(String permission) {
5968
}
6069

6170
@Override
62-
public void refresh() {
71+
public void invalidate() {
72+
this.needsRefresh.set(true);
73+
}
74+
75+
private static Map<String, TristateResult> processChildPermissions(Map<String, Node> sourceMap, LuckPermsPermissionMap permissionMap) {
6376
Map<String, TristateResult> childPermissions = new HashMap<>();
64-
this.sourceMap.forEach((key, node) -> {
65-
Map<String, Boolean> children = this.plugin.getPermissionMap().getChildPermissions(key, node.getValue());
77+
sourceMap.forEach((key, node) -> {
78+
Map<String, Boolean> children = permissionMap.getChildPermissions(key, node.getValue());
6679
children.forEach((childKey, childValue) -> {
6780
childPermissions.put(childKey, RESULT_FACTORY.resultWithOverride(node, Tristate.of(childValue)));
6881
});
6982
});
70-
this.childPermissions = childPermissions;
71-
this.needsRefresh.set(false);
72-
}
73-
74-
@Override
75-
public void invalidate() {
76-
this.needsRefresh.set(true);
83+
return childPermissions;
7784
}
7885
}

bukkit/src/main/resources/config.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,16 @@ redis:
268268
address: localhost
269269
username: ''
270270
password: ''
271+
# Settings for Redis Sentinel.
272+
# Sentinel provides high availability for Redis by monitoring master/replica instances.
273+
# Port 26379 is used by default for sentinel nodes.
274+
sentinel:
275+
enabled: false
276+
master: mymaster
277+
addresses:
278+
- localhost:26379
279+
username: ''
280+
password: ''
271281

272282
# Settings for Nats.
273283
# Port 4222 is used by default; set address to "host:port" if differs
@@ -276,6 +286,7 @@ nats:
276286
address: localhost
277287
username: ''
278288
password: ''
289+
token: ''
279290

280291
# Settings for RabbitMQ.
281292
# Port 5672 is used by default; set address to "host:port" if differs

bukkit/src/main/resources/luckperms.commodore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,9 @@ luckperms {
543543

544544
editor;
545545
listmembers {
546-
page brigadier:integer;
546+
page brigadier:integer {
547+
context brigadier:string greedy_phrase;
548+
}
547549
}
548550
setweight {
549551
weight brigadier:integer;

bungee/src/main/java/me/lucko/luckperms/bungee/calculator/BungeeCalculatorFactory.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,19 @@
2929
import me.lucko.luckperms.common.cacheddata.CacheMetadata;
3030
import me.lucko.luckperms.common.calculator.CalculatorFactory;
3131
import me.lucko.luckperms.common.calculator.PermissionCalculator;
32+
import me.lucko.luckperms.common.calculator.PermissionCalculatorMonitored;
3233
import me.lucko.luckperms.common.calculator.processor.DirectProcessor;
3334
import me.lucko.luckperms.common.calculator.processor.PermissionProcessor;
3435
import me.lucko.luckperms.common.calculator.processor.RegexProcessor;
3536
import me.lucko.luckperms.common.calculator.processor.SpongeWildcardProcessor;
3637
import me.lucko.luckperms.common.calculator.processor.WildcardProcessor;
3738
import me.lucko.luckperms.common.config.ConfigKeys;
39+
import net.luckperms.api.node.Node;
3840
import net.luckperms.api.query.QueryOptions;
3941

4042
import java.util.ArrayList;
4143
import java.util.List;
44+
import java.util.Map;
4245

4346
public class BungeeCalculatorFactory implements CalculatorFactory {
4447
private final LPBungeePlugin plugin;
@@ -48,23 +51,23 @@ public BungeeCalculatorFactory(LPBungeePlugin plugin) {
4851
}
4952

5053
@Override
51-
public PermissionCalculator build(QueryOptions queryOptions, CacheMetadata metadata) {
54+
public PermissionCalculator build(QueryOptions queryOptions, Map<String, Node> sourceMap, CacheMetadata metadata) {
5255
List<PermissionProcessor> processors = new ArrayList<>(4);
5356

54-
processors.add(new DirectProcessor());
57+
processors.add(new DirectProcessor(sourceMap));
5558

5659
if (this.plugin.getConfiguration().get(ConfigKeys.APPLYING_REGEX)) {
57-
processors.add(new RegexProcessor());
60+
processors.add(new RegexProcessor(sourceMap));
5861
}
5962

6063
if (this.plugin.getConfiguration().get(ConfigKeys.APPLYING_WILDCARDS)) {
61-
processors.add(new WildcardProcessor());
64+
processors.add(new WildcardProcessor(sourceMap));
6265
}
6366

6467
if (this.plugin.getConfiguration().get(ConfigKeys.APPLYING_WILDCARDS_SPONGE)) {
65-
processors.add(new SpongeWildcardProcessor());
68+
processors.add(new SpongeWildcardProcessor(sourceMap));
6669
}
6770

68-
return new PermissionCalculator(this.plugin, metadata, processors);
71+
return new PermissionCalculatorMonitored(this.plugin, metadata, processors);
6972
}
7073
}

bungee/src/main/resources/config.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,16 @@ redis:
266266
address: localhost
267267
username: ''
268268
password: ''
269+
# Settings for Redis Sentinel.
270+
# Sentinel provides high availability for Redis by monitoring master/replica instances.
271+
# Port 26379 is used by default for sentinel nodes.
272+
sentinel:
273+
enabled: false
274+
master: mymaster
275+
addresses:
276+
- localhost:26379
277+
username: ''
278+
password: ''
269279

270280
# Settings for Nats.
271281
# Port 4222 is used by default; set address to "host:port" if differs
@@ -274,6 +284,7 @@ nats:
274284
address: localhost
275285
username: ''
276286
password: ''
287+
token: ''
277288

278289
# Settings for RabbitMQ.
279290
# Port 5672 is used by default; set address to "host:port" if differs

0 commit comments

Comments
 (0)