Add default enchantment level for enchant sign (#3070)

Defaults the enchantment level on signs to `1` if one is not provided on the sign.

Closes #1497.
This commit is contained in:
Josh Roy 2020-05-04 06:10:16 -04:00 committed by GitHub
parent 1bc1f646fd
commit e9d29f789f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -28,21 +28,19 @@ public class SignEnchant extends EssentialsSign {
throw e;
}
final String[] enchantLevel = sign.getLine(2).split(":");
if (enchantLevel.length != 2) {
sign.setLine(2, "§c<enchant>");
throw new SignException(tl("invalidSignLine", 3));
}
int level = 1;
final Enchantment enchantment = Enchantments.getByName(enchantLevel[0]);
if (enchantment == null) {
sign.setLine(2, "§c<enchant>");
throw new SignException(tl("enchantmentNotFound"));
}
int level;
try {
level = Integer.parseInt(enchantLevel[1]);
} catch (NumberFormatException ex) {
sign.setLine(2, "§c<enchant>");
throw new SignException(ex.getMessage(), ex);
if (enchantLevel.length > 1) {
try {
level = Integer.parseInt(enchantLevel[1]);
} catch (NumberFormatException ex) {
sign.setLine(2, "§c<enchant>");
throw new SignException(ex.getMessage(), ex);
}
}
final boolean allowUnsafe = ess.getSettings().allowUnsafeEnchantments() && player.isAuthorized("essentials.enchantments.allowunsafe") && player.isAuthorized("essentials.signs.enchant.allowunsafe");
if (level < 0 || (!allowUnsafe && level > enchantment.getMaxLevel())) {
@ -70,18 +68,17 @@ public class SignEnchant extends EssentialsSign {
final Trade charge = getTrade(sign, 3, ess);
charge.isAffordableFor(player);
final String[] enchantLevel = sign.getLine(2).split(":");
if (enchantLevel.length != 2) {
throw new SignException(tl("invalidSignLine", 3));
}
final Enchantment enchantment = Enchantments.getByName(enchantLevel[0]);
if (enchantment == null) {
throw new SignException(tl("enchantmentNotFound"));
}
int level;
try {
level = Integer.parseInt(enchantLevel[1]);
} catch (NumberFormatException ex) {
level = enchantment.getMaxLevel();
int level = 1;
if (enchantLevel.length > 1) {
try {
level = Integer.parseInt(enchantLevel[1]);
} catch (NumberFormatException ex) {
throw new SignException(ex.getMessage(), ex);
}
}
final ItemStack playerHand = player.getBase().getItemInHand();