fixed item sometimes dupe

This commit is contained in:
alexcrea 2025-03-17 15:22:34 +01:00
parent 21a3663723
commit 91346209dd
No known key found for this signature in database
GPG key ID: 43FD265DB0DBF91F
2 changed files with 15 additions and 15 deletions

View file

@ -208,6 +208,10 @@ class AnvilResultListener : Listener {
output: ItemStack, output: ItemStack,
repairCost: Int, repairCost: Int,
): Boolean { ): Boolean {
// To avoid vanilla, we cancel the event
event.result = Event.Result.DENY
event.isCancelled = true
// Assumed if player do not have enough xp then it returned MIN_VALUE // Assumed if player do not have enough xp then it returned MIN_VALUE
if (repairCost == Int.MIN_VALUE) return false if (repairCost == Int.MIN_VALUE) return false
@ -253,19 +257,15 @@ class AnvilResultListener : Listener {
rightItem.amount, unitRepairResult rightItem.amount, unitRepairResult
) )
// To avoid vanilla, we cancel the event for unit repair
event.result = Event.Result.DENY
event.isCancelled = true
// Get repair cost // Get repair cost
val repairCost = getUnitRepairCost(inventory, player, leftItem, output, resultCopy, resultAmount) val repairCost = getUnitRepairCost(inventory, player, leftItem, output, resultCopy, resultAmount)
// And then we give the item manually // And then we give the item manually
extractAnvilResult( extractAnvilResult(
event, player, inventory, event, player, inventory,
leftItem, 1, null, 0,
rightItem, resultAmount, rightItem, resultAmount,
output, repairCost resultCopy, repairCost
) )
} }
@ -328,19 +328,19 @@ class AnvilResultListener : Listener {
if (output != AnvilLoreEditUtil.handleLoreAppendByBook(player, leftItem, bookMeta, xpCost)) return false if (output != AnvilLoreEditUtil.handleLoreAppendByBook(player, leftItem, bookMeta, xpCost)) return false
// Remove pages to book // Remove pages to book
val bookCopy: ItemStack? val clearedBook: ItemStack?
if (LoreEditType.APPEND_BOOK.doConsume) { if (LoreEditType.APPEND_BOOK.doConsume) {
bookCopy = rightItem.clone() clearedBook = rightItem.clone()
bookMeta.pages = Collections.emptyList() bookMeta.pages = Collections.emptyList()
bookCopy.itemMeta = bookMeta clearedBook.itemMeta = bookMeta
} else { } else {
bookCopy = null clearedBook = null
} }
return extractAnvilResult( return extractAnvilResult(
event, player, inventory, event, player, inventory,
leftItem, 1, null, 0,
bookCopy, 0, clearedBook, 0,
output, xpCost.get() output, xpCost.get()
) )
} else { } else {
@ -370,7 +370,7 @@ class AnvilResultListener : Listener {
return extractAnvilResult( return extractAnvilResult(
event, player, inventory, event, player, inventory,
leftItem, 1, null, 0,
rightCopy, 0, rightCopy, 0,
output, xpCost.get() output, xpCost.get()
) )

View file

@ -11,8 +11,8 @@ enum class LoreEditType(
) { ) {
APPEND_BOOK("lore_edit.book_and_quil.append", AnvilUseType.LORE_EDIT_BOOK_APPEND, true, true), APPEND_BOOK("lore_edit.book_and_quil.append", AnvilUseType.LORE_EDIT_BOOK_APPEND, true, true),
REMOVE_BOOK("lore_edit.book_and_quil.remove", AnvilUseType.LORE_EDIT_BOOK_REMOVE,false, true), REMOVE_BOOK("lore_edit.book_and_quil.remove", AnvilUseType.LORE_EDIT_BOOK_REMOVE,false, true),
APPEND_PAPER("lore_edit.paper.append", AnvilUseType.LORE_EDIT_PAPER_APPEND,true, false), APPEND_PAPER("lore_edit.paper.append_line", AnvilUseType.LORE_EDIT_PAPER_APPEND,true, false),
REMOVE_PAPER("lore_edit.paper.remove", AnvilUseType.LORE_EDIT_PAPER_REMOVE,false, false), REMOVE_PAPER("lore_edit.paper.remove_line", AnvilUseType.LORE_EDIT_PAPER_REMOVE,false, false),
; ;
/** /**