mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 15:08:27 +02:00
SPIGOT-2913: Only one enchantment applied to items
This commit is contained in:
parent
4f479728ee
commit
c6d6844254
@ -106,26 +106,13 @@
|
||||
this.b();
|
||||
}
|
||||
} else {
|
||||
@@ -174,27 +236,59 @@
|
||||
return false;
|
||||
} else if (this.costs[i] > 0 && !itemstack.isEmpty() && (entityhuman.expLevel >= j && entityhuman.expLevel >= this.costs[i] || entityhuman.abilities.canInstantlyBuild)) {
|
||||
if (!this.world.isClientSide) {
|
||||
- List list = this.a(itemstack, i, this.costs[i]);
|
||||
+ // CraftBukkit start - Use the data generated by the PostPrepareItemEnchantEvent
|
||||
+ List list;
|
||||
+ if (this.h[i] < 0) {
|
||||
+ list = this.a(itemstack, i, this.costs[i]);
|
||||
+ } else {
|
||||
+ list = Collections.singletonList(new WeightedRandomEnchant(Enchantment.c(this.h[i]), this.i[i]));
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
+ boolean flag = itemstack.getItem() == Items.BOOK;
|
||||
@@ -177,24 +239,49 @@
|
||||
List list = this.a(itemstack, i, this.costs[i]);
|
||||
|
||||
- if (!list.isEmpty()) {
|
||||
if (!list.isEmpty()) {
|
||||
- entityhuman.enchantDone(j);
|
||||
- boolean flag = itemstack.getItem() == Items.BOOK;
|
||||
+ if (list != null) {
|
||||
+ // CraftBukkit start
|
||||
boolean flag = itemstack.getItem() == Items.BOOK;
|
||||
+ Map<org.bukkit.enchantments.Enchantment, Integer> enchants = new java.util.HashMap<org.bukkit.enchantments.Enchantment, Integer>();
|
||||
+ for (Object obj : list) {
|
||||
+ WeightedRandomEnchant instance = (WeightedRandomEnchant) obj;
|
||||
@ -176,7 +163,7 @@
|
||||
if (!entityhuman.abilities.canInstantlyBuild) {
|
||||
itemstack1.subtract(j);
|
||||
if (itemstack1.isEmpty()) {
|
||||
@@ -229,6 +323,11 @@
|
||||
@@ -229,6 +316,11 @@
|
||||
|
||||
public void b(EntityHuman entityhuman) {
|
||||
super.b(entityhuman);
|
||||
@ -188,7 +175,7 @@
|
||||
if (!this.world.isClientSide) {
|
||||
for (int i = 0; i < this.enchantSlots.getSize(); ++i) {
|
||||
ItemStack itemstack = this.enchantSlots.splitWithoutUpdate(i);
|
||||
@@ -242,6 +341,7 @@
|
||||
@@ -242,6 +334,7 @@
|
||||
}
|
||||
|
||||
public boolean a(EntityHuman entityhuman) {
|
||||
@ -196,7 +183,7 @@
|
||||
return this.world.getType(this.position).getBlock() != Blocks.ENCHANTING_TABLE ? false : entityhuman.d((double) this.position.getX() + 0.5D, (double) this.position.getY() + 0.5D, (double) this.position.getZ() + 0.5D) <= 64.0D;
|
||||
}
|
||||
|
||||
@@ -294,4 +394,17 @@
|
||||
@@ -294,4 +387,17 @@
|
||||
|
||||
return itemstack;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user