Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
PureGero committed Oct 7, 2022
2 parents 341de24 + 495d951 commit 7c37629
Show file tree
Hide file tree
Showing 66 changed files with 3,053 additions and 154 deletions.
108 changes: 108 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: Build Gradle and Publish Docker image

on:
push:
branches:
- 'master'
tags:
- 'v*'
pull_request:
branches:
- 'master'

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
build-gradle:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0

- uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'

- name: Setup Gradle
uses: gradle/gradle-build-action@v2

- name: Run build with Gradle wrapper
run: ./gradlew build

- name: Upload all artifacts
uses: actions/upload-artifact@v3
with:
name: jars
path: |
bukkit/loader/build/libs/LuckPerms-Bukkit-*.jar
bukkit-legacy/loader/build/libs/LuckPerms-Bukkit-Legacy-*.jar
bungee/loader/build/libs/LuckPerms-Bungee-*.jar
sponge/loader/build/libs/LuckPerms-Sponge-*.jar
nukkit/loader/build/libs/LuckPerms-Nukkit-*.jar
velocity/build/libs/LuckPerms-Velocity-*.jar
fabric/build/libs/LuckPerms-Fabric-*.jar
forge/loader/build/libs/LuckPerms-Forge-*.jar
standalone/loader/build/libs/LuckPerms-Standalone-*.jar
- name: Upload standalone artifact
uses: actions/upload-artifact@v3
with:
name: standalone-binary
path: standalone/loader/build/libs/LuckPerms-Standalone-*.jar


build-docker:
needs: build-gradle
runs-on: ubuntu-latest
permissions:
contents: read
packages: write

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Retrieve saved standalone jar artifact
uses: actions/download-artifact@v3
with:
name: standalone-binary
path: standalone/docker/

- name: Display structure of downloaded files
run: ls -R
working-directory: standalone/docker/

- name: Set up QEMU
uses: docker/setup-qemu-action@v1

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

- name: Log in to the Container registry
uses: docker/login-action@v1
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@v3
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: |
latest=${{ github.ref == 'refs/heads/master' }}
- name: Build and push Docker image
uses: docker/build-push-action@v2
with:
context: standalone/docker/
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
6 changes: 6 additions & 0 deletions api/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
group = 'net.luckperms'
project.version = '5.4'

jar {
manifest {
attributes('Automatic-Module-Name': 'net.luckperms.api')
}
}

