Compare commits

..

10 commits

27 changed files with 97 additions and 77 deletions

View file

@ -23,7 +23,7 @@ jobs:
contents: write contents: write
env: env:
MODRINTH_VERSIONS: '["1.18.x", "1.19.x", "1.20.x", "1.21.x", "26.1.x", "26.2.x"]' MODRINTH_VERSIONS: '["1.18.x", "1.19.x", "1.20.x"]'
MODRINTH_PLATFORMS: '["spigot", "paper", "purpur", "folia"]' MODRINTH_PLATFORMS: '["spigot", "paper", "purpur", "folia"]'
steps: steps:
@ -124,6 +124,6 @@ jobs:
webhook-url: ${{ secrets.RELEASE_WEBHOOK_URL }} webhook-url: ${{ secrets.RELEASE_WEBHOOK_URL }}
content: | content: |
<@&1525259349423947867> <@&1525259349423947867>
# New bugfix for CustomAnvil v1 ! <:CustomAnvil:1262550667986342001> [Modrinth](https://modrinth.com/plugin/customanvil) and [GitHub](${{ github.event.release.html_url }}) links) # New bugfix for CustomAnvil v1 ! <:CustomAnvil:1262550667986342001> [Modrinth](https://modrinth.com/plugin/customanvil) and [GitHub](${{ github.event.release.html_url }}) links
${{ github.event.release.body }} ${{ github.event.release.body }}

View file

