calclavia Posted November 26, 2012 Share Posted November 26, 2012 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. Quote http://calclavia.com/uploads/banner.png[/img] Link to comment Share on other sites More sharing options...
shadowmage4513 Posted November 29, 2012 Share Posted November 29, 2012 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; } } Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.