2011-04-16 13:36:09 +00:00
|
|
|
package com.earth2me.essentials;
|
|
|
|
|
2014-03-20 15:54:07 +00:00
|
|
|
import static com.earth2me.essentials.I18n.tl;
|
2011-12-06 16:42:55 +00:00
|
|
|
import com.earth2me.essentials.craftbukkit.FakeWorld;
|
2011-12-06 12:41:29 +00:00
|
|
|
import com.earth2me.essentials.settings.Spawns;
|
|
|
|
import com.earth2me.essentials.storage.YamlStorageWriter;
|
2013-10-11 02:44:41 +00:00
|
|
|
import com.earth2me.essentials.utils.StringUtil;
|
2014-04-19 01:03:39 +00:00
|
|
|
import com.google.common.base.Charsets;
|
2011-11-18 17:42:26 +00:00
|
|
|
import java.io.*;
|
2011-09-17 22:49:34 +00:00
|
|
|
import java.math.BigInteger;
|
|
|
|
import java.security.DigestInputStream;
|
|
|
|
import java.security.MessageDigest;
|
2011-11-18 17:42:26 +00:00
|
|
|
import java.util.*;
|
2011-04-16 13:36:09 +00:00
|
|
|
import java.util.logging.Level;
|
|
|
|
import java.util.logging.Logger;
|
2013-10-11 02:44:41 +00:00
|
|
|
import net.ess3.api.IEssentials;
|
2011-09-17 22:49:34 +00:00
|
|
|
import org.bukkit.Bukkit;
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
import org.bukkit.Location;
|
|
|
|
import org.bukkit.World;
|
2011-04-16 13:36:09 +00:00
|
|
|
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
|
|
|
|
public class EssentialsUpgrade
|
|
|
|
{
|
2013-12-07 20:03:05 +00:00
|
|
|
private final static Logger LOGGER = Logger.getLogger("Essentials");
|
2011-08-08 12:40:30 +00:00
|
|
|
private final transient IEssentials ess;
|
|
|
|
private final transient EssentialsConf doneFile;
|
2011-04-16 13:36:09 +00:00
|
|
|
|
2011-08-08 12:40:30 +00:00
|
|
|
EssentialsUpgrade(final IEssentials essentials)
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
{
|
2011-06-01 10:40:12 +00:00
|
|
|
ess = essentials;
|
2011-08-08 12:40:30 +00:00
|
|
|
if (!ess.getDataFolder().exists())
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
{
|
2011-08-08 12:40:30 +00:00
|
|
|
ess.getDataFolder().mkdirs();
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
}
|
2011-08-08 12:40:30 +00:00
|
|
|
doneFile = new EssentialsConf(new File(ess.getDataFolder(), "upgrades-done.yml"));
|
|
|
|
doneFile.load();
|
2011-04-16 13:36:09 +00:00
|
|
|
}
|
|
|
|
|
2011-11-18 03:18:03 +00:00
|
|
|
private void moveMotdRulesToFile(String name)
|
|
|
|
{
|
2011-11-21 01:55:26 +00:00
|
|
|
if (doneFile.getBoolean("move" + name + "ToFile", false))
|
2011-11-18 03:18:03 +00:00
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
try
|
|
|
|
{
|
2011-11-21 01:55:26 +00:00
|
|
|
final File file = new File(ess.getDataFolder(), name + ".txt");
|
2011-11-18 03:18:03 +00:00
|
|
|
if (file.exists())
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
final File configFile = new File(ess.getDataFolder(), "config.yml");
|
|
|
|
if (!configFile.exists())
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
final EssentialsConf conf = new EssentialsConf(configFile);
|
|
|
|
conf.load();
|
2012-02-21 16:33:46 +00:00
|
|
|
List<String> lines = conf.getStringList(name);
|
2011-11-18 03:18:03 +00:00
|
|
|
if (lines != null && !lines.isEmpty())
|
|
|
|
{
|
|
|
|
if (!file.createNewFile())
|
|
|
|
{
|
|
|
|
throw new IOException("Failed to create file " + file);
|
|
|
|
}
|
|
|
|
PrintWriter writer = new PrintWriter(file);
|
|
|
|
|
|
|
|
for (String line : lines)
|
|
|
|
{
|
|
|
|
writer.println(line);
|
|
|
|
}
|
|
|
|
writer.close();
|
|
|
|
}
|
2011-11-21 01:55:26 +00:00
|
|
|
doneFile.setProperty("move" + name + "ToFile", true);
|
2011-11-18 03:18:03 +00:00
|
|
|
doneFile.save();
|
|
|
|
}
|
2013-11-07 02:22:32 +00:00
|
|
|
catch (IOException e)
|
2011-11-18 03:18:03 +00:00
|
|
|
{
|
2014-03-20 15:54:07 +00:00
|
|
|
LOGGER.log(Level.SEVERE, tl("upgradingFilesError"), e);
|
2011-11-18 03:18:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
private void removeLinesFromConfig(File file, String regex, String info) throws Exception
|
|
|
|
{
|
2011-04-16 13:36:09 +00:00
|
|
|
boolean needUpdate = false;
|
2011-08-08 12:40:30 +00:00
|
|
|
final BufferedReader bReader = new BufferedReader(new FileReader(file));
|
|
|
|
final File tempFile = File.createTempFile("essentialsupgrade", ".tmp.yml", ess.getDataFolder());
|
|
|
|
final BufferedWriter bWriter = new BufferedWriter(new FileWriter(tempFile));
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
do
|
|
|
|
{
|
2011-08-08 12:40:30 +00:00
|
|
|
final String line = bReader.readLine();
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
if (line == null)
|
|
|
|
{
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (line.matches(regex))
|
|
|
|
{
|
2011-06-01 10:40:12 +00:00
|
|
|
if (!needUpdate && info != null)
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
{
|
2011-08-08 12:40:30 +00:00
|
|
|
bWriter.write(info, 0, info.length());
|
|
|
|
bWriter.newLine();
|
2011-04-16 13:36:09 +00:00
|
|
|
}
|
|
|
|
needUpdate = true;
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (line.endsWith("\r\n"))
|
|
|
|
{
|
2011-08-08 12:40:30 +00:00
|
|
|
bWriter.write(line, 0, line.length() - 2);
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
}
|
|
|
|
else if (line.endsWith("\r") || line.endsWith("\n"))
|
|
|
|
{
|
2011-08-08 12:40:30 +00:00
|
|
|
bWriter.write(line, 0, line.length() - 1);
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2011-08-08 12:40:30 +00:00
|
|
|
bWriter.write(line, 0, line.length());
|
2011-04-16 13:36:09 +00:00
|
|
|
}
|
2011-08-08 12:40:30 +00:00
|
|
|
bWriter.newLine();
|
2011-04-16 13:36:09 +00:00
|
|
|
}
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
}
|
|
|
|
while (true);
|
2011-08-08 12:40:30 +00:00
|
|
|
bReader.close();
|
|
|
|
bWriter.close();
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
if (needUpdate)
|
|
|
|
{
|
|
|
|
if (!file.renameTo(new File(file.getParentFile(), file.getName().concat("." + System.currentTimeMillis() + ".upgradebackup"))))
|
|
|
|
{
|
2014-03-20 15:54:07 +00:00
|
|
|
throw new Exception(tl("configFileMoveError"));
|
2011-04-17 00:08:09 +00:00
|
|
|
}
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
if (!tempFile.renameTo(file))
|
|
|
|
{
|
2014-03-20 15:54:07 +00:00
|
|
|
throw new Exception(tl("configFileRenameError"));
|
2011-04-17 00:08:09 +00:00
|
|
|
}
|
2011-08-08 12:40:30 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2011-05-02 16:59:25 +00:00
|
|
|
tempFile.delete();
|
2011-04-16 13:36:09 +00:00
|
|
|
}
|
|
|
|
}
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
|
2011-08-21 18:02:01 +00:00
|
|
|
private void updateUsersPowerToolsFormat()
|
|
|
|
{
|
|
|
|
if (doneFile.getBoolean("updateUsersPowerToolsFormat", 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("powertools"))
|
|
|
|
{
|
|
|
|
@SuppressWarnings("unchecked")
|
2012-02-23 14:49:23 +00:00
|
|
|
final Map<String, Object> powertools = config.getConfigurationSection("powertools").getValues(false);
|
2011-08-21 18:02:01 +00:00
|
|
|
if (powertools == null)
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
2012-02-23 14:49:23 +00:00
|
|
|
for (Map.Entry<String, Object> entry : powertools.entrySet())
|
2011-08-21 18:02:01 +00:00
|
|
|
{
|
|
|
|
if (entry.getValue() instanceof String)
|
|
|
|
{
|
|
|
|
List<String> temp = new ArrayList<String>();
|
|
|
|
temp.add((String)entry.getValue());
|
2012-02-23 14:49:23 +00:00
|
|
|
((Map<String, Object>)powertools).put(entry.getKey(), temp);
|
2011-08-21 18:02:01 +00:00
|
|
|
}
|
|
|
|
}
|
2013-04-22 22:47:45 +00:00
|
|
|
config.forceSave();
|
2011-08-21 18:02:01 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (RuntimeException ex)
|
|
|
|
{
|
|
|
|
LOGGER.log(Level.INFO, "File: " + file.toString());
|
|
|
|
throw ex;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
doneFile.setProperty("updateUsersPowerToolsFormat", true);
|
|
|
|
doneFile.save();
|
|
|
|
}
|
|
|
|
|
2011-08-23 05:09:34 +00:00
|
|
|
private void updateUsersHomesFormat()
|
|
|
|
{
|
|
|
|
if (doneFile.getBoolean("updateUsersHomesFormat", 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("home") && config.hasProperty("home.default"))
|
|
|
|
{
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
final String defworld = (String)config.getProperty("home.default");
|
2011-09-17 22:49:34 +00:00
|
|
|
final Location defloc = getFakeLocation(config, "home.worlds." + defworld);
|
2011-08-24 02:49:35 +00:00
|
|
|
if (defloc != null)
|
|
|
|
{
|
|
|
|
config.setProperty("homes.home", defloc);
|
2011-09-17 22:49:34 +00:00
|
|
|
}
|
2011-08-23 05:09:34 +00:00
|
|
|
|
2012-02-21 16:33:46 +00:00
|
|
|
Set<String> worlds = config.getConfigurationSection("home.worlds").getKeys(false);
|
2011-08-23 05:09:34 +00:00
|
|
|
Location loc;
|
2011-08-23 14:37:09 +00:00
|
|
|
String worldName;
|
2011-08-23 05:09:34 +00:00
|
|
|
|
|
|
|
if (worlds == null)
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
for (String world : worlds)
|
|
|
|
{
|
|
|
|
if (defworld.equalsIgnoreCase(world))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
2011-08-24 04:18:35 +00:00
|
|
|
loc = getFakeLocation(config, "home.worlds." + world);
|
2011-08-23 05:09:34 +00:00
|
|
|
if (loc == null)
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
2011-11-21 01:55:26 +00:00
|
|
|
worldName = loc.getWorld().getName().toLowerCase(Locale.ENGLISH);
|
2011-08-23 05:09:34 +00:00
|
|
|
if (worldName != null && !worldName.isEmpty())
|
|
|
|
{
|
|
|
|
config.setProperty("homes." + worldName, loc);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
config.removeProperty("home");
|
2013-04-22 22:47:45 +00:00
|
|
|
config.forceSave();
|
2011-08-23 05:09:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
catch (RuntimeException ex)
|
|
|
|
{
|
|
|
|
LOGGER.log(Level.INFO, "File: " + file.toString());
|
|
|
|
throw ex;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
doneFile.setProperty("updateUsersHomesFormat", true);
|
|
|
|
doneFile.save();
|
|
|
|
}
|
|
|
|
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
private void sanitizeAllUserFilenames()
|
|
|
|
{
|
2011-08-08 12:40:30 +00:00
|
|
|
if (doneFile.getBoolean("sanitizeAllUserFilenames", false))
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
final File usersFolder = new File(ess.getDataFolder(), "userdata");
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
if (!usersFolder.exists())
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
2011-08-08 12:40:30 +00:00
|
|
|
final File[] listOfFiles = usersFolder.listFiles();
|
2013-11-07 02:22:32 +00:00
|
|
|
for (File listOfFile : listOfFiles)
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
{
|
2013-11-07 02:22:32 +00:00
|
|
|
final String filename = listOfFile.getName();
|
|
|
|
if (!listOfFile.isFile() || !filename.endsWith(".yml"))
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
2013-06-08 21:31:19 +00:00
|
|
|
final String sanitizedFilename = StringUtil.sanitizeFileName(filename.substring(0, filename.length() - 4)) + ".yml";
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
if (sanitizedFilename.equals(filename))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
2013-11-07 02:22:32 +00:00
|
|
|
final File tmpFile = new File(listOfFile.getParentFile(), sanitizedFilename + ".tmp");
|
|
|
|
final File newFile = new File(listOfFile.getParentFile(), sanitizedFilename);
|
|
|
|
if (!listOfFile.renameTo(tmpFile))
|
2011-08-08 12:40:30 +00:00
|
|
|
{
|
2014-03-20 15:54:07 +00:00
|
|
|
LOGGER.log(Level.WARNING, tl("userdataMoveError", filename, sanitizedFilename));
|
2011-05-01 22:58:54 +00:00
|
|
|
continue;
|
|
|
|
}
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
if (newFile.exists())
|
|
|
|
{
|
2014-03-20 15:54:07 +00:00
|
|
|
LOGGER.log(Level.WARNING, tl("duplicatedUserdata", filename, sanitizedFilename));
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
continue;
|
|
|
|
}
|
2011-08-08 12:40:30 +00:00
|
|
|
if (!tmpFile.renameTo(newFile))
|
|
|
|
{
|
2014-03-20 15:54:07 +00:00
|
|
|
LOGGER.log(Level.WARNING, tl("userdataMoveBackError", sanitizedFilename, sanitizedFilename));
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
}
|
|
|
|
}
|
2011-08-08 12:40:30 +00:00
|
|
|
doneFile.setProperty("sanitizeAllUserFilenames", true);
|
|
|
|
doneFile.save();
|
This is a big refactoring of the user class and more.
Many commands have been cleaned.
File changes:
- all user data has been moved from users.yml to userdata folder
- all files in userdata folder are lower case
Both changes should be done automatically.
Class changes:
- Moved all user data functions to UserData class
- Moved all user teleport functions to Teleport class
- Moved the user list to Essentials class
- Less static functions for better testing
- EssentialsCommand now has ess Property (Essentials class)
- New NotEnoughArgumentsException, that will show command description and syntax
New commands:
- /seen, shows the last login or logout
- /tempban, temporarily ban someone
- /tjail and mute, temporarily option added
Other changes:
- ban reason is saved
- don't show "You have xxx mail" on login, if user doesn't have essentials.mail permission
- time will be parsed: years, months (mo), weeks, days, hours, minutes (m), seconds, these can be shortened and combined, example: 2 days 5h 30m
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1300 e251c2fe-e539-e718-e476-b85c1f46cddb
2011-05-01 21:07:30 +00:00
|
|
|
}
|
2011-08-08 12:40:30 +00:00
|
|
|
|
|
|
|
private World getFakeWorld(final String name)
|
2011-05-14 02:02:15 +00:00
|
|
|
{
|
2011-08-08 12:40:30 +00:00
|
|
|
final File bukkitDirectory = ess.getDataFolder().getParentFile().getParentFile();
|
|
|
|
final File worldDirectory = new File(bukkitDirectory, name);
|
2011-05-14 02:02:15 +00:00
|
|
|
if (worldDirectory.exists() && worldDirectory.isDirectory())
|
|
|
|
{
|
|
|
|
return new FakeWorld(worldDirectory.getName(), World.Environment.NORMAL);
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
2011-09-17 22:49:34 +00:00
|
|
|
|
2011-08-24 04:18:35 +00:00
|
|
|
public Location getFakeLocation(EssentialsConf config, String path)
|
|
|
|
{
|
|
|
|
String worldName = config.getString((path != null ? path + "." : "") + "world");
|
|
|
|
if (worldName == null || worldName.isEmpty())
|
|
|
|
{
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
World world = getFakeWorld(worldName);
|
|
|
|
if (world == null)
|
|
|
|
{
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
return new Location(world,
|
|
|
|
config.getDouble((path != null ? path + "." : "") + "x", 0),
|
|
|
|
config.getDouble((path != null ? path + "." : "") + "y", 0),
|
|
|
|
config.getDouble((path != null ? path + "." : "") + "z", 0),
|
|
|
|
(float)config.getDouble((path != null ? path + "." : "") + "yaw", 0),
|
|
|
|
(float)config.getDouble((path != null ? path + "." : "") + "pitch", 0));
|
|
|
|
}
|
2011-05-16 08:55:20 +00:00
|
|
|
|
2011-09-17 22:49:34 +00:00
|
|
|
private void deleteOldItemsCsv()
|
|
|
|
{
|
|
|
|
if (doneFile.getBoolean("deleteOldItemsCsv", false))
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
final File file = new File(ess.getDataFolder(), "items.csv");
|
|
|
|
if (file.exists())
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
final Set<BigInteger> oldconfigs = new HashSet<BigInteger>();
|
|
|
|
oldconfigs.add(new BigInteger("66ec40b09ac167079f558d1099e39f10", 16)); // sep 1
|
|
|
|
oldconfigs.add(new BigInteger("34284de1ead43b0bee2aae85e75c041d", 16)); // crlf
|
|
|
|
oldconfigs.add(new BigInteger("c33bc9b8ee003861611bbc2f48eb6f4f", 16)); // jul 24
|
|
|
|
oldconfigs.add(new BigInteger("6ff17925430735129fc2a02f830c1daa", 16)); // crlf
|
|
|
|
|
|
|
|
MessageDigest digest = ManagedFile.getDigest();
|
|
|
|
final BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
|
|
|
|
final DigestInputStream dis = new DigestInputStream(bis, digest);
|
|
|
|
final byte[] buffer = new byte[1024];
|
|
|
|
try
|
|
|
|
{
|
|
|
|
while (dis.read(buffer) != -1)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
finally
|
|
|
|
{
|
|
|
|
dis.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
BigInteger hash = new BigInteger(1, digest.digest());
|
|
|
|
if (oldconfigs.contains(hash) && !file.delete())
|
|
|
|
{
|
|
|
|
throw new IOException("Could not delete file " + file.toString());
|
|
|
|
}
|
|
|
|
doneFile.setProperty("deleteOldItemsCsv", true);
|
|
|
|
doneFile.save();
|
|
|
|
}
|
|
|
|
catch (IOException ex)
|
|
|
|
{
|
|
|
|
Bukkit.getLogger().log(Level.SEVERE, ex.getMessage(), ex);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-12-06 12:41:29 +00:00
|
|
|
private void updateSpawnsToNewSpawnsConfig()
|
|
|
|
{
|
|
|
|
if (doneFile.getBoolean("updateSpawnsToNewSpawnsConfig", false))
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
final File configFile = new File(ess.getDataFolder(), "spawn.yml");
|
|
|
|
if (configFile.exists())
|
|
|
|
{
|
|
|
|
|
|
|
|
final EssentialsConf config = new EssentialsConf(configFile);
|
|
|
|
try
|
|
|
|
{
|
|
|
|
config.load();
|
|
|
|
if (!config.hasProperty("spawns"))
|
|
|
|
{
|
|
|
|
final Spawns spawns = new Spawns();
|
2012-02-21 16:33:46 +00:00
|
|
|
Set<String> keys = config.getKeys(false);
|
2011-12-06 12:41:29 +00:00
|
|
|
for (String group : keys)
|
|
|
|
{
|
|
|
|
Location loc = getFakeLocation(config, group);
|
|
|
|
spawns.getSpawns().put(group.toLowerCase(Locale.ENGLISH), loc);
|
|
|
|
}
|
|
|
|
if (!configFile.renameTo(new File(ess.getDataFolder(), "spawn.yml.old")))
|
|
|
|
{
|
2014-03-20 15:54:07 +00:00
|
|
|
throw new Exception(tl("fileRenameError", "spawn.yml"));
|
2011-12-06 12:41:29 +00:00
|
|
|
}
|
|
|
|
PrintWriter writer = new PrintWriter(configFile);
|
|
|
|
try
|
|
|
|
{
|
|
|
|
new YamlStorageWriter(writer).save(spawns);
|
|
|
|
}
|
|
|
|
finally
|
|
|
|
{
|
|
|
|
writer.close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
Bukkit.getLogger().log(Level.SEVERE, ex.getMessage(), ex);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
doneFile.setProperty("updateSpawnsToNewSpawnsConfig", true);
|
|
|
|
doneFile.save();
|
|
|
|
}
|
2012-03-15 01:17:12 +00:00
|
|
|
|
2011-12-06 16:28:48 +00:00
|
|
|
private void updateJailsToNewJailsConfig()
|
|
|
|
{
|
|
|
|
if (doneFile.getBoolean("updateJailsToNewJailsConfig", false))
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
final File configFile = new File(ess.getDataFolder(), "jail.yml");
|
|
|
|
if (configFile.exists())
|
|
|
|
{
|
|
|
|
|
|
|
|
final EssentialsConf config = new EssentialsConf(configFile);
|
|
|
|
try
|
|
|
|
{
|
|
|
|
config.load();
|
|
|
|
if (!config.hasProperty("jails"))
|
|
|
|
{
|
|
|
|
final com.earth2me.essentials.settings.Jails jails = new com.earth2me.essentials.settings.Jails();
|
2012-02-21 16:33:46 +00:00
|
|
|
Set<String> keys = config.getKeys(false);
|
2011-12-06 16:28:48 +00:00
|
|
|
for (String jailName : keys)
|
|
|
|
{
|
|
|
|
Location loc = getFakeLocation(config, jailName);
|
|
|
|
jails.getJails().put(jailName.toLowerCase(Locale.ENGLISH), loc);
|
|
|
|
}
|
|
|
|
if (!configFile.renameTo(new File(ess.getDataFolder(), "jail.yml.old")))
|
|
|
|
{
|
2014-03-20 15:54:07 +00:00
|
|
|
throw new Exception(tl("fileRenameError", "jail.yml"));
|
2011-12-06 16:28:48 +00:00
|
|
|
}
|
|
|
|
PrintWriter writer = new PrintWriter(configFile);
|
|
|
|
try
|
|
|
|
{
|
|
|
|
new YamlStorageWriter(writer).save(jails);
|
|
|
|
}
|
|
|
|
finally
|
|
|
|
{
|
|
|
|
writer.close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
Bukkit.getLogger().log(Level.SEVERE, ex.getMessage(), ex);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
doneFile.setProperty("updateJailsToNewJailsConfig", true);
|
|
|
|
doneFile.save();
|
|
|
|
}
|
2012-03-15 01:17:12 +00:00
|
|
|
|
|
|
|
private void warnMetrics()
|
|
|
|
{
|
2012-03-15 00:49:22 +00:00
|
|
|
if (doneFile.getBoolean("warnMetrics", false))
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
2012-03-15 01:17:12 +00:00
|
|
|
ess.getSettings().setMetricsEnabled(false);
|
2012-03-15 00:49:22 +00:00
|
|
|
doneFile.setProperty("warnMetrics", true);
|
|
|
|
doneFile.save();
|
|
|
|
}
|
2011-12-06 12:41:29 +00:00
|
|
|
|
2014-04-13 05:53:11 +00:00
|
|
|
private void uuidFileChange()
|
|
|
|
{
|
|
|
|
if (doneFile.getBoolean("uuidFileChange", false))
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
2014-04-17 03:53:02 +00:00
|
|
|
|
2014-04-17 01:18:28 +00:00
|
|
|
uuidFileConvert(ess);
|
|
|
|
|
|
|
|
doneFile.setProperty("uuidFileChange", true);
|
|
|
|
doneFile.save();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void uuidFileConvert(IEssentials ess)
|
|
|
|
{
|
|
|
|
ess.getLogger().info("Starting Essentials UUID userdata conversion");
|
2014-04-13 05:53:11 +00:00
|
|
|
|
|
|
|
final File userdir = new File(ess.getDataFolder(), "userdata");
|
|
|
|
if (!userdir.exists())
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
2014-04-17 01:18:28 +00:00
|
|
|
|
|
|
|
int countFiles = 0;
|
|
|
|
int countFails = 0;
|
2014-04-17 03:53:02 +00:00
|
|
|
int countEssCache = 0;
|
|
|
|
int countBukkit = 0;
|
|
|
|
|
2014-04-17 01:18:28 +00:00
|
|
|
ess.getLogger().info("Found " + userdir.list().length + " files to convert...");
|
2014-04-17 03:53:02 +00:00
|
|
|
|
2014-04-13 05:53:11 +00:00
|
|
|
for (String string : userdir.list())
|
|
|
|
{
|
|
|
|
if (!string.endsWith(".yml"))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
2014-04-17 03:53:02 +00:00
|
|
|
|
|
|
|
final int showProgress = countFiles % 250;
|
|
|
|
|
2014-04-17 01:18:28 +00:00
|
|
|
if (showProgress == 0)
|
|
|
|
{
|
2014-04-17 03:53:02 +00:00
|
|
|
ess.getUserMap().getUUIDMap().forceWriteUUIDMap();
|
2014-04-17 01:18:28 +00:00
|
|
|
ess.getLogger().info("Converted " + countFiles + "/" + userdir.list().length);
|
|
|
|
}
|
|
|
|
|
|
|
|
countFiles++;
|
|
|
|
|
2014-04-13 05:53:11 +00:00
|
|
|
final String name = string.substring(0, string.length() - 4);
|
|
|
|
EssentialsUserConf config;
|
|
|
|
UUID uuid = null;
|
|
|
|
try
|
|
|
|
{
|
|
|
|
uuid = UUID.fromString(name);
|
|
|
|
}
|
|
|
|
catch (IllegalArgumentException ex)
|
|
|
|
{
|
|
|
|
File file = new File(userdir, string);
|
|
|
|
EssentialsConf conf = new EssentialsConf(file);
|
|
|
|
conf.load();
|
|
|
|
conf.setProperty("lastAccountName", name);
|
2014-04-17 03:53:02 +00:00
|
|
|
conf.save();
|
2014-04-13 05:53:11 +00:00
|
|
|
|
|
|
|
String uuidString = conf.getString("uuid", null);
|
|
|
|
|
2014-04-17 01:18:28 +00:00
|
|
|
for (int i = 0; i < 4; i++)
|
2014-04-13 05:53:11 +00:00
|
|
|
{
|
2014-04-17 01:18:28 +00:00
|
|
|
try
|
|
|
|
{
|
|
|
|
uuid = UUID.fromString(uuidString);
|
2014-04-17 03:53:02 +00:00
|
|
|
countEssCache++;
|
2014-04-17 01:18:28 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
catch (Exception ex2)
|
|
|
|
{
|
2014-04-19 01:03:39 +00:00
|
|
|
if (conf.getBoolean("npc", false))
|
|
|
|
{
|
|
|
|
uuid = UUID.nameUUIDFromBytes(("NPC:" + name).getBytes(Charsets.UTF_8));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2014-04-17 01:18:28 +00:00
|
|
|
org.bukkit.OfflinePlayer player = ess.getServer().getOfflinePlayer(name);
|
|
|
|
uuid = player.getUniqueId();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (uuid != null)
|
|
|
|
{
|
2014-04-17 03:53:02 +00:00
|
|
|
countBukkit++;
|
2014-04-17 01:18:28 +00:00
|
|
|
break;
|
2014-04-19 01:03:39 +00:00
|
|
|
}
|
2014-04-13 05:53:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (uuid != null)
|
|
|
|
{
|
2014-04-17 03:53:02 +00:00
|
|
|
conf.forceSave();
|
2014-04-13 05:53:11 +00:00
|
|
|
config = new EssentialsUserConf(name, uuid, new File(userdir, uuid + ".yml"));
|
|
|
|
config.convertLegacyFile();
|
|
|
|
ess.getUserMap().trackUUID(uuid, name);
|
2014-04-17 01:18:28 +00:00
|
|
|
continue;
|
2014-04-13 05:53:11 +00:00
|
|
|
}
|
2014-04-17 01:18:28 +00:00
|
|
|
countFails++;
|
2014-04-13 05:53:11 +00:00
|
|
|
}
|
|
|
|
}
|
2014-04-17 03:53:02 +00:00
|
|
|
ess.getUserMap().getUUIDMap().forceWriteUUIDMap();
|
2014-04-17 01:18:28 +00:00
|
|
|
|
2014-04-17 03:53:02 +00:00
|
|
|
ess.getLogger().info("Completed Essentials UUID userdata conversion. Attempted to convert " + countFiles + " users.");
|
|
|
|
ess.getLogger().info("Converted via cache: " + countEssCache + " :: Converted via lookup: " + countBukkit + " :: Failed to convert: " + countFails);
|
2014-04-17 01:18:28 +00:00
|
|
|
ess.getLogger().info("To rerun the conversion type /essentials uuidconvert");
|
2014-04-13 05:53:11 +00:00
|
|
|
}
|
|
|
|
|
2011-06-01 10:40:12 +00:00
|
|
|
public void beforeSettings()
|
2011-05-16 08:55:20 +00:00
|
|
|
{
|
|
|
|
if (!ess.getDataFolder().exists())
|
|
|
|
{
|
|
|
|
ess.getDataFolder().mkdirs();
|
|
|
|
}
|
2011-11-18 03:18:03 +00:00
|
|
|
moveMotdRulesToFile("motd");
|
|
|
|
moveMotdRulesToFile("rules");
|
2011-05-16 08:55:20 +00:00
|
|
|
}
|
|
|
|
|
2011-06-01 10:40:12 +00:00
|
|
|
public void afterSettings()
|
2011-05-16 08:55:20 +00:00
|
|
|
{
|
|
|
|
sanitizeAllUserFilenames();
|
2011-08-21 18:02:01 +00:00
|
|
|
updateUsersPowerToolsFormat();
|
2011-08-23 05:09:34 +00:00
|
|
|
updateUsersHomesFormat();
|
2011-09-17 22:49:34 +00:00
|
|
|
deleteOldItemsCsv();
|
2011-12-06 12:41:29 +00:00
|
|
|
updateSpawnsToNewSpawnsConfig();
|
2011-12-06 16:28:48 +00:00
|
|
|
updateJailsToNewJailsConfig();
|
2014-04-13 05:53:11 +00:00
|
|
|
uuidFileChange();
|
2012-03-15 00:49:22 +00:00
|
|
|
warnMetrics();
|
2011-05-16 08:55:20 +00:00
|
|
|
}
|
2011-04-16 13:36:09 +00:00
|
|
|
}
|