9
0
mirror of https://github.com/Auxilor/Reforges.git synced 2025-12-20 07:29:32 +00:00

Compare commits

...

85 Commits

Author SHA1 Message Date
Will FP
24f45a729f libreforge-updater 2025-10-06 08:56:44 +01:00
Will FP
2bd9f98828 Updated to use tags in targets to add copper support 2025-10-05 16:04:18 +01:00
Will FP
2eb1d079b9 libreforge-updater 2025-09-11 09:58:17 +01:00
Will FP
772d0b798b libreforge-updater 2025-08-01 10:04:01 +01:00
Will FP
c69804cae4 libreforge-updater 2025-07-05 16:45:06 +01:00
Will FP
0cd50135a1 libreforge-updater 2025-07-04 09:50:31 +01:00
Will FP
ae10d11a0d libreforge-updater 2025-03-29 14:21:57 +00:00
Will FP
a86c02da3e libreforge-updater 2025-01-31 11:54:28 +00:00
Will FP
be9fbf9d56 libreforge-updater 2025-01-25 13:49:41 +00:00
Will FP
19856fe31b Fix 2025-01-25 13:47:31 +00:00
Will FP
4bcfdb17c3 libreforge-updater 2025-01-25 13:45:39 +00:00
Will FP
dd42a42c0f libreforge-updater 2024-11-06 18:32:26 +00:00
Will FP
bc33fb9e52 libreforge-updater 2024-10-22 12:13:40 +01:00
Will FP
b3713a2fc4 libreforge-updater 2024-09-22 16:59:43 +01:00
Auxilor
7338ea3259 libreforge-updater 2024-09-02 11:30:38 +01:00
Auxilor
c24567bdd9 libreforge-updater 2024-08-30 17:25:37 +01:00
Auxilor
14ac6a7d7c libreforge-updater 2024-08-29 12:09:49 +01:00
Auxilor
d82eabc304 libreforge-updater 2024-08-23 15:35:55 +01:00
Auxilor
53005f6f61 libreforge-updater 2024-08-21 18:59:03 +01:00
Auxilor
445d7b6a11 libreforge-updater 2024-08-15 15:08:17 +01:00
Auxilor
8bcaf8f0b2 libreforge-updater 2024-08-03 13:42:03 +01:00
Auxilor
c74b3c0e59 libreforge-updater 2024-07-25 10:05:04 +01:00
Auxilor
e23ec1f90c libreforge-updater 2024-07-21 12:19:52 +01:00
Auxilor
e449268b3a Removed @ConfigUpdater 2024-07-21 11:58:52 +01:00
Auxilor
6b31417bab Updated display module loading 2024-07-20 15:28:45 +01:00
Auxilor
58d5b26848 Updated tags 2024-07-20 15:28:31 +01:00
Auxilor
b2a9c250c7 Added item tag for reforged items 2024-07-20 14:12:29 +01:00
Auxilor
371eb4e6c0 Added item tag for stones 2024-07-20 14:12:16 +01:00
Auxilor
9424cc0475 libreforge-updater 2024-07-19 20:29:10 +01:00
Auxilor
c9230bd61f libreforge-updater 2024-07-18 13:24:44 +01:00
Auxilor
c3c55ad862 libreforge-updater 2024-07-16 17:14:14 +01:00
Auxilor
533c86b7fd libreforge-updater 2024-07-13 20:45:46 +01:00
Auxilor
214f693a16 libreforge-updater 2024-07-08 15:58:56 +01:00
Auxilor
015042c754 libreforge-updater 2024-07-05 13:03:12 +01:00
Auxilor
95ab511716 libreforge-updater 2024-07-03 17:44:28 +01:00
Auxilor
7f02a89b50 libreforge-updater 2024-06-29 16:44:27 +01:00
Auxilor
60002bb33c libreforge-updater 2024-06-28 15:56:48 +01:00
Auxilor
520a783b95 libreforge-updater 2024-06-27 18:54:57 +01:00
Auxilor
24eb69398f libreforge-updater 2024-06-26 16:52:45 +01:00
Auxilor
2251227fd8 libreforge-updater 2024-06-25 15:14:26 +01:00
Auxilor
6488aac611 libreforge-updater 2024-06-24 15:07:06 +01:00
Auxilor
5ef604c464 Updated to Java 21 2024-06-24 13:53:32 +01:00
Auxilor
063dc05b4e libreforge-updater 2024-06-23 17:27:12 +01:00
Auxilor
b8bd4375a9 libreforge-updater 2024-06-23 13:21:14 +01:00
Will FP
51ddca9b85 libreforge-updater 2024-05-31 20:37:05 +01:00
Will FP
0ecdc49a13 libreforge-updater 2024-05-11 18:20:48 +01:00
Will FP
61676fe568 libreforge-updater 2024-04-17 20:34:11 +01:00
Auxilor
56e0c05043 libreforge-updater 2024-04-15 18:20:29 +01:00
Auxilor
791161fa3a libreforge-updater 2024-04-11 13:18:35 +01:00
Auxilor
ce332651b2 libreforge-updater 2024-03-29 16:09:18 +00:00
Will FP
4eedabd5cb libreforge-updater 2024-03-11 17:37:21 +00:00
Will FP
91daaf053f libreforge-updater 2024-03-10 20:08:38 +00:00
Will FP
66bbcb9d87 libreforge-updater 2024-03-02 15:19:58 +00:00
Will FP
504998a78d libreforge-updater 2024-02-22 13:17:39 +00:00
Will FP
18a5abbc57 libreforge-updater 2024-02-15 13:01:53 +00:00
Will FP
b3ec0a487b libreforge-updater 2024-02-08 19:48:45 +00:00
Will FP
e40d4f666f libreforge-updater 2024-01-30 11:26:40 +00:00
Will FP
37083c9980 Updated to 6.54.5 2024-01-20 15:49:38 +00:00
Will FP
f7bee746e2 Merge pull request #36
Fixed TargetYml#getSlot
2024-01-20 15:49:27 +00:00
Will FP
7fb5bfc895 libreforge-updater 2024-01-18 17:02:26 +00:00
Will FP
26765564ea 6.54.3 2024-01-17 13:05:45 +00:00
often
2ba6e6f9f3 Fixed TargetYml#getSlot 2024-01-16 18:04:40 +03:00
Will FP
ef8c85c722 libreforge-updater 2024-01-16 13:28:38 +00:00
Will FP
0889efd92c Fix 2024-01-14 15:55:10 +00:00
Will FP
5cd66bc797 libreforge-updater 2024-01-13 14:23:25 +00:00
Will FP
332356fc50 libreforge-updater 2024-01-07 13:51:08 +00:00
Will FP
f8ca89e607 Reforges now uses the slot system 2024-01-06 15:19:42 +00:00
Will FP
94c4d354db libreforge-updater 2024-01-06 09:19:20 +00:00
Auxilor
0a7ef0b65a libreforge-updater 2024-01-04 17:26:18 +00:00
Auxilor
1df223c741 Fixed compile bug 2024-01-01 20:04:30 +00:00
Auxilor
db5c627f4d libreforge-updater 2024-01-01 20:03:31 +00:00
Will FP
f0a6a4c9b8 libreforge-updater 2023-12-27 14:16:44 +01:00
Will FP
d9296cca53 libreforge-updater 2023-12-24 14:54:24 +01:00
Auxilor
534c8a6018 libreforge-updater 2023-12-20 15:59:05 +00:00
Will FP
5b48c4f159 libreforge-updater 2023-12-14 16:12:57 +00:00
Will FP
cc98189027 libreforge-updater 2023-12-11 12:12:20 +00:00
Will FP
8fa7d145ac Merge pull request #34 from PQguanfang/patch-1
Update custom item register ID
2023-12-11 11:39:16 +00:00
Will FP
a89a6503ad libreforge-updater 2023-12-07 17:25:03 +00:00
Will FP
1c10a2fbe4 libreforge-updater 2023-12-03 15:58:35 +00:00
Will FP
7bc6afdf43 libreforge-updater 2023-11-30 14:26:55 +00:00
Will FP
3725e55f43 libreforge-updater 2023-11-26 23:24:08 +00:00
Will FP
3cbc54429e libreforge-updater 2023-11-23 13:21:00 +00:00
Auxilor
068b9b1cdb libreforge-updater 2023-11-21 22:41:08 +00:00
Auxilor
43cfa1ab9f libreforge-updater 2023-11-19 14:13:53 +00:00
PQguanfang
eaba6c24a8 Update custom item register ID
This register ID will lead to reforge stone has the second : symbol, like:
reforges:stone_reforges:bleed

