summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorementalo <ementalodev@gmx.co.uk>2012-10-10 14:00:38 +0100
committerementalo <ementalodev@gmx.co.uk>2012-10-10 14:01:22 +0100
commit3d2870cc4e6f771a37304ce9e6267663e10d01e6 (patch)
tree008085f4380398b7c21de638696b176d5876a021
parent62d5f63ab19fd5b35f712598080b8aab7e5e7185 (diff)
downloadEssentials-3d2870cc4e6f771a37304ce9e6267663e10d01e6.tar
Essentials-3d2870cc4e6f771a37304ce9e6267663e10d01e6.tar.gz
Essentials-3d2870cc4e6f771a37304ce9e6267663e10d01e6.tar.lz
Essentials-3d2870cc4e6f771a37304ce9e6267663e10d01e6.tar.xz
Essentials-3d2870cc4e6f771a37304ce9e6267663e10d01e6.zip
Esschat clean up
Re-implement sign throttle Test #2331
-rw-r--r--Essentials/src/net/ess3/api/IUser.java4
-rw-r--r--Essentials/src/net/ess3/user/User.java23
-rw-r--r--EssentialsChat/src/net/ess3/chat/EssentialsChatPlayer.java7
-rw-r--r--EssentialsSigns/src/net/ess3/signs/EssentialsSign.java9
-rw-r--r--EssentialsSigns/src/net/ess3/signs/EssentialsSignsPlugin.java3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/SignConfig.java40
-rw-r--r--EssentialsSigns/src/net/ess3/signs/Signs.java18
-rw-r--r--EssentialsSigns/src/net/ess3/signs/SignsConfig.java23
-rw-r--r--EssentialsSigns/src/net/ess3/signs/SignsConfigHolder.java4
-rw-r--r--EssentialsSigns/src/net/ess3/signs/SignsPermissions.java1
-rw-r--r--EssentialsSigns/src/net/ess3/signs/listeners/SignBlockListener.java (renamed from EssentialsSigns/src/net/ess3/signs/SignBlockListener.java)5
-rw-r--r--EssentialsSigns/src/net/ess3/signs/listeners/SignEntityListener.java (renamed from EssentialsSigns/src/net/ess3/signs/SignEntityListener.java)4
-rw-r--r--EssentialsSigns/src/net/ess3/signs/listeners/SignPlayerListener.java (renamed from EssentialsSigns/src/net/ess3/signs/SignPlayerListener.java)6
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignBalance.java (renamed from EssentialsSigns/src/net/ess3/signs/SignBalance.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignBuy.java (renamed from EssentialsSigns/src/net/ess3/signs/SignBuy.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignDisposal.java (renamed from EssentialsSigns/src/net/ess3/signs/SignDisposal.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignEnchant.java (renamed from EssentialsSigns/src/net/ess3/signs/SignEnchant.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignException.java (renamed from EssentialsSigns/src/net/ess3/signs/SignException.java)2
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignFree.java (renamed from EssentialsSigns/src/net/ess3/signs/SignFree.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignGameMode.java (renamed from EssentialsSigns/src/net/ess3/signs/SignGameMode.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignHeal.java (renamed from EssentialsSigns/src/net/ess3/signs/SignHeal.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignInfo.java (renamed from EssentialsSigns/src/net/ess3/signs/SignInfo.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignKit.java (renamed from EssentialsSigns/src/net/ess3/signs/SignKit.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignMail.java (renamed from EssentialsSigns/src/net/ess3/signs/SignMail.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignRepair.java (renamed from EssentialsSigns/src/net/ess3/signs/SignRepair.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignSell.java (renamed from EssentialsSigns/src/net/ess3/signs/SignSell.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignSpawnmob.java (renamed from EssentialsSigns/src/net/ess3/signs/SignSpawnmob.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignTime.java (renamed from EssentialsSigns/src/net/ess3/signs/SignTime.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignTrade.java (renamed from EssentialsSigns/src/net/ess3/signs/SignTrade.java)4
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignWarp.java (renamed from EssentialsSigns/src/net/ess3/signs/SignWarp.java)3
-rw-r--r--EssentialsSigns/src/net/ess3/signs/signs/SignWeather.java (renamed from EssentialsSigns/src/net/ess3/signs/SignWeather.java)3
31 files changed, 148 insertions, 53 deletions
diff --git a/Essentials/src/net/ess3/api/IUser.java b/Essentials/src/net/ess3/api/IUser.java
index 38af8ee58..0b6995fa4 100644
--- a/Essentials/src/net/ess3/api/IUser.java
+++ b/Essentials/src/net/ess3/api/IUser.java
@@ -124,7 +124,9 @@ public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolde
void setGodModeEnabled(boolean set);
- void setVanished(boolean set);
+ void setVanished(boolean set);
+
+ boolean checkSignThrottle(int throttle);
/**
* Since the Player object should not be stored for a long time, this method should be called again with a null
diff --git a/Essentials/src/net/ess3/user/User.java b/Essentials/src/net/ess3/user/User.java
index 9c0ed3bad..a428abc3f 100644
--- a/Essentials/src/net/ess3/user/User.java
+++ b/Essentials/src/net/ess3/user/User.java
@@ -50,6 +50,7 @@ public class User extends UserBase implements IUser
@Getter
@Setter
private boolean enderSee = false;
+ private long lastThrottledAction;
private transient Location afkPosition;
private AtomicBoolean gotMailInfo = new AtomicBoolean(false);
private WeakReference<Player> playerCache;
@@ -655,4 +656,26 @@ public class User extends UserBase implements IUser
final boolean set = !vanished;
this.setVanished(set);
}
+
+ @Override
+ public boolean checkSignThrottle(int usageLimit)
+ {
+ if (isSignThrottled(usageLimit))
+ {
+ return true;
+ }
+ updateThrottle();
+ return false;
+ }
+
+ public boolean isSignThrottled(int usageLimit)
+ {
+ final long minTime = lastThrottledAction + (1000 / usageLimit);
+ return (System.currentTimeMillis() < minTime);
+ }
+
+ private void updateThrottle()
+ {
+ lastThrottledAction = System.currentTimeMillis();;
+ }
}
diff --git a/EssentialsChat/src/net/ess3/chat/EssentialsChatPlayer.java b/EssentialsChat/src/net/ess3/chat/EssentialsChatPlayer.java
index 3d1be4521..8959c8a70 100644
--- a/EssentialsChat/src/net/ess3/chat/EssentialsChatPlayer.java
+++ b/EssentialsChat/src/net/ess3/chat/EssentialsChatPlayer.java
@@ -1,5 +1,6 @@
package net.ess3.chat;
+import java.text.MessageFormat;
import java.util.Locale;
import java.util.Map;
import java.util.logging.Logger;
@@ -18,7 +19,6 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
-//TODO: Translate the local/spy tags
public abstract class EssentialsChatPlayer implements Listener
{
protected transient IEssentials ess;
@@ -86,11 +86,14 @@ public abstract class EssentialsChatPlayer implements Listener
String world = user.getPlayer().getWorld().getName();
IRanks groupSettings = ess.getRanks();
+ MessageFormat format = groupSettings.getChatFormat(user);
+ synchronized(format)
+ {
event.setFormat(groupSettings.getChatFormat(user).format(new Object[]
{
group, world, world.substring(0, 1).toUpperCase(Locale.ENGLISH)
}));
-
+ }
}
//TODO: Flesh this out - '?' trigger is too easily accidentally triggered
diff --git a/EssentialsSigns/src/net/ess3/signs/EssentialsSign.java b/EssentialsSigns/src/net/ess3/signs/EssentialsSign.java
index 4aa10c25a..95876ff0f 100644
--- a/EssentialsSigns/src/net/ess3/signs/EssentialsSign.java
+++ b/EssentialsSigns/src/net/ess3/signs/EssentialsSign.java
@@ -8,6 +8,7 @@ import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
+import net.ess3.signs.signs.SignException;
import net.ess3.utils.FormatUtil;
import org.bukkit.Material;
import org.bukkit.block.Block;
@@ -75,10 +76,14 @@ public class EssentialsSign
return user.getName().substring(0, user.getName().length() > 13 ? 13 : user.getName().length());
}
- public final boolean onSignInteract(final Block block, final Player player, final IEssentials ess)
+ public final boolean onSignInteract(final Block block, final Player player, final IEssentials ess, final ISignsPlugin isp)
{
final ISign sign = new BlockSign(block);
final IUser user = ess.getUserMap().getUser(player);
+ if (user.checkSignThrottle(isp.getSettings().getData().getSignUsePerSecond()))
+ {
+ return false;
+ }
try
{
return SignsPermissions.USE.isAuthorized(user, signName)
@@ -466,7 +471,7 @@ public class EssentialsSign
}
- static class BlockSign implements ISign
+ public static class BlockSign implements ISign
{
private final transient Sign sign;
private final transient Block block;
diff --git a/EssentialsSigns/src/net/ess3/signs/EssentialsSignsPlugin.java b/EssentialsSigns/src/net/ess3/signs/EssentialsSignsPlugin.java
index ae96be4f6..cdd4494ea 100644
--- a/EssentialsSigns/src/net/ess3/signs/EssentialsSignsPlugin.java
+++ b/EssentialsSigns/src/net/ess3/signs/EssentialsSignsPlugin.java
@@ -5,6 +5,9 @@ import java.util.logging.Logger;
import static net.ess3.I18n._;
import net.ess3.api.IEssentials;
import net.ess3.api.IPlugin;
+import net.ess3.signs.listeners.SignBlockListener;
+import net.ess3.signs.listeners.SignEntityListener;
+import net.ess3.signs.listeners.SignPlayerListener;
import org.bukkit.Bukkit;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
diff --git a/EssentialsSigns/src/net/ess3/signs/SignConfig.java b/EssentialsSigns/src/net/ess3/signs/SignConfig.java
new file mode 100644
index 000000000..7706907ec
--- /dev/null
+++ b/EssentialsSigns/src/net/ess3/signs/SignConfig.java
@@ -0,0 +1,40 @@
+package net.ess3.signs;
+
+import java.util.Collections;
+import java.util.Map;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import net.ess3.storage.Comment;
+import net.ess3.storage.StorageObject;
+
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SignConfig implements StorageObject
+{
+ private Map<String, Boolean> signs;
+
+ public Map<String, Boolean> getSigns()
+ {
+ return signs == null
+ ? Collections.<String, Boolean>emptyMap()
+ : Collections.unmodifiableMap(signs);
+ }
+
+ public void setSigns(final Map<String, Boolean> signs)
+ {
+ this.signs = signs;
+ }
+ @Comment(
+ {
+ "How many times per second can Essentials signs be interacted with.",
+ "Values should be between 1-20, 20 being virtually no lag protection.",
+ "Lower numbers will reduce the possiblity of lag, but may annoy players."
+ })
+ private int signUsesPerSecond = 4;
+
+ public int getSignUsePerSecond() {
+
+ return signUsesPerSecond > 0 ? signUsesPerSecond : 1;
+ }
+}
diff --git a/EssentialsSigns/src/net/ess3/signs/Signs.java b/EssentialsSigns/src/net/ess3/signs/Signs.java
index 5f7dc702b..a81bd2e55 100644
--- a/EssentialsSigns/src/net/ess3/signs/Signs.java
+++ b/EssentialsSigns/src/net/ess3/signs/Signs.java
@@ -1,5 +1,23 @@
package net.ess3.signs;
+import net.ess3.signs.signs.SignMail;
+import net.ess3.signs.signs.SignDisposal;
+import net.ess3.signs.signs.SignBuy;
+import net.ess3.signs.signs.SignWarp;
+import net.ess3.signs.signs.SignSpawnmob;
+import net.ess3.signs.signs.SignTime;
+import net.ess3.signs.signs.SignWeather;
+import net.ess3.signs.signs.SignEnchant;
+import net.ess3.signs.signs.SignHeal;
+import net.ess3.signs.signs.SignFree;
+import net.ess3.signs.signs.SignInfo;
+import net.ess3.signs.signs.SignBalance;
+import net.ess3.signs.signs.SignSell;
+import net.ess3.signs.signs.SignGameMode;
+import net.ess3.signs.signs.SignKit;
+import net.ess3.signs.signs.SignTrade;
+import net.ess3.signs.signs.SignRepair;
+
public enum Signs
{
diff --git a/EssentialsSigns/src/net/ess3/signs/SignsConfig.java b/EssentialsSigns/src/net/ess3/signs/SignsConfig.java
deleted file mode 100644
index 2db26f9c0..000000000
--- a/EssentialsSigns/src/net/ess3/signs/SignsConfig.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package net.ess3.signs;
-
-import java.util.Collections;
-import java.util.Map;
-import net.ess3.storage.StorageObject;
-
-
-public class SignsConfig implements StorageObject
-{
- private Map<String, Boolean> signs;
-
- public Map<String, Boolean> getSigns()
- {
- return signs == null
- ? Collections.<String, Boolean>emptyMap()
- : Collections.unmodifiableMap(signs);
- }
-
- public void setSigns(final Map<String, Boolean> signs)
- {
- this.signs = signs;
- }
-}
diff --git a/EssentialsSigns/src/net/ess3/signs/SignsConfigHolder.java b/EssentialsSigns/src/net/ess3/signs/SignsConfigHolder.java
index 5f3a767f7..51937ee77 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignsConfigHolder.java
+++ b/EssentialsSigns/src/net/ess3/signs/SignsConfigHolder.java
@@ -7,7 +7,7 @@ import net.ess3.storage.AsyncStorageObjectHolder;
import org.bukkit.plugin.Plugin;
-public class SignsConfigHolder extends AsyncStorageObjectHolder<SignsConfig>
+public class SignsConfigHolder extends AsyncStorageObjectHolder<SignConfig>
{
private final transient Plugin plugin;
private Set<EssentialsSign> enabledSigns = new HashSet<EssentialsSign>();
@@ -15,7 +15,7 @@ public class SignsConfigHolder extends AsyncStorageObjectHolder<SignsConfig>
public SignsConfigHolder(final IEssentials ess, final Plugin plugin)
{
- super(ess, SignsConfig.class, new File(plugin.getDataFolder(), "config.yml"));
+ super(ess, SignConfig.class, new File(plugin.getDataFolder(), "signs.yml"));
this.plugin = plugin;
onReload();
final Map<String, Boolean> signs = getData().getSigns();
diff --git a/EssentialsSigns/src/net/ess3/signs/SignsPermissions.java b/EssentialsSigns/src/net/ess3/signs/SignsPermissions.java
index 7070bbb88..b9630e8ec 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignsPermissions.java
+++ b/EssentialsSigns/src/net/ess3/signs/SignsPermissions.java
@@ -8,7 +8,6 @@ import net.ess3.permissions.DotStarPermission;
public class SignsPermissions
{
public static final IPermission COLOR = new BasePermission("essentials.signs.", "color");
- public static final IPermission PROTECTION_OVERRIDE = new BasePermission("essentials.signs.protection.", "override");
public static final IPermission TRADE_OVERRIDE = new BasePermission("essentials.signs.trade.", "override");
public static final DotStarPermission CREATE = new DotStarPermission("essentials.signs.create");
public static final DotStarPermission USE = new DotStarPermission("essentials.signs.use");
diff --git a/EssentialsSigns/src/net/ess3/signs/SignBlockListener.java b/EssentialsSigns/src/net/ess3/signs/listeners/SignBlockListener.java
index e7fc11d44..9deea4de1 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignBlockListener.java
+++ b/EssentialsSigns/src/net/ess3/signs/listeners/SignBlockListener.java
@@ -1,4 +1,4 @@
-package net.ess3.signs;
+package net.ess3.signs.listeners;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -6,6 +6,9 @@ import net.ess3.api.IEssentials;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.permissions.Permissions;
+import net.ess3.signs.EssentialsSign;
+import net.ess3.signs.ISignsPlugin;
+import net.ess3.signs.Signs;
import net.ess3.utils.FormatUtil;
import org.bukkit.Material;
import org.bukkit.block.Block;
diff --git a/EssentialsSigns/src/net/ess3/signs/SignEntityListener.java b/EssentialsSigns/src/net/ess3/signs/listeners/SignEntityListener.java
index 1c316478d..2be907813 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignEntityListener.java
+++ b/EssentialsSigns/src/net/ess3/signs/listeners/SignEntityListener.java
@@ -1,6 +1,8 @@
-package net.ess3.signs;
+package net.ess3.signs.listeners;
import net.ess3.api.IEssentials;
+import net.ess3.signs.EssentialsSign;
+import net.ess3.signs.ISignsPlugin;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
diff --git a/EssentialsSigns/src/net/ess3/signs/SignPlayerListener.java b/EssentialsSigns/src/net/ess3/signs/listeners/SignPlayerListener.java
index eabf5423b..8c6fc6899 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignPlayerListener.java
+++ b/EssentialsSigns/src/net/ess3/signs/listeners/SignPlayerListener.java
@@ -1,6 +1,8 @@
-package net.ess3.signs;
+package net.ess3.signs.listeners;
import net.ess3.api.IEssentials;
+import net.ess3.signs.EssentialsSign;
+import net.ess3.signs.ISignsPlugin;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
@@ -43,7 +45,7 @@ public class SignPlayerListener implements Listener
{
if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName()))
{
- sign.onSignInteract(block, event.getPlayer(), ess);
+ sign.onSignInteract(block, event.getPlayer(), ess, plugin);
event.setCancelled(true);
return;
}
diff --git a/EssentialsSigns/src/net/ess3/signs/SignBalance.java b/EssentialsSigns/src/net/ess3/signs/signs/SignBalance.java
index 2648e6aad..814a9b5dc 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignBalance.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignBalance.java
@@ -1,8 +1,9 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import static net.ess3.I18n._;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
+import net.ess3.signs.EssentialsSign;
import net.ess3.utils.FormatUtil;
diff --git a/EssentialsSigns/src/net/ess3/signs/SignBuy.java b/EssentialsSigns/src/net/ess3/signs/signs/SignBuy.java
index ff08cdbc1..64b194515 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignBuy.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignBuy.java
@@ -1,9 +1,10 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
+import net.ess3.signs.EssentialsSign;
public class SignBuy extends EssentialsSign
diff --git a/EssentialsSigns/src/net/ess3/signs/SignDisposal.java b/EssentialsSigns/src/net/ess3/signs/signs/SignDisposal.java
index 01775e18c..c637467c2 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignDisposal.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignDisposal.java
@@ -1,7 +1,8 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
+import net.ess3.signs.EssentialsSign;
public class SignDisposal extends EssentialsSign
diff --git a/EssentialsSigns/src/net/ess3/signs/SignEnchant.java b/EssentialsSigns/src/net/ess3/signs/signs/SignEnchant.java
index 492836eee..365de9557 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignEnchant.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignEnchant.java
@@ -1,4 +1,4 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import java.util.Locale;
import static net.ess3.I18n._;
@@ -7,6 +7,7 @@ import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.bukkit.Enchantments;
import net.ess3.economy.Trade;
+import net.ess3.signs.EssentialsSign;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
diff --git a/EssentialsSigns/src/net/ess3/signs/SignException.java b/EssentialsSigns/src/net/ess3/signs/signs/SignException.java
index 7ca73e4e5..6a32b95bc 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignException.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignException.java
@@ -1,4 +1,4 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
public class SignException extends Exception
diff --git a/EssentialsSigns/src/net/ess3/signs/SignFree.java b/EssentialsSigns/src/net/ess3/signs/signs/SignFree.java
index 906929e09..cf7ffed50 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignFree.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignFree.java
@@ -1,10 +1,11 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import static net.ess3.I18n._;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.craftbukkit.InventoryWorkaround;
import net.ess3.economy.Trade;
+import net.ess3.signs.EssentialsSign;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
diff --git a/EssentialsSigns/src/net/ess3/signs/SignGameMode.java b/EssentialsSigns/src/net/ess3/signs/signs/SignGameMode.java
index 1109956ab..52972e9cd 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignGameMode.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignGameMode.java
@@ -1,4 +1,4 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import java.util.Locale;
import static net.ess3.I18n._;
@@ -6,6 +6,7 @@ import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
+import net.ess3.signs.EssentialsSign;
import org.bukkit.GameMode;
diff --git a/EssentialsSigns/src/net/ess3/signs/SignHeal.java b/EssentialsSigns/src/net/ess3/signs/signs/SignHeal.java
index 6d82ba70f..470145abf 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignHeal.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignHeal.java
@@ -1,10 +1,11 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import static net.ess3.I18n._;
import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
+import net.ess3.signs.EssentialsSign;
public class SignHeal extends EssentialsSign
diff --git a/EssentialsSigns/src/net/ess3/signs/SignInfo.java b/EssentialsSigns/src/net/ess3/signs/signs/SignInfo.java
index dd37d6462..634959c6d 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignInfo.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignInfo.java
@@ -1,10 +1,11 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import java.io.IOException;
import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
+import net.ess3.signs.EssentialsSign;
import net.ess3.utils.textreader.IText;
import net.ess3.utils.textreader.KeywordReplacer;
import net.ess3.utils.textreader.TextInput;
diff --git a/EssentialsSigns/src/net/ess3/signs/SignKit.java b/EssentialsSigns/src/net/ess3/signs/signs/SignKit.java
index 413eed605..ed8fb075b 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignKit.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignKit.java
@@ -1,4 +1,4 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import java.util.Locale;
import net.ess3.api.ChargeException;
@@ -7,6 +7,7 @@ import net.ess3.api.IUser;
import net.ess3.economy.Trade;
import net.ess3.permissions.Permissions;
import net.ess3.settings.Kit;
+import net.ess3.signs.EssentialsSign;
public class SignKit extends EssentialsSign
diff --git a/EssentialsSigns/src/net/ess3/signs/SignMail.java b/EssentialsSigns/src/net/ess3/signs/signs/SignMail.java
index b9f7de05c..2f93aadb0 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignMail.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignMail.java
@@ -1,9 +1,10 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import java.util.List;
import static net.ess3.I18n._;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
+import net.ess3.signs.EssentialsSign;
public class SignMail extends EssentialsSign
diff --git a/EssentialsSigns/src/net/ess3/signs/SignRepair.java b/EssentialsSigns/src/net/ess3/signs/signs/SignRepair.java
index 1610f16f8..5b60c348c 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignRepair.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignRepair.java
@@ -1,4 +1,4 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import static net.ess3.I18n._;
import net.ess3.api.ChargeException;
@@ -6,6 +6,7 @@ import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.commands.Commandrepair;
import net.ess3.economy.Trade;
+import net.ess3.signs.EssentialsSign;
public class SignRepair extends EssentialsSign
diff --git a/EssentialsSigns/src/net/ess3/signs/SignSell.java b/EssentialsSigns/src/net/ess3/signs/signs/SignSell.java
index 9a48e4948..bcebe6cfd 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignSell.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignSell.java
@@ -1,9 +1,10 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
+import net.ess3.signs.EssentialsSign;
public class SignSell extends EssentialsSign
diff --git a/EssentialsSigns/src/net/ess3/signs/SignSpawnmob.java b/EssentialsSigns/src/net/ess3/signs/signs/SignSpawnmob.java
index 47961a96e..efe602aec 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignSpawnmob.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignSpawnmob.java
@@ -1,10 +1,11 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.commands.Commandspawnmob;
import net.ess3.economy.Trade;
+import net.ess3.signs.EssentialsSign;
public class SignSpawnmob extends EssentialsSign
diff --git a/EssentialsSigns/src/net/ess3/signs/SignTime.java b/EssentialsSigns/src/net/ess3/signs/signs/SignTime.java
index 215721b69..d6d65f76d 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignTime.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignTime.java
@@ -1,10 +1,11 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import static net.ess3.I18n._;
import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
+import net.ess3.signs.EssentialsSign;
import org.bukkit.World;
diff --git a/EssentialsSigns/src/net/ess3/signs/SignTrade.java b/EssentialsSigns/src/net/ess3/signs/signs/SignTrade.java
index dc5129cbb..798fb1733 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignTrade.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignTrade.java
@@ -1,10 +1,12 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import static net.ess3.I18n._;
import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
+import net.ess3.signs.EssentialsSign;
+import net.ess3.signs.SignsPermissions;
import net.ess3.utils.FormatUtil;
import org.bukkit.inventory.ItemStack;
diff --git a/EssentialsSigns/src/net/ess3/signs/SignWarp.java b/EssentialsSigns/src/net/ess3/signs/signs/SignWarp.java
index 7987ce9da..08c9795ef 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignWarp.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignWarp.java
@@ -1,10 +1,11 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
import net.ess3.permissions.Permissions;
+import net.ess3.signs.EssentialsSign;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
diff --git a/EssentialsSigns/src/net/ess3/signs/SignWeather.java b/EssentialsSigns/src/net/ess3/signs/signs/SignWeather.java
index 18aa1f567..0d428f11d 100644
--- a/EssentialsSigns/src/net/ess3/signs/SignWeather.java
+++ b/EssentialsSigns/src/net/ess3/signs/signs/SignWeather.java
@@ -1,10 +1,11 @@
-package net.ess3.signs;
+package net.ess3.signs.signs;
import static net.ess3.I18n._;
import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
+import net.ess3.signs.EssentialsSign;
import org.bukkit.World;