@@ -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}
0 commit comments