13
0
geforkt von Mirrors/Paper

SPIGOT-2913: Only one enchantment applied to items

By: md_5 <git@md-5.net>
Dieser Commit ist enthalten in:
CraftBukkit/Spigot 2016-12-13 08:44:50 +11:00
Ursprung d381e7b934
Commit 54e60aee75

Datei anzeigen

@ -106,26 +106,13 @@
this.b(); this.b();
} }
} else { } else {
@@ -174,27 +236,59 @@ @@ -177,24 +239,49 @@
return false; List list = this.a(itemstack, i, this.costs[i]);
} 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;
- if (!list.isEmpty()) { if (!list.isEmpty()) {
- entityhuman.enchantDone(j); - entityhuman.enchantDone(j);
- boolean flag = itemstack.getItem() == Items.BOOK;
+ if (list != null) {
+ // CraftBukkit start + // CraftBukkit start
boolean flag = itemstack.getItem() == Items.BOOK;
+ Map<org.bukkit.enchantments.Enchantment, Integer> enchants = new java.util.HashMap<org.bukkit.enchantments.Enchantment, Integer>(); + Map<org.bukkit.enchantments.Enchantment, Integer> enchants = new java.util.HashMap<org.bukkit.enchantments.Enchantment, Integer>();
+ for (Object obj : list) { + for (Object obj : list) {
+ WeightedRandomEnchant instance = (WeightedRandomEnchant) obj; + WeightedRandomEnchant instance = (WeightedRandomEnchant) obj;
@ -176,7 +163,7 @@
if (!entityhuman.abilities.canInstantlyBuild) { if (!entityhuman.abilities.canInstantlyBuild) {
itemstack1.subtract(j); itemstack1.subtract(j);
if (itemstack1.isEmpty()) { if (itemstack1.isEmpty()) {
@@ -229,6 +323,11 @@ @@ -229,6 +316,11 @@
public void b(EntityHuman entityhuman) { public void b(EntityHuman entityhuman) {
super.b(entityhuman); super.b(entityhuman);
@ -188,7 +175,7 @@
if (!this.world.isClientSide) { if (!this.world.isClientSide) {
for (int i = 0; i < this.enchantSlots.getSize(); ++i) { for (int i = 0; i < this.enchantSlots.getSize(); ++i) {
ItemStack itemstack = this.enchantSlots.splitWithoutUpdate(i); ItemStack itemstack = this.enchantSlots.splitWithoutUpdate(i);
@@ -242,6 +341,7 @@ @@ -242,6 +334,7 @@
} }
public boolean a(EntityHuman entityhuman) { 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; 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; return itemstack;
} }