mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 08:14:00 +02:00
Fix enchantments avoiding custom anvil rules when an ExcellentEnchants enchantment is present. fix #36
Also version up
This commit is contained in:
parent
1066508233
commit
c0af35fa0b
5 changed files with 25 additions and 11 deletions
|
|
@ -15,7 +15,7 @@ plugins {
|
|||
}
|
||||
|
||||
group = "xyz.alexcrea"
|
||||
version = "1.6.5"
|
||||
version = "1.6.6"
|
||||
|
||||
repositories {
|
||||
// EcoEnchants
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import java.util.logging.Level
|
|||
/**
|
||||
* Bukkit/Spigot/Paper plugin to alter anvil feature
|
||||
*/
|
||||
class CustomAnvil : JavaPlugin() {
|
||||
open class CustomAnvil : JavaPlugin() {
|
||||
|
||||
companion object {
|
||||
// bstats plugin id
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import org.bukkit.Bukkit
|
|||
import org.bukkit.event.inventory.InventoryClickEvent
|
||||
import org.bukkit.event.inventory.PrepareAnvilEvent
|
||||
import org.bukkit.inventory.AnvilInventory
|
||||
import org.bukkit.inventory.ItemStack
|
||||
import xyz.alexcrea.cuanvil.config.ConfigHolder
|
||||
import xyz.alexcrea.cuanvil.dependency.gui.ExternGuiTester
|
||||
import xyz.alexcrea.cuanvil.dependency.gui.GuiTesterSelector
|
||||
|
|
@ -105,6 +106,10 @@ object DependencyManager {
|
|||
return bypass
|
||||
}
|
||||
|
||||
fun treatAnvilResult(event: PrepareAnvilEvent, result: ItemStack) {
|
||||
excellentEnchantsCompatibility?.treatAnvilResult(event, result)
|
||||
}
|
||||
|
||||
fun tryClickAnvilResultBypass(event: InventoryClickEvent, inventory: AnvilInventory): Boolean {
|
||||
var bypass = false
|
||||
|
||||
|
|
|
|||
|
|
@ -82,16 +82,17 @@ class ExcellentEnchantsDependency {
|
|||
if(event.result == null) return true
|
||||
}
|
||||
|
||||
var first: ItemStack? = event.inventory.getItem(0)
|
||||
var second: ItemStack? = event.inventory.getItem(1)
|
||||
var result = event.result
|
||||
val first: ItemStack = treatInput(event.inventory.getItem(0))
|
||||
val second: ItemStack = treatInput(event.inventory.getItem(1))
|
||||
|
||||
if (first == null) first = ItemStack(Material.AIR)
|
||||
if (second == null) second = ItemStack(Material.AIR)
|
||||
if (result == null) result = ItemStack(Material.AIR)
|
||||
return handleRechargeMethod.invoke(this.anvilListener, event, first, second) as Boolean
|
||||
}
|
||||
|
||||
if(handleRechargeMethod.invoke(this.anvilListener, event, first, second) as Boolean) return true
|
||||
return handleCombineMethod.invoke(this.anvilListener, event, first, second, result) as Boolean
|
||||
fun treatAnvilResult(event: PrepareAnvilEvent, result: ItemStack) {
|
||||
val first: ItemStack = treatInput(event.inventory.getItem(0))
|
||||
val second: ItemStack = treatInput(event.inventory.getItem(1))
|
||||
|
||||
handleCombineMethod.invoke(this.anvilListener, event, first, second, result)
|
||||
}
|
||||
|
||||
fun testAnvilResult(event: InventoryClickEvent): Any {
|
||||
|
|
@ -100,8 +101,12 @@ class ExcellentEnchantsDependency {
|
|||
return event.inventory.getItem(2) == null
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
fun treatInput(item: ItemStack?): ItemStack {
|
||||
if(item == null) return ItemStack(Material.AIR)
|
||||
return item
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@ class PrepareAnvilListener : Listener {
|
|||
resultItem.amount *= amount
|
||||
|
||||
event.result = resultItem
|
||||
DependencyManager.treatAnvilResult(event, resultItem)
|
||||
AnvilXpUtil.setAnvilInvXp(inventory, event.view, recipe.xpCostPerCraft * amount, true)
|
||||
|
||||
return true
|
||||
|
|
@ -104,6 +105,7 @@ class PrepareAnvilListener : Listener {
|
|||
}
|
||||
|
||||
event.result = resultItem
|
||||
DependencyManager.treatAnvilResult(event, resultItem)
|
||||
|
||||
anvilCost += AnvilXpUtil.calculatePenalty(first, null, resultItem)
|
||||
|
||||
|
|
@ -173,6 +175,7 @@ class PrepareAnvilListener : Listener {
|
|||
|
||||
// Finally, we set result
|
||||
event.result = resultItem
|
||||
DependencyManager.treatAnvilResult(event, resultItem)
|
||||
|
||||
AnvilXpUtil.setAnvilInvXp(inventory, event.view, anvilCost)
|
||||
}
|
||||
|
|
@ -198,6 +201,7 @@ class PrepareAnvilListener : Listener {
|
|||
return true
|
||||
}
|
||||
event.result = resultItem
|
||||
DependencyManager.treatAnvilResult(event, resultItem)
|
||||
|
||||
AnvilXpUtil.setAnvilInvXp(inventory, event.view, anvilCost)
|
||||
return true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue