Compare commits

...

76 Commits

Author SHA1 Message Date
Klop233
26e43dfa5e update 2024-04-13 14:23:29 +08:00
Klop233
b864a85580 update 2024-04-13 09:28:53 +08:00
Klop233
73f8597df2 update 2024-04-13 09:27:47 +08:00
Klop233
2a846bf4d4 update 2024-04-13 09:15:03 +08:00
Klop233
6397d020c4 update 2024-04-13 09:07:58 +08:00
Klop233
349f9e5d5c update 2024-04-13 08:58:28 +08:00
Klop233
ef174a74fa update 2024-04-13 08:44:29 +08:00
Klop233
14a522ea08 update 2024-04-13 08:39:24 +08:00
Klop233
3f5c5e538e update 2024-04-13 08:26:20 +08:00
Klop233
a83c72b524 绝对没问题 2024-04-13 08:24:25 +08:00
Klop233
6f14faa97a 绝对没问题 2024-04-13 00:17:36 +08:00
Klop233
7dd69685dc 绝对没问题 2024-04-13 00:06:08 +08:00
Klop233
f5b16a4008 绝对没问题 2024-04-12 23:42:23 +08:00
Klop233
f2ba98ad1f 绝对没问题 2024-04-12 23:24:24 +08:00
Klop233
07e3a81416 Update CI 2024-04-12 23:09:49 +08:00
Klop233
6a356d0425 Update CI 2024-04-12 22:34:23 +08:00
Klop233
4aaa3151a2 Update CI 2024-04-12 22:10:55 +08:00
Klop233
ecb74fc530 Merge remote-tracking branch 'origin/ver/1.20.4' into ver/1.20.4 2024-04-12 22:00:13 +08:00
Klop233
6339b2adc1 Update CI 2024-04-12 21:59:58 +08:00
MrHua269
b66b10a975 Rebase patches 2024-04-12 13:59:49 +00:00
MrHua269
88b6ffe408 Diff changes 2024-04-12 13:59:43 +00:00
MrHua269
9f4fbce072 Merge remote-tracking branch 'origin/ver/1.20.4' into ver/1.20.4 2024-04-12 13:49:40 +00:00
MrHua269
0c98279ef1 Rewrite linear region flush task dispatching 2024-04-12 13:49:22 +00:00
Klop233
cc593b53e2 Update CI 2024-04-12 21:40:57 +08:00
Klop233
3b838086e9 Update CI 2024-04-12 21:26:42 +08:00
Klop233
9f0574db9f Update CI 2024-04-12 21:14:15 +08:00
Klop233
705170d111 Update CI 2024-04-12 20:48:27 +08:00
Klop233
5fdb14947b Update CI 2024-04-12 20:34:39 +08:00
Klop233
d66ce6fb87 Update CI 2024-04-12 20:23:35 +08:00
Klop233
b81eb1857c Update CI 2024-04-12 20:08:32 +08:00
Klop233
cc0312cd76 update CI 2024-04-12 19:52:41 +08:00
Klop233
3313ff7c61 update CI 2024-04-12 19:52:07 +08:00
Klop233
06a87833f3 update CI 2024-04-12 19:51:19 +08:00
Klop233
6d39abe168 update CI 2024-04-12 19:45:36 +08:00
Klop233
9243eea30b update CI 2024-04-12 19:40:30 +08:00
Klop233
1334c291e5 update CI 2024-04-12 19:25:45 +08:00
Klop233
bd1178911d update CI 2024-04-12 19:03:54 +08:00
Klop233
41a500a5ad Merge remote-tracking branch 'origin/ver/1.20.4' into ver/1.20.4 2024-04-12 18:46:57 +08:00
Klop233
a1ba257238 update CI 2024-04-12 18:46:28 +08:00
ShintoKosei
a40d934630 UPDATE CI 2024-04-06 23:18:23 +08:00
ShintoKosei
79b6b41b63 Jump Build To Debug CI <14> 2024-04-06 23:16:27 +08:00
ShintoKosei
52ab368069 Jump Build To Debug CI <13> 2024-04-06 23:15:21 +08:00
ShintoKosei
0bfac95070 Jump Build To Debug CI <12> 2024-04-06 22:35:25 +08:00
ShintoKosei
c69ed4279e Jump Build To Debug CI <11> 2024-04-06 22:34:17 +08:00
ShintoKosei
127aa3728a Jump Build To Debug CI <10> 2024-04-06 22:32:59 +08:00
ShintoKosei
1e7b4394ac Jump Build To Debug CI <9> 2024-04-06 22:30:17 +08:00
ShintoKosei
f129a1e860 Jump Build To Debug CI <8> 2024-04-06 22:23:51 +08:00
ShintoKosei
922a85f662 Update CI 2024-04-06 22:06:15 +08:00
ShintoKosei
d13bfadde4 Jump Build To Debug CI <8> 2024-04-06 22:02:55 +08:00
ShintoKosei
88aab8eadc Jump Build To Debug CI <7> 2024-04-06 22:00:28 +08:00
ShintoKosei
8914d3fcbc Jump Build To Debug CI <6> 2024-04-06 21:58:57 +08:00
ShintoKosei
d2f2ea4382 Jump Build To Debug CI <5> 2024-04-06 21:49:51 +08:00
ShintoKosei
a6888b27d0 Jump Build To Debug CI <4> 2024-04-06 21:30:20 +08:00
ShintoKosei
efabe850e0 Jump Build To Debug CI <3> 2024-04-06 21:29:40 +08:00
ShintoKosei
6c6786792f Jump Build To Debug CI <2> 2024-04-06 21:29:00 +08:00
ShintoKosei
dddb28fdf6 Jump Build To Debug CI <1> 2024-04-06 21:28:13 +08:00
ShintoKosei
8546ac56e2 More Fix CI 2024-04-06 21:12:48 +08:00
ShintoKosei
2c09274132 Fix CI 2024-04-06 20:58:34 +08:00
ShintoKosei
a9238f8e8e Update CI 2024-04-06 20:29:43 +08:00
ShintoKosei
7522e3c67b Update CI 2024-04-06 18:40:49 +08:00
ShintoKosei
71a7127bb1 Update CI 2024-04-06 18:13:22 +08:00
ShintoKosei
75266cceed Update CI 2024-04-06 17:44:45 +08:00
Klop233
8a292a655a update CI 2024-04-06 17:26:39 +08:00
Klop233
a0779956f1 update CI 2024-04-06 17:16:17 +08:00
Klop233
1de9ca9d5f update CI 2024-04-06 17:05:59 +08:00
Klop233
bc842c855a update CI 2024-04-06 17:03:35 +08:00
Klop233
120ddafc2f update CI 2024-04-06 16:56:25 +08:00
Klop233
3b1a8cc929 update CI 2024-04-06 16:44:12 +08:00
ShintoKosei
2914a219e2 update ci 2024-04-06 16:32:40 +08:00
ShintoKosei
07bbbd3d7e update ci 2024-04-06 16:21:50 +08:00
Klop233
e69cf4c9ec Update README.md 2024-04-06 16:13:21 +08:00
ShintoKosei
6b679bc02e [ci skip]Update CI 2024-04-06 16:10:40 +08:00
ShintoKosei
124a240fe9 [ci skip]update API.sh 2024-04-06 15:53:49 +08:00
ShintoKosei
e8b9aaee48 [ci skip]change gradle.properties: pre 2024-04-06 15:52:36 +08:00
ShintoKosei
eb3502eb86 [ci skip]Change file name 2024-04-06 15:29:18 +08:00
ShintoKosei
bdd41593e0 [ci skip]Add CI v2 2024-04-06 15:18:39 +08:00
8 changed files with 173 additions and 27 deletions

