mirror of
https://github.com/Auxilor/EcoEnchants.git
synced 2024-12-25 20:17:38 +01:00
Added proxies
This commit is contained in:
parent
a138aac13d
commit
924d42b96e
9
eco-core/core-nms/build.gradle
Normal file
9
eco-core/core-nms/build.gradle
Normal file
@ -0,0 +1,9 @@
|
||||
group 'com.willfp'
|
||||
version rootProject.version
|
||||
|
||||
subprojects {
|
||||
dependencies {
|
||||
compileOnly project(':eco-core:core-proxy')
|
||||
compileOnly project(':eco-core:core-plugin')
|
||||
}
|
||||
}
|
6
eco-core/core-nms/v1_17_R1/build.gradle
Normal file
6
eco-core/core-nms/v1_17_R1/build.gradle
Normal file
@ -0,0 +1,6 @@
|
||||
group 'com.willfp'
|
||||
version rootProject.version
|
||||
|
||||
dependencies {
|
||||
compileOnly 'org.spigotmc:spigot:1.17-R0.1-SNAPSHOT'
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.willfp.ecoenchants.proxy.v1_17_R1
|
||||
|
||||
import com.willfp.ecoenchants.enchants.EcoEnchant
|
||||
import com.willfp.ecoenchants.enchants.EcoEnchants
|
||||
import net.minecraft.world.item.enchantment.Enchantment
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.craftbukkit.v1_17_R1.enchantments.CraftEnchantment
|
||||
|
||||
class EcoCraftEnchantment(
|
||||
target: Enchantment,
|
||||
private val _maxLevel: Int,
|
||||
private val conflicts: Collection<NamespacedKey>
|
||||
) : CraftEnchantment(target) {
|
||||
override fun getMaxLevel(): Int = _maxLevel
|
||||
|
||||
override fun conflictsWith(other: org.bukkit.enchantments.Enchantment): Boolean {
|
||||
if (other is EcoEnchant) {
|
||||
return other.conflictsWith(this)
|
||||
}
|
||||
|
||||
return conflicts.contains(other.key)
|
||||
}
|
||||
|
||||
fun register() {
|
||||
EcoEnchants.register(this)
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.willfp.ecoenchants.proxy.v1_17_R1
|
||||
|
||||
import com.willfp.ecoenchants.proxy.proxies.EcoCraftEnchantmentManagerProxy
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.enchantments.Enchantment
|
||||
|
||||
class EcoCraftEnchantmentManager : EcoCraftEnchantmentManagerProxy {
|
||||
override fun registerNewCraftEnchantment(
|
||||
enchantment: Enchantment,
|
||||
maxLevel: Int,
|
||||
conflicts: Collection<NamespacedKey>
|
||||
) {
|
||||
for (enchant in net.minecraft.core.IRegistry.X) {
|
||||
val key = org.bukkit.craftbukkit.v1_17_R1.util.CraftNamespacedKey.fromMinecraft(
|
||||
net.minecraft.core.IRegistry.X.getKey(enchant)
|
||||
)
|
||||
EcoCraftEnchantment(enchant, maxLevel, conflicts).register()
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.willfp.ecoenchants.proxy.v1_17_R1
|
||||
|
||||
import com.willfp.ecoenchants.proxy.proxies.OpenInventoryProxy
|
||||
import org.bukkit.craftbukkit.v1_17_R1.entity.CraftPlayer
|
||||
import org.bukkit.entity.Player
|
||||
|
||||
class OpenInventory : OpenInventoryProxy {
|
||||
override fun getOpenInventory(player: Player): Any {
|
||||
return (player as CraftPlayer).handle.bV
|
||||
}
|
||||
}
|
6
eco-core/core-nms/v1_18_R1/build.gradle
Normal file
6
eco-core/core-nms/v1_18_R1/build.gradle
Normal file
@ -0,0 +1,6 @@
|
||||
group 'com.willfp'
|
||||
version rootProject.version
|
||||
|
||||
dependencies {
|
||||
compileOnly 'org.spigotmc:spigot:1.18-R0.1-SNAPSHOT'
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.willfp.ecoenchants.proxy.v1_18_R1
|
||||
|
||||
import com.willfp.ecoenchants.enchants.EcoEnchant
|
||||
import com.willfp.ecoenchants.enchants.EcoEnchants
|
||||
import net.minecraft.world.item.enchantment.Enchantment
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.craftbukkit.v1_18_R1.enchantments.CraftEnchantment
|
||||
|
||||
class EcoCraftEnchantment(
|
||||
target: Enchantment,
|
||||
private val _maxLevel: Int,
|
||||
private val conflicts: Collection<NamespacedKey>
|
||||
) : CraftEnchantment(target) {
|
||||
override fun getMaxLevel(): Int = _maxLevel
|
||||
|
||||
override fun conflictsWith(other: org.bukkit.enchantments.Enchantment): Boolean {
|
||||
if (other is EcoEnchant) {
|
||||
return other.conflictsWith(this)
|
||||
}
|
||||
|
||||
return conflicts.contains(other.key)
|
||||
}
|
||||
|
||||
fun register() {
|
||||
EcoEnchants.register(this)
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.willfp.ecoenchants.proxy.v1_18_R1
|
||||
|
||||
import com.willfp.ecoenchants.proxy.proxies.EcoCraftEnchantmentManagerProxy
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.enchantments.Enchantment
|
||||
|
||||
class EcoCraftEnchantmentManager : EcoCraftEnchantmentManagerProxy {
|
||||
override fun registerNewCraftEnchantment(
|
||||
enchantment: Enchantment,
|
||||
maxLevel: Int,
|
||||
conflicts: Collection<NamespacedKey>
|
||||
) {
|
||||
for (enchant in net.minecraft.core.IRegistry.Y) {
|
||||
val key = org.bukkit.craftbukkit.v1_18_R1.util.CraftNamespacedKey.fromMinecraft(
|
||||
net.minecraft.core.IRegistry.Y.b(enchant)
|
||||
)
|
||||
EcoCraftEnchantment(enchant, maxLevel, conflicts).register()
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.willfp.ecoenchants.proxy.v1_18_R1
|
||||
|
||||
import com.willfp.ecoenchants.proxy.proxies.OpenInventoryProxy
|
||||
import org.bukkit.craftbukkit.v1_18_R1.entity.CraftPlayer
|
||||
import org.bukkit.entity.Player
|
||||
|
||||
class OpenInventory : OpenInventoryProxy {
|
||||
override fun getOpenInventory(player: Player): Any {
|
||||
return (player as CraftPlayer).handle.bW
|
||||
}
|
||||
}
|
6
eco-core/core-nms/v1_18_R2/build.gradle
Normal file
6
eco-core/core-nms/v1_18_R2/build.gradle
Normal file
@ -0,0 +1,6 @@
|
||||
group 'com.willfp'
|
||||
version rootProject.version
|
||||
|
||||
dependencies {
|
||||
compileOnly 'org.spigotmc:spigot:1.18.2-R0.1-SNAPSHOT'
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.willfp.ecoenchants.proxy.v1_18_R2
|
||||
|
||||
import com.willfp.ecoenchants.enchants.EcoEnchant
|
||||
import com.willfp.ecoenchants.enchants.EcoEnchants
|
||||
import net.minecraft.world.item.enchantment.Enchantment
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.craftbukkit.v1_18_R2.enchantments.CraftEnchantment
|
||||
|
||||
class EcoCraftEnchantment(
|
||||
target: Enchantment,
|
||||
private val _maxLevel: Int,
|
||||
private val conflicts: Collection<NamespacedKey>
|
||||
) : CraftEnchantment(target) {
|
||||
override fun getMaxLevel(): Int = _maxLevel
|
||||
|
||||
override fun conflictsWith(other: org.bukkit.enchantments.Enchantment): Boolean {
|
||||
if (other is EcoEnchant) {
|
||||
return other.conflictsWith(this)
|
||||
}
|
||||
|
||||
return conflicts.contains(other.key)
|
||||
}
|
||||
|
||||
fun register() {
|
||||
EcoEnchants.register(this)
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.willfp.ecoenchants.proxy.v1_18_R2
|
||||
|
||||
import com.willfp.ecoenchants.proxy.proxies.EcoCraftEnchantmentManagerProxy
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.enchantments.Enchantment
|
||||
|
||||
class EcoCraftEnchantmentManager : EcoCraftEnchantmentManagerProxy {
|
||||
override fun registerNewCraftEnchantment(
|
||||
enchantment: Enchantment,
|
||||
maxLevel: Int,
|
||||
conflicts: Collection<NamespacedKey>
|
||||
) {
|
||||
for (enchant in net.minecraft.core.IRegistry.V) {
|
||||
val key = org.bukkit.craftbukkit.v1_18_R2.util.CraftNamespacedKey.fromMinecraft(
|
||||
net.minecraft.core.IRegistry.V.b(enchant)
|
||||
)
|
||||
EcoCraftEnchantment(enchant, maxLevel, conflicts).register()
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.willfp.ecoenchants.proxy.v1_18_R2
|
||||
|
||||
import com.willfp.ecoenchants.proxy.proxies.OpenInventoryProxy
|
||||
import org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer
|
||||
import org.bukkit.entity.Player
|
||||
|
||||
class OpenInventory : OpenInventoryProxy {
|
||||
override fun getOpenInventory(player: Player): Any {
|
||||
return (player as CraftPlayer).handle.bV
|
||||
}
|
||||
}
|
6
eco-core/core-nms/v1_19_R1/build.gradle
Normal file
6
eco-core/core-nms/v1_19_R1/build.gradle
Normal file
@ -0,0 +1,6 @@
|
||||
group 'com.willfp'
|
||||
version rootProject.version
|
||||
|
||||
dependencies {
|
||||
compileOnly 'org.spigotmc:spigot:1.19.1-R0.1-SNAPSHOT'
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.willfp.ecoenchants.proxy.v1_19_R1
|
||||
|
||||
import com.willfp.ecoenchants.enchants.EcoEnchant
|
||||
import com.willfp.ecoenchants.enchants.EcoEnchants
|
||||
import net.minecraft.world.item.enchantment.Enchantment
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.craftbukkit.v1_17_R1.enchantments.CraftEnchantment
|
||||
|
||||
class EcoCraftEnchantment(
|
||||
target: Enchantment,
|
||||
private val _maxLevel: Int,
|
||||
private val conflicts: Collection<NamespacedKey>
|
||||
) : CraftEnchantment(target) {
|
||||
override fun getMaxLevel(): Int = _maxLevel
|
||||
|
||||
override fun conflictsWith(other: org.bukkit.enchantments.Enchantment): Boolean {
|
||||
if (other is EcoEnchant) {
|
||||
return other.conflictsWith(this)
|
||||
}
|
||||
|
||||
return conflicts.contains(other.key)
|
||||
}
|
||||
|
||||
fun register() {
|
||||
EcoEnchants.register(this)
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.willfp.ecoenchants.proxy.v1_19_R1
|
||||
|
||||
import com.willfp.ecoenchants.proxy.proxies.EcoCraftEnchantmentManagerProxy
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.enchantments.Enchantment
|
||||
|
||||
class EcoCraftEnchantmentManager : EcoCraftEnchantmentManagerProxy {
|
||||
override fun registerNewCraftEnchantment(
|
||||
enchantment: Enchantment,
|
||||
maxLevel: Int,
|
||||
conflicts: Collection<NamespacedKey>
|
||||
) {
|
||||
for (enchant in net.minecraft.core.IRegistry.W) {
|
||||
val key = org.bukkit.craftbukkit.v1_19_R1.util.CraftNamespacedKey.fromMinecraft(
|
||||
net.minecraft.core.IRegistry.W.b(enchant)
|
||||
)
|
||||
EcoCraftEnchantment(enchant, maxLevel, conflicts).register()
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.willfp.ecoenchants.proxy.v1_19_R1
|
||||
|
||||
import com.willfp.ecoenchants.proxy.proxies.OpenInventoryProxy
|
||||
import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer
|
||||
import org.bukkit.entity.Player
|
||||
|
||||
class OpenInventory : OpenInventoryProxy {
|
||||
override fun getOpenInventory(player: Player): Any {
|
||||
return (player as CraftPlayer).handle.bU
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ version rootProject.version
|
||||
|
||||
dependencies {
|
||||
compileOnly fileTree(dir: '../../lib', include: ['*.jar'])
|
||||
compileOnly project(":eco-core:core-proxy")
|
||||
compileOnly 'io.papermc.paper:paper-api:1.17.1-R0.1-SNAPSHOT'
|
||||
compileOnly 'net.essentialsx:EssentialsX:2.19.0'
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import com.willfp.ecoenchants.config.VanillaEnchantsYml
|
||||
import com.willfp.ecoenchants.display.EnchantDisplay
|
||||
import com.willfp.ecoenchants.enchants.EcoEnchants
|
||||
import com.willfp.ecoenchants.enchants.impl.EnchantmentTelekinesis
|
||||
import com.willfp.ecoenchants.enchants.registerVanillaEnchants
|
||||
import com.willfp.ecoenchants.integrations.EnchantRegistrations
|
||||
import com.willfp.ecoenchants.integrations.plugins.CMIIntegration
|
||||
import com.willfp.ecoenchants.integrations.plugins.EssentialsIntegration
|
||||
@ -36,13 +37,13 @@ class EcoEnchantsPlugin : LibReforgePlugin() {
|
||||
|
||||
override fun handleEnableAdditional() {
|
||||
copyConfigs("enchants")
|
||||
|
||||
registerHolderProvider { it.heldEnchantLevels }
|
||||
}
|
||||
|
||||
override fun handleReloadAdditional() {
|
||||
// Load hardcoded enchantments
|
||||
EnchantmentTelekinesis(this)
|
||||
registerVanillaEnchants(this)
|
||||
|
||||
logger.info(EcoEnchants.values().size.toString() + " Enchants Loaded")
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.willfp.ecoenchants.enchants
|
||||
|
||||
import com.github.benmanes.caffeine.cache.Caffeine
|
||||
import com.willfp.ecoenchants.EcoEnchantsPlugin
|
||||
import com.willfp.ecoenchants.proxy.proxies.EcoCraftEnchantmentManagerProxy
|
||||
import com.willfp.ecoenchants.rarity.EnchantmentRarities
|
||||
import com.willfp.ecoenchants.rarity.EnchantmentRarity
|
||||
import com.willfp.ecoenchants.type.EnchantmentType
|
||||
@ -67,3 +68,15 @@ class VanillaEcoEnchantLike(
|
||||
return Objects.hash(this.enchant)
|
||||
}
|
||||
}
|
||||
|
||||
fun registerVanillaEnchants(plugin: EcoEnchantsPlugin) {
|
||||
for (vanilla in plugin.vanillaEnchantsYml.getKeys(false)) {
|
||||
if (plugin.vanillaEnchantsYml.has("$vanilla.max-level")) {
|
||||
plugin.getProxy(EcoCraftEnchantmentManagerProxy::class.java).registerNewCraftEnchantment(
|
||||
Enchantment.getByKey(NamespacedKey.minecraft(vanilla))!!,
|
||||
plugin.vanillaEnchantsYml.getInt("$vanilla.max-level"),
|
||||
plugin.vanillaEnchantsYml.getStrings("$vanilla.conflicts").map { NamespacedKey.minecraft(it) }
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -121,18 +121,26 @@ object EcoEnchants {
|
||||
*/
|
||||
@Suppress("UNCHECKED_CAST", "DEPRECATION")
|
||||
internal fun addNewEnchant(enchant: EcoEnchant) {
|
||||
removeEnchant(enchant)
|
||||
BY_KEY[enchant.id] = enchant
|
||||
BY_NAME[ChatColor.stripColor(enchant.displayName)] = enchant
|
||||
|
||||
register(enchant)
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a new [Enchantment] with the server.
|
||||
*
|
||||
* @param enchantment The [Enchantment] to add.
|
||||
*/
|
||||
@JvmStatic
|
||||
fun register(enchantment: Enchantment) {
|
||||
Enchantment::class.java.getDeclaredField("acceptingNew")
|
||||
.apply {
|
||||
isAccessible = true
|
||||
set(null, true)
|
||||
}
|
||||
|
||||
BY_KEY[enchant.id] = enchant
|
||||
BY_NAME[ChatColor.stripColor(enchant.displayName)] = enchant
|
||||
|
||||
Enchantment.registerEnchantment(enchant)
|
||||
Enchantment.registerEnchantment(enchantment)
|
||||
EnchantRegistrations.registerEnchantments()
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import com.willfp.eco.core.EcoPlugin
|
||||
import com.willfp.eco.core.fast.fast
|
||||
import com.willfp.eco.core.proxy.ProxyConstants
|
||||
import com.willfp.eco.util.StringUtils
|
||||
import com.willfp.ecoenchants.proxy.proxies.OpenInventoryProxy
|
||||
import org.bukkit.ChatColor
|
||||
import org.bukkit.Material
|
||||
import org.bukkit.entity.Player
|
||||
@ -56,14 +57,9 @@ class AnvilSupport(
|
||||
fun onAnvilPrepare(@NotNull event: PrepareAnvilEvent) {
|
||||
val player = event.viewers.getOrNull(0) as? Player ?: return
|
||||
|
||||
// TODO: Implement proxies
|
||||
/*
|
||||
if (this.getPlugin().getProxy(OpenInventoryProxy::class.java).getOpenInventory(player).getClass().toString()
|
||||
.equals(ANVIL_GUI_CLASS)
|
||||
) {
|
||||
if (this.plugin.getProxy(OpenInventoryProxy::class.java).getOpenInventory(player)::class.java.toString() == anvilGuiClass) {
|
||||
return
|
||||
}
|
||||
*/
|
||||
|
||||
if (antiRepeat.contains(player.uniqueId)) {
|
||||
return
|
||||
|
@ -1,11 +1,17 @@
|
||||
# Rarity option does not affect vanilla enchantments.
|
||||
# The option is there for the display option to sort by rarity.
|
||||
|
||||
# If you enable custom max levels for a vanilla enchant you have to also specify conflicts,
|
||||
# if you don't the enchantment will have no conflicts at all, and vice-versa; changing conflicts
|
||||
# will require you to specify the max level.
|
||||
|
||||
protection:
|
||||
name: "Protection"
|
||||
description: Reduces most types of damage.
|
||||
type: normal
|
||||
rarity: common
|
||||
#max-level: 6 # Custom max level to override for the enchantment. Raise it, but lowering it may cause bugs.
|
||||
#conflicts: [] # Custom conflicts to override for the enchantment. Add or remove conflicts as you please.
|
||||
|
||||
fire_protection:
|
||||
name: "Fire Protection"
|
||||
|
6
eco-core/core-proxy/build.gradle
Normal file
6
eco-core/core-proxy/build.gradle
Normal file
@ -0,0 +1,6 @@
|
||||
group 'com.willfp'
|
||||
version rootProject.version
|
||||
|
||||
dependencies {
|
||||
compileOnly 'org.spigotmc:spigot-api:1.17.1-R0.1-SNAPSHOT'
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.willfp.ecoenchants.proxy.proxies
|
||||
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.enchantments.Enchantment
|
||||
|
||||
interface EcoCraftEnchantmentManagerProxy {
|
||||
fun registerNewCraftEnchantment(enchantment: Enchantment, maxLevel: Int, conflicts: Collection<NamespacedKey>)
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package com.willfp.ecoenchants.proxy.proxies
|
||||
|
||||
import org.bukkit.entity.Player
|
||||
|
||||
interface OpenInventoryProxy {
|
||||
fun getOpenInventory(player: Player): Any
|
||||
}
|
@ -2,4 +2,10 @@ rootProject.name = 'EcoEnchants'
|
||||
|
||||
// Core
|
||||
include ':eco-core'
|
||||
include ':eco-core:core-plugin'
|
||||
include ':eco-core:core-plugin'
|
||||
include ':eco-core:core-proxy'
|
||||
include ':eco-core:core-nms'
|
||||
include ':eco-core:core-nms:v1_17_R1'
|
||||
include ':eco-core:core-nms:v1_18_R1'
|
||||
include ':eco-core:core-nms:v1_18_R2'
|
||||
include ':eco-core:core-nms:v1_19_R1'
|
Loading…
Reference in New Issue
Block a user