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?= 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> { } 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> { jsonarray.add(obj); } // Yatopia end + try { BufferedWriter bufferedwriter = Files.newWriter(this.file, StandardCharsets.UTF_8); try { @@ -188,6 +190,11 @@ public abstract class StoredUserList> { 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 }