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, 5 Jan 2023 09:08:17 +0800 Subject: [PATCH] Akarin: Save Json list asynchronously Original license: GPL v3 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 1516232f116f1d48fe383d8c05c7dcc63b38f96a..523255345df9f4d84c5fa514de42620c4605d446 100644 --- a/src/main/java/net/minecraft/server/players/StoredUserList.java +++ b/src/main/java/net/minecraft/server/players/StoredUserList.java @@ -104,6 +104,7 @@ public abstract class StoredUserList> { } public void save() throws IOException { + Runnable saveTask = () -> {// Leaf - Akarin - Save json list async this.removeExpired(); // Paper - remove expired values before saving JsonArray jsonarray = new JsonArray(); Stream stream = this.map.values().stream().map((jsonlistentry) -> { // CraftBukkit - decompile error @@ -115,6 +116,8 @@ public abstract class StoredUserList> { Objects.requireNonNull(jsonarray); stream.forEach(jsonarray::add); + + try {// Leaf - Akarin - Save json list async BufferedWriter bufferedwriter = Files.newWriter(this.file, StandardCharsets.UTF_8); try { @@ -135,6 +138,13 @@ public abstract class StoredUserList> { bufferedwriter.close(); } + // Leaf start - Akarin - Save json list async + } catch (Exception e) { + StoredUserList.LOGGER.warn("Failed to async save " + this.file, e); + } + }; + io.papermc.paper.util.MCUtil.scheduleAsyncTask(saveTask); + // Leaf end - Akarin - Save json list async } public void load() throws IOException {