mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 09:27:43 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: 12dec20 Bump paerweight to 1.1.7 e33ed89 Get short commit ref using a more proper method 7d6147d Remove now unneeded patch due to paperweight 1.1.7 e72fa41 Update task dependency for includeMappings so the new task isn't skipped 0ad5526 Trim whitspace off of git hash (oops) Tuinity Changes: e878ba9 Update paper 2bd2849 Bring back fix codec spam patch
66 lines
4.0 KiB
Diff
66 lines
4.0 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Encode42 <me@encode42.dev>
|
|
Date: Wed, 24 Mar 2021 17:59:54 -0400
|
|
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..a3ac6bebcef7b1e1f9c3ebe525656a15e13f9be8 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 {
|
|
}
|
|
|
|
private static int enchant(CommandSourceStack source, Collection<? extends Entity> targets, Enchantment enchantment, int level) throws CommandSyntaxException {
|
|
- if (level > enchantment.getMaxLevel()) {
|
|
+ if (!net.pl3x.purpur.PurpurConfig.allowUnsafeEnchants && level > enchantment.getMaxLevel()) { // Purpur
|
|
throw ERROR_LEVEL_TOO_HIGH.create(level, enchantment.getMaxLevel());
|
|
} else {
|
|
int i = 0;
|
|
@@ -54,7 +54,7 @@ public class EnchantCommand {
|
|
LivingEntity livingEntity = (LivingEntity)entity;
|
|
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)) || (net.pl3x.purpur.PurpurConfig.allowUnsafeEnchants && !itemStack.hasEnchantment(enchantment))) { // Purpur
|
|
itemStack.enchant(enchantment, level);
|
|
++i;
|
|
} else if (targets.size() == 1) {
|
|
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
index 5bd25f8b8a554b965665b3f5686c14189b51f28e..4be9924556e0f447dbe6a53c2d4cb7fb89dac455 100644
|
|
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
@@ -1140,6 +1140,12 @@ public final class ItemStack {
|
|
return this.tag != null && this.tag.contains("Enchantments", 9) ? !this.tag.getList("Enchantments", 10).isEmpty() : false;
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ public boolean hasEnchantment(Enchantment enchantment) {
|
|
+ return isEnchanted() && EnchantmentHelper.deserializeEnchantments(getEnchantmentTags()).containsKey(enchantment);
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
public void addTagElement(String key, net.minecraft.nbt.Tag tag) {
|
|
this.getOrCreateTag().put(key, tag);
|
|
}
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
index aed9304d8f14070d17134b117fb94170f367cb3e..c386351bac49aeb419305f69253d388719f5b318 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
@@ -321,6 +321,7 @@ public class PurpurConfig {
|
|
|
|
public static boolean allowInfinityMending = false;
|
|
public static boolean allowCrossbowInfinity = false;
|
|
+ public static boolean allowUnsafeEnchants = false;
|
|
private static void enchantmentSettings() {
|
|
if (version < 5) {
|
|
boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false);
|
|
@@ -329,6 +330,7 @@ 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);
|
|
}
|
|
|
|
public static boolean endermanShortHeight = false;
|