Skip to content

Commit 4a1a188

Browse files
committed
修改保存实现减少无意义的磁盘写入
1 parent f05dd82 commit 4a1a188

2 files changed

Lines changed: 13 additions & 7 deletions

File tree

src/main/java/com/circulation/circulation_networks/manager/EnergyTypeOverrideManager.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public final class EnergyTypeOverrideManager {
2121
private static EnergyTypeOverrideManager INSTANCE;
2222

2323
private final Int2ObjectMap<Long2ObjectMap<IEnergyHandler.EnergyType>> overrides = new Int2ObjectOpenHashMap<>();
24+
private boolean m;
2425

2526
private EnergyTypeOverrideManager() {
2627
}
@@ -40,8 +41,15 @@ public static void onServerStop() {
4041
INSTANCE = null;
4142
}
4243

44+
public static void save() {
45+
if (INSTANCE != null) {
46+
INSTANCE.saveToFile();
47+
}
48+
}
49+
4350
public void setOverride(int dim, BlockPos pos, IEnergyHandler.EnergyType type) {
4451
overrides.computeIfAbsent(dim, k -> new Long2ObjectOpenHashMap<>()).put(pos.toLong(), type);
52+
m = true;
4553
}
4654

4755
public void clearOverride(int dim, BlockPos pos) {
@@ -50,6 +58,7 @@ public void clearOverride(int dim, BlockPos pos) {
5058
dimMap.remove(pos.toLong());
5159
if (dimMap.isEmpty()) overrides.remove(dim);
5260
}
61+
m = true;
5362
}
5463

5564
@Nullable
@@ -69,10 +78,6 @@ public void onTileEntityInvalidate(TileEntityLifeCycleEvent.Invalidate event) {
6978
clearOverride(event.getWorld().provider.getDimension(), event.getPos());
7079
}
7180

72-
public void saveOnWorldTick() {
73-
saveToFile();
74-
}
75-
7681
private void loadFromFile() {
7782
File saveFile = new File(NetworkManager.getSaveFile(), "EnergyTypeOverride.dat");
7883
if (!saveFile.exists()) {
@@ -106,7 +111,7 @@ private void loadFromFile() {
106111
}
107112

108113
private void saveToFile() {
109-
if (overrides.isEmpty()) {
114+
if (overrides.isEmpty() && !m) {
110115
return;
111116
}
112117

@@ -133,5 +138,7 @@ private void saveToFile() {
133138
CompressedStreamTools.safeWrite(nbt, saveFile);
134139
} catch (IOException ignored) {
135140
}
141+
142+
m = false;
136143
}
137144
}

src/main/java/com/circulation/circulation_networks/proxy/CommonProxy.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,7 @@ public void onServerTick(TickEvent.ServerTickEvent event) {
123123
public void onWorldSave(WorldEvent.Save event) {
124124
if (!event.getWorld().isRemote && event.getWorld().provider.getDimension() == 0) {
125125
NetworkManager.INSTANCE.saveGrid();
126-
var overrideManager = EnergyTypeOverrideManager.get();
127-
if (overrideManager != null) overrideManager.saveOnWorldTick();
126+
EnergyTypeOverrideManager.save();
128127
}
129128
}
130129

0 commit comments

Comments
 (0)