dependencies {
compileOnly 'org.checkerframework:checker-qual:3.21.2'
compileOnly 'org.jetbrains:annotations:23.0.0'
Expand Down
25 changes: 25 additions & 0 deletions api/src/main/java/net/luckperms/api/cacheddata/CachedMetaData.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import net.luckperms.api.node.types.MetaNode;
import net.luckperms.api.node.types.PrefixNode;
import net.luckperms.api.node.types.SuffixNode;
import net.luckperms.api.node.types.WeightNode;

import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
Expand Down Expand Up @@ -177,6 +178,30 @@ public interface CachedMetaData extends CachedData {
return querySuffix().result();
}

/**
* Query for a weight.
*
* <p>This method will always return a {@link Result}, and the
* {@link Result#result() inner result} {@link Integer} will never be null.
* A value of {@code 0} is equivalent to null.</p>
*
* @return a result containing the weight
* @since 5.5
*/
@NonNull Result<Integer, WeightNode> queryWeight();

/**
* Gets the weight.
*
* <p>If the there is no defined weight, {@code 0} is returned.</p>
*
* @return the weight
* @since 5.5
*/
default int getWeight() {
return queryWeight().result();
}

/**
* Gets a map of all accumulated {@link MetaNode meta}.
*
Expand Down
3 changes: 2 additions & 1 deletion api/src/main/java/net/luckperms/api/platform/Platform.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ enum Type {
NUKKIT("Nukkit"),
VELOCITY("Velocity"),
FABRIC("Fabric"),
FORGE("Forge");
FORGE("Forge"),
STANDALONE("Standalone");

private final String friendlyName;

Expand Down
3 changes: 2 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ subprojects {

repositories {
mavenCentral()
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
maven { url 'https://s01.oss.sonatype.org/content/repositories/snapshots/' }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
maven { url 'https://repo.lucko.me/' }
maven { url 'https://libraries.minecraft.net/' }
maven { url 'https://repo.clojars.org/' }
Expand Down
2 changes: 1 addition & 1 deletion bukkit-legacy/loader/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ plugins {
}

repositories {
maven { url 'https://papermc.io/repo/repository/maven-public/' }
maven { url 'https://repo.papermc.io/repository/maven-public/' }
}

dependencies {
Expand Down
2 changes: 1 addition & 1 deletion bukkit/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ plugins {
}

repositories {
maven { url 'https://papermc.io/repo/repository/maven-public/' }
maven { url 'https://repo.papermc.io/repository/maven-public/' }
}

dependencies {
Expand Down
2 changes: 1 addition & 1 deletion bukkit/loader/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ plugins {
}

repositories {
maven { url 'https://papermc.io/repo/repository/maven-public/' }
maven { url 'https://repo.papermc.io/repository/maven-public/' }
}

dependencies {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ protected void processOutput(JsonObject json) {

ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
try (Writer writer = new OutputStreamWriter(new GZIPOutputStream(bytesOut), StandardCharsets.UTF_8)) {
GsonProvider.prettyPrinting().toJson(json, writer);
GsonProvider.normal().toJson(json, writer);
} catch (IOException e) {
this.plugin.getLogger().severe("Error compressing data", e);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
/*
* This file is part of LuckPerms, licensed under the MIT License.
*
* Copyright (c) lucko (Luck) <luck@lucko.me>
* Copyright (c) contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/

package me.lucko.luckperms.common.cacheddata.result;

import net.luckperms.api.cacheddata.Result;
import net.luckperms.api.node.Node;
import net.luckperms.api.node.types.WeightNode;

import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;

/**
* Represents the result of an integer meta lookup
*
* @param <N> the node type
*/
public final class IntegerResult<N extends Node> implements Result<Integer, N> {

/** The result */
private final int result;
/** The node that caused the result */
private final N node;
/** A reference to another result that this one overrides */
private IntegerResult<N> overriddenResult;

public IntegerResult(int result, N node, IntegerResult<N> overriddenResult) {
this.result = result;
this.node = node;
this.overriddenResult = overriddenResult;
}

@Override
@Deprecated // use intResult()
public @NonNull Integer result() {
return this.result;
}

public int intResult() {
return this.result;
}

public StringResult<N> asStringResult() {
if (isNull()) {
return StringResult.nullResult();
} else {
StringResult<N> result = StringResult.of(Integer.toString(this.result), this.node);
if (this.overriddenResult != null) {
result.setOverriddenResult(this.overriddenResult.asStringResult());
}
return result;
}
}

@Override
public @Nullable N node() {
return this.node;
}

public @Nullable IntegerResult<N> overriddenResult() {
return this.overriddenResult;
}

public void setOverriddenResult(IntegerResult<N> overriddenResult) {
this.overriddenResult = overriddenResult;
}

public boolean isNull() {
return this == NULL_RESULT;
}

public IntegerResult<N> copy() {
return new IntegerResult<>(this.result, this.node, this.overriddenResult);
}

@Override
public String toString() {
return "IntegerResult(" +
"result=" + this.result + ", " +
"node=" + this.node + ", " +
"overriddenResult=" + this.overriddenResult + ')';
}

private static final IntegerResult<?> NULL_RESULT = new IntegerResult<>(0, null, null);

@SuppressWarnings("unchecked")
public static <N extends Node> IntegerResult<N> nullResult() {
return (IntegerResult<N>) NULL_RESULT;
}

public static <N extends Node> IntegerResult<N> of(int result) {
return new IntegerResult<>(result, null, null);
}

public static <N extends Node> IntegerResult<N> of(int result, N node) {
return new IntegerResult<>(result, node, null);
}

public static IntegerResult<WeightNode> of(WeightNode node) {
return new IntegerResult<>(node.getWeight(), node, null);
}

}
Loading

0 comments on commit 7c37629

Please sign in to comment.