diff options
-rw-r--r-- | Essentials/src/net/ess3/Kits.java | 59 | ||||
-rw-r--r-- | Essentials/src/net/ess3/api/IUser.java | 4 | ||||
-rw-r--r-- | Essentials/src/net/ess3/api/server/World.java | 2 | ||||
-rw-r--r-- | Essentials/src/net/ess3/settings/Jails.java | 6 | ||||
-rw-r--r-- | Essentials/src/net/ess3/settings/Kit.java | 2 | ||||
-rw-r--r-- | Essentials/src/net/ess3/settings/Spawns.java | 2 |
6 files changed, 64 insertions, 11 deletions
diff --git a/Essentials/src/net/ess3/Kits.java b/Essentials/src/net/ess3/Kits.java index e286eb847..3dfcac31f 100644 --- a/Essentials/src/net/ess3/Kits.java +++ b/Essentials/src/net/ess3/Kits.java @@ -1,15 +1,18 @@ package net.ess3; +import java.io.File; +import java.io.IOException; +import java.util.*; import static net.ess3.I18n._; import net.ess3.api.IEssentials; import net.ess3.api.IKits; import net.ess3.api.IUser; +import net.ess3.api.server.ItemStack; +import net.ess3.commands.NoChargeException; import net.ess3.settings.Kit; import net.ess3.storage.AsyncStorageObjectHolder; -import java.io.File; -import java.io.IOException; -import java.util.*; -import org.bukkit.inventory.ItemStack; +import net.ess3.user.UserData.TimestampType; +import net.ess3.utils.DateUtil; public class Kits extends AsyncStorageObjectHolder<net.ess3.settings.Kits> implements IKits @@ -87,4 +90,52 @@ public class Kits extends AsyncStorageObjectHolder<net.ess3.settings.Kits> imple { return getData().getKits().isEmpty(); } + + @Override + public void finishRead() + { + + } + + @Override + public void finishWrite() + { + + } + + @Override + public void checkTime(IUser user, Kit kit) throws NoChargeException + { + final Calendar time = new GregorianCalendar(); + // Take the current time, and remove the delay from it. + final double delay = kit.getDelay(); + final Calendar earliestTime = new GregorianCalendar(); + earliestTime.add(Calendar.SECOND, -(int)delay); + earliestTime.add(Calendar.MILLISECOND, -(int)((delay * 1000.0) % 1000.0)); + + // This value contains the most recent time a kit could have been used that would allow another use. + + final long earliestLong = earliestTime.getTimeInMillis(); + + // When was the last kit used? + final Long lastTime = user.getTimestamp(TimestampType.KIT); + if (lastTime == null || lastTime < earliestLong) + { + user.setTimestamp(TimestampType.KIT, time.getTimeInMillis()); + } + else if (lastTime > time.getTimeInMillis()) + { + // This is to make sure time didn't get messed up on last kit use. + // If this happens, let's give the user the benifit of the doubt. + user.setTimestamp(TimestampType.KIT, time.getTimeInMillis()); + } + else + { + time.setTimeInMillis(lastTime); + time.add(Calendar.SECOND, (int)delay); + time.add(Calendar.MILLISECOND, (int)((delay * 1000.0) % 1000.0)); + user.sendMessage(_("kitTimed", DateUtil.formatDateDiff(time.getTimeInMillis()))); + throw new NoChargeException(); + } + } } diff --git a/Essentials/src/net/ess3/api/IUser.java b/Essentials/src/net/ess3/api/IUser.java index 257c971cb..bb1d985ed 100644 --- a/Essentials/src/net/ess3/api/IUser.java +++ b/Essentials/src/net/ess3/api/IUser.java @@ -1,13 +1,13 @@ package net.ess3.api; +import java.util.List; import net.ess3.api.server.CommandSender; -import net.ess3.api.server.Player; import net.ess3.api.server.ItemStack; import net.ess3.api.server.Location; +import net.ess3.api.server.Player; import net.ess3.storage.IStorageObjectHolder; import net.ess3.user.CooldownException; import net.ess3.user.UserData; -import java.util.List; public interface IUser extends Player, IStorageObjectHolder<UserData>, IReload, IReplyTo, Comparable<IUser> diff --git a/Essentials/src/net/ess3/api/server/World.java b/Essentials/src/net/ess3/api/server/World.java index ecd129609..9f1487635 100644 --- a/Essentials/src/net/ess3/api/server/World.java +++ b/Essentials/src/net/ess3/api/server/World.java @@ -23,4 +23,6 @@ public interface World { void setWeatherDuration(int i); long getTime(); + + void setSpawnLocation(int blockX, int blockY, int blockZ); } diff --git a/Essentials/src/net/ess3/settings/Jails.java b/Essentials/src/net/ess3/settings/Jails.java index 6bcad4d4a..412e04f78 100644 --- a/Essentials/src/net/ess3/settings/Jails.java +++ b/Essentials/src/net/ess3/settings/Jails.java @@ -4,15 +4,15 @@ import java.util.HashMap; import java.util.Map; import lombok.Data; import lombok.EqualsAndHashCode; -import net.ess3.storage.Location; import net.ess3.storage.MapValueType; import net.ess3.storage.StorageObject; +import net.ess3.storage.StoredLocation; @Data @EqualsAndHashCode(callSuper = false) public class Jails implements StorageObject { - @MapValueType(Location.class) - private Map<String, Location> jails = new HashMap<String, Location>(); + @MapValueType(StoredLocation.class) + private Map<String, StoredLocation> jails = new HashMap<String, StoredLocation>(); } diff --git a/Essentials/src/net/ess3/settings/Kit.java b/Essentials/src/net/ess3/settings/Kit.java index 822209eda..19b4b0275 100644 --- a/Essentials/src/net/ess3/settings/Kit.java +++ b/Essentials/src/net/ess3/settings/Kit.java @@ -4,9 +4,9 @@ import java.util.ArrayList; import java.util.List; import lombok.Data; import lombok.EqualsAndHashCode; +import net.ess3.api.server.ItemStack; import net.ess3.storage.ListType; import net.ess3.storage.StorageObject; -import org.bukkit.inventory.ItemStack; @Data diff --git a/Essentials/src/net/ess3/settings/Spawns.java b/Essentials/src/net/ess3/settings/Spawns.java index 91dab36f9..c01f366e2 100644 --- a/Essentials/src/net/ess3/settings/Spawns.java +++ b/Essentials/src/net/ess3/settings/Spawns.java @@ -5,9 +5,9 @@ import java.util.Map; import lombok.Data; import lombok.EqualsAndHashCode; import net.ess3.storage.Comment; -import net.ess3.storage.Location; import net.ess3.storage.MapValueType; import net.ess3.storage.StorageObject; +import net.ess3.storage.StoredLocation; @Data |