Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 22 additions & 8 deletions src/main/java/openblocks/common/PlayerInventoryStore.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ public class PlayerInventoryStore {

private static final String PREFIX = "inventory-";

private static final String DUMP_FOLDER = "openblocks_inventories";

private PlayerInventoryStore() {}

public static final PlayerInventoryStore instance = new PlayerInventoryStore();
Expand Down Expand Up @@ -93,7 +95,7 @@ private synchronized File getNewDumpFile(Date date, String player, World world,
int id = 0;
while (true) {
String filename = String.format(PREFIX + "%s-%s-%s-%d", player, dateStr, type, id);
File file = world.getSaveHandler().getMapFileFromName(filename);
File file = new File(getSaveFolder(world), filename + ".dat");
if (!file.exists()) return file;
id++;
}
Expand Down Expand Up @@ -229,7 +231,10 @@ private static Map<String, SubInventory> loadSubInventories(NBTTagCompound subsT
}

private static NBTTagCompound loadInventoryTag(World world, String fileId) {
File file = world.getSaveHandler().getMapFileFromName(PREFIX + stripFilename(fileId));
final String filename = PREFIX + stripFilename(fileId) + ".dat";
File file = new File(getSaveFolder(world), filename);
// dumps created before they were moved to their own folder
if (!file.exists()) file = new File(getLegacySaveFolder(world), filename);

try {
InputStream stream = new FileInputStream(file);
Expand All @@ -245,28 +250,37 @@ private static NBTTagCompound loadInventoryTag(World world, String fileId) {
}

public List<String> getMatchedDumps(World world, String prefix) {
File saveFolder = getSaveFolder(world);
final String actualPrefix = StringUtils.startsWithIgnoreCase(prefix, PREFIX) ? prefix : PREFIX + prefix;
File[] files = saveFolder.listFiles(new FilenameFilter() {
final FilenameFilter filter = new FilenameFilter() {

@Override
public boolean accept(File dir, String name) {
return name.startsWith(actualPrefix);
}
});
};

List<String> result = Lists.newArrayList();
int toCut = PREFIX.length();

for (File f : files) {
String name = f.getName();
result.add(name.substring(toCut, name.length() - 4));
for (File folder : new File[] { getSaveFolder(world), getLegacySaveFolder(world) }) {
File[] files = folder.listFiles(filter);
if (files == null) continue;
for (File f : files) {
String name = f.getName();
result.add(name.substring(toCut, name.length() - 4));
}
}

return result;
}

public static File getSaveFolder(World world) {
File folder = new File(getLegacySaveFolder(world), DUMP_FOLDER);
folder.mkdirs();
return folder;
}

private static File getLegacySaveFolder(World world) {
File dummy = world.getSaveHandler().getMapFileFromName("dummy");
return dummy.getParentFile();
}
Expand Down
Loading