Skip to content

Commit 0a346f4

Browse files
committed
Merge branch 'master' into standalone-mode
# Conflicts: # Plan/common/src/main/java/com/djrapitops/plan/delivery/export/NetworkPageExporter.java # Plan/common/src/main/java/com/djrapitops/plan/delivery/export/PlayersPageExporter.java # Plan/common/src/main/java/com/djrapitops/plan/delivery/export/ServerPageExporter.java # Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/json/JSONFactory.java # Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/json/graphs/GraphJSONCreator.java # Plan/common/src/main/java/com/djrapitops/plan/delivery/web/ResourceSvc.java # Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/resolver/json/theme/SaveThemeJSONResolver.java # Plan/common/src/main/java/com/djrapitops/plan/gathering/events/PlayerJoinEventConsumer.java # Plan/common/src/main/java/com/djrapitops/plan/storage/database/SQLDB.java # Plan/common/src/main/java/com/djrapitops/plan/storage/file/PlanFiles.java # Plan/common/src/test/java/com/djrapitops/plan/delivery/webserver/AccessControlVisibilityTest.java # Plan/common/src/test/java/com/djrapitops/plan/gathering/geolocation/GeolocationTest.java # Plan/fabric/src/main/java/net/playeranalytics/plan/commands/FabricCommandManager.java # Plan/plugin/build.gradle # Plan/react/dashboard/src/components/cards/server/values/ServerAsNumbersCard.jsx # Plan/react/dashboard/src/components/table/OnlineActivityAsNumbersTable.jsx
2 parents b774e3a + 0449b5f commit 0a346f4

853 files changed

Lines changed: 29884 additions & 11655 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/dependabot.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,9 @@ updates:
3333
fontawesome:
3434
patterns:
3535
- "@fortawesome/*"
36-
36+
fullcalendar:
37+
patterns:
38+
- "@fullcalendar/*"
39+
reactcolorwheel:
40+
patterns:
41+
- "@uiw/*"

.github/workflows/ci.yml

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323

2424
services:
2525
mariadb:
26-
image: mariadb:11.1-rc
26+
image: mariadb:11
2727
ports:
2828
- 3306
2929
env:
@@ -36,25 +36,28 @@ jobs:
3636
steps:
3737
- if: ${{ github.event_name == 'push' }}
3838
name: 📥 Checkout git repository
39-
uses: actions/checkout@v4
39+
uses: actions/checkout@v6
4040
with:
4141
fetch-depth: 0
4242

4343
- if: ${{ github.event_name == 'pull_request' }}
4444
name: 📥 Checkout git repository
45-
uses: actions/checkout@v4
45+
uses: actions/checkout@v6
4646
with:
4747
fetch-depth: 0
4848
ref: ${{ github.event.pull_request.head.sha }}
4949

5050
- name: ☕ Setup JDK
51-
uses: actions/setup-java@v4
51+
uses: actions/setup-java@v5
5252
with:
5353
distribution: 'temurin'
54-
java-version: '21'
54+
java-version: '25'
5555
- name: 💼 Setup Gradle
5656
uses: gradle/actions/setup-gradle@v4
57-
- name: 🛠 Build jars
57+
- name: 🛠 Build jars
58+
env:
59+
npm_config_ignore_scripts: true
60+
YARN_ENABLE_SCRIPTS: false
5861
run: |
5962
cd Plan
6063
./gradlew build -x test
@@ -68,15 +71,17 @@ jobs:
6871
echo "versionString=$(cat build/versions/jar.txt)" >> $GITHUB_ENV
6972
echo "artifactPath=$(pwd)/builds" >> $GITHUB_ENV
7073
- name: 📤 Upload Plan.jar
71-
uses: actions/upload-artifact@v4
74+
uses: actions/upload-artifact@v7
7275
with:
7376
name: Plan-${{ env.versionString }}-${{ env.git_hash }}.jar
7477
path: ${{ env.artifactPath }}/Plan-${{ env.snapshotVersion }}.jar
78+
archive: false
7579
- name: 📤 Upload PlanFabric.jar
76-
uses: actions/upload-artifact@v4
80+
uses: actions/upload-artifact@v7
7781
with:
7882
name: PlanFabric-${{ env.versionString }}-${{ env.git_hash }}.jar
7983
path: ${{ env.artifactPath }}/PlanFabric-${{ env.snapshotVersion }}.jar
84+
archive: false
8085
- name: 🚦 Setup Selenium Webdriver
8186
uses: nanasess/setup-chromedriver@v2
8287
- name: 🚦 Setup Selenium Webdriver settings
@@ -100,14 +105,19 @@ jobs:
100105
- name: 🩺 Test
101106
env:
102107
MYSQL_DB: test
103-
MYSQL_USER: user
108+
MYSQL_USER: root
104109
MYSQL_PASS: password
105110
MYSQL_PORT: ${{ job.services.mariadb.ports[3306] }}
106111
CHROMEDRIVER: /usr/local/bin/chromedriver
112+
npm_config_ignore_scripts: true
113+
YARN_ENABLE_SCRIPTS: false
107114
run: |
108115
cd Plan
109116
./gradlew build
110117
- name: 🖨 Build Javadocs
118+
env:
119+
npm_config_ignore_scripts: true
120+
YARN_ENABLE_SCRIPTS: false
111121
run: |
112122
cd Plan
113123
echo "Building javadocs with gradle"
@@ -133,6 +143,8 @@ jobs:
133143
env:
134144
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
135145
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
146+
npm_config_ignore_scripts: true
147+
YARN_ENABLE_SCRIPTS: false
136148
run: |
137149
cd Plan
138150
./gradlew sonar -Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=player-analytics-plan