@ -5,24 +5,23 @@ import groovy.util.NodeList
import io.papermc.hangarpublishplugin.model.HangarPublication import io.papermc.hangarpublishplugin.model.HangarPublication
import io.papermc.hangarpublishplugin.model.Platforms import io.papermc.hangarpublishplugin.model.Platforms
import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import java.io.ByteArrayOutputStream
plugins { plugins {
kotlin("jvm") version "2.3.0" kotlin("jvm") version "2.4.0"
java java
id("org.jetbrains.dokka").version("1.9.20") id("org.jetbrains.dokka").version("2.2.0")
id("com.gradleup.shadow").version("9.3.0") id("com.gradleup.shadow").version("9.6.1")
// Maven publish // Maven publish
`maven-publish` `maven-publish`
signing signing
id("cn.lalaki.central").version("1.2.8") id("cn.lalaki.central").version("2.0.8")
// Paper // Paper
id("io.papermc.paperweight.userdev") version "2.0.0-beta.17" apply false id("io.papermc.paperweight.userdev") version "2.0.0-beta.21" apply false
id("io.papermc.hangar-publish-plugin") version "0.1.2" id("io.papermc.hangar-publish-plugin") version "0.1.4"
} }
group = "xyz.alexcrea" group = "xyz.alexcrea"
version = "1.19.0" version = "1.20.1"
val isDevBuild = System.getenv("SMALL_COMMIT_HASH") != null val isDevBuild = System.getenv("SMALL_COMMIT_HASH") != null
val isPreRelease = System.getenv("IS_GITHUB_PRERELEASE") == "true" val isPreRelease = System.getenv("IS_GITHUB_PRERELEASE") == "true"
@ -166,7 +165,7 @@ allprojects {
kotlin { kotlin {
compilerOptions { compilerOptions {
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_16) jvmTarget.set(JvmTarget.JVM_16)
} }
} }
@ -178,7 +177,10 @@ tasks {
fun ShadowJar.configureBaseShadow(suffix: String, libraries: Array<String>) { fun ShadowJar.configureBaseShadow(suffix: String, libraries: Array<String>) {
val processedSuffix = if(suffix.isEmpty()) "" else "-$suffix" val processedSuffix = if(suffix.isEmpty()) "" else "-$suffix"
val name = "${rootProject.name}-${effectiveVersion}${processedSuffix}.jar" val version = effectiveVersion
val name = "${rootProject.name}-${version}${processedSuffix}.jar"
val librariesExpendTo = libraries.joinToString(transform = { "\"$it\"" })
archiveFileName.set(name) archiveFileName.set(name)
// Shadow necessary dependency // Shadow necessary dependency
@ -187,8 +189,8 @@ tasks {
filesMatching("plugin.yml") { filesMatching("plugin.yml") {
expand( expand(
"version" to effectiveVersion + processedSuffix, "version" to version + processedSuffix,
"libraries" to libraries.joinToString(transform = { "\"$it\"" }), "libraries" to librariesExpendTo,
) )
} }
@ -200,7 +202,7 @@ tasks {
shadowJar { shadowJar {
configureBaseShadow("", configureBaseShadow("",
arrayOf( arrayOf(
"org.jetbrains.kotlin:kotlin-stdlib:2.3.0", "org.jetbrains.kotlin:kotlin-stdlib:2.4.0",
"net.kyori:adventure-text-minimessage:4.25.0", "net.kyori:adventure-text-minimessage:4.25.0",
"net.kyori:adventure-text-serializer-plain:4.25.0", "net.kyori:adventure-text-serializer-plain:4.25.0",
"net.kyori:adventure-text-serializer-legacy:4.25.0", "net.kyori:adventure-text-serializer-legacy:4.25.0",
@ -212,7 +214,7 @@ tasks {
exclude("net/kyori/**") exclude("net/kyori/**")
} }
val offlineJar by registering(ShadowJar::class) { val offlineJar = register<ShadowJar>("offlineJar") {
configureBaseShadow("offline", emptyArray()) configureBaseShadow("offline", emptyArray())
from(sourceSets.main.get().output) from(sourceSets.main.get().output)
@ -226,12 +228,12 @@ tasks {
} }
val sourcesJar by tasks.registering(Jar::class) { val sourcesJar = tasks.register<Jar>("sourcesJar") {
archiveClassifier.set("sources") archiveClassifier.set("sources")
from(kotlin.sourceSets.main.get().kotlin) from(kotlin.sourceSets.main.get().kotlin)
} }
val javadocJar by tasks.registering(Jar::class, fun Jar.() { val javadocJar = tasks.register<Jar>("javadocJar", fun Jar.() {
group = JavaBasePlugin.DOCUMENTATION_GROUP group = JavaBasePlugin.DOCUMENTATION_GROUP
description = "Assembles Javadoc JAR" description = "Assembles Javadoc JAR"
archiveClassifier.set("javadoc") archiveClassifier.set("javadoc")
@ -355,36 +357,25 @@ publishing {
} }
// hangar publish // hangar publish
fun latestCommitMessage(): Provider<String> {
fun executeGitCommand(vararg command: String): String { return providers.exec {
val byteOut = ByteArrayOutputStream() commandLine("git", "log", "-1", "--pretty=%B")
exec { }.standardOutput.asText.map(String::trim)
commandLine = listOf("git", *command)
standardOutput = byteOut
}
return byteOut.toString(Charsets.UTF_8.name()).trim()
} }
fun changelog(isOnline: Boolean): Provider<String> {
fun latestCommitMessage(): String { val changelog = if(isDevBuild) latestCommitMessage()
return executeGitCommand("log", "-1", "--pretty=%B") else providers.environmentVariable("RELEASE_CHANGELOG")
}
fun changelog(isOnline: Boolean): String {
var changelog = if(isDevBuild) latestCommitMessage()
else System.getenv("RELEASE_CHANGELOG")
if(!isOnline) {
changelog = "This is an offline version of the plugin. \\\n" +
"This mean that this plugin libraries are shaded into this plugin \\\n" +
"You likely want to use the normal version of this plugin\n\n" + changelog
}
if(changelog == null || changelog.isEmpty()) {
changelog = "empty changelog"
}
return changelog return changelog
.filter{!it.isEmpty()}
.map {
if(!isOnline)
return@map "This is an offline version of the plugin. \\\n" +
"This mean that this plugin libraries are shaded into this plugin \\\n" +
"You likely want to use the normal version of this plugin\n\n" + it
else return@map it
}.orElse("empty changelog")
} }
hangarPublish { hangarPublish {
@ -398,6 +389,7 @@ hangarPublish {
channel.set(if (isDevBuild || isPreRelease) devChannel else releaseChannel) channel.set(if (isDevBuild || isPreRelease) devChannel else releaseChannel)
changelog.set(changelog(isOnline)) changelog.set(changelog(isOnline))
id.set("CustomAnvil") id.set("CustomAnvil")
apiKey.set(System.getenv("HANGAR_API_TOKEN")) apiKey.set(System.getenv("HANGAR_API_TOKEN"))

View file

@ -1,4 +1,5 @@
kotlin.code.style=official kotlin.code.style=official
org.gradle.configuration-cache=true
# Signing # Signing
signing.secretKeyRingFile=~/.gnupg/secring.gpg signing.secretKeyRingFile=~/.gnupg/secring.gpg

View file

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.0-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View file

@ -2,7 +2,7 @@ group = rootProject.group
version = rootProject.version version = rootProject.version
plugins { plugins {
kotlin("jvm") version "2.3.0" kotlin("jvm") version "2.4.0"
} }
repositories { repositories {

View file

@ -2,7 +2,7 @@ group = rootProject.group
version = rootProject.version version = rootProject.version
plugins { plugins {
kotlin("jvm") version "2.3.0" kotlin("jvm") version "2.4.0"
} }
// Imitate needed class and method to support legacy version of EcoEnchant // Imitate needed class and method to support legacy version of EcoEnchant

View file

@ -29,7 +29,7 @@ tasks.withType<JavaCompile>().configureEach {
kotlin { kotlin {
compilerOptions { compilerOptions {
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_16) jvmTarget.set(JvmTarget.JVM_16)
} }
} }

View file

@ -29,7 +29,7 @@ tasks.withType<JavaCompile>().configureEach {
kotlin { kotlin {
compilerOptions { compilerOptions {
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_18) jvmTarget.set(JvmTarget.JVM_18)
} }
} }

View file

@ -1,3 +1,4 @@
@file:Suppress("DEPRECATION", "removal")
package xyz.alexcrea.cuanvil.dependency.datapack package xyz.alexcrea.cuanvil.dependency.datapack
import io.papermc.paper.datapack.Datapack import io.papermc.paper.datapack.Datapack
@ -21,18 +22,21 @@ object DataPackTester {
return Bukkit.getDatapackManager().enabledPacks return Bukkit.getDatapackManager().enabledPacks
.stream().map { obj: Datapack -> obj.name } .stream().map { obj: Datapack -> obj.name }
.toList() .toList()
} catch (e: NoSuchMethodException) { } catch (_: NoSuchMethodException) {
try { try {
DataPack::class.java.getDeclaredMethod("getKey") DataPack::class.java.getDeclaredMethod("getKey")
} catch (e: NoSuchMethodException) { } catch (_: NoSuchMethodException) {
System.err.println("Could not find compatible datapack manager") System.err.println("Could not find compatible datapack manager")
System.err.println("If you are using a datapack that should be compatible with CustomAnvil. It will not get detected...") System.err.println("If you are using a datapack that should be compatible with CustomAnvil. It will not get detected...")
return emptyList() return emptyList()
} }
return legacyNames return legacyNames
} catch (e: Exception){ } catch (_: Exception){
// Assume cause UnimplementedOperationException on mock server // Assume cause UnimplementedOperationException on mock server
return Collections.emptyList() return Collections.emptyList()
} catch(_: NoSuchMethodError) {
// Idk newer spigot may not have that ?
return Collections.emptyList()
} }
} }
} }

View file

@ -12,6 +12,7 @@ object AnvilTitleUtil {
private val runTaskMap = HashMap<UUID, ScheduledTask>() private val runTaskMap = HashMap<UUID, ScheduledTask>()
@Suppress("DEPRECATION")
private fun actualRename(view: InventoryView, name: String, player: HumanEntity, anvilDialog: AnvilRenameDialog) { private fun actualRename(view: InventoryView, name: String, player: HumanEntity, anvilDialog: AnvilRenameDialog) {
runTaskMap.remove(player.uniqueId) runTaskMap.remove(player.uniqueId)
if (view.title == name) return if (view.title == name) return

View file

@ -29,7 +29,7 @@ tasks.withType<JavaCompile>().configureEach {
kotlin { kotlin {
compilerOptions { compilerOptions {
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_16) jvmTarget.set(JvmTarget.JVM_16)
} }
} }

View file

@ -29,7 +29,7 @@ tasks.withType<JavaCompile>().configureEach {
kotlin { kotlin {
compilerOptions { compilerOptions {
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_17) jvmTarget.set(JvmTarget.JVM_17)
} }
} }

View file

@ -29,7 +29,7 @@ tasks.withType<JavaCompile>().configureEach {
kotlin { kotlin {
compilerOptions { compilerOptions {
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_17) jvmTarget.set(JvmTarget.JVM_17)
} }
} }

View file

@ -29,7 +29,7 @@ tasks.withType<JavaCompile>().configureEach {
kotlin { kotlin {
compilerOptions { compilerOptions {
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_17) jvmTarget.set(JvmTarget.JVM_17)
} }
} }

View file

@ -29,7 +29,7 @@ tasks.withType<JavaCompile>().configureEach {
kotlin { kotlin {
compilerOptions { compilerOptions {
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_17) jvmTarget.set(JvmTarget.JVM_17)
} }
} }

View file

@ -29,7 +29,7 @@ tasks.withType<JavaCompile>().configureEach {
kotlin { kotlin {
compilerOptions { compilerOptions {
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_17) jvmTarget.set(JvmTarget.JVM_17)
} }
} }

View file

@ -29,7 +29,7 @@ tasks.withType<JavaCompile>().configureEach {
kotlin { kotlin {
compilerOptions { compilerOptions {
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_18) jvmTarget.set(JvmTarget.JVM_18)
} }
} }

View file

@ -29,7 +29,7 @@ tasks.withType<JavaCompile>().configureEach {
kotlin { kotlin {
compilerOptions { compilerOptions {
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_18) jvmTarget.set(JvmTarget.JVM_18)
} }
} }

View file

@ -29,7 +29,7 @@ tasks.withType<JavaCompile>().configureEach {
kotlin { kotlin {
compilerOptions { compilerOptions {
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_18) jvmTarget.set(JvmTarget.JVM_18)
} }
} }

View file

@ -29,7 +29,7 @@ tasks.withType<JavaCompile>().configureEach {
kotlin { kotlin {
compilerOptions { compilerOptions {
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_18) jvmTarget.set(JvmTarget.JVM_18)
} }
} }

View file

@ -33,7 +33,7 @@ import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil
import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil.componentLore import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil.componentLore
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener.Companion.ANVIL_OUTPUT_SLOT import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener.Companion.ANVIL_OUTPUT_SLOT
import xyz.alexcrea.cuanvil.util.MetricsUtil.trackError import xyz.alexcrea.cuanvil.util.MetricsUtil.trackError
import java.lang.reflect.Constructor import java.lang.IllegalStateException
import java.util.logging.Level import java.util.logging.Level
object DependencyManager { object DependencyManager {
@ -342,10 +342,14 @@ object DependencyManager {
private val prepareAnvilConstructor = private val prepareAnvilConstructor =
PrepareAnvilEvent::class.java.constructors.first() as Constructor<PrepareAnvilEvent> PrepareAnvilEvent::class.java.constructors.first()
fun createFakeEvent(view: InventoryView, result: ItemStack?): PrepareAnvilEvent { fun createFakeEvent(view: InventoryView, result: ItemStack?): PrepareAnvilEvent {
return prepareAnvilConstructor.newInstance(view, result) val result = prepareAnvilConstructor.newInstance(view, result)
if(result !is PrepareAnvilEvent)
throw IllegalStateException("Could not create a PrepareAnvilEvent ?")
return result
} }
} }

View file

@ -1,3 +1,5 @@
@file:Suppress("DEPRECATION")
package xyz.alexcrea.cuanvil.dependency.economy package xyz.alexcrea.cuanvil.dependency.economy
import net.milkbowl.vault.economy.Economy import net.milkbowl.vault.economy.Economy

View file

@ -6,6 +6,7 @@ import org.bukkit.NamespacedKey
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import org.bukkit.plugin.Plugin import org.bukkit.plugin.Plugin
@Suppress("DEPRECATION")
class ItemsAdderDependency(plugin: Plugin) : GenericPluginDependency(plugin) { class ItemsAdderDependency(plugin: Plugin) : GenericPluginDependency(plugin) {
var isLoaded: Boolean = false var isLoaded: Boolean = false
get() { get() {

View file

@ -10,13 +10,20 @@ class LegacyEcoEnchantDependency {
private var ecoEnchantOldEnchantments: MutableSet<EcoEnchant>? = null private var ecoEnchantOldEnchantments: MutableSet<EcoEnchant>? = null
private fun unregisterEnchantment(enchant: Any) {
EnchantmentApi.unregisterEnchantment((enchant as Enchantment).key)
}
private fun registerEnchantment(ecoEnchant: EcoEnchant, enchant: Any) {
EnchantmentApi.registerEnchantment(CALegacyEcoEnchant(ecoEnchant, enchant as Enchantment))
}
fun registerEnchantments() { fun registerEnchantments() {
val enchantments = EcoEnchants.values() val enchantments = EcoEnchants.values()
for (ecoEnchant in enchantments) { for (ecoEnchant in enchantments) {
ecoEnchant as Enchantment // As eco enchants is loaded before custom anvil and register enchantment to registry, we need to unregister old "vanilla" enchant.
unregisterEnchantment(ecoEnchant)
EnchantmentApi.unregisterEnchantment(ecoEnchant) // As eco enchants is loaded before custom anvil and register enchantment to registry, we need to unregister old "vanilla" enchant. registerEnchantment(ecoEnchant, ecoEnchant)
EnchantmentApi.registerEnchantment(CALegacyEcoEnchant(ecoEnchant, ecoEnchant))
} }
ecoEnchantOldEnchantments = HashSet(enchantments) ecoEnchantOldEnchantments = HashSet(enchantments)
@ -31,13 +38,13 @@ class LegacyEcoEnchantDependency {
// Add new enchantments // Add new enchantments
for (ecoEnchant in newEnchantments) for (ecoEnchant in newEnchantments)
if (!this.ecoEnchantOldEnchantments!!.contains(ecoEnchant)) if (!this.ecoEnchantOldEnchantments!!.contains(ecoEnchant))
EnchantmentApi.registerEnchantment(CALegacyEcoEnchant(ecoEnchant, ecoEnchant as Enchantment)) registerEnchantment(ecoEnchant, ecoEnchant)
// Remove old enchantments that not now currently used // Remove old enchantments that not now currently used
this.ecoEnchantOldEnchantments!!.removeAll(newEnchantments) this.ecoEnchantOldEnchantments!!.removeAll(newEnchantments)
for (oldEnchantment in this.ecoEnchantOldEnchantments!!) { for (oldEnchantment in this.ecoEnchantOldEnchantments!!) {
EnchantmentApi.unregisterEnchantment(oldEnchantment as Enchantment) unregisterEnchantment(oldEnchantment)
} }
this.ecoEnchantOldEnchantments = HashSet(newEnchantments) this.ecoEnchantOldEnchantments = HashSet(newEnchantments)

View file

@ -5,7 +5,6 @@ import lol.hyper.toolstats.tools.ItemChecker
import org.bukkit.event.inventory.InventoryClickEvent import org.bukkit.event.inventory.InventoryClickEvent
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import org.bukkit.plugin.Plugin import org.bukkit.plugin.Plugin
import org.bukkit.plugin.RegisteredListener
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener
import java.lang.reflect.Method import java.lang.reflect.Method
@ -19,9 +18,13 @@ class ToolStatsDependency(plugin: Plugin) : GenericPluginDependency(plugin) {
getTokenMethod.trySetAccessible() getTokenMethod.trySetAccessible()
} }
private fun ItemChecker.getTokenSafe(item: ItemStack?): Array<String> { private fun ItemChecker.getTokenSafe(item: ItemStack?): Array<*> {
if (item == null) return arrayOf() if (item == null) return arrayOf<Any>()
return getTokenMethod.invoke(this, item) as Array<String> val result = getTokenMethod.invoke(this, item)
if(result !is Array<*>)
throw IllegalStateException("Could not get token from ToolStats")
return result
} }
override fun testAnvilResult(event: InventoryClickEvent): Boolean { override fun testAnvilResult(event: InventoryClickEvent): Boolean {

View file

@ -197,6 +197,9 @@ class AnvilResultListener : Listener {
result result
) )
) return ) return
else if(player.gameMode != GameMode.CREATIVE) {
return
}
// Finally, we add the item to the player // Finally, we add the item to the player
if (slotDestination.type == SlotType.CURSOR) { if (slotDestination.type == SlotType.CURSOR) {
@ -351,6 +354,8 @@ class AnvilResultListener : Listener {
inventory.setItem(ANVIL_OUTPUT_SLOT, null) inventory.setItem(ANVIL_OUTPUT_SLOT, null)
} else if(player.gameMode != GameMode.CREATIVE) {
return false
} }
// Finally, we add the item to the player // Finally, we add the item to the player

View file

@ -277,7 +277,7 @@ object AnvilXpUtil {
// We know "enchantment.key in resultEnchs" true // We know "enchantment.key in resultEnchs" true
val resultLevel = resultEnchs[enchantment.key]!! val resultLevel = resultEnchs[enchantment.key]!!
val enchantmentMultiplier = ConfigOptions.enchantmentValue(enchantment.key, isFromBook, isToBook) val enchantmentMultiplier = ConfigOptions.enchantmentValue(enchantment.key, isToBook, isFromBook)
val value = resultLevel * enchantmentMultiplier val value = resultLevel * enchantmentMultiplier
CustomAnvil.log("Value for sacrifice item ${enchantment.key.enchantmentName} level ${enchantment.value} is $value ($resultLevel * $enchantmentMultiplier)") CustomAnvil.log("Value for sacrifice item ${enchantment.key.enchantmentName} level ${enchantment.value} is $value ($resultLevel * $enchantmentMultiplier)")
rightValue += value rightValue += value
@ -291,7 +291,7 @@ object AnvilXpUtil {
val resultLevel = resultEnchs.getOrDefault(enchantment.key, 0) val resultLevel = resultEnchs.getOrDefault(enchantment.key, 0)
val enchantmentMultiplier = ConfigOptions.enchantmentValue(enchantment.key, isFromBook, isToBook) val enchantmentMultiplier = ConfigOptions.enchantmentValue(enchantment.key, isToBook, isFromBook)
val value = resultLevel * enchantmentMultiplier val value = resultLevel * enchantmentMultiplier
CustomAnvil.log("Value for left item ${enchantment.key.enchantmentName} level ${enchantment.value} is $value ($resultLevel * $enchantmentMultiplier)") CustomAnvil.log("Value for left item ${enchantment.key.enchantmentName} level ${enchantment.value} is $value ($resultLevel * $enchantmentMultiplier)")
leftValue += value leftValue += value