summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2012-12-29 08:35:52 +0000
committerKHobbits <rob@khobbits.co.uk>2012-12-29 08:36:24 +0000
commited88f8aa060eda90228b39bc075f1600c7a929d7 (patch)
tree0356fa2bad4f067fcdc1c6e4584573404c90ea84
parentd551e8c6d235d73b536ddaab92431ac42e735ab2 (diff)
downloadEssentials-ed88f8aa060eda90228b39bc075f1600c7a929d7.tar
Essentials-ed88f8aa060eda90228b39bc075f1600c7a929d7.tar.gz
Essentials-ed88f8aa060eda90228b39bc075f1600c7a929d7.tar.lz
Essentials-ed88f8aa060eda90228b39bc075f1600c7a929d7.tar.xz
Essentials-ed88f8aa060eda90228b39bc075f1600c7a929d7.zip
Allow unsafe enchantments in /item /give /kit and /enchant
Needs enabled in config file manually.
-rw-r--r--Essentials/src/com/earth2me/essentials/ISettings.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/Kit.java32
-rw-r--r--Essentials/src/com/earth2me/essentials/Settings.java6
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandenchant.java12
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandgive.java14
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commanditem.java17
-rw-r--r--Essentials/src/config.yml4
7 files changed, 67 insertions, 20 deletions
diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java
index a261c80bb..c58ffa8e7 100644
--- a/Essentials/src/com/earth2me/essentials/ISettings.java
+++ b/Essentials/src/com/earth2me/essentials/ISettings.java
@@ -151,6 +151,8 @@ public interface ISettings extends IConf
Set<String> getNoGodWorlds();
boolean getUpdateBedAtDaytime();
+
+ boolean allowUnsafeEnchantments();
boolean getRepairEnchanted();
diff --git a/Essentials/src/com/earth2me/essentials/Kit.java b/Essentials/src/com/earth2me/essentials/Kit.java
index fcd1b4932..0611cafec 100644
--- a/Essentials/src/com/earth2me/essentials/Kit.java
+++ b/Essentials/src/com/earth2me/essentials/Kit.java
@@ -34,12 +34,13 @@ public class Kit
{
throw new Exception(_("kitError"), ex);
}
-
+
}
-
+
public static void checkTime(final User user, final String kitName, final Map<String, Object> els) throws Exception
{
- if (user.isAuthorized("essentials.kit.exemptdelay")) {
+ if (user.isAuthorized("essentials.kit.exemptdelay"))
+ {
return;
}
@@ -55,7 +56,7 @@ public class Kit
// When was the last kit used?
final long lastTime = user.getKitTimestamp(kitName);
-
+
if (lastTime < earliestLong || lastTime == 0L)
{
user.setKitTimestamp(kitName, time.getTimeInMillis());
@@ -80,15 +81,15 @@ public class Kit
throw new NoChargeException();
}
}
-
+
public static List<String> getItems(final User user, final Map<String, Object> kit) throws Exception
{
if (kit == null)
{
throw new Exception(_("kitError2"));
}
-
-
+
+
try
{
return (List<String>)kit.get("items");
@@ -99,7 +100,7 @@ public class Kit
throw new Exception(_("kitErrorHelp"), e);
}
}
-
+
public static void expandItems(final IEssentials ess, final User user, final List<String> items) throws Exception
{
try
@@ -107,7 +108,7 @@ public class Kit
boolean spew = false;
for (String d : items)
{
- if (d.startsWith(ess.getSettings().getCurrencySymbol()))
+ if (d.startsWith(ess.getSettings().getCurrencySymbol()))
{
Double value = Double.parseDouble(d.substring(ess.getSettings().getCurrencySymbol().length()).trim());
Trade t = new Trade(value, ess);
@@ -119,7 +120,7 @@ public class Kit
final int id = Material.getMaterial(Integer.parseInt(item[0])).getId();
final short data = item.length > 1 ? Short.parseShort(item[1]) : 0;
final int amount = parts.length > 1 ? Integer.parseInt(parts[1]) : 1;
-
+
final ItemStack stack = new ItemStack(id, amount, data);
if (parts.length > 2)
{
@@ -146,7 +147,14 @@ public class Kit
}
try
{
- stack.addEnchantment(enchantment, level);
+ if (ess.getSettings().allowUnsafeEnchantments())
+ {
+ stack.addUnsafeEnchantment(enchantment, level);
+ }
+ else
+ {
+ stack.addEnchantment(enchantment, level);
+ }
}
catch (Exception ex)
{
@@ -154,7 +162,7 @@ public class Kit
}
}
}
-
+
final Map<Integer, ItemStack> overfilled;
if (user.isAuthorized("essentials.oversizedstacks"))
{
diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java
index d3c6b49d5..8eaa2a57c 100644
--- a/Essentials/src/com/earth2me/essentials/Settings.java
+++ b/Essentials/src/com/earth2me/essentials/Settings.java
@@ -856,6 +856,12 @@ public class Settings implements ISettings
{
return config.getBoolean("repair-enchanted", true);
}
+
+ @Override
+ public boolean allowUnsafeEnchantments()
+ {
+ return config.getBoolean("unsafe-enchantments", false);
+ }
@Override
public boolean isWorldTeleportPermissions()
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandenchant.java b/Essentials/src/com/earth2me/essentials/commands/Commandenchant.java
index 212539385..c338090aa 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandenchant.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandenchant.java
@@ -56,7 +56,8 @@ public class Commandenchant extends EssentialsCommand
}
}
final Enchantment enchantment = getEnchantment(args[0], user);
- if (level < 0 || level > enchantment.getMaxLevel())
+ final boolean allowUnsafe = ess.getSettings().allowUnsafeEnchantments() && user.isAuthorized("essentials.enchant.allowunsafe");
+ if (level < 0 || (!allowUnsafe && level > enchantment.getMaxLevel()))
{
level = enchantment.getMaxLevel();
}
@@ -66,7 +67,14 @@ public class Commandenchant extends EssentialsCommand
}
else
{
- stack.addEnchantment(enchantment, level);
+ if (allowUnsafe)
+ {
+ stack.addUnsafeEnchantment(enchantment, level);
+ }
+ else
+ {
+ stack.addEnchantment(enchantment, level);
+ }
}
user.getInventory().setItemInHand(stack);
user.updateInventory();
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgive.java b/Essentials/src/com/earth2me/essentials/commands/Commandgive.java
index c4e26d9a8..c9dde4688 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandgive.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandgive.java
@@ -81,7 +81,19 @@ public class Commandgive extends EssentialsCommand
{
level = enchantment.getMaxLevel();
}
- stack.addEnchantment(enchantment, level);
+ boolean allowUnsafe = ess.getSettings().allowUnsafeEnchantments();
+ if (allowUnsafe && sender instanceof Player && !ess.getUser(sender).isAuthorized("essentials.enchant.allowunsafe"))
+ {
+ allowUnsafe = false;
+ }
+ if (allowUnsafe)
+ {
+ stack.addUnsafeEnchantment(enchantment, level);
+ }
+ else
+ {
+ stack.addEnchantment(enchantment, level);
+ }
}
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commanditem.java b/Essentials/src/com/earth2me/essentials/commands/Commanditem.java
index d14b04d2a..a5c59deb6 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commanditem.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commanditem.java
@@ -16,7 +16,7 @@ public class Commanditem extends EssentialsCommand
{
super("item");
}
-
+
@Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
@@ -25,7 +25,7 @@ public class Commanditem extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
final ItemStack stack = ess.getItemDb().get(args[0]);
-
+
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
if (ess.getSettings().permissionBasedItemSpawn()
? (!user.isAuthorized("essentials.itemspawn.item-all")
@@ -69,7 +69,14 @@ public class Commanditem extends EssentialsCommand
{
level = enchantment.getMaxLevel();
}
- stack.addEnchantment(enchantment, level);
+ if (ess.getSettings().allowUnsafeEnchantments() && user.isAuthorized("essentials.enchant.allowunsafe"))
+ {
+ stack.addUnsafeEnchantment(enchantment, level);
+ }
+ else
+ {
+ stack.addEnchantment(enchantment, level);
+ }
}
}
}
@@ -77,12 +84,12 @@ public class Commanditem extends EssentialsCommand
{
throw new NotEnoughArgumentsException();
}
-
+
if (stack.getType() == Material.AIR)
{
throw new Exception(_("cantSpawnItem", "Air"));
}
-
+
final String displayName = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace('_', ' ');
user.sendMessage(_("itemSpawn", stack.getAmount(), displayName));
if (user.isAuthorized("essentials.oversizedstacks"))
diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml
index 3b03a9560..0a532ab34 100644
--- a/Essentials/src/config.yml
+++ b/Essentials/src/config.yml
@@ -334,6 +334,10 @@ oversized-stacksize: 64
# essentials.repair.enchanted
repair-enchanted: true
+# Allow 'unsafe' enchantments in kits and item spawning.
+# Warning: Mixing and overleveling some enchantments can cause issues with clients, servers and plugins.
+unsafe-enchantments: false
+
#Do you want essentials to keep track of previous location for /back in the teleport listener?
#If you set this to true any plugin that uses teleport will have the previous location registered.
register-back-in-listener: false