mirror of
https://github.com/EssentialsX/Essentials.git
synced 2024-12-22 17:18:37 +01:00
[trunk] New base class for User for storing all data.
TODO: - Get rid of users.yml - Cleanup User class git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1142 e251c2fe-e539-e718-e476-b85c1f46cddb
This commit is contained in:
parent
c1ac5b345f
commit
46e6276c63
@ -6,8 +6,14 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.config.Configuration;
|
||||
|
||||
|
||||
@ -118,4 +124,61 @@ public class EssentialsConf extends Configuration
|
||||
this.templateName = templateName;
|
||||
this.resourceClass = resClass;
|
||||
}
|
||||
|
||||
public boolean hasProperty(String path) {
|
||||
return getProperty(path) != null;
|
||||
}
|
||||
|
||||
public Location getLocation(String path, Server server) {
|
||||
String worldName = getString(path+".world");
|
||||
if (worldName == null || worldName.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
World world = server.getWorld(worldName);
|
||||
if (world == null) {
|
||||
return null;
|
||||
}
|
||||
return new Location(world,
|
||||
getDouble(path+".x", 0),
|
||||
getDouble(path+".y", 0),
|
||||
getDouble(path+".z", 0),
|
||||
(float)getDouble(path+".paw", 0),
|
||||
(float)getDouble(path+".pitch", 0));
|
||||
}
|
||||
|
||||
public void setProperty(String path, Location loc) {
|
||||
Map<String, Object> map = new HashMap<String, Object>();
|
||||
map.put("world", loc.getWorld().getName());
|
||||
map.put("x", loc.getX());
|
||||
map.put("y", loc.getY());
|
||||
map.put("z", loc.getZ());
|
||||
map.put("yaw", loc.getYaw());
|
||||
map.put("pitch", loc.getPitch());
|
||||
setProperty(path, map);
|
||||
}
|
||||
|
||||
public ItemStack getItemStack(String path) {
|
||||
return new ItemStack(
|
||||
Material.valueOf(getString(path+".type", "AIR")),
|
||||
getInt(path+".amount", 1),
|
||||
(short)getInt(path+".damage", 0),
|
||||
(byte)getInt(path+".data", 0));
|
||||
}
|
||||
|
||||
public void setProperty(String path, ItemStack stack) {
|
||||
Map<String, Object> map = new HashMap<String, Object>();
|
||||
map.put("type", stack.getType().toString());
|
||||
map.put("amount", stack.getAmount());
|
||||
map.put("damage", stack.getDurability());
|
||||
map.put("data", stack.getData().getData());
|
||||
setProperty(path, map);
|
||||
}
|
||||
|
||||
public long getLong(String path, long def) {
|
||||
Number num = (Number)getProperty(path);
|
||||
if (num == null) {
|
||||
return def;
|
||||
}
|
||||
return num.longValue();
|
||||
}
|
||||
}
|
||||
|
428
Essentials/src/com/earth2me/essentials/UserData.java
Normal file
428
Essentials/src/com/earth2me/essentials/UserData.java
Normal file
@ -0,0 +1,428 @@
|
||||
package com.earth2me.essentials;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public abstract class UserData extends PlayerExtension implements IConf {
|
||||
private EssentialsConf config;
|
||||
private static final Logger logger = Logger.getLogger("Minecraft");
|
||||
|
||||
protected UserData(Player base, File folder) {
|
||||
super(base);
|
||||
folder = new File(folder, "userdata");
|
||||
if (!folder.exists()) {
|
||||
folder.mkdirs();
|
||||
}
|
||||
config = new EssentialsConf(new File(folder, base.getName()+".yml"));
|
||||
reloadConfig();
|
||||
}
|
||||
|
||||
public final void reloadConfig() {
|
||||
config.load();
|
||||
updateConfig();
|
||||
unlimited = _getUnlimited();
|
||||
powertools = getPowertools();
|
||||
lastLocation = _getLastLocation();
|
||||
lastTeleportTimestamp = _getLastTeleportTimestamp();
|
||||
lastHealTimestamp = _getLastHealTimestamp();
|
||||
jail = _getJail();
|
||||
mails = _getMails();
|
||||
savedInventory = _getSavedInventory();
|
||||
teleportEnabled = getTeleportEnabled();
|
||||
ignoredPlayers = getIgnoredPlayers();
|
||||
godmode = getGodModeEnabled();
|
||||
muted = getMuted();
|
||||
jailed = getJailed();
|
||||
|
||||
}
|
||||
|
||||
public double getMoney() {
|
||||
if (config.hasProperty("money"))
|
||||
{
|
||||
return config.getDouble("money", Essentials.getSettings().getStartingBalance());
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return com.nijiko.coelho.iConomy.iConomy.getBank().getAccount(getName()).getBalance();
|
||||
}
|
||||
catch (Throwable ex)
|
||||
{
|
||||
return Essentials.getSettings().getStartingBalance();
|
||||
}
|
||||
}
|
||||
|
||||
public void setMoney(double value) {
|
||||
try
|
||||
{
|
||||
com.nijiko.coelho.iConomy.iConomy.getBank().getAccount(getName()).setBalance(value);
|
||||
}
|
||||
catch (Throwable ex)
|
||||
{
|
||||
config.setProperty("money", value);
|
||||
config.save();
|
||||
}
|
||||
}
|
||||
|
||||
public Location getHome() throws Exception {
|
||||
if (config.hasProperty("home"))
|
||||
{
|
||||
World world = getLocation().getWorld();
|
||||
String worldHome = "home.worlds." + world.getName().toLowerCase();
|
||||
if (!config.hasProperty(worldHome)) {
|
||||
String defaultWorld = config.getString("home.default");
|
||||
worldHome = "home.worlds." + defaultWorld;
|
||||
}
|
||||
return config.getLocation(worldHome, getServer());
|
||||
} else {
|
||||
throw new Exception("You have not set a home.");
|
||||
}
|
||||
}
|
||||
|
||||
public void setHome(Location loc, boolean b) {
|
||||
String worldName = loc.getWorld().getName().toLowerCase();
|
||||
if (worldName == null || worldName.isEmpty()) {
|
||||
logger.log(Level.WARNING, "Set Home: World name is null or empty.");
|
||||
return;
|
||||
}
|
||||
if (b) {
|
||||
config.setProperty("home.default", worldName);
|
||||
}
|
||||
|
||||
config.setProperty("home.worlds."+worldName, loc);
|
||||
config.save();
|
||||
}
|
||||
|
||||
public String getNickname() {
|
||||
return config.getString("nickname");
|
||||
}
|
||||
|
||||
public void setNickname(String nick) {
|
||||
config.setProperty("nickname", nick);
|
||||
config.save();
|
||||
}
|
||||
|
||||
private List<Integer> unlimited;
|
||||
|
||||
private List<Integer> _getUnlimited() {
|
||||
return config.getIntList("unlimited", new ArrayList<Integer>());
|
||||
}
|
||||
|
||||
public List<Integer> getUnlimited() {
|
||||
return unlimited;
|
||||
}
|
||||
|
||||
public boolean hasUnlimited(ItemStack stack) {
|
||||
return unlimited.contains(stack.getTypeId());
|
||||
}
|
||||
|
||||
public void setUnlimited(ItemStack stack, boolean state) {
|
||||
if (unlimited.contains(stack.getTypeId())) {
|
||||
unlimited.remove(Integer.valueOf(stack.getTypeId()));
|
||||
}
|
||||
if (state) {
|
||||
unlimited.add(stack.getTypeId());
|
||||
}
|
||||
config.setProperty("unlimited", unlimited);
|
||||
config.save();
|
||||
}
|
||||
|
||||
private Map<Integer, String> powertools;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private Map<Integer, String> getPowertools() {
|
||||
Object o = config.getProperty("powertools");
|
||||
if (o != null && o instanceof Map) {
|
||||
return (Map<Integer, String>)o;
|
||||
} else {
|
||||
return new HashMap<Integer, String>();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public String getPowertool(ItemStack stack) {
|
||||
return powertools.get(stack.getTypeId());
|
||||
}
|
||||
|
||||
public void setPowertool(ItemStack stack, String command) {
|
||||
if (command == null || command.isEmpty()) {
|
||||
powertools.remove(stack.getTypeId());
|
||||
} else {
|
||||
powertools.put(stack.getTypeId(), command);
|
||||
}
|
||||
config.setProperty("powertools", powertools);
|
||||
config.save();
|
||||
}
|
||||
|
||||
private Location lastLocation;
|
||||
|
||||
private Location _getLastLocation() {
|
||||
return config.getLocation("lastlocation", getServer());
|
||||
}
|
||||
|
||||
public Location getLastLocation() {
|
||||
return lastLocation;
|
||||
}
|
||||
|
||||
public void setLastLocation(Location loc) {
|
||||
lastLocation = loc;
|
||||
config.setProperty("lastlocation", loc);
|
||||
config.save();
|
||||
}
|
||||
|
||||
private long lastTeleportTimestamp;
|
||||
|
||||
private long _getLastTeleportTimestamp() {
|
||||
return config.getLong("timestamps.lastteleport", 0);
|
||||
}
|
||||
|
||||
public long getLastTeleportTimestamp() {
|
||||
return lastTeleportTimestamp;
|
||||
}
|
||||
|
||||
public void setLastTeleportTimestamp(long time) {
|
||||
lastTeleportTimestamp = time;
|
||||
config.setProperty("timestamps.lastteleport", time);
|
||||
config.save();
|
||||
}
|
||||
|
||||
private long lastHealTimestamp;
|
||||
|
||||
private long _getLastHealTimestamp() {
|
||||
return config.getLong("timestamps.lastheal", 0);
|
||||
}
|
||||
|
||||
public long getLastHealTimestamp() {
|
||||
return lastHealTimestamp;
|
||||
}
|
||||
|
||||
public void setLastHealTimestamp(long time) {
|
||||
lastHealTimestamp = time;
|
||||
config.setProperty("timestamps.lastheal", time);
|
||||
config.save();
|
||||
}
|
||||
|
||||
private String jail;
|
||||
|
||||
private String _getJail() {
|
||||
return config.getString("jail");
|
||||
}
|
||||
|
||||
public String getJail() {
|
||||
return jail;
|
||||
}
|
||||
|
||||
public void setJail(String jail) {
|
||||
if (jail == null || jail.isEmpty()) {
|
||||
this.jail = null;
|
||||
config.removeProperty("jail");
|
||||
} else {
|
||||
this.jail = jail;
|
||||
config.setProperty("jail", jail);
|
||||
}
|
||||
config.save();
|
||||
}
|
||||
|
||||
private List<String> mails;
|
||||
|
||||
private List<String> _getMails() {
|
||||
return config.getStringList("mail", new ArrayList<String>());
|
||||
}
|
||||
|
||||
public void setMails(List<String> mails) {
|
||||
if (mails == null) {
|
||||
config.removeProperty("mail");
|
||||
} else {
|
||||
config.setProperty("mail", mails);
|
||||
}
|
||||
this.mails = mails;
|
||||
config.save();
|
||||
}
|
||||
|
||||
public void addMail(String mail) {
|
||||
mails.add(mail);
|
||||
setMails(mails);
|
||||
}
|
||||
|
||||
private ItemStack[] savedInventory;
|
||||
|
||||
public ItemStack[] getSavedInventory() {
|
||||
return savedInventory;
|
||||
}
|
||||
|
||||
private ItemStack[] _getSavedInventory() {
|
||||
int size = config.getInt("inventory.size", 0);
|
||||
if (size < 1 || size > getInventory().getSize()) {
|
||||
return null;
|
||||
}
|
||||
ItemStack[] is = new ItemStack[size];
|
||||
for (int i = 0; i < size; i++) {
|
||||
is[i] = config.getItemStack("inventory."+i);
|
||||
}
|
||||
return is;
|
||||
}
|
||||
|
||||
public void setSavedInventory(ItemStack[] is) {
|
||||
if (is == null || is.length == 0) {
|
||||
savedInventory = null;
|
||||
config.removeProperty("inventory");
|
||||
} else {
|
||||
savedInventory = is;
|
||||
config.setProperty("inventory.size", is.length);
|
||||
for (int i = 0; i < is.length; i++) {
|
||||
if (is[i].getType() == Material.AIR) {
|
||||
continue;
|
||||
}
|
||||
config.setProperty("inventory."+i, is[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean teleportEnabled;
|
||||
|
||||
private boolean getTeleportEnabled() {
|
||||
return config.getBoolean("teleportenabled", true);
|
||||
}
|
||||
|
||||
public boolean isTeleportEnabled() {
|
||||
return teleportEnabled;
|
||||
}
|
||||
|
||||
public void setTeleportEnabled(boolean set) {
|
||||
teleportEnabled = set;
|
||||
config.setProperty("teleportenabled", set);
|
||||
config.save();
|
||||
}
|
||||
|
||||
public boolean toggleTeleportEnabled() {
|
||||
boolean ret = !isTeleportEnabled();
|
||||
setTeleportEnabled(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
private List<String> ignoredPlayers;
|
||||
|
||||
public List<String> getIgnoredPlayers() {
|
||||
return config.getStringList("ignore", new ArrayList<String>());
|
||||
}
|
||||
|
||||
public void setIgnoredPlayers(List<String> players) {
|
||||
if (players == null || players.isEmpty()) {
|
||||
ignoredPlayers = new ArrayList<String>();
|
||||
config.removeProperty("ignore");
|
||||
} else {
|
||||
ignoredPlayers = players;
|
||||
config.setProperty("ignore", players);
|
||||
}
|
||||
config.save();
|
||||
}
|
||||
|
||||
public boolean isIgnoredPlayer(String name) {
|
||||
return ignoredPlayers.contains(name);
|
||||
}
|
||||
|
||||
public void setIgnoredPlayer(String name, boolean set) {
|
||||
if (set) {
|
||||
ignoredPlayers.add(name);
|
||||
} else {
|
||||
ignoredPlayers.remove(name);
|
||||
}
|
||||
setIgnoredPlayers(ignoredPlayers);
|
||||
}
|
||||
|
||||
private boolean godmode;
|
||||
|
||||
private boolean getGodModeEnabled() {
|
||||
return config.getBoolean("godmode", true);
|
||||
}
|
||||
|
||||
public boolean isGodModeEnabled() {
|
||||
return godmode;
|
||||
}
|
||||
|
||||
public void setGodModeEnabled(boolean set) {
|
||||
godmode = set;
|
||||
config.setProperty("godmode", set);
|
||||
config.save();
|
||||
}
|
||||
|
||||
public boolean toggleGodModeEnabled() {
|
||||
boolean ret = !isGodModeEnabled();
|
||||
setGodModeEnabled(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
private boolean muted;
|
||||
|
||||
private boolean getMuted() {
|
||||
return config.getBoolean("muted", true);
|
||||
}
|
||||
|
||||
public boolean isMuted() {
|
||||
return muted;
|
||||
}
|
||||
|
||||
public void setMuted(boolean set) {
|
||||
muted = set;
|
||||
config.setProperty("muted", set);
|
||||
config.save();
|
||||
}
|
||||
|
||||
public boolean toggleMuted() {
|
||||
boolean ret = !isMuted();
|
||||
setMuted(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
private boolean jailed;
|
||||
|
||||
private boolean getJailed() {
|
||||
return config.getBoolean("jailed", true);
|
||||
}
|
||||
|
||||
public boolean isJailed() {
|
||||
return jailed;
|
||||
}
|
||||
|
||||
public void setJailed(boolean set) {
|
||||
jailed = set;
|
||||
config.setProperty("jailed", set);
|
||||
config.save();
|
||||
}
|
||||
|
||||
public boolean toggleJailed() {
|
||||
boolean ret = !isJailed();
|
||||
setJailed(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
private void updateConfig() {
|
||||
if (config.hasProperty("home") && !config.hasProperty("home.default")) {
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Object> vals = (List<Object>)config.getProperty("home");
|
||||
World world = getServer() == null ? null : getServer().getWorlds().get(0);
|
||||
if (vals.size() > 5 && getServer() != null) {
|
||||
world = getServer().getWorld((String)vals.get(5));
|
||||
}
|
||||
Location loc = new Location(
|
||||
world,
|
||||
((Number)vals.get(0)).doubleValue(),
|
||||
((Number)vals.get(1)).doubleValue(),
|
||||
((Number)vals.get(2)).doubleValue(),
|
||||
((Number)vals.get(3)).floatValue(),
|
||||
((Number)vals.get(4)).floatValue());
|
||||
config.removeProperty("home");
|
||||
setHome(loc, true);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user