Separate unsafe-enchants anvil and command toggle

This commit is contained in:
Encode42
2022-02-15 19:53:35 -05:00
parent b829f5019a
commit 779d44ff96
6 changed files with 20 additions and 18 deletions

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Config to allow for unsafe enchants
diff --git a/src/main/java/net/minecraft/server/commands/EnchantCommand.java b/src/main/java/net/minecraft/server/commands/EnchantCommand.java
index 514cc0e8805045549eacde6c280859aa2dc4a91d..4c8eeb66a9368597330957dd3c1486344b53b863 100644
index 514cc0e8805045549eacde6c280859aa2dc4a91d..f43fe5becfdbe9973b1cfa43c71bbad2ad61daac 100644
--- a/src/main/java/net/minecraft/server/commands/EnchantCommand.java
+++ b/src/main/java/net/minecraft/server/commands/EnchantCommand.java
@@ -44,7 +44,7 @@ public class EnchantCommand {
@@ -13,7 +13,7 @@ index 514cc0e8805045549eacde6c280859aa2dc4a91d..4c8eeb66a9368597330957dd3c148634
private static int enchant(CommandSourceStack source, Collection<? extends Entity> targets, Enchantment enchantment, int level) throws CommandSyntaxException {
- if (level > enchantment.getMaxLevel()) {
+ if (!org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants && level > enchantment.getMaxLevel()) { // Purpur
+ if (!org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && level > enchantment.getMaxLevel()) { // Purpur
throw ERROR_LEVEL_TOO_HIGH.create(level, enchantment.getMaxLevel());
} else {
int i = 0;
@@ -22,7 +22,7 @@ index 514cc0e8805045549eacde6c280859aa2dc4a91d..4c8eeb66a9368597330957dd3c148634
ItemStack itemStack = livingEntity.getMainHandItem();
if (!itemStack.isEmpty()) {
- if (enchantment.canEnchant(itemStack) && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment)) {
+ if ((enchantment.canEnchant(itemStack) && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment)) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants && !itemStack.hasEnchantment(enchantment))) { // Purpur
+ if ((enchantment.canEnchant(itemStack) && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment)) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && !itemStack.hasEnchantment(enchantment))) { // Purpur
itemStack.enchant(enchantment, level);
++i;
} else if (targets.size() == 1) {
@@ -75,22 +75,24 @@ index ac8a90253f45a43486c1677c576231313d2d3e09..a95df369e8cdd7b7b1e31a463fdbae90
this.getOrCreateTag().put(key, element);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index e1c4af38a7eac438b3304f11121c754e451c5bd6..1de373851215803ace0da2058781da5d68500eb9 100644
index 956be9847fc4f34643d9d563c0edc16dfa5ccbbe..12c0774967881168e7abc6fcb8db315458bbce8d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -280,6 +280,7 @@ public class PurpurConfig {
@@ -280,6 +280,8 @@ public class PurpurConfig {
public static boolean allowInfinityMending = false;
public static boolean allowCrossbowInfinity = false;
+ public static boolean allowUnsafeEnchants = false;
+ public static boolean allowUnsafeEnchantCommand = false;
private static void enchantmentSettings() {
if (version < 5) {
boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false);
@@ -288,6 +289,7 @@ public class PurpurConfig {
@@ -288,6 +290,8 @@ public class PurpurConfig {
}
allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending);
allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity);
+ allowUnsafeEnchants = getBoolean("settings.enchantment.allow-unsafe-enchants", allowUnsafeEnchants);
+ allowUnsafeEnchantCommand = getBoolean("settings.enchantment.allow-unsafe-enchant-command", allowUnsafeEnchants); // allowUnsafeEnchants as default for backwards compatability
}
public static boolean endermanShortHeight = false;

View File

@@ -67,10 +67,10 @@ index 9e83f2dea73461f698185f5ffdb6060e422b9494..6b503d7bdd0eb202ff3466dc1f691102
// CraftBukkit start
// this.setPlayerList(new DedicatedPlayerList(this, this.registryHolder, this.playerDataStorage)); // Spigot - moved up
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 147175986954fbcc66a960efd65c3f60cd6016d3..a685ca0952fa401bb7e588051c7ae832a525a65b 100644
index 2657f8e49058f7801c2435d499e6133e912021ac..3462a34a7d8e2bbf4c19c02a0b9f19ad5ccdc00f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -420,4 +420,9 @@ public class PurpurConfig {
@@ -422,4 +422,9 @@ public class PurpurConfig {
private static void tpsCatchup() {
tpsCatchup = getBoolean("settings.tps-catchup", tpsCatchup);
}

View File

@@ -18,10 +18,10 @@ index 5f154db373026ca78b812f9247dc9288d6826cb0..547158e80c501aec66f4ffc96c0a496a
char c = in.charAt(i);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index a685ca0952fa401bb7e588051c7ae832a525a65b..7a9080e68113a629ccbd31695a6afc86cc2285f9 100644
index 3462a34a7d8e2bbf4c19c02a0b9f19ad5ccdc00f..73b4aeb50ba60e5708bca6a7762b8c44be9c9287 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -425,4 +425,11 @@ public class PurpurConfig {
@@ -427,4 +427,11 @@ public class PurpurConfig {
private static void networkSettings() {
useUPnP = getBoolean("settings.network.upnp-port-forwarding", useUPnP);
}

View File

@@ -158,7 +158,7 @@ index 6b8a1535086aae7e4e3229d05615fb903188f507..60af917083de1b790b1d93d61835a669
public int getMinCost(int level) {
return 15 + (level - 1) * 9;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 7a9080e68113a629ccbd31695a6afc86cc2285f9..ce52c5ddfe1687e8ff9f94711da437147564164a 100644
index 73b4aeb50ba60e5708bca6a7762b8c44be9c9287..9ea922b7b41b1805d94ea18f437dd52fd756a821 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -373,6 +373,7 @@ public class PurpurConfig {
@@ -167,13 +167,13 @@ index 7a9080e68113a629ccbd31695a6afc86cc2285f9..ce52c5ddfe1687e8ff9f94711da43714
public static boolean allowCrossbowInfinity = false;
+ public static boolean allowShearsLooting = false;
public static boolean allowUnsafeEnchants = false;
public static boolean allowUnsafeEnchantCommand = false;
private static void enchantmentSettings() {
if (version < 5) {
@@ -382,6 +383,7 @@ public class PurpurConfig {
@@ -383,6 +384,7 @@ public class PurpurConfig {
}
allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending);
allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity);
+ allowShearsLooting = getBoolean("settings.enchantment.allow-looting-on-shears", allowShearsLooting);
allowUnsafeEnchants = getBoolean("settings.enchantment.allow-unsafe-enchants", allowUnsafeEnchants);
allowUnsafeEnchantCommand = getBoolean("settings.enchantment.allow-unsafe-enchant-command", allowUnsafeEnchants); // allowUnsafeEnchants as default for backwards compatability
}

View File

@@ -69,10 +69,10 @@ index 513343d225a71e242b0f237eefcd25147709d9d1..1f65bba67cd4fab1dee115f24b213075
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index ce52c5ddfe1687e8ff9f94711da437147564164a..2c3607fc71c0d11b935a58bbad6afe4b0c436883 100644
index 9ea922b7b41b1805d94ea18f437dd52fd756a821..acf676c756ef6b99631f4fc8e0297548465c8fe0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -434,4 +434,57 @@ public class PurpurConfig {
@@ -436,4 +436,57 @@ public class PurpurConfig {
String setPattern = getString("settings.username-valid-characters", defaultPattern);
usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern);
}

View File

@@ -31,10 +31,10 @@ index 7b8f9cf06833860d0fc02399822e6aea214883ed..03701c154e7bfad5314f3ed0e51866a2
}
// Paper end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 2c3607fc71c0d11b935a58bbad6afe4b0c436883..231209f3ed97cd3dfa4fd3ccb9a84b234413107e 100644
index acf676c756ef6b99631f4fc8e0297548465c8fe0..c8f9a0ac70840af6086f5ebd80066d43dccf8386 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -424,8 +424,10 @@ public class PurpurConfig {
@@ -426,8 +426,10 @@ public class PurpurConfig {
}
public static boolean useUPnP = false;