add zone dumping
Some checks failed
/ Auto-Build-App (push) Failing after 4m10s

This commit is contained in:
pietru 2025-01-05 12:28:49 +01:00
parent 2f57bc6a97
commit 9c6a779ef8
3 changed files with 53 additions and 1 deletions

View file

@ -1,7 +1,11 @@
package net.pietru.cookie_utils.api;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.utils.JsonWriter;
import finalforeach.cosmicreach.GameSingletons;
import finalforeach.cosmicreach.ZoneLoader;
import finalforeach.cosmicreach.ZoneLoaders;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.entities.player.Player;
import finalforeach.cosmicreach.io.SaveLocation;
@ -9,6 +13,7 @@ import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import finalforeach.cosmicreach.savelib.utils.TriConsumer;
import finalforeach.cosmicreach.world.IZoneLoader;
import finalforeach.cosmicreach.world.Zone;
import finalforeach.cosmicreach.worldgen.ZoneGenerator;
import io.netty.channel.ChannelHandlerContext;
@ -16,7 +21,9 @@ import net.pietru.cookie_utils.permissions.GroupPerms;
import net.pietru.cookie_utils.permissions.Permissions;
import net.pietru.cookie_utils.setups.Setup;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
@ -345,5 +352,31 @@ public class TextCommands {
MessagePacket packet = new MessagePacket("Reloaded: "+reloaded_funcs);
packet.setupAndSend(channelHandlerContext);
});
commands.put("dump",(args, networkIdentity, channelHandlerContext) -> {
File dumps_folder = new File(SaveLocation.getSaveFolder(),"dumps");
if (!dumps_folder.exists())
dumps_folder.mkdirs();
List<String> arg_list = Arrays.stream(args).toList();
String reloaded_funcs = "";
if (arg_list.contains("zones") || args.length==1) {
int i = 0;
for(IZoneLoader z : ZoneLoaders.INSTANCE.getAllZoneLoaders()) {
File dump_file = new File(get_path_string(SaveLocation.getSaveFolder().getPath(), "dumps", "zone_"+String.valueOf(i++)+".json"));
try {
Json json = new Json();
json.setOutputType(JsonWriter.OutputType.json);
BufferedWriter writer = new BufferedWriter(new FileWriter(dump_file.getPath()));
writer.write(json.prettyPrint(z));
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
reloaded_funcs+="zones ";
}
MessagePacket packet = new MessagePacket("Dumped: "+reloaded_funcs);
packet.setupAndSend(channelHandlerContext);
});
}
}

View file

@ -72,6 +72,6 @@ public class MessagePacketMixin {
}
}
}
message=message.replace("\n","");
//message=message.replace("\n","");
}
}

View file

@ -0,0 +1,19 @@
package net.pietru.cookie_utils.mixins;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Queue;
import finalforeach.cosmicreach.ZoneLoader;
import finalforeach.cosmicreach.util.Point3DMap;
import finalforeach.cosmicreach.worldgen.ChunkColumn;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@Mixin(ZoneLoader.class)
public class ZoneLoaderMixin {
@Shadow
public Point3DMap<ChunkColumn> loadedChunkColumns = new Point3DMap();
@Shadow
public Queue<ChunkColumn> chunkColumnsToGenerate = new Queue(16, ChunkColumn.class);
@Shadow
public Array<ChunkColumn> chunkColumnsToRemove = new Array(false, 16, ChunkColumn.class);
}