This will lead to reforge stone will never be able to use in eco's Item lookup feature, this PR is fixing this problem.
2023-11-05 20:20:31 +08:00
25 changed files with 135 additions and 358 deletions

View File

@@ -15,11 +15,11 @@ jobs:
- name: Checkout latest code
uses: actions/checkout@v2
- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: 17
java-version: 21
- name: Change wrapper permissions
run: chmod +x ./gradlew

View File

@@ -1,9 +1,11 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
java
`java-library`
`maven-publish`
kotlin("jvm") version "1.7.10"
id("com.github.johnrengelman.shadow") version "8.0.0"
kotlin("jvm") version "2.1.0"
id("com.gradleup.shadow") version "8.3.0"
id("com.willfp.libreforge-gradle-plugin") version "1.0.0"
}
@@ -25,7 +27,7 @@ allprojects {
apply(plugin = "java")
apply(plugin = "kotlin")
apply(plugin = "maven-publish")
apply(plugin = "com.github.johnrengelman.shadow")
apply(plugin = "com.gradleup.shadow")
repositories {
mavenLocal()
@@ -37,14 +39,14 @@ allprojects {
}
dependencies {
compileOnly("com.willfp:eco:6.56.0")
compileOnly("com.willfp:eco:6.73.0")
compileOnly("org.jetbrains:annotations:23.0.0")
compileOnly("org.jetbrains.kotlin:kotlin-stdlib:1.7.10")
compileOnly("org.jetbrains.kotlin:kotlin-stdlib:2.1.0")
}
java {
withSourcesJar()
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
}
tasks {
@@ -54,8 +56,8 @@ allprojects {
}
compileKotlin {
kotlinOptions {
jvmTarget = "17"
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
}
}

View File

@@ -2,7 +2,7 @@ group = "com.willfp"
version = rootProject.version
dependencies {
compileOnly("io.papermc.paper:paper-api:1.19.3-R0.1-SNAPSHOT")
compileOnly("io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT")
compileOnly("com.willfp:Talismans:6.0.0")
compileOnly("com.github.ben-manes.caffeine:caffeine:3.0.2")

View File

@@ -2,24 +2,26 @@ package com.willfp.reforges
import com.willfp.eco.core.command.impl.PluginCommand
import com.willfp.eco.core.display.DisplayModule
import com.willfp.eco.core.integrations.IntegrationLoader
import com.willfp.eco.core.items.Items
import com.willfp.libreforge.conditions.Conditions
import com.willfp.libreforge.loader.LibreforgePlugin
import com.willfp.libreforge.loader.configs.ConfigCategory
import com.willfp.libreforge.registerHolderProvider
import com.willfp.libreforge.registerPlayerRefreshFunction
import com.willfp.reforges.commands.CommandReforge
import com.willfp.reforges.commands.CommandReforges
import com.willfp.reforges.config.TargetYml
import com.willfp.reforges.display.ReforgesDisplay
import com.willfp.reforges.integrations.talismans.TalismansIntegration
import com.willfp.reforges.gui.ReforgeGUI
import com.willfp.reforges.libreforge.ConditionHasReforge
import com.willfp.reforges.reforges.PriceMultipliers
import com.willfp.reforges.reforges.ReforgeFinder
import com.willfp.reforges.reforges.ReforgeStoneTag
import com.willfp.reforges.reforges.ReforgeTargets
import com.willfp.reforges.reforges.ReforgedTag
import com.willfp.reforges.reforges.Reforges
import com.willfp.reforges.reforges.util.ReforgeArgParser
import com.willfp.reforges.util.AntiPlaceListener
import com.willfp.reforges.util.DiscoverRecipeListener
import com.willfp.reforges.util.ReforgeLookup
import org.bukkit.event.Listener
class ReforgesPlugin : LibreforgePlugin() {
@@ -41,8 +43,16 @@ class ReforgesPlugin : LibreforgePlugin() {
Items.registerArgParser(ReforgeArgParser)
registerHolderProvider { ReforgeLookup.provideReforges(it) }
registerPlayerRefreshFunction { ReforgeLookup.clearCache(it) }
Items.registerTag(ReforgedTag(this))
Items.registerTag(ReforgeStoneTag(this))
registerHolderProvider(ReforgeFinder.toHolderProvider())
}
override fun handleReload() {
ReforgeTargets.update(this)
PriceMultipliers.update(this)
ReforgeGUI.update(this)
}
override fun loadListeners(): List<Listener> {
@@ -59,13 +69,9 @@ class ReforgesPlugin : LibreforgePlugin() {
)
}
override fun createDisplayModule(): DisplayModule {
return ReforgesDisplay(this)
}
override fun loadIntegrationLoaders(): List<IntegrationLoader> {
override fun loadDisplayModules(): List<DisplayModule> {
return listOf(
IntegrationLoader("Talismans") { TalismansIntegration.registerProvider() }
ReforgesDisplay(this)
)
}

View File

@@ -5,8 +5,10 @@ import com.willfp.eco.core.config.ConfigType
import com.willfp.eco.core.config.StaticBaseConfig
import com.willfp.eco.core.items.Items
import com.willfp.eco.core.items.TestableItem
import com.willfp.reforges.reforges.ReforgeTarget
import java.util.*
import com.willfp.libreforge.slot.SlotType
import com.willfp.libreforge.slot.SlotTypes
import com.willfp.libreforge.slot.impl.SlotTypeAny
import java.util.Locale
import java.util.function.Consumer
class TargetYml(plugin: EcoPlugin) : StaticBaseConfig("target", plugin, ConfigType.YAML) {
@@ -32,12 +34,12 @@ class TargetYml(plugin: EcoPlugin) : StaticBaseConfig("target", plugin, ConfigTy
}
/**
* Get all materials from a target name.
* Get a [SlotType] for the target.
*
* @param target The name of the target.
* @return All materials.
* @return The [SlotType].
*/
fun getSlot(target: String): ReforgeTarget.Slot {
return ReforgeTarget.Slot.valueOf(this.getString("$target.slot").uppercase(Locale.getDefault()))
fun getSlot(target: String): SlotType {
return SlotTypes[this.getString("$target.slot")] ?: SlotTypeAny
}
}

View File

@@ -2,7 +2,6 @@ package com.willfp.reforges.gui
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.config.emptyConfig
import com.willfp.eco.core.config.updating.ConfigUpdater
import com.willfp.eco.core.drops.DropQueue
import com.willfp.eco.core.gui.captiveSlot
import com.willfp.eco.core.gui.menu
@@ -24,7 +23,6 @@ import com.willfp.ecomponent.CaptiveItem
import com.willfp.ecomponent.menuStateVar
import com.willfp.ecomponent.setSlot
import com.willfp.libreforge.LibreforgeSpigotPlugin
import com.willfp.reforges.reforges.PriceMultipliers
import com.willfp.reforges.reforges.PriceMultipliers.reforgePriceMultiplier
import com.willfp.reforges.reforges.Reforge
import com.willfp.reforges.reforges.ReforgeTarget
@@ -192,14 +190,11 @@ object ReforgeGUI {
private lateinit var defaultPrice: ConfiguredPrice
@JvmStatic
fun open(player: Player) {
menu.open(player)
}
@JvmStatic
@ConfigUpdater
fun update(plugin: EcoPlugin) {
internal fun update(plugin: EcoPlugin) {
itemToReforge = CaptiveItem()
reforgeStone = CaptiveItem()

View File

@@ -1,25 +0,0 @@
package com.willfp.reforges.integrations.talismans
import com.willfp.eco.core.integrations.Integration
import com.willfp.reforges.reforges.ReforgeTarget
import com.willfp.reforges.util.ReforgeLookup
import com.willfp.talismans.talismans.util.TalismanChecks
import org.bukkit.inventory.ItemStack
object TalismansIntegration : Integration {
@JvmStatic
fun registerProvider() {
ReforgeLookup.registerProvider { player ->
val provided = mutableMapOf<ItemStack?, ReforgeTarget.Slot?>()
for (itemStack in TalismanChecks.getTalismanItemsOnPlayer(player)) {
provided[itemStack] = ReforgeTarget.Slot.ANY
}
provided
}
}
override fun getPluginName(): String {
return "Talismans"
}
}

View File

@@ -2,11 +2,15 @@ package com.willfp.reforges.libreforge
import com.willfp.eco.core.config.interfaces.Config
import com.willfp.eco.util.containsIgnoreCase
import com.willfp.libreforge.Dispatcher
import com.willfp.libreforge.NoCompileData
import com.willfp.libreforge.ProvidedHolder
import com.willfp.libreforge.arguments
import com.willfp.libreforge.conditions.Condition
import com.willfp.libreforge.get
import com.willfp.libreforge.getHoldersOfType
import com.willfp.libreforge.toDispatcher
import com.willfp.reforges.reforges.Reforge
import com.willfp.reforges.util.ReforgeLookup
import org.bukkit.entity.Player
object ConditionHasReforge : Condition<NoCompileData>("has_reforge") {
@@ -14,10 +18,15 @@ object ConditionHasReforge : Condition<NoCompileData>("has_reforge") {
require("reforge", "You must specify the reforge!")
}
override fun isMet(player: Player, config: Config, compileData: NoCompileData): Boolean {
return ReforgeLookup.provideReforges(player)
.map { it.holder }
.filterIsInstance<Reforge>()
override fun isMet(
dispatcher: Dispatcher<*>,
config: Config,
holder: ProvidedHolder,
compileData: NoCompileData
): Boolean {
val player = dispatcher.get<Player>() ?: return false
return player.toDispatcher().getHoldersOfType<Reforge>()
.map { it.id.key }
.containsIgnoreCase(config.getString("reforge"))
}

View File

@@ -1,7 +1,6 @@
package com.willfp.reforges.reforges
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.config.updating.ConfigUpdater
import org.bukkit.entity.Player
@Suppress("UNUSED")
@@ -9,13 +8,6 @@ object PriceMultipliers {
private val REGISTRY = mutableListOf<PriceMultiplier>()
private val NO_MULTIPLIER = PriceMultiplier("none", 1.0, 0)
/**
* Get the permission multiplier for a given player.
*
* @param player The player.
* @return The multiplier.
*/
@JvmStatic
fun getForPlayer(player: Player): PriceMultiplier {
var current = NO_MULTIPLIER
@@ -38,19 +30,11 @@ object PriceMultipliers {
val Player.reforgePriceMultiplier: Double
get() = getForPlayer(this).multiplier
/**
* List of all registered multipliers.
*
* @return The multipliers.
*/
@JvmStatic
fun values(): List<PriceMultiplier> {
return REGISTRY.toList()
}
@ConfigUpdater
@JvmStatic
fun update(plugin: EcoPlugin) {
internal fun update(plugin: EcoPlugin) {
REGISTRY.clear()
for (config in plugin.configYml.getSubsections("price-multipliers")) {

View File

@@ -15,6 +15,7 @@ import com.willfp.libreforge.ItemProvidedHolder
import com.willfp.libreforge.ViolationContext
import com.willfp.libreforge.conditions.Conditions
import com.willfp.libreforge.effects.Effects
import com.willfp.libreforge.toDispatcher
import com.willfp.libreforge.triggers.TriggerData
import com.willfp.reforges.ReforgesPlugin
import com.willfp.reforges.util.reforgeStone
@@ -86,7 +87,7 @@ class Reforge(
if (config.getBool("stone.enabled")) {
CustomItem(
plugin.namespacedKeyFactory.create("stone_" + this.id),
plugin.namespacedKeyFactory.create("stone_" + this.id.key),
{ test -> test.reforgeStone == this },
stone
).register()
@@ -108,9 +109,8 @@ class Reforge(
fun runOnReforgeEffects(player: Player, item: ItemStack) {
onReforgeEffects?.trigger(
player,
player.toDispatcher(),
TriggerData(
holder = ItemProvidedHolder(this, item),
player = player,
item = item
)

View File

@@ -0,0 +1,16 @@
package com.willfp.reforges.reforges
import com.willfp.libreforge.slot.ItemHolderFinder
import com.willfp.libreforge.slot.SlotType
import com.willfp.reforges.util.reforge
import org.bukkit.inventory.ItemStack
object ReforgeFinder : ItemHolderFinder<Reforge>() {
override fun find(item: ItemStack): List<Reforge> {
return listOfNotNull(item.reforge)
}
override fun isValidInSlot(holder: Reforge, slot: SlotType): Boolean {
return holder.targets.map { it.slot }.any { it.isOrContains(slot) }
}
}

View File

@@ -0,0 +1,16 @@
package com.willfp.reforges.reforges
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.items.tag.CustomItemTag
import com.willfp.reforges.util.reforgeStone
import org.bukkit.inventory.ItemStack
class ReforgeStoneTag(plugin: EcoPlugin): CustomItemTag(plugin.createNamespacedKey("stone")) {
override fun matches(p0: ItemStack): Boolean {
return p0.reforgeStone != null
}
override fun getExampleItem(): ItemStack {
return Reforges.values().random().stone
}
}

View File

@@ -2,12 +2,13 @@ package com.willfp.reforges.reforges
import com.willfp.eco.core.items.TestableItem
import com.willfp.eco.core.recipe.parts.EmptyTestableItem
import com.willfp.libreforge.slot.SlotType
import org.bukkit.inventory.ItemStack
import java.util.*
import java.util.Objects
class ReforgeTarget(
val id: String,
val slot: Slot,
val slot: SlotType,
val items: MutableSet<TestableItem>
) {
init {
@@ -34,10 +35,4 @@ class ReforgeTarget(
override fun hashCode(): Int {
return Objects.hash(this.id)
}
enum class Slot {
HANDS,
ARMOR,
ANY
}
}

View File

@@ -1,38 +1,24 @@
package com.willfp.reforges.reforges
import com.google.common.collect.ImmutableSet
import com.willfp.eco.core.config.updating.ConfigUpdater
import com.willfp.libreforge.slot.impl.SlotTypeAny
import com.willfp.reforges.ReforgesPlugin
import org.bukkit.inventory.ItemStack
object ReforgeTargets {
private val registered = mutableMapOf<String, ReforgeTarget>()
val ALL = ReforgeTarget("all", ReforgeTarget.Slot.ANY, HashSet())
val ALL = ReforgeTarget("all", SlotTypeAny, HashSet())
init {
registered["all"] = ALL
update(ReforgesPlugin.instance)
}
/**
* Get ReforgeTarget matching name.
*
* @param name The name to search for.
* @return The matching ReforgeTarget, or null if not found.
*/
@JvmStatic
fun getByName(name: String): ReforgeTarget? {
return registered[name]
}
/**
* Get target from item.
*
* @param item The item.
* @return The target.
*/
@JvmStatic
fun getForItem(item: ItemStack?): List<ReforgeTarget> {
if (item == null) {
return emptyList()
@@ -43,14 +29,7 @@ object ReforgeTargets {
.filter { it.matches(item) }
}
/**
* Update all targets.
*
* @param plugin Instance of Reforges.
*/
@ConfigUpdater
@JvmStatic
fun update(plugin: ReforgesPlugin) {
internal fun update(plugin: ReforgesPlugin) {
ALL.items.clear()
for (id in ArrayList(registered.keys)) {
if (id.equals("all", ignoreCase = true)) {
@@ -69,12 +48,6 @@ object ReforgeTargets {
}
}
/**
* Get all targets.
*
* @return A set of all targets.
*/
@JvmStatic
fun values(): Set<ReforgeTarget> {
return ImmutableSet.copyOf(registered.values)
}

View File

@@ -0,0 +1,13 @@
package com.willfp.reforges.reforges
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.items.tag.CustomItemTag
import com.willfp.reforges.util.reforge
import com.willfp.reforges.util.reforgeStone
import org.bukkit.inventory.ItemStack
class ReforgedTag(plugin: EcoPlugin): CustomItemTag(plugin.createNamespacedKey("reforged")) {
override fun matches(p0: ItemStack): Boolean {
return p0.reforge != null
}
}

View File

@@ -1,107 +0,0 @@
package com.willfp.reforges.util
import com.github.benmanes.caffeine.cache.Caffeine
import com.willfp.libreforge.ItemProvidedHolder
import com.willfp.reforges.ReforgesPlugin
import com.willfp.reforges.reforges.ReforgeTarget
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
import java.util.concurrent.TimeUnit
typealias SlotProvider = (Player) -> Map<ItemStack?, ReforgeTarget.Slot?>
object ReforgeLookup {
private val plugin = ReforgesPlugin.instance
private val slotProviders = mutableSetOf<(Player) -> Map<ItemStack, ReforgeTarget.Slot>>()
private val itemCache = Caffeine.newBuilder()
.expireAfterWrite(2, TimeUnit.SECONDS)
.build<Player, Map<ItemStack, ReforgeTarget.Slot>>()
private val reforgeCache = Caffeine.newBuilder()
.expireAfterWrite(2, TimeUnit.SECONDS)
.build<Player, Collection<ItemProvidedHolder>>()
@JvmStatic
fun registerProvider(provider: SlotProvider) {
slotProviders.add {
val found = mutableMapOf<ItemStack, ReforgeTarget.Slot>()
for ((item, slot) in provider(it)) {
if (item != null && slot != null) {
found[item] = slot
}
}
found
}
}
private fun provide(player: Player): Map<ItemStack, ReforgeTarget.Slot> {
return itemCache.get(player) {
val found = mutableMapOf<ItemStack, ReforgeTarget.Slot>()
for (provider in slotProviders) {
found.putAll(provider(player))
}
found
}
}
fun provideReforges(player: Player): List<ItemProvidedHolder> {
return reforgeCache.get(player) {
val found = mutableListOf<ItemProvidedHolder>()
for ((itemStack, slot) in provide(player)) {
val reforge = itemStack.reforge ?: continue
if (slot != ReforgeTarget.Slot.ANY) {
if (!reforge.targets.map { it.slot }.contains(slot)) {
continue
}
}
found.add(
ItemProvidedHolder(
reforge,
itemStack
)
)
}
found
}.toList()
}
fun clearCache(player: Player) {
itemCache.invalidate(player)
reforgeCache.invalidate(player)
}
init {
registerProvider {
mapOf(
Pair(
it.inventory.itemInMainHand,
ReforgeTarget.Slot.HANDS
)
)
}
if (!plugin.configYml.getBool("no-offhand")) {
registerProvider {
mapOf(
Pair(
it.inventory.itemInOffHand,
ReforgeTarget.Slot.HANDS
)
)
}
}
registerProvider {
val items = mutableMapOf<ItemStack?, ReforgeTarget.Slot?>()
for (stack in it.inventory.armorContents) {
items[stack] = ReforgeTarget.Slot.ARMOR
}
items
}
}
}

View File

@@ -6,3 +6,4 @@ options:
resource-id: 1330
bstats-id: 12412
color: "&3"
uses-reflective-reload: false

View File

@@ -1,58 +0,0 @@
name: ${pluginName}
version: ${version}
main: com.willfp.reforges.ReforgesPlugin
api-version: 1.19
dependencies:
- name: eco
required: true
bootstrap: false
- name: libreforge
required: false
bootstrap: false
- name: Talismans
required: false
bootstrap: false
load-after:
- name: eco
bootstrap: false
permissions:
reforges.*:
description: All reforges permissions
default: op
children:
reforges.command.*: true
reforges.command.*:
description: All commands
default: op
children:
reforges.command.reload: true
reforges.command.reforges: true
reforges.command.reforge: true
reforges.command.give: true
reforges.command.apply: true
reforges.command.open: true
reforges.command.reload:
description: Allows reloading the config
default: op
reforges.command.reforges:
description: Allows the user of /reforges.
default: true
reforges.command.reforge:
description: Allows the user of /reforge.
default: true
reforges.command.give:
description: Allows the user of /reforges give.
default: op
reforges.command.open:
description: Allows the user of /reforges open.
default: op
reforges.command.apply:
description: Allows the user of /reforges apply.
default: op

View File

@@ -8,7 +8,6 @@ depend:
- eco
softdepend:
- libreforge
- Talismans
commands:
reforges:

View File

@@ -1,45 +1,27 @@
#
# A target consists of items and a slot.
# The slot is either hands, armor, or any.
# Hands means the reforge will activate on hands, armor
# means it will only work on armor, and any
# means it will activate whenever its on the player.
#
# The options for slot are mainhand, offhand, hands, helmet, chestplate,
# leggings, boots, armor, any, a number from 0-40 (to specify an exact slot),
# or a list of slots like "9, 10, 11, mainhand"
pickaxe:
slot: hands
items:
- wooden_pickaxe
- stone_pickaxe
- iron_pickaxe
- golden_pickaxe
- diamond_pickaxe
- netherite_pickaxe
- "#items_pickaxes"
axe:
slot: hands
items:
- wooden_axe
- stone_axe
- iron_axe
- golden_axe
- diamond_axe
- netherite_axe
- "#items_axes"
melee:
slot: hands
items:
- wooden_axe
- stone_axe
- iron_axe
- golden_axe
- diamond_axe
- netherite_axe
- wooden_sword
- stone_sword
- iron_sword
- golden_sword
- diamond_sword
- netherite_sword
- "#items_axes"
- "#items_swords"
trident:
slot: hands
items:
@@ -52,31 +34,7 @@ bow:
armor:
slot: armor
items:
- turtle_helmet
- leather_helmet
- chainmail_helmet
- iron_helmet
- golden_helmet
- diamond_helmet
- netherite_helmet
- leather_chestplate
- chainmail_chestplate
- iron_chestplate
- golden_chestplate
- diamond_chestplate
- netherite_chestplate
- leather_leggings
- chainmail_leggings
- iron_leggings
- golden_leggings
- diamond_leggings
- netherite_leggings
- leather_boots
- chainmail_boots
- iron_boots
- golden_boots
- diamond_boots
- netherite_boots
- "#items_head_armor"
- "#items_chest_armor"
- "#items_leg_armor"
- "#items_foot_armor"

View File

@@ -1,5 +1,5 @@
#libreforge-updater
#Fri Nov 17 19:01:58 GMT 2023
#Mon Oct 06 08:56:44 BST 2025
kotlin.code.style=official
libreforge-version=4.43.0
version=6.43.0
libreforge-version=4.79.0
version=6.78.0

Binary file not shown.

View File

@@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@@ -1,6 +0,0 @@
jdk: openjdk17
before_install:
- source "$HOME/.sdkman/bin/sdkman-init.sh"
- sdk update
- sdk install java 17.0.1-tem
- sdk use java 17.0.1-tem

View File

@@ -2,12 +2,14 @@ pluginManagement {
repositories {
gradlePluginPortal()
mavenLocal()
maven("https://repo.jpenilla.xyz/snapshots/")
maven("https://repo.auxilor.io/repository/maven-public/")
maven("https://repo.papermc.io/repository/maven-public/")
}
}
rootProject.name = "Reforges"
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
// Core
include(":eco-core")