summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2011-07-07 04:14:50 +0100
committerKHobbits <rob@khobbits.co.uk>2011-07-07 04:14:50 +0100
commit34568ea8fc2249cc3edee9a259122b0b4316d478 (patch)
tree051f24907e9d64eb2333797b1b01dba8a661f0e4
parent209a9a2f958a583b3d50dd7a60c62a3df17a8b70 (diff)
parent56a2398d9bf7bb946066006781b10360ec1997b4 (diff)
downloadEssentials-34568ea8fc2249cc3edee9a259122b0b4316d478.tar
Essentials-34568ea8fc2249cc3edee9a259122b0b4316d478.tar.gz
Essentials-34568ea8fc2249cc3edee9a259122b0b4316d478.tar.lz
Essentials-34568ea8fc2249cc3edee9a259122b0b4316d478.tar.xz
Essentials-34568ea8fc2249cc3edee9a259122b0b4316d478.zip
Merge branch 'master' of github.com:khobbits/Essentials
Conflicts: Essentials/src/com/earth2me/essentials/commands/Commandhelp.java
-rw-r--r--Essentials/src/com/earth2me/essentials/Essentials.java80
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java19
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsEcoBlockListener.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsEcoPlayerListener.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java48
-rw-r--r--Essentials/src/com/earth2me/essentials/IEssentials.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/IUser.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/InventoryWorkaround.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/Mob.java102
-rw-r--r--Essentials/src/com/earth2me/essentials/Settings.java15
-rw-r--r--Essentials/src/com/earth2me/essentials/TNTExplodeListener.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/Teleport.java20
-rw-r--r--Essentials/src/com/earth2me/essentials/Trade.java113
-rw-r--r--Essentials/src/com/earth2me/essentials/User.java40
-rw-r--r--Essentials/src/com/earth2me/essentials/UserData.java37
-rw-r--r--Essentials/src/com/earth2me/essentials/api/Economy.java7
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandafk.java20
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandgc.java3
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandhelp.java21
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandrealname.java13
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandsell.java5
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandsethome.java23
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java44
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandtp.java4
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandtpall.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandtpo.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/register/payment/Methods.java5
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java203
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java179
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignBuy.java1
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java44
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignFree.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java65
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignProtection.java314
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignSell.java5
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignTrade.java47
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignWarp.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignWeather.java56
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/Signs.java27
-rw-r--r--Essentials/src/config.yml9
-rw-r--r--Essentials/src/items.csv14
-rw-r--r--Essentials/src/messages.properties7
-rw-r--r--Essentials/src/messages_da.properties5
-rw-r--r--Essentials/src/messages_de.properties5
-rw-r--r--Essentials/src/messages_en.properties5
-rw-r--r--Essentials/src/messages_fr.properties5
-rw-r--r--Essentials/src/messages_nl.properties5
-rw-r--r--EssentialsChat/nbproject/project.properties4
-rw-r--r--EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java3
-rw-r--r--EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java42
-rw-r--r--EssentialsChat/src/plugin.yml19
-rw-r--r--EssentialsGroupBridge/src/com/nijikokun/bukkit/Permissions/Permissions.java64
-rw-r--r--EssentialsGroupBridge/src/org/anjocaido/groupmanager/permissions/NijikoPermissionsProxy.java6
-rw-r--r--EssentialsGroupManager/src/groups.yml43
-rw-r--r--EssentialsGroupManager/src/plugin.yml2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangadd.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangaddi.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangaddp.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangcheckp.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdel.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdeli.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdelp.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanglistp.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanload.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuadd.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuaddp.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuaddsub.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanucheckp.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudel.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudelp.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudelsub.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanulistp.java2
-rw-r--r--EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/EssentialsPermissionsCommands.java2
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java17
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java1
-rw-r--r--EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java2
-rw-r--r--EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java2
-rw-r--r--EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java2
-rw-r--r--README.markdown4
-rw-r--r--lib/Factions.jarbin0 -> 316592 bytes
-rw-r--r--lib/bukkit-0.0.1-SNAPSHOT.jarbin2680630 -> 2696052 bytes
-rw-r--r--lib/craftbukkit-0.0.1-SNAPSHOT.jarbin7671809 -> 7704329 bytes
83 files changed, 1533 insertions, 351 deletions
diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java
index c89de0012..27dc46409 100644
--- a/Essentials/src/com/earth2me/essentials/Essentials.java
+++ b/Essentials/src/com/earth2me/essentials/Essentials.java
@@ -27,6 +27,9 @@ import org.bukkit.command.CommandSender;
import com.earth2me.essentials.commands.IEssentialsCommand;
import com.earth2me.essentials.commands.NotEnoughArgumentsException;
import com.earth2me.essentials.register.payment.Methods;
+import com.earth2me.essentials.signs.SignBlockListener;
+import com.earth2me.essentials.signs.SignEntityListener;
+import com.earth2me.essentials.signs.SignPlayerListener;
import java.math.BigInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -43,7 +46,7 @@ import org.bukkit.plugin.java.*;
public class Essentials extends JavaPlugin implements IEssentials
{
public static final String AUTHORS = "Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans and Xeology";
- public static final int minBukkitBuildVersion = 867;
+ public static final int minBukkitBuildVersion = 953;
private static final Logger logger = Logger.getLogger("Minecraft");
private Settings settings;
private TNTExplodeListener tntListener;
@@ -173,6 +176,7 @@ public class Essentials extends JavaPlugin implements IEssentials
pm.registerEvent(Type.PLAYER_JOIN, playerListener, Priority.Monitor, this);
pm.registerEvent(Type.PLAYER_QUIT, playerListener, Priority.Monitor, this);
pm.registerEvent(Type.PLAYER_CHAT, playerListener, Priority.Lowest, this);
+ pm.registerEvent(Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.Lowest, this);
if (getSettings().getNetherPortalsEnabled())
{
pm.registerEvent(Type.PLAYER_MOVE, playerListener, Priority.High, this);
@@ -185,9 +189,22 @@ public class Essentials extends JavaPlugin implements IEssentials
pm.registerEvent(Type.PLAYER_ANIMATION, playerListener, Priority.High, this);
final EssentialsBlockListener blockListener = new EssentialsBlockListener(this);
- pm.registerEvent(Type.SIGN_CHANGE, blockListener, Priority.Low, this);
- pm.registerEvent(Type.BLOCK_BREAK, blockListener, Priority.Lowest, this);
+ //pm.registerEvent(Type.SIGN_CHANGE, blockListener, Priority.Low, this);
+ //pm.registerEvent(Type.BLOCK_BREAK, blockListener, Priority.Lowest, this);
pm.registerEvent(Type.BLOCK_PLACE, blockListener, Priority.Lowest, this);
+
+ final SignBlockListener signBlockListener = new SignBlockListener(this);
+ pm.registerEvent(Type.SIGN_CHANGE, signBlockListener, Priority.Low, this);
+ pm.registerEvent(Type.BLOCK_PLACE, signBlockListener, Priority.Low, this);
+ pm.registerEvent(Type.BLOCK_BREAK, signBlockListener, Priority.Lowest, this);
+ pm.registerEvent(Type.BLOCK_IGNITE, signBlockListener, Priority.Low, this);
+ pm.registerEvent(Type.BLOCK_BURN, signBlockListener, Priority.Low, this);
+
+ final SignPlayerListener signPlayerListener = new SignPlayerListener(this);
+ pm.registerEvent(Type.PLAYER_INTERACT, signPlayerListener, Priority.Low, this);
+
+ final SignEntityListener signEntityListener = new SignEntityListener(this);
+ pm.registerEvent(Type.ENTITY_EXPLODE, signEntityListener, Priority.Low, this);
final EssentialsEntityListener entityListener = new EssentialsEntityListener(this);
pm.registerEvent(Type.ENTITY_DAMAGE, entityListener, Priority.Lowest, this);
@@ -201,7 +218,7 @@ public class Essentials extends JavaPlugin implements IEssentials
pm.registerEvent(Type.BLOCK_DAMAGE, jail, Priority.High, this);
pm.registerEvent(Type.BLOCK_PLACE, jail, Priority.High, this);
pm.registerEvent(Type.PLAYER_INTERACT, jailPlayerListener, Priority.High, this);
- attachEcoListeners();
+ //attachEcoListeners();
if (settings.isNetherEnabled() && getServer().getWorlds().size() < 2)
{
@@ -224,11 +241,13 @@ public class Essentials extends JavaPlugin implements IEssentials
public void onDisable()
{
instance = null;
+ Trade.closeLog();
logger.removeHandler(errorHandler);
}
public void reload()
{
+ Trade.closeLog();
loadBanList();
for (IConf iConf : confList)
@@ -352,39 +371,14 @@ public class Essentials extends JavaPlugin implements IEssentials
return retval;
}
- @SuppressWarnings("LoggerStringConcat")
- public static void previewCommand(CommandSender sender, Command command, String commandLabel, String[] args)
- {
- if (sender instanceof Player)
- {
- logger.info(ChatColor.BLUE + "[PLAYER_COMMAND] " + ((Player)sender).getName() + ": /" + commandLabel + " " + EssentialsCommand.getFinalArg(args, 0));
- }
- }
-
@Override
public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args)
{
- return onCommandEssentials(sender, command, commandLabel, args, Essentials.class.getClassLoader(), "com.earth2me.essentials.commands.Command");
+ return onCommandEssentials(sender, command, commandLabel, args, Essentials.class.getClassLoader(), "com.earth2me.essentials.commands.Command", "essentials.");
}
- public boolean onCommandEssentials(CommandSender sender, Command command, String commandLabel, String[] args, ClassLoader classLoader, String commandPath)
- {
- if (("msg".equals(commandLabel.toLowerCase()) || "r".equals(commandLabel.toLowerCase()) || "mail".equals(commandLabel.toLowerCase())) && sender instanceof Player)
- {
- StringBuilder str = new StringBuilder();
- str.append(commandLabel).append(" ");
- for (String a : args)
- {
- str.append(a).append(" ");
- }
- for (Player player : getServer().getOnlinePlayers())
- {
- if (getUser(player).isSocialSpyEnabled())
- {
- player.sendMessage(getUser(sender).getDisplayName() + " : " + str);
- }
- }
- }
+ public boolean onCommandEssentials(CommandSender sender, Command command, String commandLabel, String[] args, ClassLoader classLoader, String commandPath, String permissionPrefix)
+ {
// Allow plugins to override the command via onCommand
if (!getSettings().isCommandOverridden(command.getName()) && !commandLabel.startsWith("e"))
{
@@ -416,8 +410,12 @@ public class Essentials extends JavaPlugin implements IEssentials
try
{
- previewCommand(sender, command, commandLabel, args);
- User user = sender instanceof Player ? getUser(sender) : null;
+ User user = null;
+ if (sender instanceof Player)
+ {
+ user = getUser(sender);
+ logger.log(Level.INFO, String.format("[PLAYER_COMMAND] %s: /%s %s ", ((Player)sender).getName(), commandLabel , EssentialsCommand.getFinalArg(args, 0)));
+ }
// New mail notification
if (user != null && !getSettings().isCommandDisabled("mail") && !commandLabel.equals("mail") && user.isAuthorized("essentials.mail"))
@@ -449,7 +447,7 @@ public class Essentials extends JavaPlugin implements IEssentials
}
// Check authorization
- if (user != null && !user.isAuthorized(cmd))
+ if (user != null && !user.isAuthorized(cmd, permissionPrefix))
{
logger.log(Level.WARNING, Util.format("deniedAccessCommand", user.getName()));
user.sendMessage(Util.i18n("noAccessCommand"));
@@ -603,12 +601,12 @@ public class Essentials extends JavaPlugin implements IEssentials
private void attachEcoListeners()
{
- PluginManager pm = getServer().getPluginManager();
- EssentialsEcoBlockListener ecoBlockListener = new EssentialsEcoBlockListener(this);
- EssentialsEcoPlayerListener ecoPlayerListener = new EssentialsEcoPlayerListener(this);
- pm.registerEvent(Type.PLAYER_INTERACT, ecoPlayerListener, Priority.High, this);
- pm.registerEvent(Type.BLOCK_BREAK, ecoBlockListener, Priority.High, this);
- pm.registerEvent(Type.SIGN_CHANGE, ecoBlockListener, Priority.Monitor, this);
+ //PluginManager pm = getServer().getPluginManager();
+ //EssentialsEcoBlockListener ecoBlockListener = new EssentialsEcoBlockListener(this);
+ //EssentialsEcoPlayerListener ecoPlayerListener = new EssentialsEcoPlayerListener(this);
+ //pm.registerEvent(Type.PLAYER_INTERACT, ecoPlayerListener, Priority.High, this);
+ //pm.registerEvent(Type.BLOCK_BREAK, ecoBlockListener, Priority.High, this);
+ //pm.registerEvent(Type.SIGN_CHANGE, ecoBlockListener, Priority.Monitor, this);
}
public CraftScheduler getScheduler()
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java b/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java
index 64206dac0..4e70346fb 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java
@@ -33,6 +33,7 @@ public class EssentialsBlockListener extends BlockListener
}
@Override
+ @Deprecated
public void onBlockBreak(BlockBreakEvent event)
{
if (event.isCancelled())
@@ -63,6 +64,7 @@ public class EssentialsBlockListener extends BlockListener
}
@Override
+ @Deprecated
public void onSignChange(SignChangeEvent event)
{
if (event.isCancelled())
@@ -231,7 +233,7 @@ public class EssentialsBlockListener extends BlockListener
{
return;
}
- Block signBlock = event.getBlockAgainst();
+ /*Block signBlock = event.getBlockAgainst();
if (signBlock.getType() == Material.WALL_SIGN || signBlock.getType() == Material.SIGN_POST)
{
Sign sign = new CraftSign(signBlock);
@@ -240,7 +242,7 @@ public class EssentialsBlockListener extends BlockListener
event.setCancelled(true);
return;
}
- }
+ }*/
final User user = ess.getUser(event.getPlayer());
// Do not rely on getItemInHand();
// http://leaky.bukkit.org/issues/663
@@ -302,6 +304,8 @@ public class EssentialsBlockListener extends BlockListener
case JACK_O_LANTERN:
case WOOD_PLATE:
case STONE_PLATE:
+ case PISTON_STICKY_BASE:
+ case PISTON_BASE:
is.setDurability((short)0);
break;
}
@@ -320,7 +324,8 @@ public class EssentialsBlockListener extends BlockListener
}
}
- public boolean hasAdjacentChest(Block block)
+ @Deprecated
+ private boolean hasAdjacentChest(Block block)
{
Block[] faces = getAdjacentBlocks(block);
for (Block b : faces)
@@ -337,6 +342,7 @@ public class EssentialsBlockListener extends BlockListener
private static final int NOSIGN = 2;
private static final int OWNER = 3;
+ @Deprecated
private int checkProtectionSign(Block block, User user)
{
String username = user.getName().substring(0, user.getName().length() > 14 ? 14 : user.getName().length());
@@ -371,6 +377,7 @@ public class EssentialsBlockListener extends BlockListener
return NOSIGN;
}
+ @Deprecated
private static Block[] getAdjacentBlocks(Block block)
{
return new Block[]
@@ -384,7 +391,8 @@ public class EssentialsBlockListener extends BlockListener
};
}
- public boolean isBlockProtected(Block block, User user)
+ @Deprecated
+ private boolean isBlockProtected(Block block, User user)
{
Block[] faces = getAdjacentBlocks(block);
boolean protect = false;
@@ -421,7 +429,8 @@ public class EssentialsBlockListener extends BlockListener
return protect;
}
- public static boolean isBlockProtected(Block block)
+ @Deprecated
+ private static boolean isBlockProtected(Block block)
{
Block[] faces = getAdjacentBlocks(block);
for (Block b : faces)
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsEcoBlockListener.java b/Essentials/src/com/earth2me/essentials/EssentialsEcoBlockListener.java
index 630b9b23d..bb12f8d4c 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsEcoBlockListener.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsEcoBlockListener.java
@@ -11,7 +11,7 @@ import org.bukkit.event.block.BlockListener;
import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.inventory.ItemStack;
-
+@Deprecated
public class EssentialsEcoBlockListener extends BlockListener
{
private final IEssentials ess;
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsEcoPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsEcoPlayerListener.java
index f3e01bd83..72154c886 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsEcoPlayerListener.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsEcoPlayerListener.java
@@ -11,7 +11,7 @@ import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerListener;
import org.bukkit.inventory.ItemStack;
-
+@Deprecated
public class EssentialsEcoPlayerListener extends PlayerListener
{
private final IEssentials ess;
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
index ace790c09..b92a29ebb 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
@@ -4,21 +4,19 @@ import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
-import net.minecraft.server.InventoryPlayer;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
-import org.bukkit.craftbukkit.block.CraftSign;
-import org.bukkit.craftbukkit.inventory.CraftInventoryPlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerAnimationEvent;
import org.bukkit.event.player.PlayerAnimationType;
import org.bukkit.event.player.PlayerBucketEmptyEvent;
import org.bukkit.event.player.PlayerChatEvent;
+import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerEggThrowEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
@@ -82,6 +80,11 @@ public class EssentialsPlayerListener extends PlayerListener
it.remove();
}
}
+ if(user.isAfk())
+ {
+ user.setAfk(false);
+ ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName()));
+ }
}
@Override
@@ -93,6 +96,12 @@ public class EssentialsPlayerListener extends PlayerListener
}
final User user = ess.getUser(event.getPlayer());
+ if(user.isAfk())
+ {
+ user.setAfk(false);
+ ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName()));
+ }
+
if (!ess.getSettings().getNetherPortalsEnabled())
{
return;
@@ -252,6 +261,7 @@ public class EssentialsPlayerListener extends PlayerListener
}
user.setDisplayName(user.getNick());
+ user.setAfk(false);
if (!ess.getSettings().isCommandDisabled("motd") && user.isAuthorized("essentials.motd"))
{
@@ -357,7 +367,7 @@ public class EssentialsPlayerListener extends PlayerListener
event.setCancelled(true);
return;
}
- if (!ess.getSettings().areSignsDisabled() && EssentialsBlockListener.protectedBlocks.contains(event.getClickedBlock().getType()))
+ /*if (!ess.getSettings().areSignsDisabled() && EssentialsBlockListener.protectedBlocks.contains(event.getClickedBlock().getType()))
{
if (!user.isAuthorized("essentials.signs.protection.override"))
{
@@ -368,7 +378,7 @@ public class EssentialsPlayerListener extends PlayerListener
return;
}
}
- }
+ }*/
if (ess.getSettings().getBedSetsHome() && event.getClickedBlock().getType() == Material.BED_BLOCK)
{
@@ -383,7 +393,7 @@ public class EssentialsPlayerListener extends PlayerListener
}
- if (ess.getSettings().areSignsDisabled())
+ /*if (ess.getSettings().areSignsDisabled())
{
return;
}
@@ -517,9 +527,10 @@ public class EssentialsPlayerListener extends PlayerListener
{
logger.log(Level.WARNING, ex.getMessage(), ex);
}
- }
+ }*/
}
+ @Deprecated
private Trade chargeUserForWarp(Sign sign, User user) throws Exception
{
if (!sign.getLine(3).isEmpty())
@@ -613,4 +624,27 @@ public class EssentialsPlayerListener extends PlayerListener
user.getServer().dispatchCommand(user, command);
}
}
+
+ @Override
+ public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event)
+ {
+ if (event.isCancelled()) return;
+ User user = ess.getUser(event.getPlayer());
+ String cmd = event.getMessage().toLowerCase();
+ if (("msg".equals(cmd) || "r".equals(cmd) || "mail".equals(cmd)))
+ {
+ for (Player player : ess.getServer().getOnlinePlayers())
+ {
+ if (ess.getUser(player).isSocialSpyEnabled())
+ {
+ player.sendMessage(user.getDisplayName() + " : " + cmd);
+ }
+ }
+ }
+ if(user.isAfk())
+ {
+ user.setAfk(false);
+ ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName()));
+ }
+ }
}
diff --git a/Essentials/src/com/earth2me/essentials/IEssentials.java b/Essentials/src/com/earth2me/essentials/IEssentials.java
index 426724c61..cf6e62e71 100644
--- a/Essentials/src/com/earth2me/essentials/IEssentials.java
+++ b/Essentials/src/com/earth2me/essentials/IEssentials.java
@@ -16,7 +16,7 @@ public interface IEssentials
void reload();
- boolean onCommandEssentials(CommandSender sender, Command command, String commandLabel, String[] args, ClassLoader classLoader, String commandPath);
+ boolean onCommandEssentials(CommandSender sender, Command command, String commandLabel, String[] args, ClassLoader classLoader, String commandPath, String permissionPrefix);
User getUser(Object base);
diff --git a/Essentials/src/com/earth2me/essentials/IUser.java b/Essentials/src/com/earth2me/essentials/IUser.java
index cfed0915f..5b2e7075e 100644
--- a/Essentials/src/com/earth2me/essentials/IUser.java
+++ b/Essentials/src/com/earth2me/essentials/IUser.java
@@ -22,6 +22,8 @@ public interface IUser
boolean isAuthorized(String node);
boolean isAuthorized(IEssentialsCommand cmd);
+
+ boolean isAuthorized(IEssentialsCommand cmd, String permissionPrefix);
void setLastTeleportTimestamp(long time);
diff --git a/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java b/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java
index 9ac63c374..3cbcd1b2e 100644
--- a/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java
+++ b/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java
@@ -80,7 +80,7 @@ public final class InventoryWorkaround
ItemStack[] combined = new ItemStack[items.length];
for (int i = 0; i < items.length; i++)
{
- if (items[i] == null)
+ if (items[i] == null || items[i].getAmount() < 1)
{
continue;
}
diff --git a/Essentials/src/com/earth2me/essentials/Mob.java b/Essentials/src/com/earth2me/essentials/Mob.java
index 3c16ae01a..f5e1aea3d 100644
--- a/Essentials/src/com/earth2me/essentials/Mob.java
+++ b/Essentials/src/com/earth2me/essentials/Mob.java
@@ -4,68 +4,52 @@ 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.Server;
-import org.bukkit.entity.Entity;
+import org.bukkit.entity.CreatureType;
+import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
public enum Mob
{
- CHICKEN("Chicken", Enemies.FRIENDLY),
- COW("Cow", Enemies.FRIENDLY),
- CREEPER("Creeper", Enemies.ENEMY),
- GHAST("Ghast", Enemies.ENEMY),
- GIANT("Giant", "GiantZombie", Enemies.ENEMY),
- PIG("Pig", Enemies.FRIENDLY),
- PIGZOMB("PigZombie", Enemies.NEUTRAL),
- SHEEP("Sheep", Enemies.FRIENDLY, ""),
- SKELETON("Skeleton", Enemies.ENEMY),
- SLIME("Slime", Enemies.ENEMY),
- SPIDER("Spider", Enemies.ENEMY),
- SQUID("Squid", Enemies.FRIENDLY),
- ZOMBIE("Zombie", Enemies.ENEMY),
- MONSTER("Monster", Enemies.ENEMY),
- WOLF("Wolf", Enemies.NEUTRAL);
+ CHICKEN("Chicken", Enemies.FRIENDLY, CreatureType.CHICKEN),
+ COW("Cow", Enemies.FRIENDLY, CreatureType.COW),
+ CREEPER("Creeper", Enemies.ENEMY, CreatureType.CREEPER),
+ GHAST("Ghast", Enemies.ENEMY, CreatureType.GHAST),
+ GIANT("Giant", Enemies.ENEMY, CreatureType.GIANT),
+ PIG("Pig", Enemies.FRIENDLY, CreatureType.PIG),
+ PIGZOMB("PigZombie", Enemies.NEUTRAL, CreatureType.PIG_ZOMBIE),
+ SHEEP("Sheep", Enemies.FRIENDLY, "", CreatureType.SHEEP),
+ SKELETON("Skeleton", Enemies.ENEMY, CreatureType.SKELETON),
+ SLIME("Slime", Enemies.ENEMY, CreatureType.SLIME),
+ SPIDER("Spider", Enemies.ENEMY, CreatureType.SPIDER),
+ SQUID("Squid", Enemies.FRIENDLY, CreatureType.SQUID),
+ ZOMBIE("Zombie", Enemies.ENEMY, CreatureType.ZOMBIE),
+ MONSTER("Monster", Enemies.ENEMY, CreatureType.MONSTER),
+ WOLF("Wolf", Enemies.NEUTRAL, CreatureType.WOLF);
public static final Logger logger = Logger.getLogger("Minecraft");
- private Mob(String n, Enemies en, String s)
+ private Mob(String n, Enemies en, String s, CreatureType type)
{
- this.s = s;
+ this.suffix = s;
this.name = n;
- this.craftClass = n;
- this.entityClass = n;
this.type = en;
+ this.bukkitType = type;
}
- private Mob(String n, Enemies en)
+ private Mob(String n, Enemies en, CreatureType type)
{
this.name = n;
- this.craftClass = n;
- this.entityClass = n;
this.type = en;
+ this.bukkitType = type;
}
- private Mob(String n, String ec, Enemies en)
- {
- this.name = n;
- this.craftClass = n;
- this.entityClass = ec;
- this.type = en;
- }
-
- private Mob(String n, String ec, String cc, Enemies en)
- {
- this.name = n;
- this.entityClass = ec;
- this.craftClass = cc;
- this.type = en;
- }
- public String s = "s";
- public String name;
- public Enemies type;
- private String entityClass;
- private String craftClass;
+ public String suffix = "s";
+ final public String name;
+ final public Enemies type;
+ final private CreatureType bukkitType;
private static final Map<String, Mob> hashMap = new HashMap<String, Mob>();
static
@@ -76,25 +60,16 @@ public enum Mob
}
}
- @SuppressWarnings(
- {
- "unchecked", "CallToThreadDumpStack"
- })
- public Entity spawn(Player player, Server server) throws MobException
+ public LivingEntity spawn(final Player player, final Server server, final Location loc) throws MobException
{
- try
- {
- return player.getWorld().spawn(player.getLocation(), (Class<Entity>)ClassLoader.getSystemClassLoader().loadClass("net.minecraft.server.Entity" + entityClass));
- //WorldServer world = ((org.bukkit.craftbukkit.CraftWorld)player.getWorld()).getHandle();
- //Constructor<CraftEntity> craft = (Constructor<CraftEntity>)ClassLoader.getSystemClassLoader().loadClass("org.bukkit.craftbukkit.entity.Craft" + craftClass).getConstructors()[0];
- //Constructor<Entity> entity = (Constructor<Entity>)ClassLoader.getSystemClassLoader().loadClass("net.minecraft.server.Entity" + entityClass).getConstructors()[0];
- //return craft.newInstance((CraftServer)server, entity.newInstance(world));
- }
- catch (Exception ex)
+
+ final LivingEntity entity = player.getWorld().spawnCreature(loc, this.bukkitType);
+ if (entity == null)
{
- logger.log(Level.WARNING, Util.i18n("unableToSpawnMob"), ex);
- throw new MobException(ex);
+ logger.log(Level.WARNING, Util.i18n("unableToSpawnMob"));
+ throw new MobException();
}
+ return entity;
}
@@ -104,22 +79,17 @@ public enum Mob
NEUTRAL("neutral"),
ENEMY("enemy");
- private Enemies(String t)
+ private Enemies(final String t)
{
this.type = t;
}
- protected String type;
+ final protected String type;
}
public static class MobException extends Exception
{
private static final long serialVersionUID = 1L;
-
- private MobException(Exception ex)
- {
- super(ex);
- }
}
public static Mob fromName(String n)
diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java
index e1e60cb35..7f4328d1b 100644
--- a/Essentials/src/com/earth2me/essentials/Settings.java
+++ b/Essentials/src/com/earth2me/essentials/Settings.java
@@ -375,4 +375,19 @@ public class Settings implements IConf
{
return config.getBoolean(configName, def);
}
+
+ private final static double MAXMONEY = 10000000000000.0;
+ double getMaxMoney()
+ {
+ double max = config.getDouble("max-money", MAXMONEY);
+ if (Math.abs(max) > MAXMONEY) {
+ max = max < 0 ? -MAXMONEY : MAXMONEY;
+ }
+ return max;
+ }
+
+ boolean isEcoLogEnabled()
+ {
+ return config.getBoolean("economy-log-enabled", false);
+ }
}
diff --git a/Essentials/src/com/earth2me/essentials/TNTExplodeListener.java b/Essentials/src/com/earth2me/essentials/TNTExplodeListener.java
index 0b7c136c7..bdd453266 100644
--- a/Essentials/src/com/earth2me/essentials/TNTExplodeListener.java
+++ b/Essentials/src/com/earth2me/essentials/TNTExplodeListener.java
@@ -71,7 +71,7 @@ public class TNTExplodeListener extends EntityListener implements Runnable
set.add(cp);
}
}
- ((CraftServer)ess.getServer()).getHandle().a(loc.getX(), loc.getY(), loc.getZ(), 64.0, ((CraftWorld)loc.getWorld()).getHandle().worldProvider.dimension, new Packet60Explosion(loc.getX(), loc.getY(), loc.getZ(), 3.0F, set));
+ ((CraftServer)ess.getServer()).getHandle().sendPacketNearby(loc.getX(), loc.getY(), loc.getZ(), 64.0, ((CraftWorld)loc.getWorld()).getHandle().worldProvider.dimension, new Packet60Explosion(loc.getX(), loc.getY(), loc.getZ(), 3.0F, set));
event.setCancelled(true);
}
diff --git a/Essentials/src/com/earth2me/essentials/Teleport.java b/Essentials/src/com/earth2me/essentials/Teleport.java
index e63d1699e..429834b02 100644
--- a/Essentials/src/com/earth2me/essentials/Teleport.java
+++ b/Essentials/src/com/earth2me/essentials/Teleport.java
@@ -10,6 +10,7 @@ import org.bukkit.entity.Entity;
public class Teleport implements Runnable
{
+ private static final double MOVE_CONSTANT = 0.3;
private static class Target
{
private final Location location;
@@ -57,9 +58,9 @@ public class Teleport implements Runnable
this.started = System.currentTimeMillis();
this.delay = delay;
this.health = user.getHealth();
- this.initX = Math.round(user.getLocation().getX() * 10000);
- this.initY = Math.round(user.getLocation().getY() * 10000);
- this.initZ = Math.round(user.getLocation().getZ() * 10000);
+ this.initX = Math.round(user.getLocation().getX()*MOVE_CONSTANT);
+ this.initY = Math.round(user.getLocation().getY()*MOVE_CONSTANT);
+ this.initZ = Math.round(user.getLocation().getZ()*MOVE_CONSTANT);
this.teleportTarget = target;
this.chargeFor = chargeFor;
}
@@ -72,9 +73,9 @@ public class Teleport implements Runnable
cancel();
return;
}
- if (Math.round(user.getLocation().getX() * 10000) != initX
- || Math.round(user.getLocation().getY() * 10000) != initY
- || Math.round(user.getLocation().getZ() * 10000) != initZ
+ if (Math.round(user.getLocation().getX()*MOVE_CONSTANT) != initX
+ || Math.round(user.getLocation().getY()*MOVE_CONSTANT) != initY
+ || Math.round(user.getLocation().getZ()*MOVE_CONSTANT) != initZ
|| user.getHealth() < health)
{ // user moved, cancel teleport
cancel(true);
@@ -237,9 +238,12 @@ public class Teleport implements Runnable
now(new Target(loc));
}
- public void now(Entity entity) throws Exception
+ public void now(Entity entity, boolean cooldown) throws Exception
{
- cooldown(false);
+ if (cooldown)
+ {
+ cooldown(false);
+ }
now(new Target(entity));
}
diff --git a/Essentials/src/com/earth2me/essentials/Trade.java b/Essentials/src/com/earth2me/essentials/Trade.java
index b4570d780..0be445032 100644
--- a/Essentials/src/com/earth2me/essentials/Trade.java
+++ b/Essentials/src/com/earth2me/essentials/Trade.java
@@ -1,6 +1,13 @@
package com.earth2me.essentials;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.text.DateFormat;
+import java.util.Date;
import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.bukkit.inventory.ItemStack;
@@ -39,6 +46,7 @@ public class Trade
final double mon = user.getMoney();
if (getMoney() != null
&& mon < getMoney()
+ && getMoney() > 0
&& !user.isAuthorized("essentials.eco.loan"))
{
throw new ChargeException(Util.i18n("notEnoughMoney"));
@@ -54,6 +62,7 @@ public class Trade
&& !user.isAuthorized("essentials.nocommandcost.all")
&& !user.isAuthorized("essentials.nocommandcost." + command)
&& mon < ess.getSettings().getCommandCost(command.charAt(0) == '/' ? command.substring(1) : command)
+ && 0 < ess.getSettings().getCommandCost(command.charAt(0) == '/' ? command.substring(1) : command)
&& !user.isAuthorized("essentials.eco.loan"))
{
throw new ChargeException(Util.i18n("notEnoughMoney"));
@@ -62,7 +71,7 @@ public class Trade
public void pay(final IUser user)
{
- if (getMoney() != null)
+ if (getMoney() != null && getMoney() > 0)
{
user.giveMoney(getMoney());
}
@@ -82,7 +91,7 @@ public class Trade
if (getMoney() != null)
{
final double mon = user.getMoney();
- if (mon < getMoney() && !user.isAuthorized("essentials.eco.loan"))
+ if (mon < getMoney() && getMoney() > 0 && !user.isAuthorized("essentials.eco.loan"))
{
throw new ChargeException(Util.i18n("notEnoughMoney"));
}
@@ -103,7 +112,7 @@ public class Trade
{
final double mon = user.getMoney();
final double cost = ess.getSettings().getCommandCost(command.charAt(0) == '/' ? command.substring(1) : command);
- if (mon < cost && !user.isAuthorized("essentials.eco.loan"))
+ if (mon < cost && cost > 0 && !user.isAuthorized("essentials.eco.loan"))
{
throw new ChargeException(Util.i18n("notEnoughMoney"));
}
@@ -120,4 +129,102 @@ public class Trade
{
return itemStack;
}
+ private static FileWriter fw = null;
+
+ public static void log(String type, String subtype, String event, String sender, Trade charge, String receiver, Trade pay, IEssentials ess)
+ {
+ if (!ess.getSettings().isEcoLogEnabled())
+ {
+ return;
+ }
+ if (fw == null)
+ {
+ try
+ {
+ fw = new FileWriter(new File(ess.getDataFolder(), "trade.log"), true);
+ }
+ catch (IOException ex)
+ {
+ Logger.getLogger("Minecraft").log(Level.SEVERE, null, ex);
+ }
+ }
+ StringBuilder sb = new StringBuilder();
+ sb.append(type).append(",").append(subtype).append(",").append("event").append(",\"");
+ sb.append(DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL).format(new Date()));
+ sb.append("\",\"");
+ if (sender != null)
+ {
+ sb.append(sender);
+ }
+ sb.append("\",");
+ if (charge == null)
+ {
+ sb.append("\"\",\"\",\"\"");
+ }
+ else
+ {
+ if (charge.getItemStack() != null)
+ {
+ sb.append(charge.getItemStack().getAmount()).append(",");
+ sb.append(charge.getItemStack().getType().toString()).append(",");
+ sb.append(charge.getItemStack().getDurability());
+ }
+ if (charge.getMoney() != null)
+ {
+ sb.append(charge.getMoney()).append(",");
+ sb.append("money").append(",");
+ sb.append(ess.getSettings().getCurrencySymbol());
+ }
+ }
+ sb.append(",\"");
+ if (receiver != null)
+ {
+ sb.append(receiver);
+ }
+ sb.append("\",");
+ if (pay == null)
+ {
+ sb.append("\"\",\"\",\"\"");
+ }
+ else
+ {
+ if (pay.getItemStack() != null)
+ {
+ sb.append(pay.getItemStack().getAmount()).append(",");
+ sb.append(pay.getItemStack().getType().toString()).append(",");
+ sb.append(pay.getItemStack().getDurability());
+ }
+ if (pay.getMoney() != null)
+ {
+ sb.append(pay.getMoney()).append(",");
+ sb.append("money").append(",");
+ sb.append(ess.getSettings().getCurrencySymbol());
+ }
+ }
+ sb.append("\n");
+ try
+ {
+ fw.write(sb.toString());
+ fw.flush();
+ }
+ catch (IOException ex)
+ {
+ Logger.getLogger("Minecraft").log(Level.SEVERE, null, ex);
+ }
+ }
+
+ public static void closeLog()
+ {
+ if (fw != null) {
+ try
+ {
+ fw.close();
+ }
+ catch (IOException ex)
+ {
+ Logger.getLogger("Minecraft").log(Level.SEVERE, null, ex);
+ }
+ fw = null;
+ }
+ }
}
diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java
index befbf111f..401619df0 100644
--- a/Essentials/src/com/earth2me/essentials/User.java
+++ b/Essentials/src/com/earth2me/essentials/User.java
@@ -34,7 +34,12 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
public boolean isAuthorized(IEssentialsCommand cmd)
{
- return isAuthorized("essentials." + (cmd.getName().equals("r") ? "msg" : cmd.getName()));
+ return isAuthorized(cmd, "essentials.");
+ }
+
+ public boolean isAuthorized(IEssentialsCommand cmd, String permissionPrefix)
+ {
+ return isAuthorized(permissionPrefix + (cmd.getName().equals("r") ? "msg" : cmd.getName()));
}
public boolean isAuthorized(String node)
@@ -48,7 +53,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
{
return false;
}
-
+
return ess.getPermissionsHandler().hasPermission(this, node);
}
@@ -94,7 +99,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
{
setMoney(getMoney() - value);
reciever.setMoney(reciever.getMoney() + value);
- sendMessage(Util.format("moneySentTo", Util.formatCurrency(value), reciever.getDisplayName()));
+ sendMessage(Util.format("moneySentTo", Util.formatCurrency(value), reciever.getDisplayName()));
reciever.sendMessage(Util.format("moneyRecievedFrom", Util.formatCurrency(value), getDisplayName()));
}
}
@@ -152,8 +157,8 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
{
return false;
}
- return ChatColor.stripColor(this.getDisplayName()).equalsIgnoreCase(ChatColor.stripColor(((User) o).getDisplayName()));
-
+ return ChatColor.stripColor(this.getDisplayName()).equalsIgnoreCase(ChatColor.stripColor(((User)o).getDisplayName()));
+
}
@Override
@@ -215,7 +220,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
{
nickname = ess.getSettings().getOperatorColor().toString() + nickname + "§f";
}
- catch(Exception e)
+ catch (Exception e)
{
}
}
@@ -245,14 +250,15 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
try
{
Method method = ess.getPaymentMethod().getMethod();
- if (!method.hasAccount(this.getName())) {
+ if (!method.hasAccount(this.getName()))
+ {
throw new Exception();
}
Method.MethodAccount account = ess.getPaymentMethod().getMethod().getAccount(this.getName());
return account.balance();
}
catch (Throwable ex)
- {
+ {
}
}
return super.getMoney();
@@ -266,7 +272,8 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
try
{
Method method = ess.getPaymentMethod().getMethod();
- if (!method.hasAccount(this.getName())) {
+ if (!method.hasAccount(this.getName()))
+ {
throw new Exception();
}
Method.MethodAccount account = ess.getPaymentMethod().getMethod().getAccount(this.getName());
@@ -278,4 +285,19 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
}
super.setMoney(value);
}
+
+ @Override
+ public void setAfk(boolean set)
+ {
+ this.setSleepingIgnored(set);
+ super.setAfk(set);
+ }
+
+ @Override
+ public boolean toggleAfk()
+ {
+ boolean now = super.toggleAfk();
+ this.setSleepingIgnored(now);
+ return now;
+ }
} \ No newline at end of file
diff --git a/Essentials/src/com/earth2me/essentials/UserData.java b/Essentials/src/com/earth2me/essentials/UserData.java
index 5aa98eeb4..896339642 100644
--- a/Essentials/src/com/earth2me/essentials/UserData.java
+++ b/Essentials/src/com/earth2me/essentials/UserData.java
@@ -58,18 +58,20 @@ public abstract class UserData extends PlayerExtension implements IConf
isSocialSpyEnabled = _isSocialSpyEnabled();
isNPC = _isNPC();
}
-
private double money;
-
- private double _getMoney() {
+
+ private double _getMoney()
+ {
+ double money = ess.getSettings().getStartingBalance();
if (config.hasProperty("money"))
{
- return config.getDouble("money", ess.getSettings().getStartingBalance());
+ money = config.getDouble("money", money);
}
- else
+ if (Math.abs(money) > ess.getSettings().getMaxMoney())
{
- return ess.getSettings().getStartingBalance();
+ money = money < 0 ? -ess.getSettings().getMaxMoney() : ess.getSettings().getMaxMoney();
}
+ return money;
}
public double getMoney()
@@ -80,6 +82,10 @@ public abstract class UserData extends PlayerExtension implements IConf
public void setMoney(double value)
{
money = value;
+ if (Math.abs(money) > ess.getSettings().getMaxMoney())
+ {
+ money = money < 0 ? -ess.getSettings().getMaxMoney() : ess.getSettings().getMaxMoney();
+ }
config.setProperty("money", value);
config.save();
}
@@ -92,7 +98,7 @@ public abstract class UserData extends PlayerExtension implements IConf
}
return false;
}
-
+
public Location getHome(Location location)
{
if (!hasHome())
@@ -383,6 +389,7 @@ public abstract class UserData extends PlayerExtension implements IConf
setTeleportEnabled(ret);
return ret;
}
+
public boolean toggleSocialSpy()
{
boolean ret = !isSocialSpyEnabled();
@@ -622,7 +629,6 @@ public abstract class UserData extends PlayerExtension implements IConf
setAfk(ret);
return ret;
}
-
private boolean newplayer;
private boolean getNew()
@@ -641,7 +647,6 @@ public abstract class UserData extends PlayerExtension implements IConf
config.setProperty("newplayer", set);
config.save();
}
-
private String geolocation;
private String _getGeoLocation()
@@ -668,38 +673,36 @@ public abstract class UserData extends PlayerExtension implements IConf
}
config.save();
}
-
private boolean isSocialSpyEnabled;
-
+
private boolean _isSocialSpyEnabled()
{
return config.getBoolean("socialspy", false);
}
-
+
public boolean isSocialSpyEnabled()
{
return isSocialSpyEnabled;
}
-
+
public void setSocialSpyEnabled(boolean status)
{
isSocialSpyEnabled = status;
config.setProperty("socialspy", status);
config.save();
}
-
private boolean isNPC;
-
+
private boolean _isNPC()
{
return config.getBoolean("npc", false);
}
-
+
public boolean isNPC()
{
return isNPC;
}
-
+
public void setNPC(boolean set)
{
isNPC = set;
diff --git a/Essentials/src/com/earth2me/essentials/api/Economy.java b/Essentials/src/com/earth2me/essentials/api/Economy.java
index 768168a24..bf071b733 100644
--- a/Essentials/src/com/earth2me/essentials/api/Economy.java
+++ b/Essentials/src/com/earth2me/essentials/api/Economy.java
@@ -3,7 +3,6 @@ package com.earth2me.essentials.api;
import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.EssentialsConf;
import com.earth2me.essentials.User;
-import com.earth2me.essentials.UserData;
import com.earth2me.essentials.Util;
import java.io.File;
import java.util.logging.Level;
@@ -79,8 +78,7 @@ public final class Economy
if (user == null) {
throw new UserDoesNotExistException(name);
}
- // Use UserData to avoid calls to iConomy and Register
- return ((UserData)user).getMoney();
+ return user.getMoney();
}
/**
@@ -100,8 +98,7 @@ public final class Economy
{
throw new NoLoanPermittedException();
}
- // Use UserData to avoid calls to iConomy and Register
- ((UserData)user).setMoney(balance);
+ user.setMoney(balance);
}
/**
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandafk.java b/Essentials/src/com/earth2me/essentials/commands/Commandafk.java
index 24ff9758b..03950966c 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandafk.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandafk.java
@@ -17,11 +17,29 @@ public class Commandafk extends EssentialsCommand
{
charge(user);
+ if (args.length > 0 && user.isAuthorized("essentials.afk.others"))
+ {
+ User afkUser = ess.getUser(ess.getServer().matchPlayer(args[0]));
+ if (afkUser != null)
+ {
+ toggleAfk(afkUser);
+ }
+ }
+ else
+ {
+ toggleAfk(user);
+ }
+ }
+
+ private final void toggleAfk(User user)
+ {
if (!user.toggleAfk())
{
user.sendMessage(Util.i18n("markedAsNotAway"));
ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName()));
- } else {
+ }
+ else
+ {
user.sendMessage(Util.i18n("markedAsAway"));
ess.broadcastMessage(user.getName(), Util.format("userIsAway", user.getDisplayName()));
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgc.java b/Essentials/src/com/earth2me/essentials/commands/Commandgc.java
index 3bc0488cd..dd3cf35f4 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandgc.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandgc.java
@@ -18,7 +18,8 @@ public class Commandgc extends EssentialsCommand
{
charge(sender);
sender.sendMessage(Util.format("gcmax", (Runtime.getRuntime().maxMemory() / 1024 / 1024)));
- sender.sendMessage(Util.format("gcmin", (Runtime.getRuntime().freeMemory() / 1024 / 1024)));
+ sender.sendMessage(Util.format("gcfree", (Runtime.getRuntime().freeMemory() / 1024 / 1024)));
+ sender.sendMessage(Util.format("gctotal", (Runtime.getRuntime().totalMemory() / 1024 / 1024)));
for (World w : server.getWorlds())
{
sender.sendMessage(
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandhelp.java b/Essentials/src/com/earth2me/essentials/commands/Commandhelp.java
index 4361fe1cf..3a93e82b1 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandhelp.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandhelp.java
@@ -31,18 +31,18 @@ public class Commandhelp extends EssentialsCommand
protected void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
int page = 1;
- String match = args[0].toLowerCase();
+ String match = args[0].toLowerCase();
try
{
if (args.length > 0)
{
- page = Integer.parseInt(args[args.length - 1]);
+ page = Integer.parseInt(args[args.length - 1]);
if (args.length == 1)
{
- match = "";
+ match = "";
}
}
-
+
}
catch (Exception ex)
{
@@ -69,10 +69,10 @@ public class Commandhelp extends EssentialsCommand
private List<String> getHelpLines(User user, String match) throws Exception
{
List<String> retval = new ArrayList<String>();
- File helpFile = new File(ess.getDataFolder(), "help_"+Util.sanitizeFileName(user.getName()) +".txt");
+ File helpFile = new File(ess.getDataFolder(), "help_" + Util.sanitizeFileName(user.getName()) + ".txt");
if (!helpFile.exists())
{
- helpFile = new File(ess.getDataFolder(), "help_"+Util.sanitizeFileName(user.getGroup()) +".txt");
+ helpFile = new File(ess.getDataFolder(), "help_" + Util.sanitizeFileName(user.getGroup()) + ".txt");
}
if (!helpFile.exists())
{
@@ -81,8 +81,9 @@ public class Commandhelp extends EssentialsCommand
if (helpFile.exists())
{
final BufferedReader bufferedReader = new BufferedReader(new FileReader(helpFile));
- try {
-
+ try
+ {
+
while (bufferedReader.ready())
{
final String line = bufferedReader.readLine();
@@ -107,11 +108,11 @@ public class Commandhelp extends EssentialsCommand
for (Entry<String, HashMap<String, String>> k : cmds.entrySet())
{
if ((!match.equalsIgnoreCase("")) && (!p.getDescription().getName().toLowerCase().contains(match))
- && (!p.getDescription().getDescription().toLowerCase().contains(match)))
+ && (!p.getDescription().getDescription().toLowerCase().contains(match)))
{
continue;
}
-
+
if (p.getDescription().getName().toLowerCase().contains("essentials"))
{
final String node = "essentials." + k.getKey();
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrealname.java b/Essentials/src/com/earth2me/essentials/commands/Commandrealname.java
index 4d5ad8e9b..ce327b204 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandrealname.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandrealname.java
@@ -4,6 +4,7 @@ import org.bukkit.Server;
import org.bukkit.entity.Player;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
+import org.bukkit.ChatColor;
public class Commandrealname extends EssentialsCommand
@@ -20,15 +21,15 @@ public class Commandrealname extends EssentialsCommand
{
throw new NotEnoughArgumentsException();
}
- String whois = args[0].toLowerCase();
+ final String whois = args[0].toLowerCase();
charge(user);
for (Player p : server.getOnlinePlayers())
{
- User u = ess.getUser(p);
- String dn = u.getDisplayName().toLowerCase();
- if (!whois.equals(dn)
- && !whois.equals(ess.getSettings().getNicknamePrefix() + dn)
- && !whois.equals(u.getName().toLowerCase()))
+ final User u = ess.getUser(p);
+ final String displayName = ChatColor.stripColor(u.getDisplayName()).toLowerCase();
+ if (!whois.equals(displayName)
+ && !displayName.equals(ChatColor.stripColor(ess.getSettings().getNicknamePrefix()) + whois)
+ && !whois.equalsIgnoreCase(u.getName()))
{
continue;
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsell.java b/Essentials/src/com/earth2me/essentials/commands/Commandsell.java
index 155ee695c..4a20968b7 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandsell.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandsell.java
@@ -4,6 +4,7 @@ import org.bukkit.Server;
import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.InventoryWorkaround;
import com.earth2me.essentials.ItemDb;
+import com.earth2me.essentials.Trade;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.logging.Level;
@@ -151,8 +152,10 @@ public class Commandsell extends EssentialsCommand
}
charge(user);
- InventoryWorkaround.removeItem(user.getInventory(), true, new ItemStack(is.getType(), amount, is.getDurability()));
+ final ItemStack ris = new ItemStack(is.getType(), amount, is.getDurability());
+ InventoryWorkaround.removeItem(user.getInventory(), true, ris);
user.updateInventory();
+ Trade.log("Command", "Sell", "Item", user.getName(), new Trade(ris, ess), user.getName(), new Trade(worth*amount, ess), ess);
user.giveMoney(worth * amount);
user.sendMessage(Util.format("itemSold", Util.formatCurrency(worth * amount), amount, Util.formatCurrency(worth)));
logger.log(Level.INFO, Util.format("itemSoldConsole", user.getDisplayName(), is.getType().toString().toLowerCase(), Util.formatCurrency(worth * amount), amount, Util.formatCurrency(worth)));
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsethome.java b/Essentials/src/com/earth2me/essentials/commands/Commandsethome.java
index fcd451dd4..690214b22 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandsethome.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandsethome.java
@@ -11,12 +11,31 @@ public class Commandsethome extends EssentialsCommand
{
super("sethome");
}
-
+
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
- user.setHome(args.length > 0 && args[0].equalsIgnoreCase("default"));
+ if (args.length > 0)
+ {
+ if (args.length < 2)
+ {
+ user.setHome(args[0].equalsIgnoreCase("default"));
+ }
+ else
+ {
+ if (user.isAuthorized("essentials.sethome.others"))
+ {
+ User usersHome = ess.getUser(ess.getServer().getPlayer(args[0]));
+ usersHome.setHome(args[1].equalsIgnoreCase("default"));
+ }
+ }
+ }
+ else
+ {
+ user.setHome(false);
+ }
charge(user);
user.sendMessage(Util.i18n("homeSet"));
+
}
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java b/Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java
index 47edc831e..36beaad5d 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java
@@ -73,16 +73,6 @@ public class Commandspawnmob extends EssentialsCommand
return;
}
charge(user);
- WorldServer world = ((CraftWorld)user.getWorld()).getHandle();
- try
- {
- spawnedMob = mob.spawn(user, server);
- }
- catch (MobException e)
- {
- user.sendMessage(Util.i18n("unableToSpawnMob"));
- return;
- }
int[] ignore =
{
8, 9
@@ -95,8 +85,16 @@ public class Commandspawnmob extends EssentialsCommand
loc.setY(loc.getY() + 1);
block = user.getWorld().getBlockAt(loc);
}
- spawnedMob.teleport(loc);
- //world.addEntity((CraftEntity)spawnedMob).getHandle());
+
+ try
+ {
+ spawnedMob = mob.spawn(user, server, loc);
+ }
+ catch (MobException e)
+ {
+ user.sendMessage(Util.i18n("unableToSpawnMob"));
+ return;
+ }
if (mountType != null)
{
@@ -108,17 +106,14 @@ public class Commandspawnmob extends EssentialsCommand
}
try
{
- spawnedMount = mobMount.spawn(user, server);
+ spawnedMount = mobMount.spawn(user, server, loc);
}
catch (MobException e)
{
user.sendMessage(Util.i18n("unableToSpawnMob"));
return;
}
- spawnedMount.teleport(spawnedMob);
spawnedMob.setPassenger(spawnedMount);
- //spawnedMount.getHandle().setPassengerOf(spawnedMob.getHandle());
- //world.addEntity(spawnedMount.getHandle());
}
if (mobData != null)
{
@@ -142,24 +137,19 @@ public class Commandspawnmob extends EssentialsCommand
{
for (int i = 1; i < mobCount; i++)
{
- spawnedMob = mob.spawn(user, server);
- spawnedMob.teleport(loc);
- //world.addEntity(spawnedMob.getHandle());
+ spawnedMob = mob.spawn(user, server, loc);
if (mobMount != null)
{
try
{
- spawnedMount = mobMount.spawn(user, server);
+ spawnedMount = mobMount.spawn(user, server, loc);
}
catch (MobException e)
{
user.sendMessage(Util.i18n("unableToSpawnMob"));
return;
}
- spawnedMount.teleport(spawnedMob);
spawnedMob.setPassenger(spawnedMount);
- //spawnedMount.getHandle().setPassengerOf(spawnedMob.getHandle());
- //world.addEntity(spawnedMount.getHandle());
}
if (mobData != null)
{
@@ -170,7 +160,7 @@ public class Commandspawnmob extends EssentialsCommand
changeMobData(mobMount.name, spawnedMount, mountData, user);
}
}
- user.sendMessage(args[1] + " " + mob.name.toLowerCase() + mob.s + Util.i18n("spawned"));
+ user.sendMessage(args[1] + " " + mob.name.toLowerCase() + mob.suffix + Util.i18n("spawned"));
}
catch (MobException e1)
{
@@ -223,11 +213,11 @@ public class Commandspawnmob extends EssentialsCommand
if ("Wolf".equalsIgnoreCase(type) && data.equalsIgnoreCase("tamed"))
{
EntityWolf wolf = ((CraftWolf)spawned).getHandle();
- wolf.d(true);
- wolf.a((PathEntity)null);
+ wolf.setTamed(true);
+ wolf.setPathEntity((PathEntity)null);
wolf.setSitting(true);
wolf.health = 20;
- wolf.a(user.getName());
+ wolf.setOwnerName(user.getName());
wolf.world.a(wolf, (byte)7);
}
if ("Wolf".equalsIgnoreCase(type) && data.equalsIgnoreCase("angry"))
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtp.java b/Essentials/src/com/earth2me/essentials/commands/Commandtp.java
index a8b805e8d..c147c5d25 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandtp.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandtp.java
@@ -44,7 +44,7 @@ public class Commandtp extends EssentialsCommand
charge(user);
User target = getPlayer(server, args, 0);
User toPlayer = getPlayer(server, args, 1);
- target.getTeleport().now(toPlayer);
+ target.getTeleport().now(toPlayer, false);
target.sendMessage(Util.format("teleportAtoB", user.getDisplayName(), toPlayer.getDisplayName()));
break;
}
@@ -61,7 +61,7 @@ public class Commandtp extends EssentialsCommand
sender.sendMessage(Util.i18n("teleporting"));
User target = getPlayer(server, args, 0);
User toPlayer = getPlayer(server, args, 1);
- target.getTeleport().now(toPlayer);
+ target.getTeleport().now(toPlayer, false);
target.sendMessage(Util.format("teleportAtoB", Console.NAME, toPlayer.getDisplayName()));
}
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpall.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpall.java
index d564e90ea..cc58944d7 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandtpall.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpall.java
@@ -45,7 +45,7 @@ public class Commandtpall extends EssentialsCommand
}
try
{
- u.getTeleport().now(p);
+ u.getTeleport().now(p, false);
}
catch (Exception ex)
{
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java
index 6b74f5062..2a9e34da8 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java
@@ -23,7 +23,7 @@ public class Commandtpo extends EssentialsCommand
//Just basically the old tp command
User p = getPlayer(server, args, 0);
charge(user);
- user.getTeleport().now(p);
+ user.getTeleport().now(p, false);
user.sendMessage(Util.i18n("teleporting"));
}
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java
index 5dc7a4478..593d17b59 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java
@@ -23,7 +23,7 @@ public class Commandtpohere extends EssentialsCommand
//Just basically the old tphere command
User p = getPlayer(server, args, 0);
charge(user);
- p.getTeleport().now(user);
+ p.getTeleport().now(user, false);
user.sendMessage(Util.i18n("teleporting"));
}
}
diff --git a/Essentials/src/com/earth2me/essentials/register/payment/Methods.java b/Essentials/src/com/earth2me/essentials/register/payment/Methods.java
index 69625db6e..927d4de4c 100644
--- a/Essentials/src/com/earth2me/essentials/register/payment/Methods.java
+++ b/Essentials/src/com/earth2me/essentials/register/payment/Methods.java
@@ -2,6 +2,8 @@ package com.earth2me.essentials.register.payment;
import java.util.HashSet;
import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
@@ -68,7 +70,8 @@ public class Methods {
if(!plugin.isEnabled()) {
this.self = true;
- manager.enablePlugin(plugin);
+ Logger.getLogger("Minecraft").log(Level.SEVERE, name + " Plugin was found, but not enabled before Essentials. Read the Essentials thread for help.");
+ //manager.enablePlugin(plugin);
}
if(plugin == null) continue;
diff --git a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java
index a6f17c8bb..810103f78 100644
--- a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java
+++ b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java
@@ -6,19 +6,24 @@ import com.earth2me.essentials.IEssentials;
import com.earth2me.essentials.ItemDb;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
+import java.util.HashSet;
+import java.util.Set;
+import org.bukkit.Material;
import org.bukkit.block.Block;
+import org.bukkit.block.BlockFace;
import org.bukkit.block.Sign;
import org.bukkit.craftbukkit.block.CraftSign;
-import org.bukkit.event.block.BlockBreakEvent;
+import org.bukkit.entity.Player;
import org.bukkit.event.block.SignChangeEvent;
-import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
public class EssentialsSign
{
+ private static final Set<Material> EMPTY_SET = new HashSet<Material>();
protected transient final String signName;
private static final String FORMAT_SUCCESS = "§1[%s]";
+ private static final String FORMAT_TEMPLATE = "[%s]";
private static final String FORMAT_FAIL = "§4[%s]";
public EssentialsSign(final String signName)
@@ -41,7 +46,7 @@ public class EssentialsSign
final boolean ret = onSignCreate(sign, user, getUsername(user), ess);
if (ret)
{
- sign.setLine(0, String.format(FORMAT_SUCCESS, this.signName));
+ sign.setLine(0, getSuccessName());
}
return ret;
}
@@ -56,15 +61,25 @@ public class EssentialsSign
return false;
}
+ public String getSuccessName()
+ {
+ return String.format(FORMAT_SUCCESS, this.signName);
+ }
+
+ public String getTemplateName()
+ {
+ return String.format(FORMAT_TEMPLATE, this.signName);
+ }
+
private String getUsername(final User user)
{
return user.getName().substring(0, user.getName().length() > 14 ? 14 : user.getName().length());
}
- public final boolean onSignInteract(final PlayerInteractEvent event, final IEssentials ess)
+ public final boolean onSignInteract(final Block block, final Player player, final IEssentials ess)
{
- final ISign sign = new BlockSign(event.getClickedBlock());
- final User user = ess.getUser(event.getPlayer());
+ final ISign sign = new BlockSign(block);
+ final User user = ess.getUser(player);
try
{
return (user.isAuthorized("essentials.signs." + signName.toLowerCase() + ".use")
@@ -83,10 +98,10 @@ public class EssentialsSign
}
}
- public final boolean onSignBreak(final BlockBreakEvent event, final IEssentials ess)
+ public final boolean onSignBreak(final Block block, final Player player, final IEssentials ess)
{
- final ISign sign = new BlockSign(event.getBlock());
- final User user = ess.getUser(event.getPlayer());
+ final ISign sign = new BlockSign(block);
+ final User user = ess.getUser(player);
try
{
return (user.isAuthorized("essentials.signs." + signName.toLowerCase() + ".break")
@@ -115,6 +130,114 @@ public class EssentialsSign
return true;
}
+ public final boolean onBlockPlace(final Block block, final Player player, final IEssentials ess)
+ {
+ User user = ess.getUser(player);
+ try
+ {
+ return onBlockPlace(block, user, getUsername(user), ess);
+ }
+ catch (ChargeException ex)
+ {
+ ess.showError(user, ex, signName);
+ }
+ catch (SignException ex)
+ {
+ ess.showError(user, ex, signName);
+ }
+ return false;
+ }
+
+ public final boolean onBlockInteract(final Block block, final Player player, final IEssentials ess)
+ {
+ User user = ess.getUser(player);
+ try
+ {
+ return onBlockInteract(block, user, getUsername(user), ess);
+ }
+ catch (ChargeException ex)
+ {
+ ess.showError(user, ex, signName);
+ }
+ catch (SignException ex)
+ {
+ ess.showError(user, ex, signName);
+ }
+ return false;
+ }
+
+ public final boolean onBlockBreak(final Block block, final Player player, final IEssentials ess)
+ {
+ User user = ess.getUser(player);
+ try
+ {
+ return onBlockBreak(block, user, getUsername(user), ess);
+ }
+ catch (SignException ex)
+ {
+ ess.showError(user, ex, signName);
+ }
+ return false;
+ }
+
+ public boolean onBlockExplode(final Block block, final IEssentials ess)
+ {
+ return true;
+ }
+
+ public boolean onBlockBurn(final Block block, final IEssentials ess)
+ {
+ return true;
+ }
+
+ public static boolean checkIfBlockBreaksSigns(final Block block)
+ {
+ if (block.getFace(BlockFace.UP).getType() == Material.SIGN_POST)
+ {
+ return true;
+ }
+ final BlockFace[] directions = new BlockFace[]
+ {
+ BlockFace.NORTH,
+ BlockFace.EAST,
+ BlockFace.SOUTH,
+ BlockFace.WEST
+ };
+ for (BlockFace blockFace : directions)
+ {
+ final Block signblock = block.getFace(blockFace);
+ if (signblock.getType() == Material.WALL_SIGN)
+ {
+ final org.bukkit.material.Sign sign = (org.bukkit.material.Sign)signblock.getState().getData();
+ if (sign.getFacing() == blockFace)
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ protected boolean onBlockPlace(final Block block, final User player, final String username, final IEssentials ess) throws SignException, ChargeException
+ {
+ return true;
+ }
+
+ protected boolean onBlockInteract(final Block block, final User player, final String username, final IEssentials ess) throws SignException, ChargeException
+ {
+ return true;
+ }
+
+ protected boolean onBlockBreak(final Block block, final User player, final String username, final IEssentials ess) throws SignException
+ {
+ return true;
+ }
+
+ public Set<Material> getBlocks()
+ {
+ return EMPTY_SET;
+ }
+
protected final void validateTrade(final ISign sign, final int index, final IEssentials ess) throws SignException
{
final String line = sign.getLine(index).trim();
@@ -130,8 +253,6 @@ public class EssentialsSign
}
}
-
-
protected final void validateTrade(final ISign sign, final int amountIndex, final int itemIndex,
final User player, final IEssentials ess) throws SignException
{
@@ -146,7 +267,7 @@ public class EssentialsSign
{
final ItemStack item = getItemStack(sign.getLine(itemIndex), 1);
- final int amount = Math.min(getInteger(sign.getLine(amountIndex)), item.getType().getMaxStackSize() * player.getInventory().getSize());
+ final int amount = Math.min(getIntegerPositive(sign.getLine(amountIndex)), item.getType().getMaxStackSize() * player.getInventory().getSize());
if (item.getTypeId() == 0 || amount < 1)
{
throw new SignException(Util.i18n("moreThanZero"));
@@ -162,19 +283,26 @@ public class EssentialsSign
{
throw new SignException("Empty line " + index);
}
- final int quantity = getInteger(line);
+ final int quantity = getIntegerPositive(line);
sign.setLine(index, Integer.toString(quantity));
}
+ protected final int getIntegerPositive(final String line) throws SignException
+ {
+ final int quantity = getInteger(line);
+ if (quantity < 1)
+ {
+ throw new SignException(Util.i18n("moreThanZero"));
+ }
+ return quantity;
+ }
+
protected final int getInteger(final String line) throws SignException
{
try
{
final int quantity = Integer.parseInt(line);
- if (quantity <= 1)
- {
- throw new SignException(Util.i18n("moreThanZero"));
- }
+
return quantity;
}
catch (NumberFormatException ex)
@@ -199,20 +327,25 @@ public class EssentialsSign
protected final Double getMoney(final String line) throws SignException
{
- final boolean isMoney = line.matches("^[^0-9-\\.][\\.0-9]+");
- return isMoney ? getDouble(line.substring(1)) : null;
+ final boolean isMoney = line.matches("^[^0-9-\\.][\\.0-9]+$");
+ return isMoney ? getDoublePositive(line.substring(1)) : null;
+ }
+
+ protected final Double getDoublePositive(final String line) throws SignException
+ {
+ final double quantity = getDouble(line);
+ if (quantity <= 0.0)
+ {
+ throw new SignException(Util.i18n("moreThanZero"));
+ }
+ return quantity;
}
protected final Double getDouble(final String line) throws SignException
{
try
{
- final double quantity = Double.parseDouble(line);
- if (quantity <= 0.0)
- {
- throw new SignException(Util.i18n("moreThanZero"));
- }
- return quantity;
+ return Double.parseDouble(line);
}
catch (NumberFormatException ex)
{
@@ -241,7 +374,7 @@ public class EssentialsSign
{
throw new SignException(Util.i18n("invalidCharge"));
}
- final int quantity = getInteger(split[0]);
+ final int quantity = getIntegerPositive(split[0]);
final String item = split[1].toLowerCase();
if (item.equalsIgnoreCase("times"))
@@ -253,7 +386,7 @@ public class EssentialsSign
{
final ItemStack stack = getItemStack(item, quantity);
sign.setLine(index, quantity + " " + item);
- return new Trade(quantity, ess);
+ return new Trade(stack, ess);
}
}
else
@@ -266,10 +399,12 @@ public class EssentialsSign
static class EventSign implements ISign
{
private final transient SignChangeEvent event;
+ private final transient Block block;
public EventSign(final SignChangeEvent event)
{
this.event = event;
+ this.block = event.getBlock();
}
public final String getLine(final int index)
@@ -281,15 +416,22 @@ public class EssentialsSign
{
event.setLine(index, text);
}
+
+ public Block getBlock()
+ {
+ return block;
+ }
}
static class BlockSign implements ISign
{
private final transient Sign sign;
+ private final transient Block block;
public BlockSign(final Block block)
{
+ this.block = block;
this.sign = new CraftSign(block);
}
@@ -302,6 +444,11 @@ public class EssentialsSign
{
sign.setLine(index, text);
}
+
+ public final Block getBlock()
+ {
+ return block;
+ }
}
@@ -310,5 +457,7 @@ public class EssentialsSign
String getLine(final int index);
void setLine(final int index, final String text);
+
+ public Block getBlock();
}
}
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java
new file mode 100644
index 000000000..dfa1ed052
--- /dev/null
+++ b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java
@@ -0,0 +1,179 @@
+package com.earth2me.essentials.signs;
+
+import com.earth2me.essentials.IEssentials;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.block.Sign;
+import org.bukkit.craftbukkit.block.CraftSign;
+import org.bukkit.entity.Player;
+import org.bukkit.event.block.BlockBreakEvent;
+import org.bukkit.event.block.BlockBurnEvent;
+import org.bukkit.event.block.BlockIgniteEvent;
+import org.bukkit.event.block.BlockListener;
+import org.bukkit.event.block.BlockPlaceEvent;
+import org.bukkit.event.block.SignChangeEvent;
+
+
+public class SignBlockListener extends BlockListener
+{
+ private final transient IEssentials ess;
+ private final static Logger LOGGER = Logger.getLogger("Minecraft");
+
+ public SignBlockListener(IEssentials ess)
+ {
+ this.ess = ess;
+ }
+
+ @Override
+ public void onBlockBreak(final BlockBreakEvent event)
+ {
+ if (event.isCancelled() || ess.getSettings().areSignsDisabled())
+ {
+ return;
+ }
+
+ if (protectSignsAndBlocks(event.getBlock(), event.getPlayer()))
+ {
+ event.setCancelled(true);
+ }
+ }
+
+ public boolean protectSignsAndBlocks(final Block block, final Player player)
+ {
+ final int mat = block.getTypeId();
+ if (mat == Material.SIGN_POST.getId() || mat == Material.WALL_SIGN.getId())
+ {
+ final Sign csign = new CraftSign(block);
+ for (Signs signs : Signs.values())
+ {
+ final EssentialsSign sign = signs.getSign();
+ if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName())
+ && !sign.onSignBreak(block, player, ess))
+ {
+ return true;
+ }
+ }
+ }
+ else
+ {
+ // prevent any signs be broken by destroying the block they are attached to
+ if (EssentialsSign.checkIfBlockBreaksSigns(block))
+ {
+ LOGGER.log(Level.INFO, "Prevented that a block was broken next to a sign.");
+ return true;
+ }
+ for (Signs signs : Signs.values())
+ {
+ final EssentialsSign sign = signs.getSign();
+ if (sign.getBlocks().contains(block.getType())
+ && !sign.onBlockBreak(block, player, ess))
+ {
+ LOGGER.log(Level.INFO, "A block was protected by a sign.");
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void onSignChange(final SignChangeEvent event)
+ {
+ if (event.isCancelled() || ess.getSettings().areSignsDisabled())
+ {
+ return;
+ }
+ for (Signs signs : Signs.values())
+ {
+ final EssentialsSign sign = signs.getSign();
+ if (event.getLine(0).equalsIgnoreCase(sign.getSuccessName()))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if (event.getLine(0).equalsIgnoreCase(sign.getTemplateName())
+ && !sign.onSignCreate(event, ess))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ }
+ }
+
+ @Override
+ public void onBlockPlace(final BlockPlaceEvent event)
+ {
+ if (event.isCancelled() || ess.getSettings().areSignsDisabled())
+ {
+ return;
+ }
+
+ final Block against = event.getBlockAgainst();
+ if (against.getType() == Material.WALL_SIGN
+ || against.getType() == Material.SIGN_POST)
+ {
+ event.setCancelled(true);
+ return;
+ }
+ final Block block = event.getBlock();
+ if (block.getType() == Material.WALL_SIGN
+ || block.getType() == Material.SIGN_POST)
+ {
+ return;
+ }
+ for (Signs signs : Signs.values())
+ {
+ final EssentialsSign sign = signs.getSign();
+ if (sign.getBlocks().contains(block.getType())
+ && !sign.onBlockPlace(block, event.getPlayer(), ess))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ }
+ }
+
+ @Override
+ public void onBlockBurn(final BlockBurnEvent event)
+ {
+ if (event.isCancelled() || ess.getSettings().areSignsDisabled())
+ {
+ return;
+ }
+
+ final Block block = event.getBlock();
+ if ((block.getType() == Material.WALL_SIGN
+ || block.getType() == Material.SIGN_POST
+ || EssentialsSign.checkIfBlockBreaksSigns(block)))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ for (Signs signs : Signs.values())
+ {
+ final EssentialsSign sign = signs.getSign();
+ if (sign.getBlocks().contains(block.getType())
+ && !sign.onBlockBurn(block, ess))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ }
+ }
+
+ @Override
+ public void onBlockIgnite(final BlockIgniteEvent event)
+ {
+ if (event.isCancelled() || ess.getSettings().areSignsDisabled())
+ {
+ return;
+ }
+
+ if (protectSignsAndBlocks(event.getBlock(), event.getPlayer()))
+ {
+ event.setCancelled(true);
+ }
+ }
+}
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignBuy.java b/Essentials/src/com/earth2me/essentials/signs/SignBuy.java
index 21dc7683e..4249342e1 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignBuy.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignBuy.java
@@ -29,6 +29,7 @@ public class SignBuy extends EssentialsSign
charge.isAffordableFor(player);
items.pay(player);
charge.charge(player);
+ Trade.log("Sign", "Buy", "Interact", username, charge, username, items, ess);
return true;
}
}
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java b/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java
new file mode 100644
index 000000000..8b59c7aba
--- /dev/null
+++ b/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java
@@ -0,0 +1,44 @@
+package com.earth2me.essentials.signs;
+
+import com.earth2me.essentials.IEssentials;
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.block.BlockFace;
+import org.bukkit.event.entity.EntityExplodeEvent;
+import org.bukkit.event.entity.EntityListener;
+
+
+public class SignEntityListener extends EntityListener
+{
+ private final transient IEssentials ess;
+
+ public SignEntityListener(IEssentials ess)
+ {
+ this.ess = ess;
+ }
+
+
+ @Override
+ public void onEntityExplode(EntityExplodeEvent event)
+ {
+ for (Block block : event.blockList())
+ {
+ if ((block.getType() == Material.WALL_SIGN
+ || block.getType() == Material.SIGN_POST
+ || EssentialsSign.checkIfBlockBreaksSigns(block)))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ for (Signs signs : Signs.values())
+ {
+ final EssentialsSign sign = signs.getSign();
+ if (sign.getBlocks().contains(block.getType()))
+ {
+ event.setCancelled(!sign.onBlockExplode(block, ess));
+ return;
+ }
+ }
+ }
+ }
+}
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignFree.java b/Essentials/src/com/earth2me/essentials/signs/SignFree.java
index 6c45c8b07..51d232b5d 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignFree.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignFree.java
@@ -1,8 +1,6 @@
package com.earth2me.essentials.signs;
-import com.earth2me.essentials.Trade;
import com.earth2me.essentials.IEssentials;
-import com.earth2me.essentials.ItemDb;
import com.earth2me.essentials.User;
import net.minecraft.server.InventoryPlayer;
import org.bukkit.craftbukkit.inventory.CraftInventoryPlayer;
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java b/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java
new file mode 100644
index 000000000..1df9e3640
--- /dev/null
+++ b/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java
@@ -0,0 +1,65 @@
+package com.earth2me.essentials.signs;
+
+import com.earth2me.essentials.IEssentials;
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.block.Sign;
+import org.bukkit.craftbukkit.block.CraftSign;
+import org.bukkit.event.block.Action;
+import org.bukkit.event.player.PlayerInteractEvent;
+import org.bukkit.event.player.PlayerListener;
+
+
+public class SignPlayerListener extends PlayerListener
+{
+ private final transient IEssentials ess;
+
+ public SignPlayerListener(IEssentials ess)
+ {
+ this.ess = ess;
+ }
+
+ @Override
+ public void onPlayerInteract(PlayerInteractEvent event)
+ {
+ if (event.isCancelled() || ess.getSettings().areSignsDisabled())
+ {
+ return;
+ }
+
+ final Block block = event.getClickedBlock();
+ final int mat = block.getTypeId();
+ if (mat == Material.SIGN_POST.getId() || mat == Material.WALL_SIGN.getId())
+ {
+ if (event.getAction() != Action.RIGHT_CLICK_BLOCK)
+ {
+ return;
+ }
+ final Sign csign = new CraftSign(block);
+ for (Signs signs : Signs.values())
+ {
+ final EssentialsSign sign = signs.getSign();
+ if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName()))
+ {
+ sign.onSignInteract(block, event.getPlayer(), ess);
+ event.setCancelled(true);
+ return;
+ }
+ }
+ }
+ else
+ {
+ for (Signs signs : Signs.values())
+ {
+ final EssentialsSign sign = signs.getSign();
+ if (sign.getBlocks().contains(block.getType())
+ && !sign.onBlockInteract(block, event.getPlayer(), ess))
+ {
+ event.setCancelled(true);
+ return;
+
+ }
+ }
+ }
+ }
+}
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignProtection.java b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java
new file mode 100644
index 000000000..555bb0114
--- /dev/null
+++ b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java
@@ -0,0 +1,314 @@
+package com.earth2me.essentials.signs;
+
+import com.earth2me.essentials.ChargeException;
+import com.earth2me.essentials.IEssentials;
+import com.earth2me.essentials.Trade;
+import com.earth2me.essentials.User;
+import com.earth2me.essentials.Util;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.block.BlockFace;
+import org.bukkit.block.Sign;
+import org.bukkit.craftbukkit.block.CraftSign;
+import org.bukkit.inventory.ItemStack;
+
+
+public class SignProtection extends EssentialsSign
+{
+ private final transient Set<Material> protectedBlocks = EnumSet.noneOf(Material.class);
+
+ public SignProtection()
+ {
+ super("Protection");
+ protectedBlocks.add(Material.CHEST);
+ protectedBlocks.add(Material.BURNING_FURNACE);
+ protectedBlocks.add(Material.FURNACE);
+ protectedBlocks.add(Material.DISPENSER);
+ }
+
+ @Override
+ protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException
+ {
+ sign.setLine(3, "§4" + username);
+ if (hasAdjacentBlock(sign.getBlock()) && isBlockProtected(sign.getBlock(), player, username, true) != SignProtectionState.NOT_ALLOWED)
+ {
+ sign.setLine(3, "§1" + username);
+ return true;
+ }
+ player.sendMessage("§4You are not allowed to create sign here.");
+ return false;
+ }
+
+ @Override
+ protected boolean onSignBreak(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException
+ {
+ final SignProtectionState state = checkProtectionSign(sign, player, username);
+ return state == SignProtectionState.OWNER;
+ }
+
+ public boolean hasAdjacentBlock(final Block block, final Block... ignoredBlocks)
+ {
+ final Block[] faces = getAdjacentBlocks(block);
+ for (Block b : faces)
+ {
+ for (Block ignoredBlock : ignoredBlocks)
+ {
+ if (b.getLocation().equals(ignoredBlock.getLocation()))
+ {
+ continue;
+ }
+ }
+ if (protectedBlocks.contains(b.getType()))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void checkIfSignsAreBroken(final Block block, final User player, final String username, final IEssentials ess)
+ {
+ final Map<Location, SignProtectionState> signs = getConnectedSigns(block, player, username, false);
+ for (Map.Entry<Location, SignProtectionState> entry : signs.entrySet())
+ {
+ if (entry.getValue() != SignProtectionState.NOSIGN)
+ {
+ final Block sign = entry.getKey().getBlock();
+ if (!hasAdjacentBlock(sign, block))
+ {
+ block.setType(Material.AIR);
+ final Trade trade = new Trade(new ItemStack(Material.SIGN, 1), ess);
+ trade.pay(player);
+ }
+ }
+ }
+ }
+
+ private Map<Location, SignProtectionState> getConnectedSigns(final Block block, final User user, final String username, boolean secure)
+ {
+ final Map<Location, SignProtectionState> signs = new HashMap<Location, SignProtectionState>();
+ getConnectedSigns(block, signs, user, username, secure ? 4 : 2);
+ return signs;
+ }
+
+ private void getConnectedSigns(final Block block, final Map<Location, SignProtectionState> signs, final User user, final String username, final int depth)
+ {
+ final Block[] faces = getAdjacentBlocks(block);
+ for (Block b : faces)
+ {
+ final Location loc = b.getLocation();
+ if (signs.containsKey(loc))
+ {
+ continue;
+ }
+ final SignProtectionState check = checkProtectionSign(b, user, username);
+ signs.put(loc, check);
+
+ if (protectedBlocks.contains(b.getType()) && depth > 0)
+ {
+ getConnectedSigns(b, signs, user, username, depth - 1);
+ }
+ }
+ }
+
+
+ public enum SignProtectionState
+ {
+ NOT_ALLOWED, ALLOWED, NOSIGN, OWNER
+ }
+
+ private SignProtectionState checkProtectionSign(final Block block, final User user, final String username)
+ {
+ if (block.getType() == Material.SIGN_POST || block.getType() == Material.WALL_SIGN)
+ {
+ final BlockSign sign = new BlockSign(block);
+ if (sign.getLine(0).equalsIgnoreCase(this.getSuccessName()))
+ {
+ return checkProtectionSign(sign, user, username);
+ }
+ }
+ return SignProtectionState.NOSIGN;
+ }
+
+ private SignProtectionState checkProtectionSign(final ISign sign, final User user, final String username)
+ {
+ if (user == null || username == null)
+ {
+ return SignProtectionState.NOT_ALLOWED;
+ }
+ if (user.isAuthorized("essentials.signs.protection.override"))
+ {
+ return SignProtectionState.OWNER;
+ }
+ for (int i = 1; i <= 2; i++)
+ {
+ final String line = sign.getLine(i);
+ if (line.startsWith("(") && line.endsWith(")") && user.inGroup(line.substring(1, line.length() - 1)))
+ {
+ return SignProtectionState.ALLOWED;
+ }
+ else if (line.equalsIgnoreCase(username))
+ {
+ return SignProtectionState.ALLOWED;
+ }
+ }
+ if (sign.getLine(3).substring(2).equalsIgnoreCase(username))
+ {
+ return SignProtectionState.OWNER;
+ }
+ return SignProtectionState.NOT_ALLOWED;
+ }
+
+ private Block[] getAdjacentBlocks(final Block block)
+ {
+ return new Block[]
+ {
+ block.getFace(BlockFace.NORTH),
+ block.getFace(BlockFace.SOUTH),
+ block.getFace(BlockFace.EAST),
+ block.getFace(BlockFace.WEST),
+ block.getFace(BlockFace.DOWN),
+ block.getFace(BlockFace.UP)
+ };
+ }
+
+ public SignProtectionState isBlockProtected(final Block block, final User user, final String username, boolean secure)
+ {
+ final Map<Location, SignProtectionState> signs = getConnectedSigns(block, user, username, secure);
+ SignProtectionState retstate = SignProtectionState.NOSIGN;
+ for (SignProtectionState state : signs.values())
+ {
+ if (state == SignProtectionState.OWNER || state == SignProtectionState.ALLOWED)
+ {
+ return state;
+ }
+ if (state == SignProtectionState.NOT_ALLOWED)
+ {
+ retstate = state;
+ }
+ }
+ return retstate;
+ }
+
+ public boolean isBlockProtected(final Block block)
+ {
+ final Block[] faces = getAdjacentBlocks(block);
+ for (Block b : faces)
+ {
+ if (b.getType() == Material.SIGN_POST || b.getType() == Material.WALL_SIGN)
+ {
+ final Sign sign = new CraftSign(b);
+ if (sign.getLine(0).equalsIgnoreCase("§1[Protection]"))
+ {
+ return true;
+ }
+ }
+ if (protectedBlocks.contains(b.getType()))
+ {
+ final Block[] faceChest = getAdjacentBlocks(b);
+
+ for (Block a : faceChest)
+ {
+ if (a.getType() == Material.SIGN_POST || a.getType() == Material.WALL_SIGN)
+ {
+ final Sign sign = new CraftSign(a);
+ if (sign.getLine(0).equalsIgnoreCase("§1[Protection]"))
+ {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public Set<Material> getBlocks()
+ {
+ return protectedBlocks;
+ }
+
+ @Override
+ protected boolean onBlockPlace(final Block block, final User player, final String username, final IEssentials ess) throws SignException
+ {
+ for (Block adjBlock : getAdjacentBlocks(block))
+ {
+ final SignProtectionState state = isBlockProtected(adjBlock, player, username, true);
+
+ if ((state == SignProtectionState.ALLOWED || state == SignProtectionState.NOT_ALLOWED)
+ && !player.isAuthorized("essentials.signs.protection.override"))
+ {
+ player.sendMessage(Util.format("noPlacePermission", block.getType().toString().toLowerCase()));
+ return false;
+ }
+ }
+ return true;
+
+ }
+
+ @Override
+ protected boolean onBlockInteract(final Block block, final User player, final String username, final IEssentials ess) throws SignException
+ {
+ final SignProtectionState state = isBlockProtected(block, player, username, false);
+
+ if (state == SignProtectionState.OWNER || state == SignProtectionState.NOSIGN || state == SignProtectionState.ALLOWED)
+ {
+ return true;
+ }
+
+ if (state == SignProtectionState.NOT_ALLOWED
+ && player.isAuthorized("essentials.signs.protection.override"))
+ {
+ return true;
+ }
+
+
+ player.sendMessage(Util.format("noAccessPermission", block.getType().toString().toLowerCase()));
+ return false;
+ }
+
+ @Override
+ protected boolean onBlockBreak(final Block block, final User player, final String username, final IEssentials ess) throws SignException
+ {
+ final SignProtectionState state = isBlockProtected(block, player, username, false);
+
+ if (state == SignProtectionState.OWNER || state == SignProtectionState.NOSIGN)
+ {
+ checkIfSignsAreBroken(block, player, username, ess);
+ return true;
+ }
+
+ if ((state == SignProtectionState.ALLOWED || state == SignProtectionState.NOT_ALLOWED)
+ && player.isAuthorized("essentials.signs.protection.override"))
+ {
+ checkIfSignsAreBroken(block, player, username, ess);
+ return true;
+ }
+
+
+ player.sendMessage(Util.format("noDestroyPermission", block.getType().toString().toLowerCase()));
+ return false;
+ }
+
+ @Override
+ public boolean onBlockExplode(final Block block, final IEssentials ess)
+ {
+ final SignProtectionState state = isBlockProtected(block, null, null, false);
+
+ return state == SignProtectionState.NOSIGN;
+ }
+
+ @Override
+ public boolean onBlockBurn(final Block block, final IEssentials ess)
+ {
+ final SignProtectionState state = isBlockProtected(block, null, null, false);
+
+ return state == SignProtectionState.NOSIGN;
+ }
+}
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignSell.java b/Essentials/src/com/earth2me/essentials/signs/SignSell.java
index 2b74a78e6..9df1ec874 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignSell.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignSell.java
@@ -12,7 +12,7 @@ public class SignSell extends EssentialsSign
{
super("Sell");
}
-
+
@Override
protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException
{
@@ -20,7 +20,7 @@ public class SignSell extends EssentialsSign
validateTrade(sign, 3, ess);
return true;
}
-
+
@Override
protected boolean onSignInteract(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException
{
@@ -29,6 +29,7 @@ public class SignSell extends EssentialsSign
charge.isAffordableFor(player);
money.pay(player);
charge.charge(player);
+ Trade.log("Sign", "Sell", "Interact", username, charge, username, money, ess);
return true;
}
}
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java
index dd82bd09d..8f7b0f8c2 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java
@@ -20,10 +20,11 @@ public class SignTrade extends EssentialsSign
{
validateTrade(sign, 1, false, ess);
validateTrade(sign, 2, true, ess);
- final Trade charge = getTrade(sign, 2, true, ess);
+ final Trade charge = getTrade(sign, 2, true, true, ess);
charge.isAffordableFor(player);
sign.setLine(3, "§8" + username);
charge.charge(player);
+ Trade.log("Sign", "Trade", "Create", username, charge, username, null, ess);
return true;
}
@@ -32,19 +33,21 @@ public class SignTrade extends EssentialsSign
{
if (sign.getLine(3).substring(2).equalsIgnoreCase(username))
{
- final Trade stored = getTrade(sign, 1, true, ess);
+ final Trade stored = getTrade(sign, 1, true, true, ess);
substractAmount(sign, 1, stored);
stored.pay(player);
+ Trade.log("Sign", "Trade", "OwnerInteract", username, null, username, stored, ess);
}
else
{
- final Trade charge = getTrade(sign, 1, false, ess);
- final Trade trade = getTrade(sign, 2, false, ess);
+ final Trade charge = getTrade(sign, 1, false, false, ess);
+ final Trade trade = getTrade(sign, 2, false, true, ess);
charge.isAffordableFor(player);
substractAmount(sign, 2, trade);
trade.pay(player);
addAmount(sign, 1, charge);
charge.charge(player);
+ Trade.log("Sign", "Trade", "Interact", sign.getLine(3), charge, username, trade, ess);
}
return true;
}
@@ -54,10 +57,11 @@ public class SignTrade extends EssentialsSign
{
if (sign.getLine(3).length() > 3 && sign.getLine(3).substring(2).equalsIgnoreCase(username))
{
- final Trade stored1 = getTrade(sign, 1, true, ess);
- final Trade stored2 = getTrade(sign, 2, true, ess);
+ final Trade stored1 = getTrade(sign, 1, true, false, ess);
+ final Trade stored2 = getTrade(sign, 2, true, false, ess);
stored1.pay(player);
stored2.pay(player);
+ Trade.log("Sign", "Trade", "Break", username, stored2, username, stored1, ess);
return true;
}
else
@@ -65,7 +69,7 @@ public class SignTrade extends EssentialsSign
return false;
}
}
-
+
protected final void validateTrade(final ISign sign, final int index, final boolean amountNeeded, final IEssentials ess) throws SignException
{
final String line = sign.getLine(index).trim();
@@ -80,6 +84,10 @@ public class SignTrade extends EssentialsSign
final Double money = getMoney(split[0]);
if (money != null)
{
+ if (Util.formatCurrency(money).length() * 2 > 15)
+ {
+ throw new SignException("Line can be too long!");
+ }
sign.setLine(index, Util.formatCurrency(money) + ":0");
return;
}
@@ -88,7 +96,7 @@ public class SignTrade extends EssentialsSign
if (split.length == 2 && amountNeeded)
{
final Double money = getMoney(split[0]);
- final Double amount = getDouble(split[1]);
+ final Double amount = getDoublePositive(split[1]);
if (money != null && amount != null)
{
sign.setLine(index, Util.formatCurrency(money) + ":" + Util.formatCurrency(amount).substring(1));
@@ -98,21 +106,26 @@ public class SignTrade extends EssentialsSign
if (split.length == 2 && !amountNeeded)
{
- final int amount = getInteger(split[0]);
+ final int amount = getIntegerPositive(split[0]);
final ItemStack item = getItemStack(split[1], amount);
if (amount < 1 || item.getTypeId() == 0)
{
throw new SignException(Util.i18n("moreThanZero"));
}
- sign.setLine(index, amount + " " + split[1] + ":0");
+ String newline = amount + " " + split[1] + ":0";
+ if ((newline + amount).length() > 16)
+ {
+ throw new SignException("Line can be too long!");
+ }
+ sign.setLine(index, newline);
return;
}
if (split.length == 3 && amountNeeded)
{
- final int stackamount = getInteger(split[0]);
+ final int stackamount = getIntegerPositive(split[0]);
final ItemStack item = getItemStack(split[1], stackamount);
- int amount = getInteger(split[2]);
+ int amount = getIntegerPositive(split[2]);
amount -= amount % stackamount;
if (amount < 1 || stackamount < 1 || item.getTypeId() == 0)
{
@@ -124,7 +137,7 @@ public class SignTrade extends EssentialsSign
throw new SignException(Util.format("invalidSignLine", index));
}
- protected final Trade getTrade(final ISign sign, final int index, final boolean fullAmount, final IEssentials ess) throws SignException
+ protected final Trade getTrade(final ISign sign, final int index, final boolean fullAmount, final boolean notEmpty, final IEssentials ess) throws SignException
{
final String line = sign.getLine(index).trim();
if (line.isEmpty())
@@ -136,7 +149,7 @@ public class SignTrade extends EssentialsSign
if (split.length == 2)
{
final Double money = getMoney(split[0]);
- final Double amount = getDouble(split[1]);
+ final Double amount = notEmpty ? getDoublePositive(split[1]) : getDouble(split[1]);
if (money != null && amount != null)
{
return new Trade(fullAmount ? amount : money, ess);
@@ -145,11 +158,11 @@ public class SignTrade extends EssentialsSign
if (split.length == 3)
{
- final int stackamount = getInteger(split[0]);
+ final int stackamount = getIntegerPositive(split[0]);
final ItemStack item = getItemStack(split[1], stackamount);
int amount = getInteger(split[2]);
amount -= amount % stackamount;
- if (amount < 1 || stackamount < 1 || item.getTypeId() == 0)
+ if (notEmpty && (amount < 1 || stackamount < 1 || item.getTypeId() == 0))
{
throw new SignException(Util.i18n("moreThanZero"));
}
@@ -209,7 +222,7 @@ public class SignTrade extends EssentialsSign
if (split.length == 3)
{
- final int stackamount = getInteger(split[0]);
+ final int stackamount = getIntegerPositive(split[0]);
final ItemStack item = getItemStack(split[1], stackamount);
int amount = getInteger(split[2]);
sign.setLine(index, stackamount + " " + split[1] + ":" + (amount + Math.round(value)));
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignWarp.java b/Essentials/src/com/earth2me/essentials/signs/SignWarp.java
index 776d97924..244450d8a 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignWarp.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignWarp.java
@@ -51,7 +51,7 @@ public class SignWarp extends EssentialsSign
if ((!group.isEmpty()
&& ("§2Everyone".equals(group)
|| player.inGroup(group)))
- || (!ess.getSettings().getPerWarpPermission() || player.isAuthorized("essentials.warp." + warpName)))
+ || (group.isEmpty() && (!ess.getSettings().getPerWarpPermission() || player.isAuthorized("essentials.warp." + warpName))))
{
final Trade charge = getTrade(sign, 3, ess);
try
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignWeather.java b/Essentials/src/com/earth2me/essentials/signs/SignWeather.java
new file mode 100644
index 000000000..05496ac14
--- /dev/null
+++ b/Essentials/src/com/earth2me/essentials/signs/SignWeather.java
@@ -0,0 +1,56 @@
+package com.earth2me.essentials.signs;
+
+import com.earth2me.essentials.ChargeException;
+import com.earth2me.essentials.IEssentials;
+import com.earth2me.essentials.Trade;
+import com.earth2me.essentials.User;
+import com.earth2me.essentials.Util;
+
+
+public class SignWeather extends EssentialsSign
+{
+ public SignWeather()
+ {
+ super("Weather");
+ }
+
+ @Override
+ protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException
+ {
+ validateTrade(sign, 2, ess);
+ final String timeString = sign.getLine(1);
+ if ("Sun".equalsIgnoreCase(timeString))
+ {
+ sign.setLine(1, "§2Sun");
+ return true;
+ }
+ if ("Storm".equalsIgnoreCase(timeString))
+ {
+ sign.setLine(1, "§2Storm");
+ return true;
+ }
+ throw new SignException(Util.i18n("onlySunStorm"));
+ }
+
+ @Override
+ protected boolean onSignInteract(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException
+ {
+ final Trade charge = getTrade(sign, 2, ess);
+ charge.isAffordableFor(player);
+ final String weatherString = sign.getLine(1);
+ if ("§2Sun".equalsIgnoreCase(weatherString))
+ {
+ player.getWorld().setStorm(false);
+ charge.charge(player);
+ return true;
+ }
+ if ("§2Storm".equalsIgnoreCase(weatherString))
+ {
+ player.getWorld().setStorm(true);
+ charge.charge(player);
+ return true;
+ }
+ throw new SignException(Util.i18n("onlySunStorm"));
+ }
+}
+
diff --git a/Essentials/src/com/earth2me/essentials/signs/Signs.java b/Essentials/src/com/earth2me/essentials/signs/Signs.java
new file mode 100644
index 000000000..1f20ed737
--- /dev/null
+++ b/Essentials/src/com/earth2me/essentials/signs/Signs.java
@@ -0,0 +1,27 @@
+package com.earth2me.essentials.signs;
+
+
+public enum Signs
+{
+ BUY(new SignBuy()),
+ DISPOSAL(new SignDisposal()),
+ FREE(new SignFree()),
+ HEAL(new SignHeal()),
+ MAIL(new SignMail()),
+ PROTECTION(new SignProtection()),
+ SELL(new SignSell()),
+ TIME(new SignTime()),
+ TRADE(new SignTrade()),
+ WARP(new SignWarp());
+ private final EssentialsSign sign;
+
+ private Signs(final EssentialsSign sign)
+ {
+ this.sign = sign;
+ }
+
+ public EssentialsSign getSign()
+ {
+ return sign;
+ }
+}
diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml
index 7f0b20e8f..1908b1d2e 100644
--- a/Essentials/src/config.yml
+++ b/Essentials/src/config.yml
@@ -51,6 +51,7 @@ default-stack-size: 64
item-spawn-blacklist:
# Set this to true if you want permission based item spawn rules
+# Note: The blacklist above will be ignored then.
# Permissions:
# - essentials.itemspawn.item-all
# - essentials.itemspawn.item-[itemname]
@@ -229,6 +230,13 @@ command-costs:
# Set this to a currency symbol you want to use.
currency-symbol: '$'
+# Set the maximum amount of money a player can have
+# The amount is always limited to 10 trillions because of the limitations of a java double
+max-money: 10000000000000
+
+# Enable this to log all interactions with trade/buy/sell signs and sell command
+economy-log-enabled: false
+
############################################################
# +------------------------------------------------------+ #
# | EssentialsHelp | #
@@ -321,6 +329,7 @@ protect:
lightning-fire-spread: true
portal-creation: false
tnt-explosion: false
+ fireball-explosion: false
creeper-explosion: false
creeper-playerdamage: false
creeper-blockdamage: false
diff --git a/Essentials/src/items.csv b/Essentials/src/items.csv
index 845170a00..2268c7def 100644
--- a/Essentials/src/items.csv
+++ b/Essentials/src/items.csv
@@ -447,6 +447,12 @@ detecttrack,28,0
detectrail,28,0
dtrack,28,0
drail,28,0
+pistonstickybase,29,0
+stickypiston,29,0
+stickyp,29,0
+psticky,29,0
+spiston,29,0
+pistons,29,0
spiderweb,30,0
sweb,30,0
web,30,0
@@ -466,6 +472,11 @@ deadshrub,32,0
shrubdead,32,0
dshrub,32,0
shrubd,32,0
+pistonbase,33,0
+piston,33,0
+pistonblock,33,0
+pistonextension,34,0
+pistonext,34,0
whitecloth,35,0
whitewool,35,0
whitecotton,35,0
@@ -595,6 +606,8 @@ blackcotton,35,15
blacloth,35,15
blawool,35,15
blacotton,35,15
+pistonmovingpiece,36,0
+pistonmp,36,0
yellowflower,37,0
yflower,37,0
flower,37,0
@@ -1957,6 +1970,7 @@ diode,356,0
cookie,357,0
map,358,0
chart,358,0
+shears,359,0
goldmusicrecord,2256,0
goldmusicdisk,2256,0
goldmusiccd,2256,0
diff --git a/Essentials/src/messages.properties b/Essentials/src/messages.properties
index dabc86b26..11bbd4687 100644
--- a/Essentials/src/messages.properties
+++ b/Essentials/src/messages.properties
@@ -74,8 +74,9 @@ foreverAlone = \u00a7cYou have nobody to whom you can reply.
freedMemory = Freed {0} MB.
gcchunks = chunks,
gcentities = entities
+gcfree = Free memory: {0} MB
gcmax = Maximum memory: {0} MB
-gcmin = Minimum memory: {0} MB
+gctotal = Allocated memory: {0} MB
generatingPortal = \u00a77Generating an exit portal.
geoIpUrlEmpty = GeoIP download url is empty.
geoIpUrlInvalid = GeoIP download url is invalid.
@@ -170,7 +171,7 @@ negativeBalanceError = User is not allowed to have a negative balance.
nickChanged = Nickname changed.
nickInUse = \u00a7cThat name is already in use.
nickNamesAlpha = \u00a7cNicknames must be alphanumeric.
-nickNoMore = \u00a7You no longer have a nickname.
+nickNoMore = \u00a77You no longer have a nickname.
nickOthersPermission = \u00a7cYou do not have permission to change the nickname of others
nickSet = \u00a77Your nickname is now \u00a7c{0}
noAccessCommand = \u00a7cYou do not have access to that command.
@@ -185,6 +186,7 @@ noMailSendPerm = \u00a7cYou do not have the \u00a7fessentials.mail.send\u00a7c p
noMotd = \u00a7cThere is no message of the day."
noNewMail = \u00a77You have no new mail.
noPendingRequest = You do not have a pending request.
+noPlacePermission = \u00a7cYou do not have permission to place a block near that sign.
noRules = \u00a7cThere are no rules specified yet.
noWarpsDefined = No warps defined
none = none
@@ -197,6 +199,7 @@ now = now
numberRequired = A number goes there, silly.
onlyDayNight = /time only supports day/night.
onlyPlayers = Only in-game players can use {0}.
+onlySunStorm = /weather only supports sun/storm.
parseError = Error parsing {0} on line {1}
pendingTeleportCancelled = \u00a7cPending teleportation request cancelled.
permissionsError = Missing Permissions/GroupManager; chat prefixes/suffixes will be disabled.
diff --git a/Essentials/src/messages_da.properties b/Essentials/src/messages_da.properties
index e77fc4ed5..27b3602b0 100644
--- a/Essentials/src/messages_da.properties
+++ b/Essentials/src/messages_da.properties
@@ -76,8 +76,9 @@ foreverAlone = \u00a7cDu har ingen du kan svare.
freedMemory = Befriede {0} MB.
gcchunks = stykker,
gcentities = enheder
+gcfree = Free memory: {0} MB
gcmax = Maximum memory: {0} MB
-gcmin = Minimum memory: {0} MB
+gctotal = Allocated memory: {0} MB
generatingPortal = \u00a77Genererer en udgangs portal.
geoIpUrlEmpty = GeoIP download url er tom.
geoIpUrlInvalid = GeoIP download url er ugyldig.
@@ -187,6 +188,7 @@ noMailSendPerm = \u00a7cDu har ikke \u00a7fessentials.mail.send\u00a7c tilladels
noMotd = \u00a7cDer er ikke nogen besked for dagen."
noNewMail = \u00a77Du har ingen ny post.
noPendingRequest = Du har ikke en ventende anmodning.
+noPlacePermission = \u00a7cYou do not have permission to place a block near that sign.
noRules = \u00a7cDer er ingen regler fastsat endnu.
noWarpsDefined = Ingen warps defineret
none = ingen
@@ -199,6 +201,7 @@ now = nu
numberRequired = Der skal v\u00e6re et nummer, fjolle.
onlyDayNight = /time underst\u00f8tter kun day/night.
onlyPlayers = Kun in-game spillere kan bruge {0}.
+onlySunStorm = /weather only supports sun/storm.
parseError = Fejl ved parsing {0} p\u00e5 linje {1}
pendingTeleportCancelled = \u00a7cVentende teleportations anmodning aflyst.
permissionsError = Mangler Permissions/GroupManager; chat pr\u00e6fikser/suffikser vil v\u00e6re sl\u00e5et fra.
diff --git a/Essentials/src/messages_de.properties b/Essentials/src/messages_de.properties
index 6d2ca2166..110b6bcc6 100644
--- a/Essentials/src/messages_de.properties
+++ b/Essentials/src/messages_de.properties
@@ -74,8 +74,9 @@ foreverAlone = \u00a7cDu hast niemanden, dem du antworten kannst.
freedMemory = {0} MB frei gemacht.
gcchunks = Chunks,
gcentities = Einheiten
+gcfree = Freier Speicher: {0} MB
gcmax = Maximaler Speicher: {0} MB
-gcmin = Minimaler Speicher: {0} MB
+gctotal = Reservierter Speicher: {0} MB
generatingPortal = \u00a77Erstelle ein Ausgangsportal.
geoIpUrlEmpty = GeoIP Download-URL ist leer.
geoIpUrlInvalid = GeoIP Download-URL ist ung\u00fcltig.
@@ -185,6 +186,7 @@ noMailSendPerm = \u00a7cDu hast die Rechte \u00a7fessentials.mail.send\u00a7c ni
noMotd = \u00a7cEs existiert keine Willkommensnachricht."
noNewMail = \u00a77Du hast keine Nachrichten.
noPendingRequest = Du hast keine Teleportierungsanfragen.
+noPlacePermission = \u00a7cDu hast keine Rechte, einen Block in der N\u00e4he des Schildes zu platzieren.
noRules = \u00a7cEs wurden keine Regeln definiert.
noWarpsDefined = Keine Warp-Punkte erstellt.
none = keine
@@ -197,6 +199,7 @@ now = jetzt
numberRequired = Ein Zahl wird ben\u00f6tigt.
onlyDayNight = /time unterst\u00fctzt nur day/night.
onlyPlayers = Nur Spieler k\u00f6nnen {0} benutzen.
+onlySunStorm = /weather unterst\u00fctzt nur sun/storm.
parseError = Fehler beim Parsen von {0} in Zeile {1}
pendingTeleportCancelled = \u00a7cLaufende Teleportierung abgebrochen.
permissionsError = Permissions/GroupManager fehlt; Chat-Prefixe/-Suffixe sind ausgeschaltet.
diff --git a/Essentials/src/messages_en.properties b/Essentials/src/messages_en.properties
index d583f59af..11bbd4687 100644
--- a/Essentials/src/messages_en.properties
+++ b/Essentials/src/messages_en.properties
@@ -74,8 +74,9 @@ foreverAlone = \u00a7cYou have nobody to whom you can reply.
freedMemory = Freed {0} MB.
gcchunks = chunks,
gcentities = entities
+gcfree = Free memory: {0} MB
gcmax = Maximum memory: {0} MB
-gcmin = Minimum memory: {0} MB
+gctotal = Allocated memory: {0} MB
generatingPortal = \u00a77Generating an exit portal.
geoIpUrlEmpty = GeoIP download url is empty.
geoIpUrlInvalid = GeoIP download url is invalid.
@@ -185,6 +186,7 @@ noMailSendPerm = \u00a7cYou do not have the \u00a7fessentials.mail.send\u00a7c p
noMotd = \u00a7cThere is no message of the day."
noNewMail = \u00a77You have no new mail.
noPendingRequest = You do not have a pending request.
+noPlacePermission = \u00a7cYou do not have permission to place a block near that sign.
noRules = \u00a7cThere are no rules specified yet.
noWarpsDefined = No warps defined
none = none
@@ -197,6 +199,7 @@ now = now
numberRequired = A number goes there, silly.
onlyDayNight = /time only supports day/night.
onlyPlayers = Only in-game players can use {0}.
+onlySunStorm = /weather only supports sun/storm.
parseError = Error parsing {0} on line {1}
pendingTeleportCancelled = \u00a7cPending teleportation request cancelled.
permissionsError = Missing Permissions/GroupManager; chat prefixes/suffixes will be disabled.
diff --git a/Essentials/src/messages_fr.properties b/Essentials/src/messages_fr.properties
index 5a333fbb6..6cd2622a2 100644
--- a/Essentials/src/messages_fr.properties
+++ b/Essentials/src/messages_fr.properties
@@ -74,8 +74,9 @@ foreverAlone = \u00a7cVous n''avez personne \u00e0 qui r\u00e9pondre.
freedMemory = A lib\u00e9r\u00e9 {0} Mo.
gcchunks = chunks,
gcentities = entit\u00e9s
+gcfree = Free memory: {0} Mo
gcmax = M\u00e9moire maximale: {0} Mo
-gcmin = M\u00e9moire minimale: {0} Mo
+gctotal = Allocated memory: {0} Mo
generatingPortal = \u00a77G\u00e9n\u00e9ration d''un portail de sortie.
geoIpUrlEmpty = L''url de t\u00e9l\u00e9chargement de GeoIP est vide.
geoIpUrlInvalid = L''url de t\u00e9l\u00e9chargement de GeoIP est invalide.
@@ -185,6 +186,7 @@ noMailSendPerm = \u00a7cVous n''avez pas la permission \u00a7fessentials.mail.se
noMotd = \u00a7cIl n''y a pas de message su jour.
noNewMail = \u00a77Vous n''avez pas de courrier.
noPendingRequest = Vous n''avez pas de requ\u00eate non lue.
+noPlacePermission = \u00a7cYou do not have permission to place a block near that sign.
noRules = \u00a7cIl n''y a pas encore de r\u00e8gles d\u00e9finies.
noWarpsDefined = Aucun warps d\u00e9finis.
none = aucun
@@ -197,6 +199,7 @@ now = maintenant
numberRequired = On a besoin d''un nombre ici, idiot.
onlyDayNight = /time ne supporte que (jour) day/night (nuit).
onlyPlayers = Seulement les joueurs en jeu peuvent utiliser {0}.
+onlySunStorm = /weather only supports sun/storm.
parseError = Erreur de conversion {0} \u00e0 la ligne {1}
pendingTeleportCancelled = \u00a7cRequete de t\u00e9l\u00e9portation annul\u00e9e.
permissionsError = Permissions/GroupManager manquant, les pr\u00e9fixes et suffixes ne seront pas affich\u00e9s.
diff --git a/Essentials/src/messages_nl.properties b/Essentials/src/messages_nl.properties
index 0aa1770bf..6ee9954e3 100644
--- a/Essentials/src/messages_nl.properties
+++ b/Essentials/src/messages_nl.properties
@@ -75,8 +75,9 @@ foreverAlone = \u00a7cJe hebt niemand waarnaar je kan reageren.
freedMemory = {0} MB gelost.
gcchunks = chunks,
gcentities = entities
+gcfree = Free memory: {0} MB
gcmax = Maximaal geheugen: {0} MB
-gcmin = Minimaal geheugen: {0} MB
+gctotal = Allocated memory: {0} MB
generatingPortal = \u00a77Uitgangs portal aan het cre\u00ebren.
geoIpUrlEmpty = GeoIP download url is leeg.
geoIpUrlInvalid = GeoIP download url is ongeldig.
@@ -186,6 +187,7 @@ noMailSendPerm = \u00a7cJe hebt de \u00a7fessentials.mail.send\u00a7c toestemmin
noMotd = \u00a7cEr is geen bericht van de dag."
noNewMail = \u00a77Je hebt geen nieuwe berichten.
noPendingRequest = Je hebt geen aanvragen.
+noPlacePermission = \u00a7cYou do not have permission to place a block near that sign.
noRules = \u00a7cEr zijn nog geen regels gegeven.
noWarpsDefined = Geen warps gedefinieerd
none = geen
@@ -198,6 +200,7 @@ now = nu
numberRequired = Er moet daar een nummer, grapjas.
onlyDayNight = /time oondersteund alleen day/night.
onlyPlayers = Alleen in-game spelers kunnen {0} gebruiken.
+onlySunStorm = /weather only supports sun/storm.
parseError = Fout bij ontleding {0} op regel {1}
pendingTeleportCancelled = \u00a7cAangevraagde teleportatie afgelast.
permissionsError = Vermisde Permissions/GroupManager; chat prefixes/suffixes worden uitgeschakeld.
diff --git a/EssentialsChat/nbproject/project.properties b/EssentialsChat/nbproject/project.properties
index 08df72abc..2e51b176b 100644
--- a/EssentialsChat/nbproject/project.properties
+++ b/EssentialsChat/nbproject/project.properties
@@ -27,11 +27,13 @@ dist.javadoc.dir=${dist.dir}/javadoc
endorsed.classpath=
excludes=
file.reference.bukkit-0.0.1-SNAPSHOT.jar=../lib/bukkit-0.0.1-SNAPSHOT.jar
+file.reference.Factions.jar=../lib/Factions.jar
includes=**
jar.compress=false
javac.classpath=\
${reference.Essentials.jar}:\
- ${file.reference.bukkit-0.0.1-SNAPSHOT.jar}
+ ${file.reference.bukkit-0.0.1-SNAPSHOT.jar}:\
+ ${file.reference.Factions.jar}
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java
index 428413661..5fb8e9842 100644
--- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java
+++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java
@@ -17,6 +17,9 @@ public class EssentialsChat extends JavaPlugin
public void onEnable()
{
final PluginManager pluginManager = getServer().getPluginManager();
+
+ EssentialsChatPlayerListener.checkFactions(pluginManager);
+
final EssentialsChatPlayerListener playerListener = new EssentialsChatPlayerListener(getServer());
pluginManager.registerEvent(Type.PLAYER_JOIN, playerListener, Priority.Lowest, this);
pluginManager.registerEvent(Type.PLAYER_CHAT, playerListener, Priority.Highest, this);
diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java
index 211733818..57c41de72 100644
--- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java
+++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java
@@ -13,6 +13,10 @@ import org.bukkit.event.player.PlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerListener;
import org.bukkit.event.player.PlayerRespawnEvent;
+import org.bukkit.plugin.Plugin;
+import org.bukkit.plugin.PluginManager;
+
+import org.mcteam.factions.Factions;
public class EssentialsChatPlayerListener extends PlayerListener
@@ -20,6 +24,7 @@ public class EssentialsChatPlayerListener extends PlayerListener
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private final transient IEssentials ess = Essentials.getStatic();
private final transient Server server;
+ private static Factions factions = null;
public EssentialsChatPlayerListener(final Server server)
{
@@ -48,6 +53,10 @@ public class EssentialsChatPlayerListener extends PlayerListener
{
return;
}
+
+ if (factions != null && (factions.shouldLetFactionsHandleThisChat(event)))
+ return;
+
final User user = ess.getUser(event.getPlayer());
updateDisplayName(user);
@@ -118,8 +127,39 @@ public class EssentialsChatPlayerListener extends PlayerListener
continue;
}
}
+ String message = String.format(event.getFormat(), user.getDisplayName(), event.getMessage());
+
+ if (factions != null)
+ message = message.replace("{FACTION}", factions.getPlayerFactionTagRelation(event.getPlayer(), p)).replace("{FACTION_TITLE}", factions.getPlayerTitle(event.getPlayer()));
- u.sendMessage(String.format(event.getFormat(), user.getDisplayName(), event.getMessage()));
+ u.sendMessage(message);
}
}
+
+ protected static void checkFactions(PluginManager pm)
+ {
+ if (factions != null)
+ return;
+
+ Plugin factionsPlugin = pm.getPlugin("Factions");
+ if (factionsPlugin == null)
+ return;
+
+ factions = (Factions)factionsPlugin;
+ try
+ { // make sure Factions is sufficiently up-to-date
+ if (factions.hookSupportVersion() < 1)
+ factions = null;
+ }
+ catch (NoSuchMethodError ex)
+ { // if not, we can't work with it, so don't bother
+ factions = null;
+ }
+
+ if (factions == null)
+ return;
+
+ // normally a good thing, but we'll skip it to let Factions handle faction tags for global messages
+ //factions.handleFactionTagExternally(true);
+ }
}
diff --git a/EssentialsChat/src/plugin.yml b/EssentialsChat/src/plugin.yml
index 0be4e1c75..4ad77d230 100644
--- a/EssentialsChat/src/plugin.yml
+++ b/EssentialsChat/src/plugin.yml
@@ -1,9 +1,10 @@
-# This determines the command prefix when there are conflicts (/name:home, /name:help, etc.)
-name: EssentialsChat
-main: com.earth2me.essentials.chat.EssentialsChat
-# Note to developers: This next line cannot change, or the automatic versioning system will break.
-version: TeamCity
-website: http://www.earth2me.net:8001/
-description: Provides chat control features for Essentials. Requires Permissions.
-authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology]
-depend: [Essentials] \ No newline at end of file
+# This determines the command prefix when there are conflicts (/name:home, /name:help, etc.)
+name: EssentialsChat
+main: com.earth2me.essentials.chat.EssentialsChat
+# Note to developers: This next line cannot change, or the automatic versioning system will break.
+version: TeamCity
+website: http://www.earth2me.net:8001/
+description: Provides chat control features for Essentials. Requires Permissions.
+authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology]
+depend: [Essentials]
+softdepend: [Factions] \ No newline at end of file
diff --git a/EssentialsGroupBridge/src/com/nijikokun/bukkit/Permissions/Permissions.java b/EssentialsGroupBridge/src/com/nijikokun/bukkit/Permissions/Permissions.java
index bca7a89ed..cf0d09a35 100644
--- a/EssentialsGroupBridge/src/com/nijikokun/bukkit/Permissions/Permissions.java
+++ b/EssentialsGroupBridge/src/com/nijikokun/bukkit/Permissions/Permissions.java
@@ -7,8 +7,12 @@ import java.util.logging.Logger;
import org.anjocaido.groupmanager.GroupManager;
import org.anjocaido.groupmanager.permissions.NijikoPermissionsProxy;
import org.bukkit.Server;
+import org.bukkit.event.Event.Priority;
+import org.bukkit.event.Event.Type;
import org.bukkit.event.player.PlayerChatEvent;
import org.bukkit.event.player.PlayerListener;
+import org.bukkit.event.server.PluginEnableEvent;
+import org.bukkit.event.server.ServerListener;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;
@@ -55,23 +59,32 @@ public class Permissions extends JavaPlugin {
PluginDescriptionFile pdfFile = this.getDescription();
if (Security == null) {//make sure we have only one instance
- Plugin p = (Plugin)(this.getServer() == null ? new GroupManager() : this.getServer().getPluginManager().getPlugin("GroupManager"));
- if (p != null) {
- if (!p.isEnabled()) {
- if (this.getServer() == null) {
- p.onEnable();
- } else {
- this.getServer().getPluginManager().enablePlugin(p);
- }
- }
- GroupManager gm = (GroupManager) p;
- groupManager = gm;
- Security = new NijikoPermissionsProxy(gm);
- } else {
- System.err.println("OOOPS! Fake " + pdfFile.getName() + " version " + pdfFile.getVersion() + " couldn't find GroupManager!");
- this.getPluginLoader().disablePlugin(this);
- }
- }
+ Security = new NijikoPermissionsProxy(null);
+ }
+
+ Plugin p = (this.getServer() == null) ? null : this.getServer().getPluginManager().getPlugin("GroupManager");
+ if (p != null) {
+ if (p.isEnabled()) {
+ setGM(p);
+ } else {
+ if (this.getServer() != null) {
+ this.getServer().getPluginManager().registerEvent(Type.PLUGIN_ENABLE, new ServerListener() {
+
+ @Override
+ public void onPluginEnable(PluginEnableEvent event)
+ {
+ if (event.getPlugin().getDescription().getName().equals("GroupManager")) {
+ Permissions.this.setGM(event.getPlugin());
+ }
+ }
+
+ }, Priority.Normal, this);
+ }
+ }
+ } else {
+ System.err.println("OOOPS! Fake " + pdfFile.getName() + " version " + pdfFile.getVersion() + " couldn't find GroupManager!");
+ this.getPluginLoader().disablePlugin(this);
+ }
// EXAMPLE: Custom code, here we just output some info so we can check all is well
if (pdfFile != null)
System.out.println("Fake " + pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!");
@@ -81,17 +94,30 @@ public class Permissions extends JavaPlugin {
//compiled code
//throw new RuntimeException("Compiled Code");
}
+
+ private void setGM(Plugin p) {
+ groupManager = (GroupManager)p;
+ ((NijikoPermissionsProxy)Security).setGM(p);
+ }
public PermissionHandler getHandler() {
//compiled code
//throw new RuntimeException("Compiled Code");
//System.out.println("Alguem chamou o handler");
- checkEnable();
+ if (Security == null)
+ {
+ Security = new NijikoPermissionsProxy(null);
+ }
+ //checkEnable();
return Security;
}
public void setupPermissions() {
- checkEnable();
+ if (Security == null)
+ {
+ Security = new NijikoPermissionsProxy(null);
+ }
+ //checkEnable();
}
private void checkEnable() {
diff --git a/EssentialsGroupBridge/src/org/anjocaido/groupmanager/permissions/NijikoPermissionsProxy.java b/EssentialsGroupBridge/src/org/anjocaido/groupmanager/permissions/NijikoPermissionsProxy.java
index 18da0cd56..e26c10711 100644
--- a/EssentialsGroupBridge/src/org/anjocaido/groupmanager/permissions/NijikoPermissionsProxy.java
+++ b/EssentialsGroupBridge/src/org/anjocaido/groupmanager/permissions/NijikoPermissionsProxy.java
@@ -9,6 +9,7 @@ import java.io.File;
import java.util.Map;
import org.anjocaido.groupmanager.GroupManager;
import org.bukkit.entity.Player;
+import org.bukkit.plugin.Plugin;
import org.bukkit.util.config.Configuration;
/**
@@ -425,4 +426,9 @@ public class NijikoPermissionsProxy extends Control {
return plugin.getWorldsHolder().getDefaultWorld().getPermissionsHandler().getPermissionDouble(name,permission);
}
+ public void setGM(Plugin p)
+ {
+ this.plugin = (GroupManager)p;
+ }
+
}
diff --git a/EssentialsGroupManager/src/groups.yml b/EssentialsGroupManager/src/groups.yml
index 20434f45b..87033cdc9 100644
--- a/EssentialsGroupManager/src/groups.yml
+++ b/EssentialsGroupManager/src/groups.yml
@@ -18,13 +18,18 @@ groups:
permissions:
- -groupmanager.mantogglesave
- essentials
+ - essentials.antioch
+ - essentials.burn
- essentials.clearinventory
- essentials.cooldown.bypass
- essentials.deljail
+ - essentials.fireball
+ - essentials.gc
- essentials.give
- essentials.god
- essentials.heal
- essentials.heal.others
+ - essentials.lightning
- essentials.invsee
- essentials.item
- essentials.jails
@@ -33,13 +38,12 @@ groups:
- essentials.mute
- essentials.sell
- essentials.setjail
- - essentials.signs.protection.override
+ - essentials.signs.*
- essentials.spawnmob
- essentials.teleport.cooldown.bypass
- essentials.teleport.timer.bypass
- essentials.togglejail
- groupmanager.*
- - essentials.burn
inheritance:
- moderator
info:
@@ -50,11 +54,13 @@ groups:
default: false
permissions:
- essentials.afk
+ - essentials.back
- essentials.back.ondeath
- essentials.balance
- essentials.chat.shout
- essentials.compass
- essentials.home
+ - essentials.depth
- essentials.kit
- essentials.kit.tools
- essentials.mail
@@ -64,20 +70,18 @@ groups:
- essentials.nick
- essentials.pay
- essentials.portal
+ - essentials.powertool
- essentials.protect
- essentials.sethome
- - essentials.signs.buy.use
- - essentials.signs.disposal.create
- - essentials.signs.disposal.use
- - essentials.signs.free.use
- - essentials.signs.heal.use
- - essentials.signs.mail.create
- - essentials.signs.mail.use
- - essentials.signs.protection.create
- - essentials.signs.protection.use
- - essentials.signs.sell.use
- - essentials.signs.trade.create
- - essentials.signs.trade.use
+ - essentials.signs.use.*
+ - essentials.signs.create.disposal
+ - essentials.signs.create.mail
+ - essentials.signs.create.protection
+ - essentials.signs.create.trade
+ - essentials.signs.break.disposal
+ - essentials.signs.break.mail
+ - essentials.signs.break.protection
+ - essentials.signs.break.trade
- essentials.suicide
- essentials.tpa
- essentials.tpaccept
@@ -95,19 +99,23 @@ groups:
Moderator:
default: false
permissions:
- - essentials.back
- essentials.ban
- essentials.banip
- essentials.broadcast
- essentials.delwarp
- - essentials.depth
- essentials.eco
+ - essentials.ext
- essentials.getpos
- essentials.jump
- essentials.kick
- essentials.kill
- essentials.setwarp
+ - essentials.signs.create.*
+ - essentials.signs.break.*
+ - essentials.spawner
+ - essentials.thunder
- essentials.time
+ - essentials.time.world
- essentials.togglejail
- essentials.top
- essentials.tp
@@ -118,6 +126,7 @@ groups:
- essentials.tptoggle
- essentials.unban
- essentials.unbanip
+ - essentials.weather
- essentials.whois
- essentials.world
- groupmanager.listgroups
@@ -128,7 +137,6 @@ groups:
- groupmanager.manselect
- groupmanager.manuadd
- groupmanager.manudel
- - essentials.ext
inheritance:
- builder
info:
@@ -139,7 +147,6 @@ groups:
default: false
permissions:
- '*'
- - -essentials.protect.damage.*
inheritance:
- semiadmin
info:
diff --git a/EssentialsGroupManager/src/plugin.yml b/EssentialsGroupManager/src/plugin.yml
index 497f15edb..86fb874af 100644
--- a/EssentialsGroupManager/src/plugin.yml
+++ b/EssentialsGroupManager/src/plugin.yml
@@ -1,5 +1,5 @@
name: GroupManager
-version: 1.0(alpha-5)
+version: "1.0(alpha-5) [Zombie-Version, please switch to Permissions 3]"
main: org.anjocaido.groupmanager.GroupManager
website: http://www.anjocaido.info/
description: Provides on-the-fly system for Permission system created by Nijikokun. But all in memory, and with flat-file saving schedule.
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangadd.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangadd.java
index 442729f16..8c22dabdc 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangadd.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangadd.java
@@ -21,7 +21,7 @@ public class Commandmangadd extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
final String group = args[0];
- String command = "/permissions g:" + group + " create";
+ String command = "permissions g:" + group + " create";
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangaddi.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangaddi.java
index f2eb55ee4..760b5c81f 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangaddi.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangaddi.java
@@ -22,7 +22,7 @@ public class Commandmangaddi extends EssentialsCommand
}
final String target = args[0];
final String group = args[1];
- String command = "/permissions g:"+target+" parents add "+group;
+ String command = "permissions g:"+target+" parents add "+group;
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangaddp.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangaddp.java
index e57628c57..e83de4e50 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangaddp.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangaddp.java
@@ -22,7 +22,7 @@ public class Commandmangaddp extends EssentialsCommand
}
final String target = args[0];
final String perm = args[1];
- String command = "/permissions g:"+target+" perms add "+perm;
+ String command = "permissions g:"+target+" perms add "+perm;
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangcheckp.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangcheckp.java
index 106dcd791..1152d1a0b 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangcheckp.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangcheckp.java
@@ -22,7 +22,7 @@ public class Commandmangcheckp extends EssentialsCommand
}
final String target = args[0];
final String perm = args[1];
- String command = "/permissions g:"+target+" has "+perm;
+ String command = "permissions g:"+target+" has "+perm;
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdel.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdel.java
index 52fdc3da2..24ffe2307 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdel.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdel.java
@@ -21,7 +21,7 @@ public class Commandmangdel extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
final String group = args[0];
- String command = "/permissions g:"+group+" delete";
+ String command = "permissions g:"+group+" delete";
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdeli.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdeli.java
index 9b3bc3679..aea296735 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdeli.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdeli.java
@@ -22,7 +22,7 @@ public class Commandmangdeli extends EssentialsCommand
}
final String target = args[0];
final String group = args[1];
- String command = "/permissions g:"+target+" parents remove "+group;
+ String command = "permissions g:"+target+" parents remove "+group;
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdelp.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdelp.java
index de4ce8a7e..ef1dd4207 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdelp.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmangdelp.java
@@ -22,7 +22,7 @@ public class Commandmangdelp extends EssentialsCommand
}
final String target = args[0];
final String perm = args[1];
- String command = "/permissions g:"+target+" perms remove "+perm;
+ String command = "permissions g:"+target+" perms remove "+perm;
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanglistp.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanglistp.java
index 2e775c147..715f42774 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanglistp.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanglistp.java
@@ -21,7 +21,7 @@ public class Commandmanglistp extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
final String target = args[0];
- String command = "/permissions g:"+target+" perms list";
+ String command = "permissions g:"+target+" perms list";
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanload.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanload.java
index 3e1803233..390cb78eb 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanload.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanload.java
@@ -21,7 +21,7 @@ public class Commandmanload extends EssentialsCommand
{
world = args[0];
}
- String command = "/permissions -reload "+world;
+ String command = "permissions -reload "+world;
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuadd.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuadd.java
index 65a4df759..a63a1a36b 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuadd.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuadd.java
@@ -23,7 +23,7 @@ public class Commandmanuadd extends EssentialsCommand
final String player = args[0];
final String group = args[1];
//TODO: Make this command add a player if it doesnt exist /permissions +player+ create
- String command = "/permissions "+player+" parents add "+group;
+ String command = "permissions "+player+" parents add "+group;
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuaddp.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuaddp.java
index 676631c63..3d3d67c72 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuaddp.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuaddp.java
@@ -22,7 +22,7 @@ public class Commandmanuaddp extends EssentialsCommand
}
final String player = args[0];
final String perm = args[1];
- String command = "/permissions "+player+" perms add "+perm;
+ String command = "permissions "+player+" perms add "+perm;
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuaddsub.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuaddsub.java
index ee2cd3147..60d1980af 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuaddsub.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuaddsub.java
@@ -22,7 +22,7 @@ public class Commandmanuaddsub extends EssentialsCommand
}
final String player = args[0];
final String group = args[1];
- String command = "/permissions "+player+" parents add "+group;
+ String command = "permissions "+player+" parents add "+group;
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanucheckp.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanucheckp.java
index df713fc31..634b447c7 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanucheckp.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanucheckp.java
@@ -22,7 +22,7 @@ public class Commandmanucheckp extends EssentialsCommand
}
final String player = args[0];
final String perm = args[1];
- String command = "/permissions "+player+" has "+perm;
+ String command = "permissions "+player+" has "+perm;
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudel.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudel.java
index 9e117ac21..72c8fc2af 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudel.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudel.java
@@ -21,7 +21,7 @@ public class Commandmanudel extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
final String player = args[0];
- String command = "/permissions "+player+" delete";
+ String command = "permissions "+player+" delete";
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudelp.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudelp.java
index 4a35f628b..01adf97b2 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudelp.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudelp.java
@@ -22,7 +22,7 @@ public class Commandmanudelp extends EssentialsCommand
}
final String player = args[0];
final String perm = args[1];
- String command = "/permissions "+player+" perms remove "+perm;
+ String command = "permissions "+player+" perms remove "+perm;
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudelsub.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudelsub.java
index 4640c68b1..1a1ae2a6d 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudelsub.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanudelsub.java
@@ -22,7 +22,7 @@ public class Commandmanudelsub extends EssentialsCommand
}
final String player = args[0];
final String group = args[1];
- String command = "/permissions "+player+" parents remove "+group;
+ String command = "permissions "+player+" parents remove "+group;
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanulistp.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanulistp.java
index f5d4a484e..f809f3c61 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanulistp.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanulistp.java
@@ -21,7 +21,7 @@ public class Commandmanulistp extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
final String player = args[0];
- String command = "/permissions "+player+" perms list";
+ String command = "permissions "+player+" perms list";
sender.sendMessage(commandLabel + " is deprecated. Use " + command + " instead.");
ess.getServer().dispatchCommand(sender, command);
}
diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/EssentialsPermissionsCommands.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/EssentialsPermissionsCommands.java
index e3c3f1dd6..a9651cd31 100644
--- a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/EssentialsPermissionsCommands.java
+++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/EssentialsPermissionsCommands.java
@@ -35,7 +35,7 @@ public class EssentialsPermissionsCommands extends JavaPlugin
@Override
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args)
{
- return Essentials.getStatic().onCommandEssentials(sender, command, label, args, EssentialsPermissionsCommands.class.getClassLoader(), "com.earth2me.essentials.permissions.Command");
+ return Essentials.getStatic().onCommandEssentials(sender, command, label, args, EssentialsPermissionsCommands.class.getClassLoader(), "com.earth2me.essentials.permissions.Command", "groupmanager.");
}
@Override
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
index 42a55c874..f8166b1d5 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
@@ -13,7 +13,9 @@ import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld;
+import org.bukkit.craftbukkit.entity.CraftFireball;
import org.bukkit.craftbukkit.entity.CraftPlayer;
+import org.bukkit.craftbukkit.entity.CraftTNTPrimed;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
@@ -125,6 +127,7 @@ public class EssentialsProtectEntityListener extends EntityListener
&& !user.isAuthorized("essentials.protect.damage.disable")))
{
event.setCancelled(true);
+ ((EntityDamageByProjectileEvent)event).setBounce(true);
return;
}
@@ -215,17 +218,23 @@ public class EssentialsProtectEntityListener extends EntityListener
}
}
- ((CraftServer)ess.getServer()).getHandle().a(loc.getX(), loc.getY(), loc.getZ(), 64.0D, ((CraftWorld)loc.getWorld()).getHandle().worldProvider.dimension,
+ ((CraftServer)ess.getServer()).getHandle().sendPacketNearby(loc.getX(), loc.getY(), loc.getZ(), 64.0D, ((CraftWorld)loc.getWorld()).getHandle().worldProvider.dimension,
new Packet60Explosion(loc.getX(), loc.getY(), loc.getZ(), 3.0f, set));
event.setCancelled(true);
return;
}
- else if (!(event.getEntity() instanceof LivingEntity)
+ else if (event.getEntity() instanceof CraftTNTPrimed
&& prot.getSettingBool(ProtectConfig.prevent_tnt_explosion))
{
event.setCancelled(true);
return;
}
+ else if (event.getEntity() instanceof CraftFireball
+ && prot.getSettingBool(ProtectConfig.prevent_fireball_explosion))
+ {
+ event.setCancelled(true);
+ return;
+ }
// This code will prevent explosions near protected rails, signs or protected chests
// TODO: Use protect db instead of this code
@@ -249,12 +258,12 @@ public class EssentialsProtectEntityListener extends EntityListener
event.setCancelled(true);
return;
}
- if (EssentialsBlockListener.protectedBlocks.contains(block.getType())
+ /*if (EssentialsBlockListener.protectedBlocks.contains(block.getType())
&& EssentialsBlockListener.isBlockProtected(block))
{
event.setCancelled(true);
return;
- }
+ }*/
}
}
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java b/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java
index d9161bda8..75824c368 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java
@@ -31,6 +31,7 @@ public enum ProtectConfig
prevent_portal_creation("protect.prevent.portal-creation", false),
prevent_block_on_rail("protect.protect.prevent-block-on-rails", false),
prevent_tnt_explosion("protect.prevent.tnt-explosion", false),
+ prevent_fireball_explosion("protect.prevent.fireball-explosion", false),
prevent_creeper_explosion("protect.prevent.creeper-explosion", true),
prevent_creeper_playerdmg("protect.prevent.creeper-playerdamage", false),
prevent_creeper_blockdmg("protect.prevent.creeper-blockdamage", false),
diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java
index fb2e712b7..77cb9a3cb 100644
--- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java
+++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java
@@ -38,6 +38,6 @@ public class EssentialsSpawn extends JavaPlugin
@Override
public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args)
{
- return Essentials.getStatic().onCommandEssentials(sender, command, commandLabel, args, EssentialsSpawn.class.getClassLoader(), "com.earth2me.essentials.spawn.Command");
+ return Essentials.getStatic().onCommandEssentials(sender, command, commandLabel, args, EssentialsSpawn.class.getClassLoader(), "com.earth2me.essentials.spawn.Command", "essentials.");
}
}
diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java
index a2ee7bed1..27988f11a 100644
--- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java
+++ b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java
@@ -65,7 +65,7 @@ public class EssentialsXMPP extends JavaPlugin implements IEssentialsXMPP
@Override
public boolean onCommand(final CommandSender sender, final Command command, final String commandLabel, final String[] args)
{
- return Essentials.getStatic().onCommandEssentials(sender, command, commandLabel, args, EssentialsXMPP.class.getClassLoader(), "com.earth2me.essentials.xmpp.Command");
+ return Essentials.getStatic().onCommandEssentials(sender, command, commandLabel, args, EssentialsXMPP.class.getClassLoader(), "com.earth2me.essentials.xmpp.Command", "essentials.");
}
@Override
diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java
index 537a32a5e..fb0145ee4 100644
--- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java
+++ b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java
@@ -94,7 +94,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager
private void connect()
{
final String server = config.getString("xmpp.server");
- if (server == null)
+ if (server == null || server.equals("example.com"))
{
LOGGER.log(Level.WARNING, "config broken for xmpp");
return;
diff --git a/README.markdown b/README.markdown
index 3d21b2baf..dd0cf38d2 100644
--- a/README.markdown
+++ b/README.markdown
@@ -13,4 +13,6 @@ Recommended NetBeans plugins:
In the root folder of the repository is a file called settings.zip. It contains the code guidelines settings. Open the preferences of NetBeans and import the zip file. Use "Source > Format" before each commit please.
-To build all jars, select the BuildAll project and build that. You'll find all jars inside the dist/lib folder of the BuildAll project. \ No newline at end of file
+To build all jars, select the BuildAll project and build that. You'll find all jars inside the dist/lib folder of the BuildAll project.
+
+If you create pull requests, always make them for the master branch. \ No newline at end of file
diff --git a/lib/Factions.jar b/lib/Factions.jar
new file mode 100644
index 000000000..af13995ae
--- /dev/null
+++ b/lib/Factions.jar
Binary files differ
diff --git a/lib/bukkit-0.0.1-SNAPSHOT.jar b/lib/bukkit-0.0.1-SNAPSHOT.jar
index 48dda3405..862601752 100644
--- a/lib/bukkit-0.0.1-SNAPSHOT.jar
+++ b/lib/bukkit-0.0.1-SNAPSHOT.jar
Binary files differ
diff --git a/lib/craftbukkit-0.0.1-SNAPSHOT.jar b/lib/craftbukkit-0.0.1-SNAPSHOT.jar
index ab91cd910..216a4a943 100644
--- a/lib/craftbukkit-0.0.1-SNAPSHOT.jar
+++ b/lib/craftbukkit-0.0.1-SNAPSHOT.jar
Binary files differ