mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-25 01:31:29 +01:00
SPIGOT-6990: Fix setRepairCost(0) in Anvil
By: Doc <nachito94@msn.com>
This commit is contained in:
parent
b0e366dc99
commit
9340d95f92
@ -18,54 +18,81 @@
|
|||||||
public String itemName;
|
public String itemName;
|
||||||
public final ContainerProperty cost;
|
public final ContainerProperty cost;
|
||||||
private static final int COST_FAIL = 0;
|
private static final int COST_FAIL = 0;
|
||||||
@@ -32,6 +36,10 @@
|
@@ -32,6 +36,11 @@
|
||||||
private static final int COST_REPAIR_SACRIFICE = 2;
|
private static final int COST_REPAIR_SACRIFICE = 2;
|
||||||
private static final int COST_INCOMPATIBLE_PENALTY = 1;
|
private static final int COST_INCOMPATIBLE_PENALTY = 1;
|
||||||
private static final int COST_RENAME = 1;
|
private static final int COST_RENAME = 1;
|
||||||
+ // CraftBukkit start
|
+ // CraftBukkit start
|
||||||
|
+ public static final int DEFAULT_DENIED_COST = -1;
|
||||||
+ public int maximumRepairCost = 40;
|
+ public int maximumRepairCost = 40;
|
||||||
+ private CraftInventoryView bukkitEntity;
|
+ private CraftInventoryView bukkitEntity;
|
||||||
+ // CraftBukkit end
|
+ // CraftBukkit end
|
||||||
|
|
||||||
public ContainerAnvil(int i, PlayerInventory playerinventory) {
|
public ContainerAnvil(int i, PlayerInventory playerinventory) {
|
||||||
this(i, playerinventory, ContainerAccess.NULL);
|
this(i, playerinventory, ContainerAccess.NULL);
|
||||||
@@ -104,7 +112,7 @@
|
@@ -50,7 +59,7 @@
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean mayPickup(EntityHuman entityhuman, boolean flag) {
|
||||||
|
- return (entityhuman.getAbilities().instabuild || entityhuman.experienceLevel >= this.cost.get()) && this.cost.get() > 0;
|
||||||
|
+ return (entityhuman.getAbilities().instabuild || entityhuman.experienceLevel >= this.cost.get()) && this.cost.get() > ContainerAnvil.DEFAULT_DENIED_COST && flag; // CraftBukkit - allow cost 0 like a free item
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@@ -73,7 +82,7 @@
|
||||||
|
this.inputSlots.setItem(1, ItemStack.EMPTY);
|
||||||
|
}
|
||||||
|
|
||||||
|
- this.cost.set(0);
|
||||||
|
+ this.cost.set(DEFAULT_DENIED_COST); // CraftBukkit - use a variable for set a cost for denied item
|
||||||
|
this.access.execute((world, blockposition) -> {
|
||||||
|
IBlockData iblockdata = world.getBlockState(blockposition);
|
||||||
|
|
||||||
|
@@ -104,8 +113,8 @@
|
||||||
byte b1 = 0;
|
byte b1 = 0;
|
||||||
|
|
||||||
if (itemstack.isEmpty()) {
|
if (itemstack.isEmpty()) {
|
||||||
- this.resultSlots.setItem(0, ItemStack.EMPTY);
|
- this.resultSlots.setItem(0, ItemStack.EMPTY);
|
||||||
|
- this.cost.set(0);
|
||||||
+ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), ItemStack.EMPTY); // CraftBukkit
|
+ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), ItemStack.EMPTY); // CraftBukkit
|
||||||
this.cost.set(0);
|
+ this.cost.set(DEFAULT_DENIED_COST); // CraftBukkit - use a variable for set a cost for denied item
|
||||||
} else {
|
} else {
|
||||||
ItemStack itemstack1 = itemstack.copy();
|
ItemStack itemstack1 = itemstack.copy();
|
||||||
@@ -122,7 +130,7 @@
|
ItemStack itemstack2 = this.inputSlots.getItem(1);
|
||||||
|
@@ -122,8 +131,8 @@
|
||||||
if (itemstack1.isDamageableItem() && itemstack1.getItem().isValidRepairItem(itemstack, itemstack2)) {
|
if (itemstack1.isDamageableItem() && itemstack1.getItem().isValidRepairItem(itemstack, itemstack2)) {
|
||||||
k = Math.min(itemstack1.getDamageValue(), itemstack1.getMaxDamage() / 4);
|
k = Math.min(itemstack1.getDamageValue(), itemstack1.getMaxDamage() / 4);
|
||||||
if (k <= 0) {
|
if (k <= 0) {
|
||||||
- this.resultSlots.setItem(0, ItemStack.EMPTY);
|
- this.resultSlots.setItem(0, ItemStack.EMPTY);
|
||||||
|
- this.cost.set(0);
|
||||||
+ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), ItemStack.EMPTY); // CraftBukkit
|
+ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), ItemStack.EMPTY); // CraftBukkit
|
||||||
this.cost.set(0);
|
+ this.cost.set(DEFAULT_DENIED_COST); // CraftBukkit - use a variable for set a cost for denied item
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -137,7 +145,7 @@
|
|
||||||
|
@@ -137,8 +146,8 @@
|
||||||
this.repairItemCountCost = i1;
|
this.repairItemCountCost = i1;
|
||||||
} else {
|
} else {
|
||||||
if (!flag && (!itemstack1.is(itemstack2.getItem()) || !itemstack1.isDamageableItem())) {
|
if (!flag && (!itemstack1.is(itemstack2.getItem()) || !itemstack1.isDamageableItem())) {
|
||||||
- this.resultSlots.setItem(0, ItemStack.EMPTY);
|
- this.resultSlots.setItem(0, ItemStack.EMPTY);
|
||||||
|
- this.cost.set(0);
|
||||||
+ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), ItemStack.EMPTY); // CraftBukkit
|
+ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), ItemStack.EMPTY); // CraftBukkit
|
||||||
this.cost.set(0);
|
+ this.cost.set(DEFAULT_DENIED_COST); // CraftBukkit - use a variable for set a cost for denied item
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -227,7 +235,7 @@
|
|
||||||
|
@@ -227,8 +236,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag2 && !flag1) {
|
if (flag2 && !flag1) {
|
||||||
- this.resultSlots.setItem(0, ItemStack.EMPTY);
|
- this.resultSlots.setItem(0, ItemStack.EMPTY);
|
||||||
|
- this.cost.set(0);
|
||||||
+ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), ItemStack.EMPTY); // CraftBukkit
|
+ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), ItemStack.EMPTY); // CraftBukkit
|
||||||
this.cost.set(0);
|
+ this.cost.set(DEFAULT_DENIED_COST); // CraftBukkit - use a variable for set a cost for denied item
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -251,11 +259,11 @@
|
}
|
||||||
|
@@ -251,11 +260,11 @@
|
||||||
itemstack1 = ItemStack.EMPTY;
|
itemstack1 = ItemStack.EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,7 +107,7 @@
|
|||||||
itemstack1 = ItemStack.EMPTY;
|
itemstack1 = ItemStack.EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -274,7 +282,8 @@
|
@@ -274,7 +283,8 @@
|
||||||
EnchantmentManager.setEnchantments(map, itemstack1);
|
EnchantmentManager.setEnchantments(map, itemstack1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,7 +117,7 @@
|
|||||||
this.broadcastChanges();
|
this.broadcastChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -301,4 +310,18 @@
|
@@ -301,4 +311,18 @@
|
||||||
public int getCost() {
|
public int getCost() {
|
||||||
return this.cost.get();
|
return this.cost.get();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user