View File

@@ -37,7 +37,7 @@ jobs:
- name: Build project to paperclip jar
uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0
with:
arguments: createReobfPaperclipJar
arguments: createReobfBundlerJar createReobfPaperclipJar
- name: Capture build artifacts
uses: actions/upload-artifact@v3
with:

64
.github/workflows/build_1_20_4_v2.yml vendored Normal file
View File

@@ -0,0 +1,64 @@
name: Luminol CI v2 - Ver/1.20.4
on:
push:
branches: [ "ver/1.20.4" ]
pull_request:
branches: [ "ver/1.20.4" ]
# workflow_dispatch:
permissions: write-all
jobs:
build:
runs-on: ubuntu-latest
environment: default
steps:
- name: Checkout Git Repository
uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Setup Git Config
run: |
git config --global user.email "ci@luminolmc.com"
git config --global user.name "Luminol CI"
- name: Apply Patches
run: ./gradlew applyPatches
- name: Build
run: ./gradlew createReobfBundlerJar createReobfPaperclipJar
- uses: "actions/upload-artifact@v3"
with:
name: "Luminol CI Artifacts"
path: "build/libs/*.jar"
- name: Rename jar file
run: |
mv build/libs/luminol-bundler-1.20.4-R0.1-SNAPSHOT-reobf.jar build/libs/luminol-1.20.4-bundler.jar
mv build/libs/luminol-paperclip-1.20.4-R0.1-SNAPSHOT-reobf.jar build/libs/luminol-1.20.4-paperclip.jar
- name: setenv
run: |
sh scripts/SetENV.sh
echo "${{ env.tag }}"
- name: Create Release
if: "!contains(github.event.commits[0].message, '[release-skip]')"
uses: ncipollo/release-action@v1.12.0
with:
tag: ${{ env.tag }}
name: Luminol ${{ env.mcversion }} - ${{ env.commitid }}
body: |
📦Version: `${{ env.mcversion }}` | Commit ${{ env.commitid }} [![download](https://img.shields.io/github/downloads/LuminolMC/Luminol/${{ env.tag }}/total?color=0)](https://github.com/LeavesMC/LuminolMC/Luminol/download/${{ env.tag }}/luminol-1.20.4-paperclip.jar)
This release is automatically compiled by GitHub Actions
artifacts: |
build/libs/luminol-1.20.4-bundler.jar
build/libs/luminol-1.20.4-paperclip.jar
generateReleaseNotes: true
prerelease: ${{ env.pre }}
makeLatest: ${{ env.make_latest }}
token: "${{ secrets.GITHUB_TOKEN }}"
- name: Push to Api
if: "!contains(github.event.commits[0].message, '[release-skip]')"
env:
secret_v2: ${{ secrets.API_KEY }}
tag: ${{ env.tag }}
run: sh scripts/PushToAPI.sh

View File

@@ -74,3 +74,4 @@ QQ群: [368632360](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=MfosKhcDd8Fdxn1MREu
<img alt="Star历史表" src="https://api.star-history.com/svg?repos=LuminolMC/Luminol%2CLuminolMC/LightingLuminol&type=Date" />
</picture>
</a>

View File

@@ -7,3 +7,7 @@ org.gradle.caching = true
org.gradle.parallel = true
org.gradle.vfs.watch = false
org.gradle.jvmargs = -Xmx3G
mcVersion=1.20.4
GroupMCV=1.20
preVersion=false

View File

@@ -93,10 +93,10 @@ index 0000000000000000000000000000000000000000..dcfbabf54b19a4c29d5c95830242c5c2
+}
diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java
new file mode 100644
index 0000000000000000000000000000000000000000..e40989889f3821bb7484fc0bae5d94b033013904
index 0000000000000000000000000000000000000000..dc5a5f42c9ca7a50295c18424722568a3ad33fa5
--- /dev/null
+++ b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java
@@ -0,0 +1,316 @@
@@ -0,0 +1,324 @@
+package dev.kaiijumc.kaiiju.region;
+
+import com.github.luben.zstd.ZstdInputStream;
@@ -225,7 +225,7 @@ index 0000000000000000000000000000000000000000..e40989889f3821bb7484fc0bae5d94b0
+ }
+
+ public void flush() throws IOException {
+ if (isMarkedToSave()) flushWrapper(); // sync
+ if (getAndResetSaveMarker()) flushWrapper(); // sync
+ }
+
+ private void markToSave() {
@@ -233,10 +233,18 @@ index 0000000000000000000000000000000000000000..e40989889f3821bb7484fc0bae5d94b0
+ markedToSave.set(true);
+ }
+
+ public boolean isMarkedToSave() {
+ public boolean getAndResetSaveMarker() {
+ return markedToSave.getAndSet(false);
+ }
+
+ public boolean isMarkedToSave(){
+ return this.markedToSave.get();
+ }
+
+ public void resetSaveMarker(){
+ this.markedToSave.set(false);
+ }
+
+ public void flushWrapper() {
+ try {
+ save();
@@ -415,24 +423,21 @@ index 0000000000000000000000000000000000000000..e40989889f3821bb7484fc0bae5d94b0
+}
diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java
new file mode 100644
index 0000000000000000000000000000000000000000..f06d7767c79e465f999b2032086cc224de95152a
index 0000000000000000000000000000000000000000..65435eb666b2e1cabffc145e016faa5e3b373464
--- /dev/null
+++ b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java
@@ -0,0 +1,44 @@
@@ -0,0 +1,57 @@
+package dev.kaiijumc.kaiiju.region;
+
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
+import java.util.Queue;
+
+import java.util.Set;
+import java.util.concurrent.*;
+import org.bukkit.Bukkit;
+
+public class LinearRegionFileFlusher {
+ private final Queue<LinearRegionFile> savingQueue = new LinkedBlockingQueue<>();
+ private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(
+ new ThreadFactoryBuilder()
+ .setNameFormat("linear-flush-scheduler")
+ .build()
+ );
+ private final Set<LinearRegionFile> pendingSaving = ConcurrentHashMap.newKeySet();
+
+ private final ExecutorService executor = Executors.newFixedThreadPool(
+ me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushThreads,
+ new ThreadFactoryBuilder()
@@ -440,27 +445,43 @@ index 0000000000000000000000000000000000000000..f06d7767c79e465f999b2032086cc224
+ .build()
+ );
+
+ private final Executor delayedFlusher = CompletableFuture.delayedExecutor(
+ me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushFrequency,
+ TimeUnit.SECONDS,
+ executor
+ );
+
+ public LinearRegionFileFlusher() {
+ Bukkit.getLogger().info("Using " + me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushThreads + " threads for linear region flushing.");
+ scheduler.scheduleAtFixedRate(this::pollAndFlush, 0L, me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushFrequency, TimeUnit.SECONDS);
+ }
+
+ public void scheduleSave(LinearRegionFile regionFile) {
+ if (savingQueue.contains(regionFile)) return;
+ savingQueue.add(regionFile);
+ if (this.pendingSaving.contains(regionFile) || !regionFile.isMarkedToSave()){
+ return;
+ }
+
+ private void pollAndFlush() {
+ while (!savingQueue.isEmpty()) {
+ LinearRegionFile regionFile = savingQueue.poll();
+ if (!regionFile.closed && regionFile.isMarkedToSave())
+ executor.execute(regionFile::flushWrapper);
+ this.pendingSaving.add(regionFile);
+ this.delayedFlusher.execute(()->{
+ try {
+ if (!regionFile.closed && regionFile.isMarkedToSave()){
+ regionFile.flushWrapper();
+ }
+ }finally {
+ regionFile.resetSaveMarker();
+ this.pendingSaving.remove(regionFile);
+ }
+ });
+ }
+
+ public void shutdown() {
+ executor.shutdown();
+ scheduler.shutdown();
+ this.executor.shutdown();
+ for (;;) {
+ try {
+ if (this.executor.awaitTermination(5_00,TimeUnit.MILLISECONDS)) break;
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/RegionFileFormat.java b/src/main/java/dev/kaiijumc/kaiiju/region/RegionFileFormat.java

View File

@@ -0,0 +1,38 @@
sha256() {
sha256sum $1 | awk '{print $1}'
}
prop() {
grep "${1}" gradle.properties | cut -d'=' -f2 | sed 's/\r//'
}
project_id="luminol"
mcversion_group=$(prop GroupMCV)
mcversion=$(prop mcVersion)
pre=$(prop preVersion)
if [ $pre = "true" ]; then
channel="experimental"
else
channel="default"
fi
changes=$(git log -1 --pretty="[{\\\"commit\\\": \\\"%H\\\", \\\"message\\\": \\\"%s\\\", \\\"summary\\\": \\\"%b\\\"}]")
jar_sha256=`sha256 build/libs/luminol-1.20.4-paperclip.jar`
jar_name="luminol-1.20.4-paperclip.jar"
ctime=$(date -u +"%s")"000"
# v2
echo "Authentication: $secret_v2"
#echo "{\"version_group\":\"$mcversion_group\",\"channel\":\"$channel\",\"changes\":\"$changes\",\"jar_name\":\"$jar_name\",\"sha256\":\"$jar_sha256\",\"release_tag\":\"$tag\",\"time\":\"$ctime\"}" > data.json
json=$(printf "{\\\"channel\\\":\\\"%s\\\", \\\"jar_name\\\":\\\"%s\\\", \\\"sha256\\\":\\\"%s\\\", \\\"tag\\\":\\\"%s\\\", \\\"time\\\":\\\"%s\\\", \\\"changes\\\":\\\"%s\\\"}" \
"$channel" "$jar_name" "$jar_sha256" "$tag" "$ctime" "$changes")
echo "[DEBUG] $json"
echo "[DEBUG] curl --location --request POST \"https://api.luminolmc.com/v2/projects/$project_id/$mcversion/build/commit\" \
-H \"Content-Type: application/json\" \
-H \"Authorization: $secret_v2\" \
-d \"$json\""
response=$(curl --location --request POST "https://api.luminolmc.com/v2/projects/$project_id/$mcversion/build/commit" \
-H "Content-Type: application/json" \
-H "Authorization: $secret_v2" \
-d "$json")
echo "[RESPONSE] $response"

18
scripts/SetENV.sh Normal file
View File

@@ -0,0 +1,18 @@
prop() {
grep "${1}" gradle.properties | cut -d'=' -f2 | sed 's/\r//'
}
commitid=$(git log --pretty='%h' -1)
mcversion=$(prop mcVersion)
preVersion=$(prop preVersion)
release_tag="$mcversion-$commitid"
jarName="build/libs/luminol-1.20.4-paperclip.jar"
make_latest=$([ $preVersion = "true" ] && echo "false" || echo "true")
echo "commitid=$commitid" >> $GITHUB_ENV
echo "mcversion=$mcversion" >> $GITHUB_ENV
echo "$mcversion"
echo "tag=$release_tag" >> $GITHUB_ENV
echo "jar=$jarName" >> $GITHUB_ENV
echo "pre=$preVersion" >> $GITHUB_ENV
echo "make_latest=$make_latest" >> $GITHUB_ENV