.github/workflows/issues.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
if: github.event_name == 'issues' && github.event.action == 'opened'
2020
steps:
2121
- name: Add issue to ${{ env.inbox }}
22-
uses: leonsteinhaeuser/project-beta-automations@v1.2.1
22+
uses: leonsteinhaeuser/project-beta-automations@v2.2.1
2323
with:
2424
gh_token: ${{ secrets.GITHUB_TOKEN }}
2525
organization: plan-player-analytics

.github/workflows/on-release.yml

Lines changed: 127 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
runs-on: ubuntu-latest
1111
steps:
1212
- name: Checkout 🛎️
13-
uses: actions/checkout@v3
13+
uses: actions/checkout@v6
1414
- name: Get Download URL
1515
run: |
1616
curl 'https://api.github.com/repos/plan-player-analytics/plan/releases/${{ github.event.release.id }}/assets' | jq -r '.[] | {name: .name, url: .browser_download_url} | select(.url | strings | test("Fabric") | not)' > asset.txt
@@ -29,7 +29,7 @@ jobs:
2929
cat versions.txt > temp.txt
3030
cat release_line.txt temp.txt > versions.txt
3131
- name: Commit and push changes
32-
uses: EndBug/add-and-commit@v9
32+
uses: EndBug/add-and-commit@v10
3333
with:
3434
committer_name: GitHub Actions
3535
committer_email: 41898282+github-actions[bot]@users.noreply.github.com
@@ -43,7 +43,7 @@ jobs:
4343

