1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35:51 +00:00

Fix #2805, make sure the book binder doesnt kill overleveled enchantments

This commit is contained in:
ProfElements 2021-02-18 20:26:41 -06:00
parent 4019b9612d
commit 92ed16473e

View File

@ -63,6 +63,10 @@ public class BookBinder extends AContainer {
enchantMeta.addStoredEnchant(entry.getKey(), entry.getValue(), bypassVanillaMaxLevel.getValue()); enchantMeta.addStoredEnchant(entry.getKey(), entry.getValue(), bypassVanillaMaxLevel.getValue());
} }
if (enchantMeta.getStoredEnchants().isEmpty()) {
return null;
}
book.setItemMeta(enchantMeta); book.setItemMeta(enchantMeta);
MachineRecipe recipe = new MachineRecipe(25 * (enchantments.size() / this.getSpeed()), new ItemStack[] {target, item}, new ItemStack[] {book}); MachineRecipe recipe = new MachineRecipe(25 * (enchantments.size() / this.getSpeed()), new ItemStack[] {target, item}, new ItemStack[] {book});
@ -110,13 +114,23 @@ public class BookBinder extends AContainer {
for (Map.Entry<Enchantment, Integer> entry : ech2.entrySet()) { for (Map.Entry<Enchantment, Integer> entry : ech2.entrySet()) {
for (Map.Entry<Enchantment, Integer> conflictsWith : enchantments.entrySet()) { for (Map.Entry<Enchantment, Integer> conflictsWith : enchantments.entrySet()) {
if (entry.getKey().conflictsWith(conflictsWith.getKey())) { if (entry.getKey().conflictsWith(conflictsWith.getKey())) {
if (entry.getKey() == conflictsWith.getKey()) {
} else {
conflicts = true; conflicts = true;
} }
}
} }
if (!conflicts) { if (!conflicts) {
enchantments.merge(entry.getKey(), entry.getValue(), (a, b) -> { enchantments.merge(entry.getKey(), entry.getValue(), (a, b) -> {
int enchantMaxLevel = entry.getKey().getMaxLevel();
if (a == b) { if (a == b) {
if (enchantMaxLevel <= a) {
return enchantMaxLevel;
}
if (hasCustomMaxLevel.getValue()) { if (hasCustomMaxLevel.getValue()) {
return a + 1 > customMaxLevel.getValue() ? customMaxLevel.getValue() : a + 1; return a + 1 > customMaxLevel.getValue() ? customMaxLevel.getValue() : a + 1;
} else { } else {
@ -126,6 +140,10 @@ public class BookBinder extends AContainer {
} else { } else {
int highestLevel = Math.max(a, b); int highestLevel = Math.max(a, b);
if (enchantMaxLevel <= highestLevel) {
return enchantMaxLevel;
}
if (hasCustomMaxLevel.getValue()) { if (hasCustomMaxLevel.getValue()) {
return highestLevel > customMaxLevel.getValue() ? customMaxLevel.getValue() : highestLevel; return highestLevel > customMaxLevel.getValue() ? customMaxLevel.getValue() : highestLevel;
} else { } else {