42 lines
1.9 KiB
Diff
42 lines
1.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?=E3=84=97=E3=84=A0=CB=8B=20=E3=84=91=E3=84=A7=CB=8A?=
|
|
<tsao-chi@the-lingo.org>
|
|
Date: Thu, 2 Apr 2020 11:16:18 +0800
|
|
Subject: [PATCH] Save Json list asynchronously
|
|
|
|
Original license: GPLv3
|
|
Original project: https://github.com/Akarin-project/Akarin
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/players/StoredUserList.java b/src/main/java/net/minecraft/server/players/StoredUserList.java
|
|
index 109e08e098a6c1ca1ba3dc2a9a293eaf9d5d7cb7..ebefa64eb343f2185c11de56a1a364fc3a367b14 100644
|
|
--- a/src/main/java/net/minecraft/server/players/StoredUserList.java
|
|
+++ b/src/main/java/net/minecraft/server/players/StoredUserList.java
|
|
@@ -151,6 +151,7 @@ public abstract class StoredUserList<K, V extends StoredUserEntry<K>> {
|
|
}
|
|
|
|
public void save() throws IOException {
|
|
+ Runnable runnable = () -> { // Akarin - Save json list async
|
|
this.removeExpired(); // Paper - remove expired values before saving
|
|
JsonArray jsonarray = new JsonArray();
|
|
// Yatopia start - Stop wasting resources on JsonList#get
|
|
@@ -169,6 +170,7 @@ public abstract class StoredUserList<K, V extends StoredUserEntry<K>> {
|
|
jsonarray.add(obj);
|
|
}
|
|
// Yatopia end
|
|
+ try {
|
|
BufferedWriter bufferedwriter = Files.newWriter(this.file, StandardCharsets.UTF_8);
|
|
|
|
try {
|
|
@@ -188,6 +190,11 @@ public abstract class StoredUserList<K, V extends StoredUserEntry<K>> {
|
|
if (bufferedwriter != null) {
|
|
bufferedwriter.close();
|
|
}
|
|
+ } catch (IOException e) {
|
|
+ StoredUserList.LOGGER.warn("Failed to async save " + this.file, e); // Akarin - Save json list async
|
|
+ }
|
|
+ }; // Akarin - Save json list async
|
|
+ net.minecraft.server.MCUtil.scheduleAsyncTask(runnable); // Akarin - Save json list async
|
|
|
|
}
|
|
|