mirror of
https://github.com/Auxilor/Reforges.git
synced 2025-12-19 23:19:29 +00:00
Compare commits
84 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
24f45a729f | ||
|
|
2bd9f98828 | ||
|
|
2eb1d079b9 | ||
|
|
772d0b798b | ||
|
|
c69804cae4 | ||
|
|
0cd50135a1 | ||
|
|
ae10d11a0d | ||
|
|
a86c02da3e | ||
|
|
be9fbf9d56 | ||
|
|
19856fe31b | ||
|
|
4bcfdb17c3 | ||
|
|
dd42a42c0f | ||
|
|
bc33fb9e52 | ||
|
|
b3713a2fc4 | ||
|
|
7338ea3259 | ||
|
|
c24567bdd9 | ||
|
|
14ac6a7d7c | ||
|
|
d82eabc304 | ||
|
|
53005f6f61 | ||
|
|
445d7b6a11 | ||
|
|
8bcaf8f0b2 | ||
|
|
c74b3c0e59 | ||
|
|
e23ec1f90c | ||
|
|
e449268b3a | ||
|
|
6b31417bab | ||
|
|
58d5b26848 | ||
|
|
b2a9c250c7 | ||
|
|
371eb4e6c0 | ||
|
|
9424cc0475 | ||
|
|
c9230bd61f | ||
|
|
c3c55ad862 | ||
|
|
533c86b7fd | ||
|
|
214f693a16 | ||
|
|
015042c754 | ||
|
|
95ab511716 | ||
|
|
7f02a89b50 | ||
|
|
60002bb33c | ||
|
|
520a783b95 | ||
|
|
24eb69398f | ||
|
|
2251227fd8 | ||
|
|
6488aac611 | ||
|
|
5ef604c464 | ||
|
|
063dc05b4e | ||
|
|
b8bd4375a9 | ||
|
|
51ddca9b85 | ||
|
|
0ecdc49a13 | ||
|
|
61676fe568 | ||
|
|
56e0c05043 | ||
|
|
791161fa3a | ||
|
|
ce332651b2 | ||
|
|
4eedabd5cb | ||
|
|
91daaf053f | ||
|
|
66bbcb9d87 | ||
|
|
504998a78d | ||
|
|
18a5abbc57 | ||
|
|
b3ec0a487b | ||
|
|
e40d4f666f | ||
|
|
37083c9980 | ||
|
|
f7bee746e2 | ||
|
|
7fb5bfc895 | ||
|
|
26765564ea | ||
|
|
2ba6e6f9f3 | ||
|
|
ef8c85c722 | ||
|
|
0889efd92c | ||
|
|
5cd66bc797 | ||
|
|
332356fc50 | ||
|
|
f8ca89e607 | ||
|
|
94c4d354db | ||
|
|
0a7ef0b65a | ||
|
|
1df223c741 | ||
|
|
db5c627f4d | ||
|
|
f0a6a4c9b8 | ||
|
|
d9296cca53 | ||
|
|
534c8a6018 | ||
|
|
5b48c4f159 | ||
|
|
cc98189027 | ||
|
|
8fa7d145ac | ||
|
|
a89a6503ad | ||
|
|
1c10a2fbe4 | ||
|
|
7bc6afdf43 | ||
|
|
3725e55f43 | ||
|
|
3cbc54429e | ||
|
|
068b9b1cdb | ||
|
|
eaba6c24a8 |
4
.github/workflows/publish-release.yml
vendored
4
.github/workflows/publish-release.yml
vendored
@@ -15,11 +15,11 @@ jobs:
|
|||||||
- name: Checkout latest code
|
- name: Checkout latest code
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Set up JDK 17
|
- name: Set up JDK 21
|
||||||
uses: actions/setup-java@v2
|
uses: actions/setup-java@v2
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: 17
|
java-version: 21
|
||||||
|
|
||||||
- name: Change wrapper permissions
|
- name: Change wrapper permissions
|
||||||
run: chmod +x ./gradlew
|
run: chmod +x ./gradlew
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
java
|
java
|
||||||
`java-library`
|
`java-library`
|
||||||
`maven-publish`
|
`maven-publish`
|
||||||
kotlin("jvm") version "1.7.10"
|
kotlin("jvm") version "2.1.0"
|
||||||
id("com.github.johnrengelman.shadow") version "8.0.0"
|
id("com.gradleup.shadow") version "8.3.0"
|
||||||
id("com.willfp.libreforge-gradle-plugin") version "1.0.0"
|
id("com.willfp.libreforge-gradle-plugin") version "1.0.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,7 +27,7 @@ allprojects {
|
|||||||
apply(plugin = "java")
|
apply(plugin = "java")
|
||||||
apply(plugin = "kotlin")
|
apply(plugin = "kotlin")
|
||||||
apply(plugin = "maven-publish")
|
apply(plugin = "maven-publish")
|
||||||
apply(plugin = "com.github.johnrengelman.shadow")
|
apply(plugin = "com.gradleup.shadow")
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
@@ -37,14 +39,14 @@ allprojects {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
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:annotations:23.0.0")
|
||||||
compileOnly("org.jetbrains.kotlin:kotlin-stdlib:1.7.10")
|
compileOnly("org.jetbrains.kotlin:kotlin-stdlib:2.1.0")
|
||||||
}
|
}
|
||||||
|
|
||||||
java {
|
java {
|
||||||
withSourcesJar()
|
withSourcesJar()
|
||||||
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
@@ -54,8 +56,8 @@ allprojects {
|
|||||||
}
|
}
|
||||||
|
|
||||||
compileKotlin {
|
compileKotlin {
|
||||||
kotlinOptions {
|
compilerOptions {
|
||||||
jvmTarget = "17"
|
jvmTarget.set(JvmTarget.JVM_21)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ group = "com.willfp"
|
|||||||
version = rootProject.version
|
version = rootProject.version
|
||||||
|
|
||||||
dependencies {
|
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.willfp:Talismans:6.0.0")
|
||||||
compileOnly("com.github.ben-manes.caffeine:caffeine:3.0.2")
|
compileOnly("com.github.ben-manes.caffeine:caffeine:3.0.2")
|
||||||
|
|
||||||
|
|||||||
@@ -2,24 +2,26 @@ package com.willfp.reforges
|
|||||||
|
|
||||||
import com.willfp.eco.core.command.impl.PluginCommand
|
import com.willfp.eco.core.command.impl.PluginCommand
|
||||||
import com.willfp.eco.core.display.DisplayModule
|
import com.willfp.eco.core.display.DisplayModule
|
||||||
import com.willfp.eco.core.integrations.IntegrationLoader
|
|
||||||
import com.willfp.eco.core.items.Items
|
import com.willfp.eco.core.items.Items
|
||||||
import com.willfp.libreforge.conditions.Conditions
|
import com.willfp.libreforge.conditions.Conditions
|
||||||
import com.willfp.libreforge.loader.LibreforgePlugin
|
import com.willfp.libreforge.loader.LibreforgePlugin
|
||||||
import com.willfp.libreforge.loader.configs.ConfigCategory
|
import com.willfp.libreforge.loader.configs.ConfigCategory
|
||||||
import com.willfp.libreforge.registerHolderProvider
|
import com.willfp.libreforge.registerHolderProvider
|
||||||
import com.willfp.libreforge.registerPlayerRefreshFunction
|
|
||||||
import com.willfp.reforges.commands.CommandReforge
|
import com.willfp.reforges.commands.CommandReforge
|
||||||
import com.willfp.reforges.commands.CommandReforges
|
import com.willfp.reforges.commands.CommandReforges
|
||||||
import com.willfp.reforges.config.TargetYml
|
import com.willfp.reforges.config.TargetYml
|
||||||
import com.willfp.reforges.display.ReforgesDisplay
|
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.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.Reforges
|
||||||
import com.willfp.reforges.reforges.util.ReforgeArgParser
|
import com.willfp.reforges.reforges.util.ReforgeArgParser
|
||||||
import com.willfp.reforges.util.AntiPlaceListener
|
import com.willfp.reforges.util.AntiPlaceListener
|
||||||
import com.willfp.reforges.util.DiscoverRecipeListener
|
import com.willfp.reforges.util.DiscoverRecipeListener
|
||||||
import com.willfp.reforges.util.ReforgeLookup
|
|
||||||
import org.bukkit.event.Listener
|
import org.bukkit.event.Listener
|
||||||
|
|
||||||
class ReforgesPlugin : LibreforgePlugin() {
|
class ReforgesPlugin : LibreforgePlugin() {
|
||||||
@@ -41,8 +43,16 @@ class ReforgesPlugin : LibreforgePlugin() {
|
|||||||
|
|
||||||
Items.registerArgParser(ReforgeArgParser)
|
Items.registerArgParser(ReforgeArgParser)
|
||||||
|
|
||||||
registerHolderProvider { ReforgeLookup.provideReforges(it) }
|
Items.registerTag(ReforgedTag(this))
|
||||||
registerPlayerRefreshFunction { ReforgeLookup.clearCache(it) }
|
Items.registerTag(ReforgeStoneTag(this))
|
||||||
|
|
||||||
|
registerHolderProvider(ReforgeFinder.toHolderProvider())
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun handleReload() {
|
||||||
|
ReforgeTargets.update(this)
|
||||||
|
PriceMultipliers.update(this)
|
||||||
|
ReforgeGUI.update(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun loadListeners(): List<Listener> {
|
override fun loadListeners(): List<Listener> {
|
||||||
@@ -59,13 +69,9 @@ class ReforgesPlugin : LibreforgePlugin() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createDisplayModule(): DisplayModule {
|
override fun loadDisplayModules(): List<DisplayModule> {
|
||||||
return ReforgesDisplay(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun loadIntegrationLoaders(): List<IntegrationLoader> {
|
|
||||||
return listOf(
|
return listOf(
|
||||||
IntegrationLoader("Talismans") { TalismansIntegration.registerProvider() }
|
ReforgesDisplay(this)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,10 @@ import com.willfp.eco.core.config.ConfigType
|
|||||||
import com.willfp.eco.core.config.StaticBaseConfig
|
import com.willfp.eco.core.config.StaticBaseConfig
|
||||||
import com.willfp.eco.core.items.Items
|
import com.willfp.eco.core.items.Items
|
||||||
import com.willfp.eco.core.items.TestableItem
|
import com.willfp.eco.core.items.TestableItem
|
||||||
import com.willfp.reforges.reforges.ReforgeTarget
|
import com.willfp.libreforge.slot.SlotType
|
||||||
import java.util.*
|
import com.willfp.libreforge.slot.SlotTypes
|
||||||
|
import com.willfp.libreforge.slot.impl.SlotTypeAny
|
||||||
|
import java.util.Locale
|
||||||
import java.util.function.Consumer
|
import java.util.function.Consumer
|
||||||
|
|
||||||
class TargetYml(plugin: EcoPlugin) : StaticBaseConfig("target", plugin, ConfigType.YAML) {
|
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.
|
* @param target The name of the target.
|
||||||
* @return All materials.
|
* @return The [SlotType].
|
||||||
*/
|
*/
|
||||||
fun getSlot(target: String): ReforgeTarget.Slot {
|
fun getSlot(target: String): SlotType {
|
||||||
return ReforgeTarget.Slot.valueOf(this.getString("$target.slot").uppercase(Locale.getDefault()))
|
return SlotTypes[this.getString("$target.slot")] ?: SlotTypeAny
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package com.willfp.reforges.gui
|
|||||||
|
|
||||||
import com.willfp.eco.core.EcoPlugin
|
import com.willfp.eco.core.EcoPlugin
|
||||||
import com.willfp.eco.core.config.emptyConfig
|
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.drops.DropQueue
|
||||||
import com.willfp.eco.core.gui.captiveSlot
|
import com.willfp.eco.core.gui.captiveSlot
|
||||||
import com.willfp.eco.core.gui.menu
|
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.menuStateVar
|
||||||
import com.willfp.ecomponent.setSlot
|
import com.willfp.ecomponent.setSlot
|
||||||
import com.willfp.libreforge.LibreforgeSpigotPlugin
|
import com.willfp.libreforge.LibreforgeSpigotPlugin
|
||||||
import com.willfp.reforges.reforges.PriceMultipliers
|
|
||||||
import com.willfp.reforges.reforges.PriceMultipliers.reforgePriceMultiplier
|
import com.willfp.reforges.reforges.PriceMultipliers.reforgePriceMultiplier
|
||||||
import com.willfp.reforges.reforges.Reforge
|
import com.willfp.reforges.reforges.Reforge
|
||||||
import com.willfp.reforges.reforges.ReforgeTarget
|
import com.willfp.reforges.reforges.ReforgeTarget
|
||||||
@@ -192,14 +190,11 @@ object ReforgeGUI {
|
|||||||
|
|
||||||
private lateinit var defaultPrice: ConfiguredPrice
|
private lateinit var defaultPrice: ConfiguredPrice
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
fun open(player: Player) {
|
fun open(player: Player) {
|
||||||
menu.open(player)
|
menu.open(player)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
internal fun update(plugin: EcoPlugin) {
|
||||||
@ConfigUpdater
|
|
||||||
fun update(plugin: EcoPlugin) {
|
|
||||||
itemToReforge = CaptiveItem()
|
itemToReforge = CaptiveItem()
|
||||||
reforgeStone = CaptiveItem()
|
reforgeStone = CaptiveItem()
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,11 +2,15 @@ package com.willfp.reforges.libreforge
|
|||||||
|
|
||||||
import com.willfp.eco.core.config.interfaces.Config
|
import com.willfp.eco.core.config.interfaces.Config
|
||||||
import com.willfp.eco.util.containsIgnoreCase
|
import com.willfp.eco.util.containsIgnoreCase
|
||||||
|
import com.willfp.libreforge.Dispatcher
|
||||||
import com.willfp.libreforge.NoCompileData
|
import com.willfp.libreforge.NoCompileData
|
||||||
|
import com.willfp.libreforge.ProvidedHolder
|
||||||
import com.willfp.libreforge.arguments
|
import com.willfp.libreforge.arguments
|
||||||
import com.willfp.libreforge.conditions.Condition
|
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.reforges.Reforge
|
||||||
import com.willfp.reforges.util.ReforgeLookup
|
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
object ConditionHasReforge : Condition<NoCompileData>("has_reforge") {
|
object ConditionHasReforge : Condition<NoCompileData>("has_reforge") {
|
||||||
@@ -14,10 +18,15 @@ object ConditionHasReforge : Condition<NoCompileData>("has_reforge") {
|
|||||||
require("reforge", "You must specify the reforge!")
|
require("reforge", "You must specify the reforge!")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isMet(player: Player, config: Config, compileData: NoCompileData): Boolean {
|
override fun isMet(
|
||||||
return ReforgeLookup.provideReforges(player)
|
dispatcher: Dispatcher<*>,
|
||||||
.map { it.holder }
|
config: Config,
|
||||||
.filterIsInstance<Reforge>()
|
holder: ProvidedHolder,
|
||||||
|
compileData: NoCompileData
|
||||||
|
): Boolean {
|
||||||
|
val player = dispatcher.get<Player>() ?: return false
|
||||||
|
|
||||||
|
return player.toDispatcher().getHoldersOfType<Reforge>()
|
||||||
.map { it.id.key }
|
.map { it.id.key }
|
||||||
.containsIgnoreCase(config.getString("reforge"))
|
.containsIgnoreCase(config.getString("reforge"))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package com.willfp.reforges.reforges
|
package com.willfp.reforges.reforges
|
||||||
|
|
||||||
import com.willfp.eco.core.EcoPlugin
|
import com.willfp.eco.core.EcoPlugin
|
||||||
import com.willfp.eco.core.config.updating.ConfigUpdater
|
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
@Suppress("UNUSED")
|
@Suppress("UNUSED")
|
||||||
@@ -9,13 +8,6 @@ object PriceMultipliers {
|
|||||||
private val REGISTRY = mutableListOf<PriceMultiplier>()
|
private val REGISTRY = mutableListOf<PriceMultiplier>()
|
||||||
private val NO_MULTIPLIER = PriceMultiplier("none", 1.0, 0)
|
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 {
|
fun getForPlayer(player: Player): PriceMultiplier {
|
||||||
var current = NO_MULTIPLIER
|
var current = NO_MULTIPLIER
|
||||||
|
|
||||||
@@ -38,19 +30,11 @@ object PriceMultipliers {
|
|||||||
val Player.reforgePriceMultiplier: Double
|
val Player.reforgePriceMultiplier: Double
|
||||||
get() = getForPlayer(this).multiplier
|
get() = getForPlayer(this).multiplier
|
||||||
|
|
||||||
/**
|
|
||||||
* List of all registered multipliers.
|
|
||||||
*
|
|
||||||
* @return The multipliers.
|
|
||||||
*/
|
|
||||||
@JvmStatic
|
|
||||||
fun values(): List<PriceMultiplier> {
|
fun values(): List<PriceMultiplier> {
|
||||||
return REGISTRY.toList()
|
return REGISTRY.toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ConfigUpdater
|
internal fun update(plugin: EcoPlugin) {
|
||||||
@JvmStatic
|
|
||||||
fun update(plugin: EcoPlugin) {
|
|
||||||
REGISTRY.clear()
|
REGISTRY.clear()
|
||||||
|
|
||||||
for (config in plugin.configYml.getSubsections("price-multipliers")) {
|
for (config in plugin.configYml.getSubsections("price-multipliers")) {
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import com.willfp.libreforge.ItemProvidedHolder
|
|||||||
import com.willfp.libreforge.ViolationContext
|
import com.willfp.libreforge.ViolationContext
|
||||||
import com.willfp.libreforge.conditions.Conditions
|
import com.willfp.libreforge.conditions.Conditions
|
||||||
import com.willfp.libreforge.effects.Effects
|
import com.willfp.libreforge.effects.Effects
|
||||||
|
import com.willfp.libreforge.toDispatcher
|
||||||
import com.willfp.libreforge.triggers.TriggerData
|
import com.willfp.libreforge.triggers.TriggerData
|
||||||
import com.willfp.reforges.ReforgesPlugin
|
import com.willfp.reforges.ReforgesPlugin
|
||||||
import com.willfp.reforges.util.reforgeStone
|
import com.willfp.reforges.util.reforgeStone
|
||||||
@@ -86,7 +87,7 @@ class Reforge(
|
|||||||
|
|
||||||
if (config.getBool("stone.enabled")) {
|
if (config.getBool("stone.enabled")) {
|
||||||
CustomItem(
|
CustomItem(
|
||||||
plugin.namespacedKeyFactory.create("stone_" + this.id),
|
plugin.namespacedKeyFactory.create("stone_" + this.id.key),
|
||||||
{ test -> test.reforgeStone == this },
|
{ test -> test.reforgeStone == this },
|
||||||
stone
|
stone
|
||||||
).register()
|
).register()
|
||||||
@@ -108,9 +109,8 @@ class Reforge(
|
|||||||
|
|
||||||
fun runOnReforgeEffects(player: Player, item: ItemStack) {
|
fun runOnReforgeEffects(player: Player, item: ItemStack) {
|
||||||
onReforgeEffects?.trigger(
|
onReforgeEffects?.trigger(
|
||||||
player,
|
player.toDispatcher(),
|
||||||
TriggerData(
|
TriggerData(
|
||||||
holder = ItemProvidedHolder(this, item),
|
|
||||||
player = player,
|
player = player,
|
||||||
item = item
|
item = item
|
||||||
)
|
)
|
||||||
@@ -140,4 +140,4 @@ class Reforge(
|
|||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return "Reforge{$id}"
|
return "Reforge{$id}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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) }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,12 +2,13 @@ package com.willfp.reforges.reforges
|
|||||||
|
|
||||||
import com.willfp.eco.core.items.TestableItem
|
import com.willfp.eco.core.items.TestableItem
|
||||||
import com.willfp.eco.core.recipe.parts.EmptyTestableItem
|
import com.willfp.eco.core.recipe.parts.EmptyTestableItem
|
||||||
|
import com.willfp.libreforge.slot.SlotType
|
||||||
import org.bukkit.inventory.ItemStack
|
import org.bukkit.inventory.ItemStack
|
||||||
import java.util.*
|
import java.util.Objects
|
||||||
|
|
||||||
class ReforgeTarget(
|
class ReforgeTarget(
|
||||||
val id: String,
|
val id: String,
|
||||||
val slot: Slot,
|
val slot: SlotType,
|
||||||
val items: MutableSet<TestableItem>
|
val items: MutableSet<TestableItem>
|
||||||
) {
|
) {
|
||||||
init {
|
init {
|
||||||
@@ -34,10 +35,4 @@ class ReforgeTarget(
|
|||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int {
|
||||||
return Objects.hash(this.id)
|
return Objects.hash(this.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class Slot {
|
|
||||||
HANDS,
|
|
||||||
ARMOR,
|
|
||||||
ANY
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,38 +1,24 @@
|
|||||||
package com.willfp.reforges.reforges
|
package com.willfp.reforges.reforges
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableSet
|
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 com.willfp.reforges.ReforgesPlugin
|
||||||
import org.bukkit.inventory.ItemStack
|
import org.bukkit.inventory.ItemStack
|
||||||
|
|
||||||
object ReforgeTargets {
|
object ReforgeTargets {
|
||||||
private val registered = mutableMapOf<String, ReforgeTarget>()
|
private val registered = mutableMapOf<String, ReforgeTarget>()
|
||||||
|
|
||||||
val ALL = ReforgeTarget("all", ReforgeTarget.Slot.ANY, HashSet())
|
val ALL = ReforgeTarget("all", SlotTypeAny, HashSet())
|
||||||
|
|
||||||
init {
|
init {
|
||||||
registered["all"] = ALL
|
registered["all"] = ALL
|
||||||
update(ReforgesPlugin.instance)
|
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? {
|
fun getByName(name: String): ReforgeTarget? {
|
||||||
return registered[name]
|
return registered[name]
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get target from item.
|
|
||||||
*
|
|
||||||
* @param item The item.
|
|
||||||
* @return The target.
|
|
||||||
*/
|
|
||||||
@JvmStatic
|
|
||||||
fun getForItem(item: ItemStack?): List<ReforgeTarget> {
|
fun getForItem(item: ItemStack?): List<ReforgeTarget> {
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
return emptyList()
|
return emptyList()
|
||||||
@@ -43,14 +29,7 @@ object ReforgeTargets {
|
|||||||
.filter { it.matches(item) }
|
.filter { it.matches(item) }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
internal fun update(plugin: ReforgesPlugin) {
|
||||||
* Update all targets.
|
|
||||||
*
|
|
||||||
* @param plugin Instance of Reforges.
|
|
||||||
*/
|
|
||||||
@ConfigUpdater
|
|
||||||
@JvmStatic
|
|
||||||
fun update(plugin: ReforgesPlugin) {
|
|
||||||
ALL.items.clear()
|
ALL.items.clear()
|
||||||
for (id in ArrayList(registered.keys)) {
|
for (id in ArrayList(registered.keys)) {
|
||||||
if (id.equals("all", ignoreCase = true)) {
|
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> {
|
fun values(): Set<ReforgeTarget> {
|
||||||
return ImmutableSet.copyOf(registered.values)
|
return ImmutableSet.copyOf(registered.values)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,3 +6,4 @@ options:
|
|||||||
resource-id: 1330
|
resource-id: 1330
|
||||||
bstats-id: 12412
|
bstats-id: 12412
|
||||||
color: "&3"
|
color: "&3"
|
||||||
|
uses-reflective-reload: false
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -8,7 +8,6 @@ depend:
|
|||||||
- eco
|
- eco
|
||||||
softdepend:
|
softdepend:
|
||||||
- libreforge
|
- libreforge
|
||||||
- Talismans
|
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
reforges:
|
reforges:
|
||||||
|
|||||||
@@ -1,45 +1,27 @@
|
|||||||
#
|
#
|
||||||
# A target consists of items and a slot.
|
# 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:
|
pickaxe:
|
||||||
slot: hands
|
slot: hands
|
||||||
items:
|
items:
|
||||||
- wooden_pickaxe
|
- "#items_pickaxes"
|
||||||
- stone_pickaxe
|
|
||||||
- iron_pickaxe
|
|
||||||
- golden_pickaxe
|
|
||||||
- diamond_pickaxe
|
|
||||||
- netherite_pickaxe
|
|
||||||
axe:
|
axe:
|
||||||
slot: hands
|
slot: hands
|
||||||
items:
|
items:
|
||||||
- wooden_axe
|
- "#items_axes"
|
||||||
- stone_axe
|
|
||||||
- iron_axe
|
|
||||||
- golden_axe
|
|
||||||
- diamond_axe
|
|
||||||
- netherite_axe
|
|
||||||
melee:
|
melee:
|
||||||
slot: hands
|
slot: hands
|
||||||
items:
|
items:
|
||||||
- wooden_axe
|
- "#items_axes"
|
||||||
- stone_axe
|
- "#items_swords"
|
||||||
- iron_axe
|
|
||||||
- golden_axe
|
|
||||||
- diamond_axe
|
|
||||||
- netherite_axe
|
|
||||||
- wooden_sword
|
|
||||||
- stone_sword
|
|
||||||
- iron_sword
|
|
||||||
- golden_sword
|
|
||||||
- diamond_sword
|
|
||||||
- netherite_sword
|
|
||||||
trident:
|
trident:
|
||||||
slot: hands
|
slot: hands
|
||||||
items:
|
items:
|
||||||
@@ -52,31 +34,7 @@ bow:
|
|||||||
armor:
|
armor:
|
||||||
slot: armor
|
slot: armor
|
||||||
items:
|
items:
|
||||||
- turtle_helmet
|
- "#items_head_armor"
|
||||||
- leather_helmet
|
- "#items_chest_armor"
|
||||||
- chainmail_helmet
|
- "#items_leg_armor"
|
||||||
- iron_helmet
|
- "#items_foot_armor"
|
||||||
- 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
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#libreforge-updater
|
#libreforge-updater
|
||||||
#Sun Nov 19 14:13:53 GMT 2023
|
#Mon Oct 06 08:56:44 BST 2025
|
||||||
kotlin.code.style=official
|
kotlin.code.style=official
|
||||||
libreforge-version=4.43.1
|
libreforge-version=4.79.0
|
||||||
version=6.43.1
|
version=6.78.0
|
||||||
|
|||||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,7 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
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
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -2,12 +2,14 @@ pluginManagement {
|
|||||||
repositories {
|
repositories {
|
||||||
gradlePluginPortal()
|
gradlePluginPortal()
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
maven("https://repo.jpenilla.xyz/snapshots/")
|
|
||||||
maven("https://repo.auxilor.io/repository/maven-public/")
|
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
|
// Core
|
||||||
include(":eco-core")
|
include(":eco-core")
|
||||||
|
|||||||
Reference in New Issue
Block a user