mirror of
https://github.com/NLthijs48/AreaShop.git
synced 2025-02-19 21:32:28 +01:00
Fix groups file getting cleared on server start
- Fixes #299 - Because of an earlier change the groups file is loaded before regions are loaded on server start, and region groups remove themselves if there are no valid regions in them anymore. - Keep groups even though they are empty (so that configuration done in the group is not lost)
This commit is contained in:
parent
9d6955039a
commit
9d1585f513
@ -14,32 +14,15 @@ import me.wiefferink.areashop.regions.GeneralRegion.RegionType;
|
||||
import me.wiefferink.areashop.regions.RegionGroup;
|
||||
import me.wiefferink.areashop.regions.RentRegion;
|
||||
import me.wiefferink.areashop.tools.Utils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@ -830,13 +813,26 @@ public class FileManager extends Manager {
|
||||
result &= loadDefaultFile();
|
||||
// Convert old formats to the latest (object saving to .yml saving)
|
||||
preUpdateFiles();
|
||||
// Load region files (regions folder)
|
||||
loadRegionFiles(thisTick);
|
||||
// Convert old formats to the latest (changes in .yml saving format)
|
||||
postUpdateFiles();
|
||||
// Load groups.yml
|
||||
result &= loadGroupsFile();
|
||||
|
||||
if(thisTick) {
|
||||
// Load region files (regions folder)
|
||||
loadRegionFiles();
|
||||
// Convert old formats to the latest (changes in .yml saving format)
|
||||
postUpdateFiles();
|
||||
// Load groups.yml
|
||||
result &= loadGroupsFile();
|
||||
} else {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// Load region files (regions folder)
|
||||
loadRegionFiles();
|
||||
// Convert old formats to the latest (changes in .yml saving format)
|
||||
postUpdateFiles();
|
||||
// Load groups.yml
|
||||
loadGroupsFile();
|
||||
}
|
||||
}.runTask(plugin);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -964,9 +960,8 @@ public class FileManager extends Manager {
|
||||
|
||||
/**
|
||||
* Load all region files.
|
||||
* @param thisTick Load files in the current tick or a tick later
|
||||
*/
|
||||
public void loadRegionFiles(boolean thisTick) {
|
||||
public void loadRegionFiles() {
|
||||
regions.clear();
|
||||
final File file = new File(regionsPath);
|
||||
if(!file.exists()) {
|
||||
@ -976,16 +971,7 @@ public class FileManager extends Manager {
|
||||
}
|
||||
plugin.setReady(true);
|
||||
} else if(file.isDirectory()) {
|
||||
if(thisTick) {
|
||||
loadRegionFilesNow();
|
||||
} else {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
loadRegionFilesNow();
|
||||
}
|
||||
}.runTask(plugin);
|
||||
}
|
||||
loadRegionFilesNow();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
// TODO consider switching to saving lowercase regions
|
||||
public class RegionGroup {
|
||||
|
||||
private AreaShop plugin;
|
||||
@ -38,12 +39,9 @@ public class RegionGroup {
|
||||
}
|
||||
if(newMembers.size() != previousCount) {
|
||||
setSetting("regions", newMembers);
|
||||
AreaShop.debug("group save required because of changed member size");
|
||||
AreaShop.debug("group save required because of changed member size", newMembers);
|
||||
saveRequired();
|
||||
}
|
||||
if(getMembers().size() == 0) {
|
||||
plugin.getFileManager().removeGroup(this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -53,7 +51,7 @@ public class RegionGroup {
|
||||
*/
|
||||
public boolean addMember(GeneralRegion region) {
|
||||
List<String> members = getMembers();
|
||||
if(members.contains(region.getLowerCaseName())) {
|
||||
if(members.contains(region.getName())) {
|
||||
return false;
|
||||
} else {
|
||||
members.add(region.getName());
|
||||
@ -69,18 +67,15 @@ public class RegionGroup {
|
||||
* @return true if the region was in the group before, otherwise false
|
||||
*/
|
||||
public boolean removeMember(GeneralRegion region) {
|
||||
if(!isMember(region)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
List<String> members = getMembers();
|
||||
boolean result = isMember(region);
|
||||
members.remove(region.getName());
|
||||
if(members.isEmpty()) {
|
||||
plugin.getFileManager().removeGroup(this);
|
||||
} else {
|
||||
setSetting("regions", members);
|
||||
}
|
||||
if(result) {
|
||||
this.saveRequired();
|
||||
}
|
||||
return result;
|
||||
setSetting("regions", members);
|
||||
this.saveRequired();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user