mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +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"
|
group = "xyz.alexcrea"
|
||||||
version = "1.6.5"
|
version = "1.6.6"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
// EcoEnchants
|
// EcoEnchants
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ import java.util.logging.Level
|
||||||
/**
|
/**
|
||||||
* Bukkit/Spigot/Paper plugin to alter anvil feature
|
* Bukkit/Spigot/Paper plugin to alter anvil feature
|
||||||
*/
|
*/
|
||||||
class CustomAnvil : JavaPlugin() {
|
open class CustomAnvil : JavaPlugin() {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
// bstats plugin id
|
// bstats plugin id
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import org.bukkit.Bukkit
|
||||||
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.AnvilInventory
|
||||||
|
import org.bukkit.inventory.ItemStack
|
||||||
import xyz.alexcrea.cuanvil.config.ConfigHolder
|
import xyz.alexcrea.cuanvil.config.ConfigHolder
|
||||||
import xyz.alexcrea.cuanvil.dependency.gui.ExternGuiTester
|
import xyz.alexcrea.cuanvil.dependency.gui.ExternGuiTester
|
||||||
import xyz.alexcrea.cuanvil.dependency.gui.GuiTesterSelector
|
import xyz.alexcrea.cuanvil.dependency.gui.GuiTesterSelector
|
||||||
|
|
@ -105,6 +106,10 @@ object DependencyManager {
|
||||||
return bypass
|
return bypass
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun treatAnvilResult(event: PrepareAnvilEvent, result: ItemStack) {
|
||||||
|
excellentEnchantsCompatibility?.treatAnvilResult(event, result)
|
||||||
|
}
|
||||||
|
|
||||||
fun tryClickAnvilResultBypass(event: InventoryClickEvent, inventory: AnvilInventory): Boolean {
|
fun tryClickAnvilResultBypass(event: InventoryClickEvent, inventory: AnvilInventory): Boolean {
|
||||||
var bypass = false
|
var bypass = false
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -82,16 +82,17 @@ class ExcellentEnchantsDependency {
|
||||||
if(event.result == null) return true
|
if(event.result == null) return true
|
||||||
}
|
}
|
||||||
|
|
||||||
var first: ItemStack? = event.inventory.getItem(0)
|
val first: ItemStack = treatInput(event.inventory.getItem(0))
|
||||||
var second: ItemStack? = event.inventory.getItem(1)
|
val second: ItemStack = treatInput(event.inventory.getItem(1))
|
||||||
var result = event.result
|
|
||||||
|
|
||||||
if (first == null) first = ItemStack(Material.AIR)
|
return handleRechargeMethod.invoke(this.anvilListener, event, first, second) as Boolean
|
||||||
if (second == null) second = ItemStack(Material.AIR)
|
}
|
||||||
if (result == null) result = ItemStack(Material.AIR)
|
|
||||||
|
|
||||||
if(handleRechargeMethod.invoke(this.anvilListener, event, first, second) as Boolean) return true
|
fun treatAnvilResult(event: PrepareAnvilEvent, result: ItemStack) {
|
||||||
return handleCombineMethod.invoke(this.anvilListener, event, first, second, result) as Boolean
|
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 {
|
fun testAnvilResult(event: InventoryClickEvent): Any {
|
||||||
|
|
@ -100,8 +101,12 @@ class ExcellentEnchantsDependency {
|
||||||
return event.inventory.getItem(2) == null
|
return event.inventory.getItem(2) == null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return false;
|
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
|
resultItem.amount *= amount
|
||||||
|
|
||||||
event.result = resultItem
|
event.result = resultItem
|
||||||
|
DependencyManager.treatAnvilResult(event, resultItem)
|
||||||
AnvilXpUtil.setAnvilInvXp(inventory, event.view, recipe.xpCostPerCraft * amount, true)
|
AnvilXpUtil.setAnvilInvXp(inventory, event.view, recipe.xpCostPerCraft * amount, true)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|
@ -104,6 +105,7 @@ class PrepareAnvilListener : Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
event.result = resultItem
|
event.result = resultItem
|
||||||
|
DependencyManager.treatAnvilResult(event, resultItem)
|
||||||
|
|
||||||
anvilCost += AnvilXpUtil.calculatePenalty(first, null, resultItem)
|
anvilCost += AnvilXpUtil.calculatePenalty(first, null, resultItem)
|
||||||
|
|
||||||
|
|
@ -173,6 +175,7 @@ class PrepareAnvilListener : Listener {
|
||||||
|
|
||||||
// Finally, we set result
|
// Finally, we set result
|
||||||
event.result = resultItem
|
event.result = resultItem
|
||||||
|
DependencyManager.treatAnvilResult(event, resultItem)
|
||||||
|
|
||||||
AnvilXpUtil.setAnvilInvXp(inventory, event.view, anvilCost)
|
AnvilXpUtil.setAnvilInvXp(inventory, event.view, anvilCost)
|
||||||
}
|
}
|
||||||
|
|
@ -198,6 +201,7 @@ class PrepareAnvilListener : Listener {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
event.result = resultItem
|
event.result = resultItem
|
||||||
|
DependencyManager.treatAnvilResult(event, resultItem)
|
||||||
|
|
||||||
AnvilXpUtil.setAnvilInvXp(inventory, event.view, anvilCost)
|
AnvilXpUtil.setAnvilInvXp(inventory, event.view, anvilCost)
|
||||||
return true
|
return true
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue