mirror of
https://github.com/EssentialsX/Essentials.git
synced 2024-09-28 15:47:26 +02:00
Convert ignore list storage to UUID-based (#3209)
As the title describes, this PR converts the ignore list storage from username-based to UUID-based. Fixes #239.
This commit is contained in:
parent
8ad55cb634
commit
1bc1f646fd
@ -42,6 +42,47 @@ public class EssentialsUpgrade {
|
|||||||
doneFile.load();
|
doneFile.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void convertIgnoreList() {
|
||||||
|
if (doneFile.getBoolean("updateUsersIgnoreListUUID", false)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final File userdataFolder = new File(ess.getDataFolder(), "userdata");
|
||||||
|
if (!userdataFolder.exists() || !userdataFolder.isDirectory()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final File[] userFiles = userdataFolder.listFiles();
|
||||||
|
|
||||||
|
for (File file : userFiles) {
|
||||||
|
if (!file.isFile() || !file.getName().endsWith(".yml")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
final EssentialsConf config = new EssentialsConf(file);
|
||||||
|
try {
|
||||||
|
config.load();
|
||||||
|
if (config.hasProperty("ignore")) {
|
||||||
|
List<String> migratedIgnores = new ArrayList<>();
|
||||||
|
for (String name : Collections.synchronizedList(config.getStringList("ignore"))) {
|
||||||
|
if (name == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
OfflinePlayer user = ((OfflinePlayer) ess.getOfflineUser(name).getBase());
|
||||||
|
if (user != null) {
|
||||||
|
migratedIgnores.add(user.getUniqueId().toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
config.removeProperty("ignore");
|
||||||
|
config.setProperty("ignore", migratedIgnores);
|
||||||
|
config.forceSave();
|
||||||
|
}
|
||||||
|
} catch (RuntimeException ex) {
|
||||||
|
LOGGER.log(Level.INFO, "File: " + file.toString());
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
doneFile.setProperty("updateUsersIgnoreListUUID", true);
|
||||||
|
doneFile.save();
|
||||||
|
}
|
||||||
|
|
||||||
public void convertKits() {
|
public void convertKits() {
|
||||||
Kits kits = ess.getKits();
|
Kits kits = ess.getKits();
|
||||||
EssentialsConf config = kits.getConfig();
|
EssentialsConf config = kits.getConfig();
|
||||||
@ -713,5 +754,6 @@ public class EssentialsUpgrade {
|
|||||||
banFormatChange();
|
banFormatChange();
|
||||||
warnMetrics();
|
warnMetrics();
|
||||||
repairUserMap();
|
repairUserMap();
|
||||||
|
convertIgnoreList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -470,19 +470,42 @@ public abstract class UserData extends PlayerExtension implements IConf {
|
|||||||
config.save();
|
config.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<String> ignoredPlayers;
|
private List<UUID> ignoredPlayers;
|
||||||
|
|
||||||
public List<String> _getIgnoredPlayers() {
|
public List<UUID> _getIgnoredPlayers() {
|
||||||
return Collections.synchronizedList(config.getStringList("ignore"));
|
List<UUID> players = new ArrayList<>();
|
||||||
|
for (String uuid : config.getStringList("ignore")) {
|
||||||
|
try {
|
||||||
|
players.add(UUID.fromString(uuid));
|
||||||
|
} catch (IllegalArgumentException ignored) {}
|
||||||
|
}
|
||||||
|
return Collections.synchronizedList(players);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public void setIgnoredPlayers(List<String> players) {
|
public void setIgnoredPlayers(List<String> players) {
|
||||||
|
List<UUID> uuids = new ArrayList<>();
|
||||||
|
for (String player : players) {
|
||||||
|
User user = ess.getOfflineUser(player);
|
||||||
|
if (user == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
uuids.add(user.getBase().getUniqueId());
|
||||||
|
}
|
||||||
|
setIgnoredPlayerUUIDs(uuids);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIgnoredPlayerUUIDs(List<UUID> players) {
|
||||||
if (players == null || players.isEmpty()) {
|
if (players == null || players.isEmpty()) {
|
||||||
ignoredPlayers = Collections.synchronizedList(new ArrayList<>());
|
ignoredPlayers = Collections.synchronizedList(new ArrayList<>());
|
||||||
config.removeProperty("ignore");
|
config.removeProperty("ignore");
|
||||||
} else {
|
} else {
|
||||||
ignoredPlayers = players;
|
ignoredPlayers = players;
|
||||||
config.setProperty("ignore", players);
|
List<String> uuids = new ArrayList<>();
|
||||||
|
for (UUID uuid : players) {
|
||||||
|
uuids.add(uuid.toString());
|
||||||
|
}
|
||||||
|
config.setProperty("ignore", uuids);
|
||||||
}
|
}
|
||||||
config.save();
|
config.save();
|
||||||
}
|
}
|
||||||
@ -497,17 +520,19 @@ public abstract class UserData extends PlayerExtension implements IConf {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isIgnoredPlayer(IUser user) {
|
public boolean isIgnoredPlayer(IUser user) {
|
||||||
return (ignoredPlayers.contains(user.getName().toLowerCase(Locale.ENGLISH)) && !user.isIgnoreExempt());
|
return ignoredPlayers.contains(user.getBase().getUniqueId()) && !user.isIgnoreExempt();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIgnoredPlayer(IUser user, boolean set) {
|
public void setIgnoredPlayer(IUser user, boolean set) {
|
||||||
final String entry = user.getName().toLowerCase(Locale.ENGLISH);
|
UUID uuid = user.getBase().getUniqueId();
|
||||||
if (set) {
|
if (set) {
|
||||||
if (!ignoredPlayers.contains(entry)) ignoredPlayers.add(entry);
|
if (!ignoredPlayers.contains(uuid)) {
|
||||||
|
ignoredPlayers.add(uuid);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
ignoredPlayers.remove(entry);
|
ignoredPlayers.remove(uuid);
|
||||||
}
|
}
|
||||||
setIgnoredPlayers(ignoredPlayers);
|
setIgnoredPlayerUUIDs(ignoredPlayers);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean godmode;
|
private boolean godmode;
|
||||||
|
@ -5,6 +5,7 @@ import org.bukkit.Server;
|
|||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import static com.earth2me.essentials.I18n.tl;
|
import static com.earth2me.essentials.I18n.tl;
|
||||||
|
|
||||||
@ -18,8 +19,8 @@ public class Commandignore extends EssentialsCommand {
|
|||||||
protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
|
protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
|
||||||
if (args.length < 1) {
|
if (args.length < 1) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
for (String s : user._getIgnoredPlayers()) {
|
for (UUID uuid : user._getIgnoredPlayers()) {
|
||||||
sb.append(s).append(" ");
|
sb.append(ess.getUser(uuid).getName()).append(" ");
|
||||||
}
|
}
|
||||||
String ignoredList = sb.toString().trim();
|
String ignoredList = sb.toString().trim();
|
||||||
user.sendMessage(ignoredList.length() > 0 ? tl("ignoredList", ignoredList) : tl("noIgnored"));
|
user.sendMessage(ignoredList.length() > 0 ? tl("ignoredList", ignoredList) : tl("noIgnored"));
|
||||||
|
Loading…
Reference in New Issue
Block a user