4444
steps:
4545
- name: Checkout 🛎️
46-
uses: actions/checkout@v3
46+
uses: actions/checkout@v6
4747
- name: Get git TAG
4848
id: tagName
4949
uses: olegtarasov/get-tag@v2.1
@@ -54,7 +54,7 @@ jobs:
5454
cp -r Plan/common/src/main/resources/assets/plan workingdir/Plan/src/main/resources/assets/plan
5555
cp -r Plan/react/dashboard workingdir/react/dashboard
5656
- name: Deploy 🚀
57-
uses: JamesIves/github-pages-deploy-action@4.0.0
57+
uses: JamesIves/github-pages-deploy-action@v4
5858
with:
5959
branch: html # The branch the action should deploy to.
6060
folder: workingdir # The folder the action should deploy.
@@ -64,38 +64,33 @@ jobs:
6464
name: Ore Upload
6565
runs-on: ubuntu-latest
6666
steps:
67+
- name: Checkout 🛎️
68+
uses: actions/checkout@v6
69+
with:
70+
fetch-depth: 0
6771
- name: Download release artifact for upload
6872
run: |
6973
curl 'https://api.github.com/repos/plan-player-analytics/plan/releases/${{ github.event.release.id }}/assets' | jq -r '.[] | {name: .name, url: .browser_download_url} | select(.url | strings | test("Fabric") | not)' > asset.txt
7074
jq -r '.url' asset.txt > url.txt
7175
jq -r '.name' asset.txt > name.txt
7276
wget -i url.txt
73-
echo "JAR_FILENAME=$(cat name.txt)" >> $GITHUB_ENV
74-
- name: Upload artifact for ore upload
75-
uses: actions/upload-artifact@v3
76-
with:
77-
name: ${{ github.event.release.name }}
78-
path: ${{ env.JAR_FILENAME }}
79-
- name: Upload release to Ore 🚀
80-
if: ${{ github.event.release.prerelease == false }}
81-
uses: dualspiral/ore-upload-action@v2
82-
with:
83-
plugin: ${{ github.event.release.name }}
84-
description: ${{ github.event.release.body }}
85-
apiKey: ${{ secrets.ORE_API_TOKEN }}
86-
channel: Release
87-
pluginId: plan
88-
createForumPost: true
89-
- name: Upload DEV release to Ore 🚀
90-
if: ${{ github.event.release.prerelease == true }}
91-
uses: dualspiral/ore-upload-action@v1
77+
echo "RELEASE_JAR_PATH=$(pwd)/$(cat name.txt)" >> $GITHUB_ENV
78+
- name: Setup JDK
79+
uses: actions/setup-java@v5
9280
with:
93-
plugin: ${{ github.event.release.name }}
94-
description: ${{ github.event.release.body }}
95-
apiKey: ${{ secrets.ORE_API_TOKEN }}
96-
channel: DEV
97-
pluginId: plan
98-
createForumPost: false
81+
distribution: 'temurin'
82+
java-version: '25'
83+
- name: Publish release to Ore 🚀
84+
env:
85+
ORE_TOKEN: ${{ secrets.ORE_API_TOKEN }}
86+
RELEASE_CHANGELOG: ${{ github.event.release.body }}
87+
RELEASE_PRERELEASE: ${{ github.event.release.prerelease }}
88+
RELEASE_JAR_PATH: ${{ env.RELEASE_JAR_PATH }}
89+
npm_config_ignore_scripts: true
90+
YARN_ENABLE_SCRIPTS: false
91+
run: |
92+
cd Plan
93+
./gradlew :plugin:publishToOre
9994
10095
upload_release_curseforge:
10196
name: CurseForge Upload
@@ -119,7 +114,7 @@ jobs:
119114
changelog: ${{ github.event.release.body }}
120115
changelog_type: markdown
121116
display_name: ${{ github.event.release.name }}
122-
game_versions: "Java 21,1.21.3,Fabric"
117+
game_versions: "2:Java 25,86297:26.2,68441:Fabric"
123118
release_type: release
124119
relations: fabric-api:requiredDependency,luckperms:optionalDependency
125120
- name: Upload prerelease to CurseForge 🚀
@@ -133,6 +128,107 @@ jobs:
133128
changelog: ${{ github.event.release.body }}
134129
changelog_type: markdown
135130
display_name: ${{ github.event.release.name }}
136-
game_versions: "Java 21,1.21.3,Fabric"
131+
game_versions: "2:Java 25,83806:26.1,68441:Fabric"
137132
release_type: beta
138133
relations: fabric-api:requiredDependency,luckperms:optionalDependency
134+
135+
upload_release_hangar:
136+
name: Hangar Upload
137+
runs-on: ubuntu-latest
138+
steps:
139+
- name: 📥 Checkout git repository
140+
uses: actions/checkout@v6
141+
with:
142+
fetch-depth: 0
143+
- name: ⚙ Get Download URL
144+
run: |
145+
curl 'https://api.github.com/repos/plan-player-analytics/plan/releases/${{ github.event.release.id }}/assets' | jq -r '.[] | {name: .name, url: .browser_download_url} | select(.url | strings | test("Fabric") | not)' > asset.txt
146+
jq -r '.url' asset.txt > url.txt
147+
echo "RELEASE_DOWNLOAD_URL=$(cat url.txt)" >> $GITHUB_ENV
148+
- name: ☕ Setup JDK
149+
uses: actions/setup-java@v5
150+
with:
151+
distribution: 'temurin'
152+
java-version: '25'
153+
- name: Publish release to Hangar 🚀
154+
env:
155+
HANGAR_API_TOKEN: ${{ secrets.HANGAR_API_TOKEN }}
156+
RELEASE_CHANGELOG: ${{ github.event.release.body }}
157+
RELEASE_PRERELEASE: ${{ github.event.release.prerelease }}
158+
RELEASE_DOWNLOAD_URL: ${{ env.RELEASE_DOWNLOAD_URL }}
159+
npm_config_ignore_scripts: true
160+
YARN_ENABLE_SCRIPTS: false
161+
run: |
162+
cd Plan
163+
./gradlew :plugin:publishPluginPublicationToHangar
164+
165+
upload_release_modrinth:
166+
name: Modrinth Upload
167+
runs-on: ubuntu-latest
168+
steps:
169+
- name: Calculate formatted version
170+
run: |
171+
TAG_NAME="${{ github.event.release.tag_name }}"
172+
# 5.7.xxxx -> 5.7+build.xxxx
173+
FORMATTED_VERSION=$(echo "$TAG_NAME" | sed -r 's/([0-9]+\.[0-9]+)\.(.*)/\1+build.\2/')
174+
echo "FORMATTED_VERSION=$FORMATTED_VERSION" >> $GITHUB_ENV
175+
- name: Download release artifacts for upload
176+
run: |
177+
# Fetch all assets
178+
curl 'https://api.github.com/repos/plan-player-analytics/plan/releases/${{ github.event.release.id }}/assets' > all_assets.json
179+
180+
# Download regular JAR (non-Fabric)
181+
jq -r '.[] | {name: .name, url: .browser_download_url} | select(.url | strings | test("Fabric") | not)' all_assets.json > asset_regular.txt
182+
jq -r '.url' asset_regular.txt > url_regular.txt
183+
jq -r '.name' asset_regular.txt > name_regular.txt
184+
wget -i url_regular.txt
185+
echo "REGULAR_JAR=$(cat name_regular.txt)" >> $GITHUB_ENV
186+
187+
# Download Fabric JAR
188+
jq -r '.[] | {name: .name, url: .browser_download_url} | select(.url | strings | test("Fabric"))' all_assets.json > asset_fabric.txt
189+
jq -r '.url' asset_fabric.txt > url_fabric.txt
190+
jq -r '.name' asset_fabric.txt > name_fabric.txt
191+
wget -i url_fabric.txt
192+
echo "FABRIC_JAR=$(cat name_fabric.txt)" >> $GITHUB_ENV
193+
194+
- name: Modrinth Upload - Plugin 🚀
195+
uses: Kira-NT/mc-publish@v3.3
196+
with:
197+
modrinth-id: wJQfHhxh
198+
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
199+
files: ${{ env.REGULAR_JAR }}
200+
name: ${{ github.event.release.name }}
201+
version: ${{ env.FORMATTED_VERSION }}
202+
changelog: ${{ github.event.release.body }}
203+
loaders: |
204+
bukkit
205+
spigot
206+
paper
207+
folia
208+
purpur
209+
bungeecord
210+
waterfall
211+
velocity
212+
sponge
213+
nukkit
214+
game-versions: |
215+
>=1.13
216+
version-type: ${{ github.event.release.prerelease && 'beta' || 'release' }}
217+
218+
- name: Modrinth Upload - Fabric 🚀
219+
uses: Kira-NT/mc-publish@v3.3
220+
with:
221+
modrinth-id: plan
222+
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
223+
files: ${{ env.FABRIC_JAR }}
224+
name: ${{ github.event.release.name }}
225+
version: ${{ env.FORMATTED_VERSION }}+fabric
226+
changelog: ${{ github.event.release.body }}
227+
loaders: |
228+
fabric
229+
game-versions: |
230+
>=26.2
231+
version-type: ${{ github.event.release.prerelease && 'beta' || 'release' }}
232+
dependencies: |
233+
P7dR8mSH(required)
234+
Vebnzrzj(optional)

