rebase on new update

This commit is contained in:
alexcrea 2026-06-12 19:58:46 +02:00
parent f97e3c937d
commit c1d67a3821
Signed by: alexcrea
GPG key ID: E346CD16413450E3
7 changed files with 32 additions and 71 deletions

View file

@ -1,18 +0,0 @@
package xyz.alexcrea.cuanvil.util
import org.bukkit.inventory.meta.Damageable
// I LOVE support of old versions and needing to do modules like that
// That truly is my favorite activity
// TODO clean this one of legacy removal branch
object MaxDamageCheckerUtil {
/**
* @return max damage or int max if not set
*/
fun getMaxDamage(meta: Damageable): Int {
if(!meta.hasMaxDamage()) return Integer.MAX_VALUE
return meta.maxDamage
}
}

View file

@ -5,6 +5,7 @@ import org.bukkit.event.HandlerList;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryView; import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.view.AnvilView;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -21,7 +22,7 @@ import xyz.alexcrea.cuanvil.anvil.AnvilUseType;
* <p> * <p>
* A null result will cancel this event * A null result will cancel this event
*/ */
@SuppressWarnings("unused") @SuppressWarnings({"unused", "UnstableApiUsage"})
public class CATreatAnvilResult2Event extends Event { public class CATreatAnvilResult2Event extends Event {
private static final HandlerList HANDLERS = new HandlerList(); private static final HandlerList HANDLERS = new HandlerList();
@ -36,7 +37,7 @@ public class CATreatAnvilResult2Event extends Event {
} }
@NotNull @NotNull
private final InventoryView view; private final AnvilView view;
private final AnvilUseType useType; private final AnvilUseType useType;
@ -50,32 +51,26 @@ public class CATreatAnvilResult2Event extends Event {
private final AnvilCost cost; private final AnvilCost cost;
@ApiStatus.Internal
public CATreatAnvilResult2Event( public CATreatAnvilResult2Event(
@NotNull InventoryView view, @NotNull AnvilView view,
Inventory inv,
AnvilUseType useType, AnvilUseType useType,
@Nullable ItemStack result, @Nullable ItemStack result,
AnvilCost cost) { AnvilCost cost) {
this.view = view; this.view = view;
this.useType = useType; this.useType = useType;
this.left = inv.getItem(0); // TODO use view here this.left = view.getItem(0);
this.right = inv.getItem(1); this.right = view.getItem(1);
this.result = result; this.result = result;
this.cost = cost; this.cost = cost;
} }
/** /**
* Get the bukkit inventory view. * Get the bukkit inventory view.
* <p>
* Temporarily marked as internal as it will get changed to anvil view on legacy removal
* so signature will change
* *
* @return The inventory view of this event. * @return The inventory view of this event.
*/ */
@ApiStatus.Internal public @NotNull AnvilView getView() {
public @NotNull InventoryView getView() {
return view; return view;
} }

View file

@ -12,8 +12,6 @@ import org.bukkit.ChatColor
import org.bukkit.Material import org.bukkit.Material
import org.bukkit.entity.HumanEntity import org.bukkit.entity.HumanEntity
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.bukkit.inventory.AnvilInventory
import org.bukkit.inventory.InventoryView
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.ItemMeta import org.bukkit.inventory.meta.ItemMeta
import org.bukkit.inventory.view.AnvilView import org.bukkit.inventory.view.AnvilView
@ -100,8 +98,7 @@ object AnvilMergeLogic {
} }
fun doRenaming( fun doRenaming(
view: InventoryView, //TODO use anvil view view: AnvilView,
inventory: AnvilInventory,
player: Player, first: ItemStack player: Player, first: ItemStack
): AnvilResult { ): AnvilResult {
val resultItem = DependencyManager.cloneItem(player, first) val resultItem = DependencyManager.cloneItem(player, first)
@ -116,7 +113,7 @@ object AnvilMergeLogic {
cost.workPenalty = AnvilXpUtil.calculatePenalty(first, null, resultItem, AnvilUseType.RENAME_ONLY) cost.workPenalty = AnvilXpUtil.calculatePenalty(first, null, resultItem, AnvilUseType.RENAME_ONLY)
val result = val result =
DependencyManager.tryTreatAnvilResult(view, inventory, player, resultItem, AnvilUseType.RENAME_ONLY, cost) DependencyManager.tryTreatAnvilResult(view, player, resultItem, AnvilUseType.RENAME_ONLY, cost)
return AnvilResult(result, cost) return AnvilResult(result, cost)
} }
@ -186,8 +183,7 @@ object AnvilMergeLogic {
} }
fun doMerge( fun doMerge(
view: InventoryView, //TODO use anvil view instead view: AnvilView,
inventory: AnvilInventory,
player: Player, player: Player,
first: ItemStack, second: ItemStack first: ItemStack, second: ItemStack
): AnvilResult { ): AnvilResult {
@ -222,7 +218,7 @@ object AnvilMergeLogic {
cost.rename = handleRename(resultItem, view, player) cost.rename = handleRename(resultItem, view, player)
val result = val result =
DependencyManager.tryTreatAnvilResult(view, inventory, player, resultItem, AnvilUseType.MERGE, cost) DependencyManager.tryTreatAnvilResult(view, player, resultItem, AnvilUseType.MERGE, cost)
return AnvilResult(result, cost) return AnvilResult(result, cost)
} }
@ -241,8 +237,7 @@ object AnvilMergeLogic {
// return true if a custom recipe exist with these ingredients // return true if a custom recipe exist with these ingredients
fun testCustomRecipe( fun testCustomRecipe(
view: InventoryView, //TODO use anvil view instead view: AnvilView,
inventory: AnvilInventory,
player: Player, player: Player,
first: ItemStack, second: ItemStack? first: ItemStack, second: ItemStack?
): CustomCraftResult { ): CustomCraftResult {
@ -264,24 +259,22 @@ object AnvilMergeLogic {
else AnvilXpUtil.calculateLevelForXp(xpCost) else AnvilXpUtil.calculateLevelForXp(xpCost)
val result = val result =
DependencyManager.tryTreatAnvilResult(view, inventory, player, resultItem, AnvilUseType.CUSTOM_CRAFT, cost) DependencyManager.tryTreatAnvilResult(view, player, resultItem, AnvilUseType.CUSTOM_CRAFT, cost)
return CustomCraftResult(result, cost, amount, recipe) return CustomCraftResult(result, cost, amount, recipe)
} }
fun testUnitRepair( fun testUnitRepair(
view: InventoryView, //TODO use anvil view view: AnvilView,
inventory: AnvilInventory,
player: Player, player: Player,
first: ItemStack, second: ItemStack first: ItemStack, second: ItemStack
): UnitRepairResult { ): UnitRepairResult {
val unitRepairAmount = first.getRepair(second) ?: return UnitRepairResult.EMPTY val unitRepairAmount = first.getRepair(second) ?: return UnitRepairResult.EMPTY
return testUnitRepair(view, inventory, player, first, second, unitRepairAmount) return testUnitRepair(view, player, first, second, unitRepairAmount)
} }
fun testUnitRepair( fun testUnitRepair(
view: InventoryView, //TODO use anvil view instead view: AnvilView,
inventory: AnvilInventory,
player: Player, player: Player,
first: ItemStack, second: ItemStack, first: ItemStack, second: ItemStack,
unitRepairAmount: Double unitRepairAmount: Double
@ -304,7 +297,7 @@ object AnvilMergeLogic {
} }
val result = val result =
DependencyManager.tryTreatAnvilResult(view, inventory, player, resultItem, AnvilUseType.UNIT_REPAIR, cost) DependencyManager.tryTreatAnvilResult(view, player, resultItem, AnvilUseType.UNIT_REPAIR, cost)
return UnitRepairResult(result, cost, repairAmount) return UnitRepairResult(result, cost, repairAmount)
} }

View file

@ -9,9 +9,6 @@ import org.bukkit.entity.HumanEntity
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.bukkit.event.inventory.InventoryClickEvent import org.bukkit.event.inventory.InventoryClickEvent
import org.bukkit.event.inventory.PrepareAnvilEvent import org.bukkit.event.inventory.PrepareAnvilEvent
import org.bukkit.inventory.AnvilInventory
import org.bukkit.inventory.Inventory
import org.bukkit.inventory.InventoryView
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import xyz.alexcrea.cuanvil.anvil.AnvilCost import xyz.alexcrea.cuanvil.anvil.AnvilCost
import org.bukkit.inventory.view.AnvilView import org.bukkit.inventory.view.AnvilView
@ -234,19 +231,18 @@ object DependencyManager {
// Return null if there was an issue // Return null if there was an issue
fun tryTreatAnvilResult( fun tryTreatAnvilResult(
view: InventoryView, view: AnvilView,
inventory: Inventory, // TODO REMOVE, use view instead on legacy removal
player: HumanEntity, player: HumanEntity,
result: ItemStack, result: ItemStack,
useType: AnvilUseType, useType: AnvilUseType,
cost: AnvilCost cost: AnvilCost
): ItemStack? { ): ItemStack? {
val treatEvent = CATreatAnvilResult2Event(view, inventory, useType, result, cost) val treatEvent = CATreatAnvilResult2Event(view, useType, result, cost)
try { try {
unsafeTryTreatAnvilResult(treatEvent) unsafeTryTreatAnvilResult(treatEvent)
return treatEvent.result return treatEvent.result
} catch (e: Exception) { } catch (e: Exception) {
logExceptionAndClear(player, inventory, e) logExceptionAndClear(view, e)
return null return null
} }
} }

View file

@ -52,7 +52,6 @@ class AnvilResultListener : Listener {
fun anvilExtractionCheck(event: InventoryClickEvent) { fun anvilExtractionCheck(event: InventoryClickEvent) {
val player = event.whoClicked as? Player ?: return val player = event.whoClicked as? Player ?: return
val view = event.view as? AnvilView ?: return val view = event.view as? AnvilView ?: return
val view = event.view
if (event.rawSlot != ANVIL_OUTPUT_SLOT) { if (event.rawSlot != ANVIL_OUTPUT_SLOT) {
return return
@ -74,7 +73,7 @@ class AnvilResultListener : Listener {
} }
// Test custom recipe // Test custom recipe
val customRecipeResult = AnvilMergeLogic.testCustomRecipe(view, inventory, player, leftItem, rightItem) val customRecipeResult = AnvilMergeLogic.testCustomRecipe(view, player, leftItem, rightItem)
if (!customRecipeResult.isEmpty()) { if (!customRecipeResult.isEmpty()) {
onCustomCraft( onCustomCraft(
event, player, view, event, player, view,
@ -90,7 +89,7 @@ class AnvilResultListener : Listener {
// Rename // Rename
if (rightItem == null) { if (rightItem == null) {
val result = AnvilMergeLogic.doRenaming(view, inventory, player, leftItem) val result = AnvilMergeLogic.doRenaming(view, player, leftItem)
if (result.isEmpty()) return if (result.isEmpty()) return
extractAnvilResult( extractAnvilResult(
@ -105,7 +104,7 @@ class AnvilResultListener : Listener {
// Merge // Merge
val canMerge = leftItem.canMergeWith(rightItem) val canMerge = leftItem.canMergeWith(rightItem)
if (canMerge) { if (canMerge) {
val result = AnvilMergeLogic.doMerge(view, inventory, player, leftItem, rightItem) val result = AnvilMergeLogic.doMerge(view, player, leftItem, rightItem)
extractAnvilResult( extractAnvilResult(
event, player, view, event, player, view,
@ -118,7 +117,7 @@ class AnvilResultListener : Listener {
// Unit repair // Unit repair
val unitRepairResult = AnvilMergeLogic.testUnitRepair( val unitRepairResult = AnvilMergeLogic.testUnitRepair(
view, inventory, player, view, player,
leftItem, rightItem leftItem, rightItem
) )
if (!unitRepairResult.isEmpty()) { if (!unitRepairResult.isEmpty()) {
@ -180,7 +179,6 @@ class AnvilResultListener : Listener {
// Handle not creative middle click... // Handle not creative middle click...
if (event.click != ClickType.MIDDLE && if (event.click != ClickType.MIDDLE &&
!handleCustomCraftClick( !handleCustomCraftClick(
event,
view, view,
player, player,
leftItem, leftItem,
@ -198,7 +196,6 @@ class AnvilResultListener : Listener {
} }
private fun handleCustomCraftClick( private fun handleCustomCraftClick(
event: InventoryClickEvent,
view: AnvilView, player: Player, view: AnvilView, player: Player,
leftItem: ItemStack, rightItem: ItemStack?, leftItem: ItemStack, rightItem: ItemStack?,
result: CustomCraftResult result: CustomCraftResult

View file

@ -9,8 +9,6 @@ import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority import org.bukkit.event.EventPriority
import org.bukkit.event.Listener import org.bukkit.event.Listener
import org.bukkit.event.inventory.PrepareAnvilEvent import org.bukkit.event.inventory.PrepareAnvilEvent
import org.bukkit.inventory.AnvilInventory
import org.bukkit.inventory.InventoryView
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.EnchantmentStorageMeta import org.bukkit.inventory.meta.EnchantmentStorageMeta
import org.bukkit.inventory.meta.ItemMeta import org.bukkit.inventory.meta.ItemMeta
@ -92,13 +90,12 @@ class PrepareAnvilListener : Listener {
if (!player.hasPermission(CustomAnvil.affectedByPluginPermission)) return if (!player.hasPermission(CustomAnvil.affectedByPluginPermission)) return
val result = getResult(view, inventory, player, first, second) val result = getResult(view, player, first, second)
applyResult(event, player, result) applyResult(event, player, result)
} }
fun getResult( fun getResult(
view: InventoryView, //TODO use anvil view view: AnvilView,
inventory: AnvilInventory,
player: Player, player: Player,
first: ItemStack?, second: ItemStack? first: ItemStack?, second: ItemStack?
): AnvilResult { ): AnvilResult {
@ -106,7 +103,7 @@ class PrepareAnvilListener : Listener {
return AnvilResult.EMPTY return AnvilResult.EMPTY
// Test custom recipe // Test custom recipe
var result: AnvilResult = testCustomRecipe(view, inventory, player, first, second) var result: AnvilResult = testCustomRecipe(view, player, first, second)
if (!result.isEmpty()) if (!result.isEmpty())
return result return result
@ -114,14 +111,14 @@ class PrepareAnvilListener : Listener {
val shouldTryRename = second.isAir val shouldTryRename = second.isAir
CustomAnvil.verboseLog("checking air in main logic: $shouldTryRename") CustomAnvil.verboseLog("checking air in main logic: $shouldTryRename")
if (shouldTryRename) if (shouldTryRename)
return doRenaming(view, inventory, player, first) return doRenaming(view, player, first)
// Test for merge // Test for merge
if (first.canMergeWith(second!!)) if (first.canMergeWith(second!!))
return doMerge(view, inventory, player, first, second) return doMerge(view, player, first, second)
// Test for unit repair // Test for unit repair
result = testUnitRepair(view, inventory, player, first, second) result = testUnitRepair(view, player, first, second)
if (!result.isEmpty()) if (!result.isEmpty())
return result return result

View file

@ -9,6 +9,7 @@ import org.bukkit.GameMode
import org.bukkit.NamespacedKey import org.bukkit.NamespacedKey
import org.bukkit.entity.HumanEntity import org.bukkit.entity.HumanEntity
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.bukkit.inventory.AnvilInventory
import org.bukkit.inventory.InventoryView import org.bukkit.inventory.InventoryView
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.Repairable import org.bukkit.inventory.meta.Repairable
@ -180,7 +181,7 @@ object AnvilXpUtil {
return resultSum return resultSum
} }
fun onNoResult(player: HumanEntity, view: InventoryView) { fun onNoResult(player: HumanEntity, view: AnvilView) {
if (ConfigOptions.shouldUseMoney(player)) if (ConfigOptions.shouldUseMoney(player))
AnvilTitleUtil.rename( AnvilTitleUtil.rename(
view, "Repair & Name", view, "Repair & Name",