Compare commits

...
90 Commits
Author SHA1 Message Date
Andre601 348d1fcacf v5.8.0
- Use 1.7.0-b1 of ExpressionParser
- Wrap condition evaluation in try-catch to prevent stacktrace spams for invalid protocols (bots?) pinging.
2026-05-03 21:39:48 +02:00
Andre601 4451d2382b Remove FakePlayerProfile and make hover only work on newer Paper versions 2026-05-01 21:53:52 +02:00
Andre601 3d410631ef Merge pull request 'Update dependency io.papermc.paper:paper-api to v26' (#582) from renovate/io.papermc.paper-paper-api-26.x into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/582
2026-05-01 14:07:15 +02:00
Andre601 e0ba710aed paper/pom.xml aktualisiert 2026-05-01 14:07:06 +02:00
Andre601's Bot 966d817f29 Update dependency io.papermc.paper:paper-api to v26 2026-05-01 12:05:19 +00:00
Andre601 838416b1c5 Merge pull request 'Update dependency org.junit.jupiter:junit-jupiter-engine to v5.14.4' (#581) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/581
2026-04-29 14:17:44 +02:00
Andre601's Bot 23ee4a08ad Update dependency org.junit.jupiter:junit-jupiter-engine to v5.14.4 2026-04-29 12:04:12 +00:00
Andre601 baba7c7076 Use git-pages action for docs deployment 2026-04-25 14:14:23 +02:00
Andre601 7e7228dd77 Merge pull request 'Update dependency com.google.code.gson:gson to v2.14.0' (#580) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/580
2026-04-25 14:09:40 +02:00
Andre601's Bot 103bf4f1db Update dependency com.google.code.gson:gson to v2.14.0 2026-04-25 12:04:19 +00:00
Andre601 0c7c8e56db Update default config in getting-started.md 2026-04-25 01:25:17 +02:00
Andre601 cb3161a118 Merge pull request 'Update dependency net.kyori:adventure-text-serializer-legacy to v5' (#579) from renovate/major-dependency.adventure-text-serializer-legacy into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/579
2026-04-22 14:11:44 +02:00
Andre601 326fe7098a Merge pull request 'Update all non-major dependencies' (#578) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/578
2026-04-22 14:11:25 +02:00
Andre601's Bot d79c54f7c9 Update dependency net.kyori:adventure-text-serializer-legacy to v5 2026-04-22 12:04:30 +00:00
Andre601's Bot 1468febf72 Update all non-major dependencies 2026-04-22 12:04:25 +00:00
Andre601 afbcad6c3e Merge pull request 'Update dependency net.kyori:adventure-text-minimessage to v5' (#577) from renovate/major-dependency.adventure-text-minimessage into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/577
2026-04-19 14:06:31 +02:00
Andre601 79aefaa6a5 Merge pull request 'Update dependency org.apache.httpcomponents.client5:httpclient5 to v5.6.1' (#576) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/576
2026-04-19 14:06:06 +02:00
Andre601's Bot d6ac483a0e Update dependency net.kyori:adventure-text-minimessage to v5 2026-04-19 12:05:15 +00:00
Andre601's Bot 35df0d84ca Update dependency org.apache.httpcomponents.client5:httpclient5 to v5.6.1 2026-04-19 12:04:58 +00:00
Andre601 45229bd6d2 Merge pull request 'Update dependency eu.kennytv.maintenance:maintenance-api to v5' (#575) from renovate/eu.kennytv.maintenance-maintenance-api-5.x into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/575
2026-04-18 14:14:07 +02:00
Andre601 7bfa88383d Merge pull request 'Update dependency net.kyori:adventure-api to v5.0.1' (#574) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/574
2026-04-18 14:12:28 +02:00
Andre601's Bot efaae58562 Update dependency eu.kennytv.maintenance:maintenance-api to v5 2026-04-18 12:07:08 +00:00
Andre601's Bot 7dfdbb621d Update dependency net.kyori:adventure-api to v5.0.1 2026-04-18 12:06:54 +00:00
Andre601 d2cd554fb1 Merge pull request 'Update dependency net.kyori:adventure-api to v5' (#573) from renovate/major-dependency.adventure-api into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/573
2026-04-16 15:50:12 +02:00
Andre601 69168efb01 Merge pull request 'Update dependency com.google.guava:guava to v33.6.0-jre' (#572) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/572
2026-04-16 15:49:56 +02:00
Andre601's Bot 55f94a8c27 Update dependency net.kyori:adventure-api to v5 2026-04-16 12:04:32 +00:00
Andre601's Bot e813bdaba4 Update dependency com.google.guava:guava to v33.6.0-jre 2026-04-16 12:04:13 +00:00
Andre601 b3f56aa398 Merge pull request 'Update all non-major dependencies to v2.0.0-beta.15' (#571) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/571
2026-04-12 14:43:39 +02:00
Andre601's Bot 87f0573162 Update all non-major dependencies to v2.0.0-beta.15 2026-04-12 12:04:33 +00:00
Andre601 e49fe391d0 Merge pull request 'Update dependency com.viaversion:viaversion-api to v5.8.1' (#570) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/570
2026-03-31 14:06:26 +02:00
Andre601's Bot d077efdc12 Update dependency com.viaversion:viaversion-api to v5.8.1 2026-03-31 12:04:41 +00:00
Andre601 90fdaf628c Merge pull request 'Update dependency mkdocs-redirects to v1.2.3' (#569) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/569
2026-03-29 14:17:30 +02:00
Andre601's Bot 9651011b19 Update dependency mkdocs-redirects to v1.2.3 2026-03-29 12:02:58 +00:00
Andre601 9bacc04a68 Compile with Java 25 2026-03-28 13:52:41 +01:00
Andre601 515081e395 Merge pull request 'Update all non-major dependencies' (#568) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/568
2026-03-28 13:07:37 +01:00
Andre601's Bot 95fec87c12 Update all non-major dependencies 2026-03-28 12:07:06 +00:00
Andre601 778a415b4f Merge pull request 'Update dependency properdocs to v1.6.7' (#567) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/567
2026-03-21 14:23:28 +01:00
Andre601's Bot db66945d99 Update dependency properdocs to v1.6.7 2026-03-21 12:02:41 +00:00
Andre601 cf4245842b Bump version 2026-03-20 20:37:39 +01:00
Andre601 d90084196b Only print Stacktrace in debug in FaviconHandler 2026-03-20 20:37:11 +01:00
Andre601 62b13a3cdf Use key from uuid and text for PAPI caching 2026-03-20 20:36:11 +01:00
Andre601 be6e5f8bfb Merge pull request 'Update dependency mkdocs-material to v9.7.6' (#566) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/566
2026-03-20 13:06:39 +01:00
Andre601's Bot aaf1439da8 Update dependency mkdocs-material to v9.7.6 2026-03-20 12:03:01 +00:00
Andre601 b304252140 Move to ProperDocs 2026-03-17 22:01:03 +01:00
Andre601 dda321f07b Add MiniPlaceholders info 2026-03-14 21:46:11 +01:00
Andre601 f487fd9cc1 Merge pull request 'Update maven Docker tag to v3.9.14' (#564) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/564
2026-03-13 13:04:03 +01:00
Andre601's Bot 5681e7a790 Update maven Docker tag to v3.9.14 2026-03-13 12:02:54 +00:00
Andre601 c3aa8bf536 Merge pull request 'Update dependency mkdocs-material to v9.7.5' (#563) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/563
2026-03-11 13:10:39 +01:00
Andre601's Bot 1ce27b2244 Update dependency mkdocs-material to v9.7.5 2026-03-11 12:02:59 +00:00
Andre601 74bce4c220 Merge pull request 'Update maven Docker tag to v3.9.13' (#562) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/562
2026-03-10 13:06:08 +01:00
Andre601's Bot 6605538b0f Update maven Docker tag to v3.9.13 2026-03-10 12:03:30 +00:00
Andre601 4aa9e946fd Merge pull request 'Update dependency org.apache.maven.plugins:maven-shade-plugin to v3.6.2' (#560) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/560
2026-03-05 13:06:17 +01:00
Andre601's Bot 42ec17997e Update dependency org.apache.maven.plugins:maven-shade-plugin to v3.6.2 2026-03-05 12:03:02 +00:00
Andre601 d2587e67f4 Merge pull request 'Update dependency mkdocs-material to v9.7.4' (#559) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/559
2026-03-04 13:12:17 +01:00
Andre601's Bot 3f8f0e0ff7 Update dependency mkdocs-material to v9.7.4 2026-03-04 12:02:13 +00:00
Andre601 b0dbbbfe82 Merge pull request 'Update dependency com.viaversion:viaversion-api to v5.7.2' (#558) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/558
2026-03-02 13:31:12 +01:00
Andre601's Bot 6a32ea7826 Update dependency com.viaversion:viaversion-api to v5.7.2 2026-03-02 12:02:40 +00:00
Andre601 a6bcc7036c Merge pull request 'Update all non-major dependencies' (#557) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/557
2026-02-25 13:20:20 +01:00
Andre601's Bot 639b32db23 Update all non-major dependencies 2026-02-25 12:02:18 +00:00
Andre601 53672243d3 Merge pull request 'Update all non-major dependencies to v3.2.0' (#556) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/556
2026-02-24 13:07:49 +01:00
Andre601's Bot 3b7e177e4f Update all non-major dependencies to v3.2.0 2026-02-24 12:02:50 +00:00
Andre601 6b43ef4dc3 Merge pull request 'Update dependency mkdocs-material to v9.7.2' (#555) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/555
2026-02-19 13:09:00 +01:00
Andre601's Bot 665990aae9 Update dependency mkdocs-material to v9.7.2 2026-02-19 12:02:36 +00:00
Andre601 70723ce35e Merge pull request 'Update all non-major dependencies' (#554) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/554
2026-02-16 13:04:30 +01:00
Andre601's Bot b2d689306b Update all non-major dependencies 2026-02-16 12:02:58 +00:00
Andre601 6ae3f0aea6 Merge pull request 'Update dependency ch.qos.logback:logback-classic to v1.5.31' (#552) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/552
2026-02-15 13:07:43 +01:00
Andre601's Bot 9445e12f8d Update dependency ch.qos.logback:logback-classic to v1.5.31 2026-02-15 12:03:57 +00:00
Andre601 94da2bbd2d Merge pull request 'Update dependency ch.qos.logback:logback-classic to v1.5.30' (#551) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/551
2026-02-14 13:06:08 +01:00
Andre601's Bot b5d0246bce Update dependency ch.qos.logback:logback-classic to v1.5.30 2026-02-14 12:03:00 +00:00
Andre601 48b1e53d13 Merge pull request 'Update dependency ch.qos.logback:logback-classic to v1.5.29' (#550) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/550
2026-02-10 13:09:07 +01:00
Andre601's Bot 5e7a59474d Update dependency ch.qos.logback:logback-classic to v1.5.29 2026-02-10 12:03:00 +00:00
Andre601 bfbc547712 Merge pull request 'Update dependency me.clip:placeholderapi to v2.12.2' (#549) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/549
2026-02-09 13:08:33 +01:00
Andre601's Bot 2f8273d6a3 Update dependency me.clip:placeholderapi to v2.12.2 2026-02-09 12:03:44 +00:00
Andre601 1f036727d8 Merge pull request 'Update dependency ch.qos.logback:logback-classic to v1.5.28' (#548) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/548
2026-02-07 13:15:45 +01:00
Andre601's Bot bc07dadf03 Update dependency ch.qos.logback:logback-classic to v1.5.28 2026-02-07 12:04:00 +00:00
Andre601 ac0c754050 Merge pull request 'Update dependency me.clip:placeholderapi to v2.12.1' (#547) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/547
2026-02-03 13:11:45 +01:00
Andre601's Bot b2d664b5b9 Update dependency me.clip:placeholderapi to v2.12.1 2026-02-03 12:03:33 +00:00
Andre601 58e9e55dc6 Use AlessioDP snapshot repository 2026-02-02 14:44:30 +01:00
Andre601 9b8e459b5c Merge pull request 'Update all non-major dependencies' (#546) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/546
2026-02-02 14:20:05 +01:00
Andre601's Bot 598343ebc7 Update all non-major dependencies 2026-02-02 12:03:54 +00:00
Andre601 c1fd983dab Merge pull request 'Update dependency ch.qos.logback:logback-classic to v1.5.27' (#545) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/545
2026-01-31 13:07:58 +01:00
Andre601's Bot d05faf30dc Update dependency ch.qos.logback:logback-classic to v1.5.27 2026-01-31 12:04:24 +00:00
Andre601 79a96f30ca Merge pull request 'Update all non-major dependencies' (#544) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/544
2026-01-26 14:01:04 +01:00
Andre601's Bot 54ddf4bb4d Update all non-major dependencies 2026-01-26 12:02:48 +00:00
Andre601 f8b85ce9ed Merge pull request 'Update dependency com.viaversion:viaversion-api to v5.7.1' (#543) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/543
2026-01-19 13:38:34 +01:00
Andre601's Bot 2f5c1db3c1 Update dependency com.viaversion:viaversion-api to v5.7.1 2026-01-19 12:02:20 +00:00
Andre601 de7570ac6e Merge pull request 'Update dependency ch.qos.logback:logback-classic to v1.5.25' (#542) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/542
2026-01-18 14:08:29 +01:00
Andre601's Bot 41c7db5f27 Update dependency ch.qos.logback:logback-classic to v1.5.25 2026-01-18 12:03:56 +00:00
Andre601 ef0ef4e373 Merge pull request 'Update all non-major dependencies' (#539) from renovate/all-minor-patch into master
Reviewed-on: https://codeberg.org/Andre601/AdvancedServerList/pulls/539
2026-01-07 13:27:03 +01:00
Andre601's Bot e9ab05618e Update all non-major dependencies 2026-01-07 12:04:09 +00:00
30 changed files with 203 additions and 564 deletions

No files matched your search

+9 -15
View File
@@ -10,19 +10,17 @@ on:
- ".forgejo/workflows/deploy_wiki.yml"
- "docs/**"
- "domains"
- "mkdocs.yml"
- "properdocs.yml"
- "requirements.txt"
jobs:
deployWiki:
runs-on: codeberg-tiny
steps:
- name: "Checkout Source Repository"
- name: "Checkout Repository"
uses: https://code.forgejo.org/actions/checkout@v6
with:
token: "${{ secrets.BOT_TOKEN }}"
- name: "Checkout Target Repository"
run: "git clone -b pages https://codeberg.org/Andre601/asl-docs site"
- name: "Setup Python 3.x"
uses: https://code.forgejo.org/actions/setup-python@v6
with:
@@ -30,14 +28,10 @@ jobs:
- name: "Install Dependencies"
run: "pip install -r requirements.txt"
- name: "Build Website"
run: "mkdocs build"
- name: "Commit and Push"
run: |
git config --global user.email "andre_601-bot@noreply.codeberg.org"
git config --global user.name "ASL Wiki Builder"
mv domains site/.domains
cd site
git remote set-url origin https://${{ secrets.BOT_TOKEN }}@codeberg.org/Andre601/asl-docs
git add --all
git commit -m "Update Wiki ($( env TZ=Europe/Zurich date +"%d.%m.%Y %Z" ))"
git push
run: "properdocs build"
- name: "Deploy Website"
uses: https://code.forgejo.org/actions/git-pages@v2
with:
site: https://asl.andre601.ch
token: ${{ secrets.FORGEJO_TOKEN }}
source: site/
+2 -2
View File
@@ -9,7 +9,7 @@ on:
paths:
- ".forgejo/workflows/pr_preview.yml"
- "docs/**"
- "mkdocs.yml"
- "properdocs.yml"
- "preview_domains"
- "requirements.txt"
workflow_dispatch:
@@ -66,7 +66,7 @@ jobs:
- name: "Install Dependencies"
run: "pip install -r requirements.txt"
- name: "Build Website"
run: "mkdocs build"
run: "properdocs build"
- name: "Commit and Push"
run: |
git config --global user.email "andre_601-bot@noreply.codeberg.org"
-64
View File
@@ -1,64 +0,0 @@
when:
- event: pull_request
path:
include: [".woodpecker/pr_preview.yml", "docs/**", "mkdocs.yml", "requirements.txt"]
variables:
setup_git: &setup_git
- apk add git
- git config --global user.email "andre_601-bot@noreply.codeberg.org"
- git config --global user.name "PR Docs Preview Builder"
steps:
- name: "Clone Preview Repository"
image: alpine:3.20.3
commands:
- chmod -R a+w .
- <<: *setup_git
- git clone https://codeberg.org/Andre601/preview.git site
- chmod -R a+w site
- cd site
- git switch ${CI_REPO_NAME,,}/${CI_COMMIT_PULL_REQUEST} 2>/dev/null || git switch -c ${CI_REPO_NAME,,}/${CI_COMMIT_PULL_REQUEST}
- name: "Build Docs"
image: woodpeckerci/plugin-mkdocs:latest
settings:
pip_install_file: requirements.txt
- name: "Commit and Push"
image: alpine:3.20.3
secrets:
- bot_token
commands:
- <<: *setup_git
- mv preview-domains site/.domains
- cd site
- git remote add upstream https://$BOT_TOKEN@codeberg.org/Andre601/preview.git
- git add --all
- git commit -m "Update Preview for ${CI_REPO_NAME}/${CI_COMMIT_PULL_REQUEST} ($( env TZ=Europe/Zurich date +"%d.%m.%Y %Z" )) [SKIP CI]"
- git push --set-upstream upstream ${CI_REPO_NAME,,}/${CI_COMMIT_PULL_REQUEST} -f
- name: "Comment on Success"
image: mcs94/gitea-comment
when:
- status: ["success"]
settings:
gitea_address: https://codeberg.org
gitea_token:
from_secret: BOT_TOKEN
comment: |-
Pull request Preview Ready!
| Name | Value |
|--------|--------------------------------------------------------------------------|
| Commit | ${CI_COMMIT_SHA} |
| Link | https://preview.andre601.ch/@${CI_REPO_NAME,,}~${CI_COMMIT_PULL_REQUEST} |
- name: "Comment on Failure"
image: mcs94/gitea-comment
when:
- status: ["failure"]
settings:
gitea_address: https://codeberg.org
gitea_token:
from_secret: BOT_TOKEN
comment: |-
Pull request Preview **failed**!
Please check the CI logs for details: ${CI_PIPELINE_URL}
+1 -1
View File
@@ -4,7 +4,7 @@ when:
steps:
- name: "Build Jar and Upload"
image: maven:3.9.12-eclipse-temurin-21
image: maven:3.9.15-eclipse-temurin-25
environment:
CODEBERG_API_TOKEN:
from_secret: cb_token
-36
View File
@@ -1,36 +0,0 @@
when:
- event: push
branch: ${CI_REPO_DEFAULT_BRANCH}
path:
include: [".woodpecker/publish_docs.yml", "docs/**", "mkdocs.yml", "requirements.txt"]
variables:
setup_git: &setup_git
- apk add git
- git config --global user.email "andre_601-bot@noreply.codeberg.org"
- git config --global user.name "ASL Docs Builder"
steps:
- name: "Clone target Repository"
image: alpine:3.20.3
commands:
- chmod -R a+w .
- <<: *setup_git
- git clone -b pages https://codeberg.org/Andre601/asl-docs.git site
- chmod -R a+w site
- name: "Build Docs"
image: woodpeckerci/plugin-mkdocs:latest
settings:
pip_install_file: requirements.txt
- name: "Commit and Push"
image: alpine:3.20.3
secrets:
- bot_token
commands:
- <<: *setup_git
- mv domains site/.domains
- cd site
- git remote set-url origin https://$BOT_TOKEN@codeberg.org/Andre601/asl-docs.git
- git add --all
- git commit -m "Update AdvancedServerList Docs ($( env TZ=Europe/Zurich date +"%d.%m.%Y %Z" )) [SKIP CI]"
- git push
+2 -2
View File
@@ -79,13 +79,13 @@
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.21-R0.1-SNAPSHOT</version>
<version>26.1.2.build.53-stable</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.velocitypowered</groupId>
<artifactId>velocity-api</artifactId>
<version>3.3.0-SNAPSHOT</version>
<version>3.4.0</version>
<scope>provided</scope>
</dependency>
+2 -2
View File
@@ -75,13 +75,13 @@
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.21-R0.1-SNAPSHOT</version>
<version>26.1.2.build.53-stable</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.velocitypowered</groupId>
<artifactId>velocity-api</artifactId>
<version>3.3.0-SNAPSHOT</version>
<version>3.4.0</version>
<scope>provided</scope>
</dependency>
+2 -2
View File
@@ -110,7 +110,7 @@
<dependency>
<groupId>org.bstats</groupId>
<artifactId>bstats-bungeecord</artifactId>
<version>3.1.0</version>
<version>3.2.1</version>
<scope>compile</scope>
</dependency>
@@ -169,7 +169,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.1</version>
<version>3.6.2</version>
<executions>
<execution>
<phase>package</phase>
+7 -7
View File
@@ -79,7 +79,7 @@
<dependency>
<groupId>ch.andre601</groupId>
<artifactId>expressionparser</artifactId>
<version>1.6.1</version>
<version>1.7.0-b1</version>
<scope>compile</scope>
</dependency>
@@ -121,7 +121,7 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.13.2</version>
<version>2.14.0</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -133,7 +133,7 @@
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>33.5.0-jre</version>
<version>33.6.0-jre</version>
<scope>provided</scope>
</dependency>
@@ -174,7 +174,7 @@
<dependency>
<groupId>eu.kennytv.maintenance</groupId>
<artifactId>maintenance-api</artifactId>
<version>4.2.1</version>
<version>5.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -186,7 +186,7 @@
<dependency>
<groupId>io.github.miniplaceholders</groupId>
<artifactId>miniplaceholders-api</artifactId>
<version>3.1.0</version>
<version>3.2.0</version>
<scope>provided</scope>
</dependency>
@@ -194,7 +194,7 @@
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.14.1</version>
<version>5.14.4</version>
<scope>test</scope>
</dependency>
</dependencies>
@@ -221,7 +221,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.14.1</version>
<version>3.15.0</version>
<configuration>
<compilerArgs>
<arg>-parameters</arg>
@@ -25,13 +25,13 @@
package ch.andre601.advancedserverlist.core.check;
import org.jetbrains.annotations.NotNull;
import org.jspecify.annotations.NonNull;
import java.util.concurrent.ThreadFactory;
public class UpdateCheckThread implements ThreadFactory{
@Override
public Thread newThread(@NotNull Runnable r){
public Thread newThread(@NonNull Runnable r){
Thread t = new Thread(r, "AdvancedServerList-UpdateThread");
t.setDaemon(true);
return t;
@@ -40,7 +40,7 @@ public class PAPIUtil{
private static PAPIUtil instance;
private final ValueCache<CompletableFuture<Set<String>>> serversCache = new ValueCache<>(Duration.ofSeconds(10));
private final Cache<UUID, CompletableFuture<String>> textCache = CacheBuilder.newBuilder()
private final Cache<CacheKey, CompletableFuture<String>> textCache = CacheBuilder.newBuilder()
.expireAfterWrite(Duration.ofSeconds(10))
.build();
private final PlaceholderAPI papi;
@@ -84,9 +84,11 @@ public class PAPIUtil{
public String parse(String text, UUID carrier, UUID player){
try{
return textCache.get(player, () -> papi.formatPlaceholders(text, carrier, player)).getNow(text);
return textCache.get(new CacheKey(player, text), () -> papi.formatPlaceholders(text, carrier, player)).getNow(text);
}catch(ExecutionException ex){
return text;
}
}
private record CacheKey(UUID uuid, String text){}
}
@@ -48,7 +48,16 @@ public record ServerListProfile(int priority, String condition, ProfileEntry def
ParseWarnCollector collector = new ParseWarnCollector(condition);
PluginLogger logger = core.plugin().pluginLogger();
boolean result = core.parser().evaluate(condition, player, server, collector);
boolean result;
try{
result = core.parser().compileToBoolean(condition, collector, player, server);
}catch(Exception ex){
logger.warn("Encountered an Exception while parsing condition '%s'. Cause: %s", condition, ex.getMessage());
if(core.fileHandler().getBool(false, "debug"))
logger.warn("Stacktrace:", ex);
return false;
}
if(collector.hasWarnings()){
logger.warn("Encountered <white>%d</white> Error(s) while parsing condition for file '<white>%s</white>':", collector.getWarnings().size(), file);
@@ -70,7 +79,7 @@ public record ServerListProfile(int priority, String condition, ProfileEntry def
}
if(profiles.size() == 1)
return profiles.get(0); // No need to run a random for 1 profile.
return profiles.getFirst(); // No need to run a random for 1 profile.
synchronized(random){
return profiles.get(random.nextInt(profiles.size()));
@@ -25,16 +25,15 @@
package ch.andre601.advancedserverlist.core.profiles.conditions;
import ch.andre601.advancedserverlist.api.objects.GenericPlayer;
import ch.andre601.advancedserverlist.api.objects.GenericServer;
import ch.andre601.advancedserverlist.core.profiles.conditions.placeholders.reader.PlaceholderTokenReader;
import ch.andre601.advancedserverlist.core.profiles.conditions.placeholders.reader.PlaceholderValueReader;
import ch.andre601.advancedserverlist.core.profiles.conditions.placeholders.tokens.CustomExpressionTokenizer;
import ch.andre601.expressionparser.ExpressionParserEngine;
import ch.andre601.expressionparser.ParseWarnCollector;
import ch.andre601.expressionparser.expressions.ExpressionTokenizer;
import ch.andre601.expressionparser.operator.Operator;
import ch.andre601.expressionparser.parsers.ExpressionTemplateParser;
import ch.andre601.expressionparser.parsers.ValueReader;
import ch.andre601.expressionparser.templates.ConstantExpressionTemplate;
import ch.andre601.expressionparser.templates.ExpressionTemplate;
import ch.andre601.expressionparser.tokens.Token;
import ch.andre601.expressionparser.tokens.readers.TokenReader;
@@ -45,11 +44,11 @@ import java.util.List;
public class ProfileConditionParser implements ExpressionParserEngine{
private final CustomExpressionTokenizer tokenizer;
private final ExpressionTokenizer tokenizer;
private final ExpressionTemplateParser parser;
private ProfileConditionParser(List<TokenReader> tokenReaders, ImmutableMap<Token, Operator> operators, ImmutableList<ValueReader> valueReaders){
this.tokenizer = new CustomExpressionTokenizer(tokenReaders);
this.tokenizer = new ExpressionTokenizer(tokenReaders);
this.parser = new ExpressionTemplateParser(operators, valueReaders);
}
@@ -60,17 +59,13 @@ public class ProfileConditionParser implements ExpressionParserEngine{
.build();
}
public boolean evaluate(String text, GenericPlayer player, GenericServer server, ParseWarnCollector collector){
ExpressionTemplate result = parser.parse(tokenizer.parse(text, player, server, collector), collector);
if(result == null)
return false;
return result.returnBooleanExpression().evaluate();
}
@Override
public ExpressionTemplate compile(String s, ParseWarnCollector parseWarnCollector){
return null;
public ExpressionTemplate compile(String text, ParseWarnCollector collector, Object... args){
ExpressionTemplate result = parser.parse(tokenizer.parse(text, collector, args), collector);
if(result == null)
return ConstantExpressionTemplate.of(false);
return result;
}
private static class ProfileConditionParserBuilder extends ExpressionParserEngine.Builder<ProfileConditionParser>{
@@ -1,48 +0,0 @@
/*
* MIT License
*
* Copyright (c) 2022-2024 Andre_601
*
* 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 ch.andre601.advancedserverlist.core.profiles.conditions.placeholders.reader;
import ch.andre601.advancedserverlist.api.objects.GenericPlayer;
import ch.andre601.advancedserverlist.api.objects.GenericServer;
import ch.andre601.expressionparser.ParseWarnCollector;
import ch.andre601.expressionparser.tokens.Token;
import ch.andre601.expressionparser.tokens.readers.TokenReader;
import java.text.ParsePosition;
public abstract class CustomTokenReader extends TokenReader{
public CustomTokenReader(int priority){
super(priority);
}
@Override
public Token read(String text, ParsePosition position, ParseWarnCollector collector){
return null;
}
public abstract Token read(String text, ParsePosition position, GenericPlayer player, GenericServer server, ParseWarnCollector collector);
}
@@ -31,19 +31,38 @@ import ch.andre601.advancedserverlist.core.profiles.conditions.placeholders.toke
import ch.andre601.advancedserverlist.core.profiles.replacer.StringReplacer;
import ch.andre601.expressionparser.ParseWarnCollector;
import ch.andre601.expressionparser.tokens.Token;
import ch.andre601.expressionparser.tokens.readers.TokenReader;
import java.text.ParsePosition;
public class PlaceholderTokenReader extends CustomTokenReader{
public class PlaceholderTokenReader extends TokenReader{
public PlaceholderTokenReader(int priority){
super(priority);
}
@Override
public Token read(String text, ParsePosition position, GenericPlayer player, GenericServer server, ParseWarnCollector collector){
public Token read(String text, ParsePosition position, ParseWarnCollector collector, Object... args){
GenericPlayer player = null;
GenericServer server = null;
for(Object arg : args){
if(arg instanceof GenericPlayer pl){
player = pl;
}else
if(arg instanceof GenericServer srv){
server = srv;
}
}
if(player == null || server == null){
collector.appendWarning(position.getIndex(), "Received null GenericPlayer or GenericServer instance.");
return null;
}
if(position.getIndex() + 1 < text.length() && text.charAt(position.getIndex()) == '$' && text.charAt(position.getIndex() + 1) == '{'){
position.setIndex(position.getIndex() + 2);
return new PlaceholderToken(StringReplacer.parsePlaceholder(text, position, player, server, collector));
}
return null;
@@ -37,8 +37,8 @@ import java.util.List;
public class PlaceholderValueReader extends ValueReader{
@Override
public ExpressionTemplate read(ExpressionTemplateParser parser, List<Token> tokens, ParseWarnCollector collector){
if(tokens.get(0) instanceof PlaceholderToken){
PlaceholderToken token = (PlaceholderToken)tokens.remove(0);
if(tokens.getFirst() instanceof PlaceholderToken){
PlaceholderToken token = (PlaceholderToken)tokens.removeFirst();
return token.getValue();
}
return null;
@@ -1,92 +0,0 @@
/*
* MIT License
*
* Copyright (c) 2022-2024 Andre_601
*
* 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 ch.andre601.advancedserverlist.core.profiles.conditions.placeholders.tokens;
import ch.andre601.advancedserverlist.api.objects.GenericPlayer;
import ch.andre601.advancedserverlist.api.objects.GenericServer;
import ch.andre601.advancedserverlist.core.profiles.conditions.placeholders.reader.CustomTokenReader;
import ch.andre601.expressionparser.ParseWarnCollector;
import ch.andre601.expressionparser.tokens.Token;
import ch.andre601.expressionparser.tokens.readers.TokenReader;
import com.google.common.collect.Ordering;
import java.text.ParsePosition;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
public class CustomExpressionTokenizer{
private static final Ordering<TokenReader> TOKEN_READER_ORDERING = Ordering.from(Comparator.comparingInt(TokenReader::getPriority)).reverse();
private final List<TokenReader> tokenReaders;
public CustomExpressionTokenizer(Iterable<TokenReader> tokenReaders){
this.tokenReaders = TOKEN_READER_ORDERING.immutableSortedCopy(tokenReaders);
}
public List<Token> parse(String text, GenericPlayer player, GenericServer server, ParseWarnCollector collector){
ParsePosition position = new ParsePosition(0);
List<Token> tokens = new LinkedList<>();
next_token:
while(true){
while(position.getIndex() < text.length() && Character.isWhitespace(text.charAt(position.getIndex())))
position.setIndex(position.getIndex() + 1);
if(position.getIndex() >= text.length())
break;
for(TokenReader tokenReader : tokenReaders){
Token token;
if(tokenReader instanceof CustomTokenReader customTokenReader){
if(null != (token = customTokenReader.read(text, position, player, server, collector))){
tokens.add(token);
continue next_token;
}
}else{
if(null != (token = tokenReader.read(text, position, collector))){
tokens.add(token);
continue next_token;
}
}
}
if(position.getIndex() >= text.length()){
collector.appendWarningFormatted(
"Current index position (%d) is larger or equal to Text length (%d) for condition '%s'",
position.getIndex(), text.length(), text
);
}else{
collector.appendWarningFormatted(position.getIndex(), "Illegal Token '%c'.", text.charAt(position.getIndex()));
}
break;
}
return tokens;
}
}
@@ -220,7 +220,11 @@ public class FaviconHandler<F>{
logger.success("Loaded <white>%s</white> local Favicon(s).", localFavicons.size());
}catch(IOException ex){
logger.warn("Encountered IOException while loading local favicons.", ex);
if(core.fileHandler().getBool(false, "debug")){
logger.warn("Encountered IOException while loading local favicons.", ex);
}else{
logger.warn("Encountered IOException while loading local favicons. Reason: %s", ex.getMessage());
}
}
}
@@ -236,9 +240,17 @@ public class FaviconHandler<F>{
localFavicons.put(path.getFileName().toString().toLowerCase(Locale.ROOT), new FaviconPair<>(image, favicon));
}catch(IOException ex){
logger.warn("Encountered IOException while creating a Favicon from '%s'.", ex, path.getFileName().toString());
if(core.fileHandler().getBool(false, "debug")){
logger.warn("Encountered IOException while creating a Favicon from '%s'.", ex, path.getFileName().toString());
}else{
logger.warn("Encountered IOException while creating a Favicon from '%s'. Reason: %s", path.getFileName().toString(), ex.getMessage());
}
}catch(Exception ex){
logger.warn("Encountered an Exceotion while creating a Favicon from '%s'.", ex, path.getFileName().toString());
if(core.fileHandler().getBool(false, "debug")){
logger.warn("Encountered Exception while creating a Favicon from '%s'.", ex, path.getFileName().toString());
}else{
logger.warn("Encountered Exception while creating a Favicon from '%s'. Reason: %s", path.getFileName().toString(), ex.getMessage());
}
}
}
@@ -253,14 +265,29 @@ public class FaviconHandler<F>{
try(InputStream stream = client.send(request, HttpResponse.BodyHandlers.ofInputStream()).body()){
return createBufferedImage(stream);
}catch(IOException ex){
logger.warn("Encountered IOException while performing a web request for '%s'.", ex, url);
if(core.fileHandler().getBool(false, "debug")){
logger.warn("Encountered IOException while performing a web request for '%s'.", ex, url);
}else{
logger.warn("Encountered IOException while performing a web request for '%'. Reason: %s", url, ex.getMessage());
}
return null;
}catch(InterruptedException ex){
logger.warn("Encountered an InterruptedException while performing a web request for '%s'.", ex, url);
if(core.fileHandler().getBool(false, "debug")){
logger.warn("Encountered an InterruptedException while performing a web request for '%s'.", ex, url);
}else{
logger.warn("Encountered an InterruptedException while performing a web request for '%s'. Reason: %s", url, ex.getMessage());
}
return null;
}
}catch(URISyntaxException ex){
logger.warn("Received URISyntaxException for URL '%s'", ex, url);
if(core.fileHandler().getBool(false, "debug")){
logger.warn("Encountered an URISyntaxException while performing a web request for '%s'.", ex, url);
}else{
logger.warn("Encountered an URISyntaxException while performing a web request for '%s'. Reason: %s", url, ex.getMessage());
}
return null;
}
}
@@ -320,7 +347,11 @@ public class FaviconHandler<F>{
try{
return core.plugin().createFavicon(image);
}catch(Exception ex){
logger.warn("Encountered an Exception while trying to create a Favicon instance.", ex);
if(core.fileHandler().getBool(false, "debug")){
logger.warn("Encountered an Exception while trying to create a Favicon instance.", ex);
}else{
logger.warn("Encountered an Exception while trying to create a Favicon instance. Reason: %s", ex.getMessage());
}
return null;
}
}
@@ -25,11 +25,16 @@
package ch.andre601.advancedserverlist.core;
import ch.andre601.advancedserverlist.api.objects.GenericPlayer;
import ch.andre601.advancedserverlist.api.objects.GenericServer;
import ch.andre601.advancedserverlist.core.profiles.conditions.ProfileConditionParser;
import ch.andre601.expressionparser.ParseWarnCollector;
import org.jspecify.annotations.NonNull;
import org.jspecify.annotations.Nullable;
import org.junit.jupiter.api.Test;
import java.util.Map;
import java.util.UUID;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -39,13 +44,16 @@ public class ExpressionParserTests{
private final DummyPluginLogger logger = new DummyPluginLogger();
private final Map<String, Boolean> testValuesMap = getTestMap();
private final TestPlayer player = new TestPlayer();
private final TestServer server = new TestServer();
@Test
public void testBasicExpressionResults(){
for(Map.Entry<String, Boolean> values : testValuesMap.entrySet()){
logger.info("TEST[expression=\"%s\", expected=%b]", values.getKey(), values.getValue());
ParseWarnCollector collector = new ParseWarnCollector(values.getKey());
boolean result = parser.evaluate(values.getKey(), null, null, collector);
boolean result = parser.compileToBoolean(values.getKey(), collector, player, server);
logger.info("Result (Output, Expected?): %b, %b", result, (result == values.getValue()));
assertEquals(result, values.getValue());
@@ -66,4 +74,38 @@ public class ExpressionParserTests{
"false or 100 < 10", false
);
}
private static class TestPlayer implements GenericPlayer{
@Override
public @NonNull String getName(){
return "Lorem";
}
@Override
public int getProtocol(){
return 1;
}
@Override
public @NonNull UUID getUUID(){
return UUID.randomUUID();
}
}
private static class TestServer implements GenericServer{
@Override
public int getPlayersOnline(){
return 10;
}
@Override
public int getPlayersMax(){
return 20;
}
@Override
public @Nullable String getHost(){
return "play.example.com";
}
}
}
+2 -2
View File
@@ -473,7 +473,7 @@ faviconCacheTime: 1
#
# Setting any not listed option or leaving this blank/removing it sets the option to resize.
#
faviconStrategy: 'resize'
faviconResizeStrategy: 'resize'
#
# Options to disable while the Maintenance Plugin is present and Maintenance Mode is active.
@@ -543,7 +543,7 @@ disableDuringMaintenance:
# This is used internally to determine if the config needs to be migrated.
# Changing or even removing this option could result in your config being broken.
#
configVersion: 9
configVersion: 10
```
///
+11 -1
View File
@@ -128,4 +128,14 @@ Placeholders from PlaceholderAPI Expansions can be used in AdvancedServerList us
PlaceholderAPI placeholders can be used both on the Server (Paper) and on the proxy (BungeeCord, Velocity) version of AdvancedServerList.
However, the Proxy version requires the usage of [PAPIProxyBridge] to function properly.
Placeholders can also not be used within the [`condition`](options/condition.md) option of a Server List Profile.
Placeholders can also not be used within the [`condition`](options/condition.md) option of a Server List Profile.
## MiniPlaceholders
/// info | New since `v5.7.0`
///
Placeholders provided through [MiniPlaceholders](https://modrinth.com/plugin/miniplaceholders) are supported for all text options except [`condition`](options/condition.md).
Note that due to various limitations, only the `global` placeholders/tags - meaning ones that do not require a player - will work.
Support also only works for Paper and Velocity.
+5 -5
View File
@@ -78,7 +78,7 @@
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.21.7-R0.1-SNAPSHOT</version>
<version>[26.1.2.build,)</version>
<scope>provided</scope>
</dependency>
@@ -86,7 +86,7 @@
<dependency>
<groupId>org.bstats</groupId>
<artifactId>bstats-bukkit</artifactId>
<version>3.1.0</version>
<version>3.2.1</version>
<scope>compile</scope>
</dependency>
@@ -94,13 +94,13 @@
<dependency>
<groupId>me.clip</groupId>
<artifactId>placeholderapi</artifactId>
<version>2.11.7</version>
<version>2.12.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.viaversion</groupId>
<artifactId>viaversion-api</artifactId>
<version>5.7.0</version>
<version>5.9.0</version>
<scope>provided</scope>
</dependency>
@@ -141,7 +141,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.1</version>
<version>3.6.2</version>
<executions>
<execution>
<phase>package</phase>
@@ -35,11 +35,9 @@ import ch.andre601.advancedserverlist.core.objects.CachedPlayer;
import ch.andre601.advancedserverlist.core.parsing.ComponentParser;
import ch.andre601.advancedserverlist.core.profiles.replacer.StringReplacer;
import ch.andre601.advancedserverlist.paper.PaperCore;
import ch.andre601.advancedserverlist.paper.objects.FakePlayerProfile;
import ch.andre601.advancedserverlist.paper.objects.impl.PaperPlayerImpl;
import ch.andre601.advancedserverlist.paper.objects.impl.PaperServerImpl;
import com.destroystokyo.paper.event.server.PaperServerListPingEvent;
import com.destroystokyo.paper.profile.PlayerProfile;
import me.clip.placeholderapi.PlaceholderAPI;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
@@ -101,8 +99,7 @@ public class PaperEventWrapper implements GenericEventWrapper<CachedServerIcon,
Class.forName("com.destroystokyo.paper.event.server.PaperServerListPingEvent$ListedPlayerInfo");
setListedPlayers(lines, player, server);
}catch(ClassNotFoundException ex){
// Version before latest 1.20.6 builds(?)
setPlayerSample(lines, player, server);
plugin.pluginLogger().warn("playerCount -> hover is not supported on this Paper Version!");
}
}
@@ -112,7 +109,7 @@ public class PaperEventWrapper implements GenericEventWrapper<CachedServerIcon,
Class.forName("com.destroystokyo.paper.event.server.PaperServerListPingEvent$ListedPlayerInfo");
clearListedPlayers();
}catch(ClassNotFoundException ex){
clearPlayerSample();
plugin.pluginLogger().warn("playerCount -> hidePlayers is not supported on this Paper Version!");
}
}
@@ -206,19 +203,6 @@ public class PaperEventWrapper implements GenericEventWrapper<CachedServerIcon,
event.getListedPlayers().addAll(playerList);
}
@SuppressWarnings({"Deprecation", "removal"})
private void clearPlayerSample(){
event.getPlayerSample().clear();
}
@SuppressWarnings({"Deprecation", "removal"})
private void setPlayerSample(List<String> lines, PaperPlayerImpl player, GenericServer server){
clearPlayerSample();
List<PlayerProfile> playerProfiles = getPlayerList(lines, player, server, FakePlayerProfile::create);
event.getPlayerSample().addAll(playerProfiles);
}
private <T> List<T> getPlayerList(List<String> lines, PaperPlayerImpl player, GenericServer server, Function<String, T> function){
List<T> playerList = new ArrayList<>(lines.size());
for(String line : lines){
@@ -1,208 +0,0 @@
/*
* MIT License
*
* Copyright (c) 2022-2024 Andre_601
*
* 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 ch.andre601.advancedserverlist.paper.objects;
import com.destroystokyo.paper.profile.PlayerProfile;
import com.destroystokyo.paper.profile.ProfileProperty;
import org.bukkit.profile.PlayerTextures;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.net.URL;
import java.util.*;
import java.util.concurrent.CompletableFuture;
public record FakePlayerProfile(String name, UUID uuid) implements PlayerProfile{
public static FakePlayerProfile create(String name){
return new FakePlayerProfile(name, UUID.randomUUID());
}
@Override
public @Nullable UUID getUniqueId(){
return uuid();
}
@Override
public @Nullable String getName(){
return name();
}
@SuppressWarnings("removal")
@Override
public @NotNull String setName(@Nullable String name){
return name;
}
@Override
public @Nullable UUID getId(){
return null;
}
@SuppressWarnings("removal")
@Override
public @Nullable UUID setId(@Nullable UUID uuid){
return null;
}
@Override
public @NotNull PlayerTextures getTextures(){
return new FakePlayerTextures();
}
@Override
public void setTextures(@Nullable PlayerTextures textures){
}
@Override
public @NotNull Set<ProfileProperty> getProperties(){
return Collections.emptySet();
}
@Override
public boolean hasProperty(@Nullable String property){
return false;
}
@Override
public void setProperty(@NotNull ProfileProperty property){
}
@Override
public void setProperties(@NotNull Collection<ProfileProperty> properties){
}
@Override
public boolean removeProperty(@Nullable String property){
return false;
}
@Override
public void clearProperties(){
}
@Override
public boolean isComplete(){
return false;
}
@Override
public boolean completeFromCache(){
return false;
}
@Override
public boolean completeFromCache(boolean onlineMode){
return false;
}
@Override
public boolean completeFromCache(boolean lookupUUID, boolean onlineMode){
return false;
}
@Override
public boolean complete(boolean textures){
return false;
}
@Override
public boolean complete(boolean textures, boolean onlineMode){
return false;
}
@Override
public @NotNull CompletableFuture<PlayerProfile> update(){
return null;
}
@Override
public org.bukkit.profile.@NotNull PlayerProfile clone(){
return null;
}
@Override
public @NotNull Map<String, Object> serialize(){
return Collections.emptyMap();
}
private record FakePlayerTextures() implements PlayerTextures{
@Override
public boolean isEmpty(){
return false;
}
@Override
public void clear(){
}
@Override
public @Nullable URL getSkin(){
return null;
}
@Override
public void setSkin(@Nullable URL skinUrl){
}
@Override
public void setSkin(@Nullable URL skinUrl, @Nullable SkinModel skinModel){
}
@Override
public @NotNull SkinModel getSkinModel(){
return SkinModel.CLASSIC;
}
@Override
public @Nullable URL getCape(){
return null;
}
@Override
public void setCape(@Nullable URL capeUrl){
}
@Override
public long getTimestamp(){
return 0;
}
@Override
public boolean isSigned(){
return false;
}
}
}
@@ -41,7 +41,7 @@ import me.clip.placeholderapi.PlaceholderAPI;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jspecify.annotations.NonNull;
import java.util.Collections;
import java.util.List;
@@ -58,17 +58,17 @@ public class PAPIPlaceholders extends PlaceholderExpansion{
}
@Override
public @NotNull String getIdentifier(){
public @NonNull String getIdentifier(){
return "asl";
}
@Override
public @NotNull String getAuthor(){
public @NonNull String getAuthor(){
return "Andre601";
}
@Override
public @NotNull String getVersion(){
public @NonNull String getVersion(){
return plugin.core().version();
}
@@ -78,7 +78,7 @@ public class PAPIPlaceholders extends PlaceholderExpansion{
}
@Override
public String onPlaceholderRequest(Player pl, @NotNull String identifier){
public String onPlaceholderRequest(Player pl, @NonNull String identifier){
String host = pl.getVirtualHost() == null ? null : pl.getVirtualHost().getHostString();
CachedPlayer cached = plugin.core().playerHandler().getCachedPlayer(pl.getUniqueId());
+11 -11
View File
@@ -41,24 +41,24 @@
<project.build.build_id/>
<plugin.version>5.7.2</plugin.version>
<plugin.version>5.8.0</plugin.version>
<plugin.description>Create multiple Server lists based on conditions.</plugin.description>
<api.version>4.1.1</api.version>
<!-- Adventure versions -->
<dependency.adventure-api>4.26.1</dependency.adventure-api>
<dependency.adventure-text-minimessage>4.26.1</dependency.adventure-text-minimessage>
<dependency.adventure-text-serializer-legacy>4.26.1</dependency.adventure-text-serializer-legacy>
<dependency.adventure-api>5.0.1</dependency.adventure-api>
<dependency.adventure-text-minimessage>5.0.1</dependency.adventure-text-minimessage>
<dependency.adventure-text-serializer-legacy>5.0.1</dependency.adventure-text-serializer-legacy>
<dependency.adventure-platform-bungeecord>4.4.1</dependency.adventure-platform-bungeecord>
<!-- Configurate version -->
<dependency.configurate-yaml>4.2.0</dependency.configurate-yaml>
<!-- Cloud versions -->
<dependency.cloud-annotations>2.0.0</dependency.cloud-annotations>
<dependency.cloud-bungee>2.0.0-beta.14</dependency.cloud-bungee>
<dependency.cloud-paper>2.0.0-beta.14</dependency.cloud-paper>
<dependency.cloud-velocity>2.0.0-beta.14</dependency.cloud-velocity>
<dependency.cloud-minecraft-extras>2.0.0-beta.14</dependency.cloud-minecraft-extras>
<dependency.cloud-bungee>2.0.0-beta.15</dependency.cloud-bungee>
<dependency.cloud-paper>2.0.0-beta.15</dependency.cloud-paper>
<dependency.cloud-velocity>2.0.0-beta.15</dependency.cloud-velocity>
<dependency.cloud-minecraft-extras>2.0.0-beta.15</dependency.cloud-minecraft-extras>
</properties>
<profiles>
@@ -85,8 +85,8 @@
<url>https://codeberg.org/api/packages/Andre601/maven/</url>
</repository>
<repository>
<id>sonatype-snapshots</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
<id>alessiodp-snapshots</id>
<url>https://repo.alessiodp.com/snapshots/</url>
</repository>
</repositories>
@@ -96,7 +96,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.14.1</version>
<version>3.15.0</version>
<configuration>
<compilerArgs>
<arg>-parameters</arg>
View File
File renamed without changes.
+3 -2
View File
@@ -1,6 +1,7 @@
mkdocs-material==9.7.1
properdocs==1.6.7
mkdocs-material==9.7.6
mkdocs-glightbox==0.5.2
mkdocs-redirects==1.2.2
mkdocs-redirects==1.2.3
git+https://github.com/Andre601/mkdocs-pagenav-generator
mkdocs-macros-plugin==1.5.0
pygments-minimessage==1.0.0
+3 -3
View File
@@ -73,7 +73,7 @@
<dependency>
<groupId>com.velocitypowered</groupId>
<artifactId>velocity-api</artifactId>
<version>3.4.0-SNAPSHOT</version>
<version>3.4.0</version>
<scope>provided</scope>
</dependency>
@@ -81,7 +81,7 @@
<dependency>
<groupId>org.bstats</groupId>
<artifactId>bstats-velocity</artifactId>
<version>3.1.0</version>
<version>3.2.1</version>
<scope>compile</scope>
</dependency>
@@ -140,7 +140,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.1</version>
<version>3.6.2</version>
<executions>
<execution>
<phase>package</phase>
+5 -5
View File
@@ -46,19 +46,19 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.13.2</version>
<version>2.14.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.23</version>
<version>1.5.32</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.6</version>
<version>5.6.1</version>
<scope>compile</scope>
</dependency>
<dependency>
@@ -93,7 +93,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.14.1</version>
<version>3.15.0</version>
<configuration>
<release>16</release>
</configuration>
@@ -115,7 +115,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.1</version>
<version>3.6.2</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>