Posted November 26, 201212 yr How can I get the directory of the world save folder to save my custom xxx.dat files? I can't find a variable that holds this information. NEI did it properly. http://calclavia.com/uploads/banner.png[/img]
November 29, 201212 yr The important part is : File part1 = MinecraftServer.getServer().getFile(""); String part2 = MinecraftServer.getServer().getFolderName(); String filePart2 = part1+"/saves/"+part2; if((MinecraftServer.getServer() instanceof DedicatedServer)) { //override the previous statement if it is run on dedicated server filePart2 = part1+"/"+part2; } Took me a bit to track it all down, but it correctly saves to world-save folder on both integrated and dedicated servers. public void onWorldLoad(WorldServer worldServer) { this.loadedWorlds++; /** * load stats file, populate globalTag */ File part1 = MinecraftServer.getServer().getFile(""); String part2 = MinecraftServer.getServer().getFolderName(); String filePart2 = part1+"/saves/"+part2; if((MinecraftServer.getServer() instanceof DedicatedServer)) { filePart2 = part1+"/"+part2; } if(!filePart2.equals(filePath)) { this.filePath = filePart2; this.resetAllTrackedData(); } File rawFile = new File(filePart2,"catModGlobalStats.dat"); NBTTagCompound tempTagData = null; try { tempTagData = CompressedStreamTools.read(rawFile); } catch (IOException e) { System.out.println("could not load globalStats, no such file, or improper format"); return; } if(tempTagData!=null) { if(this.isTagLoaded) { /** * compare timestamps...if the just read one is OLDER than the existing copy....do nothing */ long time = tempTagData.getLong("tS"); if(!this.compareDates(globalTag.getLong("tS"), time)) { return; } } globalTag = tempTagData; PlayerTracker.instance().loadFromNBT(this.getPlayerTrackingData()); CatapultMod.serverTeamTracker.loadFromNBT(this.getTeamData()); this.isTagLoaded = true; } } /** * compare two long dates as timestamps, returns true if the second is newer than the first, false if first * is newer * @return */ public boolean compareDates(long first, long second) { Timestamp t1 = new Timestamp(first); Timestamp t2 = new Timestamp(second); return t2.after(t1); } public String filePath = ""; public void onWorldSave(WorldServer worldServer) { /** * save system time into tag */ globalTag.setLong("tS", System.currentTimeMillis()); File part1 = MinecraftServer.getServer().getFile(""); String part2 = MinecraftServer.getServer().getFolderName(); String filePart2 = part1+"/saves/"+part2; if((MinecraftServer.getServer() instanceof DedicatedServer)) { filePart2 = part1+"/"+part2; } File rawFile = new File(filePart2,"catModGlobalStats.dat"); try { this.filePath = filePart2; this.updatePlayerTrackingData(PlayerTracker.instance().saveToNBT()); this.updateTeamData(CatapultMod.serverTeamTracker.getTagToSaveToNBT()); CompressedStreamTools.write(globalTag, rawFile); } catch (IOException e) { System.out.println("error writing stats to file, wtf"); return; } }
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.