Plan/api/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ compileJava {
1111
options.release = 8
1212
}
1313

14-
def apiVersion = "5.7-R0.1"
14+
def apiVersion = "5.7-R0.2"
1515

1616
publishing {
1717
repositories {

Plan/api/src/main/java/com/djrapitops/plan/delivery/web/resolver/request/URIQuery.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.HashMap;
2727
import java.util.Map;
2828
import java.util.Optional;
29+
import java.util.function.Function;
2930

3031
/**
3132
* Represents URI parameters described with {@code ?param=value&param2=value2} in the URL.
@@ -98,6 +99,10 @@ public Optional<String> get(String key) {
9899
return Optional.ofNullable(byKey.get(key));
99100
}
100101

102+
public <T> Optional<T> get(String key, Function<String, T> function) {
103+
return get(key).map(function);
104+
}
105+
101106
public String asString() {
102107
if (byKey.isEmpty()) return "";
103108

Plan/api/src/main/java/com/djrapitops/plan/extension/CallEvents.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ public enum CallEvents {
3737
* Method calls are asynchronous.
3838
*/
3939
PLAYER_JOIN,
40+
/**
41+
* This event represents call to player methods while player is online.
42+
* <p>
43+
* The call is made periodically from an async task.
44+
*/
45+
PLAYER_PERIODICAL,
4046
/**
4147
* This event represents a call to player methods on a Player Leave event.
4248
* <p>

0 commit comments

Comments
 (0)