9
0
mirror of https://github.com/Auxilor/EcoMobs.git synced 2025-12-19 23:19:17 +00:00

Compare commits

...

76 Commits

Author SHA1 Message Date
Auxilor
9a903e285e libreforge-updater 2023-07-12 13:07:51 +01:00
Auxilor
a033751019 libreforge-updater 2023-07-09 17:24:14 +01:00
Auxilor
d9ab454ca8 libreforge-updater 2023-07-06 18:46:37 +01:00
Auxilor
2ead72ad15 libreforge-updater 2023-07-04 14:49:22 +01:00
Auxilor
365f99a49b libreforge-updater 2023-06-27 10:41:16 +01:00
Auxilor
b8fbfe24b6 libreforge-updater 2023-06-21 10:23:13 +01:00
Auxilor
f545a6c010 libreforge-updater 2023-06-19 11:12:22 +02:00
Will FP
1c6f1c037e Create CODEOWNERS 2023-06-17 21:22:31 +02:00
Auxilor
fc35c2b7a9 libreforge-updater 2023-06-10 13:32:10 +01:00
Auxilor
632f43fe80 libreforge-updater 2023-06-05 16:26:37 +01:00
Auxilor
e5b43cce98 Fixed Publications 2023-06-03 18:01:25 +01:00
Auxilor
372b74ef69 libreforge-updater 2023-06-03 15:45:21 +01:00
Auxilor
03a1f3af28 libreforge-updater 2023-06-01 12:33:21 +01:00
Auxilor
ed0c7ae238 Added location_to_boss mutator 2023-05-30 19:46:22 +01:00
Auxilor
5de65f086e libreforge-updater 2023-05-30 16:10:35 +01:00
Auxilor
bf81feea40 libreforge-updater 2023-05-24 14:57:58 +01:00
Auxilor
9229bdee7b libreforge-updater 2023-05-23 16:12:13 +01:00
Auxilor
bd2637d709 libreforge-updater 2023-05-20 17:40:57 +01:00
Auxilor
4264892c5f fuck you, modelengine. i hate youh 2023-05-18 16:27:43 +01:00
Auxilor
9e07b39c10 libreforge-updater 2023-05-18 16:25:30 +01:00
Auxilor
08d984794e Fixes 2023-05-17 16:36:45 +01:00
Auxilor
1c770e07e7 libreforge-updater 2023-05-17 15:57:13 +01:00
Auxilor
9a48077c9e libreforge-updater 2023-05-16 20:30:07 +01:00
Auxilor
553e006da3 libreforge-updater 2023-05-15 10:52:32 +01:00
Auxilor
c658decff0 libreforge-updater 2023-05-14 13:08:30 +01:00
Auxilor
3af948b712 libreforge-updater 2023-05-09 17:45:30 +01:00
Auxilor
81eeabef5e libreforge-updater 2023-05-05 18:54:37 +01:00
Auxilor
2efa705760 libreforge-updater 2023-05-03 14:47:57 +01:00
Auxilor
040c43f072 libreforge-updater 2023-04-30 19:57:11 +01:00
Auxilor
a3fc8569f9 libreforge-updater 2023-04-29 17:19:28 +01:00
Auxilor
a2eb10c1f2 libreforge-updater 2023-04-25 16:06:07 +01:00
Auxilor
a1fe7ffdc0 libreforge-updater 2023-04-25 13:13:13 +01:00
Auxilor
ebf26ae8ca Fuck mvn.lumine.io 2023-04-24 22:52:19 +01:00
Auxilor
10ce71bb08 libreforge-updater 2023-04-24 22:49:24 +01:00
Auxilor
5432d066b3 libreforge-updater 2023-04-20 20:20:44 +01:00
Auxilor
0a0d1d8764 Updated to 9.3.1 2023-04-20 18:04:55 +01:00
Auxilor
5619859b42 Moved libreforge integration loading to load 2023-04-20 18:04:47 +01:00
Auxilor
c6a6fc4201 libreforge-updater 2023-04-19 12:21:36 +01:00
Auxilor
b4c81d7874 libreforge-updater 2023-04-13 12:48:51 -04:00
Auxilor
fb78e87bd0 libreforge-updater 2023-04-09 18:19:30 -04:00
Auxilor
fd4b3bcc76 libreforge-updater 2023-04-06 20:09:30 +02:00
Auxilor
f1d02cc3ba libreforge-updater 2023-04-05 13:13:45 +01:00
Auxilor
78135d7e72 libreforge-updater 2023-04-03 17:49:46 +01:00
Auxilor
ed0fd90df8 libreforge-updater 2023-04-02 17:44:13 +01:00
Auxilor
42af89c79a libreforge-updater 2023-03-30 15:30:24 +01:00
Auxilor
d453461eeb why is model engine like this 2023-03-29 19:31:03 +01:00
Auxilor
e4093a0fd5 libreforge-updater 2023-03-29 19:21:02 +01:00
Auxilor
7e950ea508 libreforge-updater 2023-03-29 15:47:17 +01:00
Auxilor
ac79baa2d3 Fixed workflows 2023-03-29 13:44:06 +01:00
Auxilor
50adfae567 Moved to repo.auxilor.io 2023-03-29 13:39:57 +01:00
Auxilor
153022c3bf Fixed permissions on paper 2023-03-28 21:42:33 +01:00
Auxilor
8d37635381 Cleanup 2023-03-28 21:19:12 +01:00
Auxilor
299d3ee1d6 Updated to reflect libreforge change 2023-03-28 19:28:06 +01:00
Auxilor
f0a2d32b95 Moved integration 2023-03-28 18:58:58 +01:00
Auxilor
4e86750c7d Fixed duplicated messages for lifespan 2023-03-28 17:23:24 +01:00
Auxilor
b3b7695218 Fixed several bugs 2023-03-28 16:04:59 +01:00
Auxilor
1aa0a27c65 Fixed publications 2023-03-28 14:55:23 +01:00
Auxilor
392a76bad8 Updated to libreforge 4 2023-03-28 14:32:53 +01:00
Auxilor
95afe96860 Changed load order 2023-03-22 22:10:03 +00:00
Auxilor
21d24a5198 libreforge-updater 2023-03-13 13:40:30 +00:00
Auxilor
af9766a391 libreforge-updater 2023-03-02 12:56:01 +00:00
Auxilor
df70871bad libreforge-updater 2023-02-22 15:02:39 +00:00
Auxilor
b030af609a libreforge-updater 2023-02-15 20:59:05 +00:00
Auxilor
344e71cd9a libreforge-updater 2023-02-12 16:55:42 +00:00
Auxilor
7b7a16f9c6 libreforge-updater 2023-02-09 14:12:44 +00:00
Auxilor
ba1c348f8e libreforge-updater 2023-02-07 14:46:53 +00:00
Auxilor
c81f7174e2 libreforge-updater 2023-02-04 15:36:59 +00:00
Auxilor
53b037816d libreforge-updater 2023-01-24 10:09:30 +00:00
Auxilor
d7e07c1a62 libreforge-updater 2023-01-17 16:48:42 +00:00
Auxilor
d939296d96 libreforge-updater 2023-01-13 18:08:48 +00:00
Auxilor
2505ddd845 libreforge-updater 2023-01-07 12:17:46 +00:00
Auxilor
ea7371db9e libreforge-updater 2023-01-02 15:58:40 +00:00
Auxilor
b53ab306ed libreforge-updater 2022-12-26 14:01:48 +01:00
Auxilor
33f82117e4 Updated modelengine 2022-12-20 15:20:45 +00:00
Auxilor
a80e060a7e libreforge-updater 2022-12-20 15:15:33 +00:00
Auxilor
a915752922 libreforge-updater 2022-12-12 14:01:34 +00:00
40 changed files with 398 additions and 359 deletions

1
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1 @@
* @WillFP

View File

@@ -1,8 +1,5 @@
blank_issues_enabled: false blank_issues_enabled: false
contact_links: contact_links:
- name: Auxilor Community Discord - name: Discord
url: https://discord.gg/ZcwpSsE/ url: https://discord.gg/ZcwpSsE/
about: Join the Auxilor discord to get help from support staff and the general community! about: Issues have moved to Discord, please join the server to get help!
- name: The most common issues people have
url: https://github.com/Auxilor/eco/issues/78
about: Check the list of known common issues to see if your issue has already been solved

View File

@@ -4,28 +4,8 @@ about: Report an issue with the plugin
title: '' title: ''
labels: bug labels: bug
assignees: '' assignees: ''
--- ---
**Describe the bug** # Please report bugs on the discord!
A clear and concise description of what the bug is.
**To Reproduce** [Join by clicking here](https://discord.gg/ZcwpSsE/)
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Server Information (please complete the following information):**
- Version: (output of `/ver` command)
- Version of plugin and eco (`/ver eco`, `/ver <plugin>`)
**Additional context**
Add any other context about the problem here.

View File

@@ -1,20 +0,0 @@
---
name: Request a Feature
about: Suggest an idea for this plugin
title: ''
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

33
.github/workflows/publish-release.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
name: Publish Packages
on:
workflow_dispatch:
release:
types: [ created ]
push:
tags:
- '*'
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout latest code
uses: actions/checkout@v2
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: 17
- name: Change wrapper permissions
run: chmod +x ./gradlew
- name: Publish package
uses: gradle/gradle-build-action@v2
with:
arguments: publish
env:
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}

View File

@@ -3,11 +3,13 @@ plugins {
`java-library` `java-library`
`maven-publish` `maven-publish`
kotlin("jvm") version "1.7.10" kotlin("jvm") version "1.7.10"
id("com.github.johnrengelman.shadow") version "7.0.0" id("com.github.johnrengelman.shadow") version "8.0.0"
id("com.willfp.libreforge-gradle-plugin") version "1.0.0"
} }
group = "com.willfp" group = "com.willfp"
version = findProperty("version")!! version = findProperty("version")!!
val libreforgeVersion = findProperty("libreforge-version")
base { base {
archivesName.set(project.name) archivesName.set(project.name)
@@ -22,27 +24,23 @@ dependencies {
allprojects { allprojects {
apply(plugin = "java") apply(plugin = "java")
apply(plugin = "kotlin") apply(plugin = "kotlin")
apply(plugin = "maven-publish")
apply(plugin = "com.github.johnrengelman.shadow") apply(plugin = "com.github.johnrengelman.shadow")
repositories { repositories {
mavenLocal() mavenLocal()
mavenCentral() mavenCentral()
maven("https://repo.papermc.io/repository/maven-public/")
maven("https://repo.auxilor.io/repository/maven-public/")
maven("https://jitpack.io") maven("https://jitpack.io")
maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
maven("https://repo.codemc.org/repository/nms/")
maven("https://repo.codemc.org/repository/maven-public")
maven("https://repo.dmulloy2.net/nexus/repository/public/")
maven("https://papermc.io/repo/repository/maven-public/")
maven("https://mvn.lumine.io/repository/maven-public/") maven("https://mvn.lumine.io/repository/maven-public/")
} }
dependencies { dependencies {
compileOnly("com.willfp:eco:6.44.0") compileOnly("com.willfp:eco:6.56.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:1.7.10")
implementation("com.willfp:libreforge:3.126.0")
implementation("org.joml:joml:1.10.4")
} }
java { java {
@@ -51,10 +49,13 @@ allprojects {
} }
tasks { tasks {
shadowJar {
relocate("com.willfp.libreforge.loader", "com.willfp.ecobosses.libreforge.loader")
}
compileKotlin { compileKotlin {
kotlinOptions { kotlinOptions {
jvmTarget = "17" jvmTarget = "17"
freeCompilerArgs = freeCompilerArgs + "-Xjvm-default=all"
} }
} }
@@ -66,66 +67,17 @@ allprojects {
} }
processResources { processResources {
val ignoreList = listOf("**/*.png", "**/models/**", "**/textures/**", "**lang.yml") filesMatching(listOf("**plugin.yml", "**eco.yml")) {
filesNotMatching(ignoreList) { expand(
expand("projectVersion" to project.version) "version" to project.version,
"libreforgeVersion" to libreforgeVersion,
"pluginName" to rootProject.name
)
} }
} }
build { build {
dependsOn(shadowJar) dependsOn(shadowJar)
} }
shadowJar {
relocate("com.willfp.libreforge", "com.willfp.ecobosses.libreforge")
relocate("org.joml", "com.willfp.ecobosses.libreforge.joml")
}
}
}
tasks {
shadowJar {
destinationDirectory.set(file("$rootDir/bin"))
}
val buyThePlugins by creating {
dependsOn(subprojects.map { it.tasks.getByName("build") })
doLast {
println("If you like the plugin, please consider buying it on Spigot or Polymart!")
println("Spigot: https://www.spigotmc.org/resources/authors/auxilor.507394/")
println("Polymart: https://polymart.org/user/auxilor.1107/")
println("Buying gives you access to support and the plugin auto-updater, and it allows me to keep developing plugins.")
}
}
build {
dependsOn(shadowJar)
dependsOn(publishToMavenLocal)
finalizedBy(buyThePlugins)
}
clean.get().doLast { file("$rootDir/bin").deleteRecursively() }
fun fileName(extra: String): String = buildString {
append(findProperty("plugin-name"))
append(" v")
append(findProperty("version"))
if (extra.isNotEmpty()) {
append(" ")
append(extra)
}
append(".jar")
}
shadowJar.get().archiveFileName.set(fileName(""))
jar.get().archiveFileName.set(fileName("unshaded"))
}
publishing {
publications {
register("maven", MavenPublication::class) {
from(subprojects.first { it.name == "core-plugin" }.components["java"])
}
} }
} }

View File

@@ -2,10 +2,36 @@ group = "com.willfp"
version = rootProject.version version = rootProject.version
dependencies { dependencies {
compileOnly("org.spigotmc:spigot-api:1.17.1-R0.1-SNAPSHOT") compileOnly("io.papermc.paper:paper-api:1.19.3-R0.1-SNAPSHOT")
compileOnly("net.kyori:adventure-api:4.9.3")
// Integrations
compileOnly("com.github.lokka30:LevelledMobs:3.1.4") compileOnly("com.github.lokka30:LevelledMobs:3.1.4")
compileOnly("com.ticxo.modelengine:api:R3.0.1") compileOnly("com.ticxo.modelengine:api:R3.1.6")
}
publishing {
publications {
register<MavenPublication>("maven") {
groupId = project.group.toString()
version = project.version.toString()
artifactId = rootProject.name
artifact(rootProject.tasks.shadowJar.get().archiveFile)
}
}
repositories {
maven {
name = "auxilor"
url = uri("https://repo.auxilor.io/repository/maven-releases/")
credentials {
username = System.getenv("MAVEN_USERNAME")
password = System.getenv("MAVEN_PASSWORD")
}
}
}
}
tasks {
build {
dependsOn(publishToMavenLocal)
}
} }

View File

@@ -6,12 +6,16 @@ import com.willfp.eco.core.integrations.IntegrationLoader
import com.willfp.ecobosses.bosses.Bosses import com.willfp.ecobosses.bosses.Bosses
import com.willfp.ecobosses.bosses.EggDisplay import com.willfp.ecobosses.bosses.EggDisplay
import com.willfp.ecobosses.bosses.bossHolders import com.willfp.ecobosses.bosses.bossHolders
import com.willfp.ecobosses.commands.CommandEcobosses import com.willfp.ecobosses.commands.CommandEcoBosses
import com.willfp.ecobosses.defence.DamageMultiplierHandler import com.willfp.ecobosses.defence.DamageMultiplierHandler
import com.willfp.ecobosses.defence.ImmunitiesHandler import com.willfp.ecobosses.defence.ImmunitiesHandler
import com.willfp.ecobosses.defence.MountHandler import com.willfp.ecobosses.defence.MountHandler
import com.willfp.ecobosses.defence.PickupHandler import com.willfp.ecobosses.defence.PickupHandler
import com.willfp.ecobosses.integrations.levelledmobs.IntegrationLevelledMobs import com.willfp.ecobosses.integrations.levelledmobs.IntegrationLevelledMobs
import com.willfp.ecobosses.libreforge.EffectBossDropChanceMultiplier
import com.willfp.ecobosses.libreforge.MutatorLocationToBoss
import com.willfp.ecobosses.libreforge.TriggerKillBoss
import com.willfp.ecobosses.libreforge.TriggerSpawnBoss
import com.willfp.ecobosses.lifecycle.CompatibilityListeners import com.willfp.ecobosses.lifecycle.CompatibilityListeners
import com.willfp.ecobosses.lifecycle.ConsoleLoggers import com.willfp.ecobosses.lifecycle.ConsoleLoggers
import com.willfp.ecobosses.lifecycle.DeathListeners import com.willfp.ecobosses.lifecycle.DeathListeners
@@ -21,28 +25,43 @@ import com.willfp.ecobosses.spawn.SpawnEggHandler
import com.willfp.ecobosses.spawn.SpawnTotemHandler import com.willfp.ecobosses.spawn.SpawnTotemHandler
import com.willfp.ecobosses.util.DiscoverRecipeListener import com.willfp.ecobosses.util.DiscoverRecipeListener
import com.willfp.ecobosses.util.TopDamagerListener import com.willfp.ecobosses.util.TopDamagerListener
import com.willfp.libreforge.LibReforgePlugin import com.willfp.libreforge.effects.Effects
import com.willfp.libreforge.loader.LibreforgePlugin
import com.willfp.libreforge.loader.configs.ConfigCategory
import com.willfp.libreforge.mutators.Mutators
import com.willfp.libreforge.registerHolderProvider
import com.willfp.libreforge.triggers.Triggers
import org.bukkit.event.Listener import org.bukkit.event.Listener
class EcoBossesPlugin : LibReforgePlugin() { class EcoBossesPlugin : LibreforgePlugin() {
init { init {
instance = this instance = this
}
override fun loadConfigCategories(): List<ConfigCategory> {
return listOf(
Bosses
)
}
override fun handleLoad() {
Effects.register(EffectBossDropChanceMultiplier)
Triggers.register(TriggerKillBoss)
Triggers.register(TriggerSpawnBoss)
Mutators.register(MutatorLocationToBoss)
}
override fun handleEnable() {
registerHolderProvider { it.bossHolders } registerHolderProvider { it.bossHolders }
} }
override fun handleEnableAdditional() { override fun handleReload() {
this.copyConfigs("bosses")
}
override fun handleReloadAdditional() {
Bosses.getAllAlive().forEach { it.remove() } Bosses.getAllAlive().forEach { it.remove() }
logger.info(Bosses.values().size.toString() + " Bosses Loaded")
AutospawnHandler.startSpawning(this) AutospawnHandler.startSpawning(this)
} }
override fun handleDisableAdditional() { override fun handleDisable() {
Bosses.getAllAlive().forEach { it.remove() } Bosses.getAllAlive().forEach { it.remove() }
} }
@@ -52,7 +71,7 @@ class EcoBossesPlugin : LibReforgePlugin() {
override fun loadPluginCommands(): List<PluginCommand> { override fun loadPluginCommands(): List<PluginCommand> {
return listOf( return listOf(
CommandEcobosses(this) CommandEcoBosses(this)
) )
} }
@@ -73,7 +92,7 @@ class EcoBossesPlugin : LibReforgePlugin() {
) )
} }
override fun loadAdditionalIntegrations(): List<IntegrationLoader> { override fun loadIntegrationLoaders(): List<IntegrationLoader> {
return listOf( return listOf(
IntegrationLoader("LevelledMobs") { this.eventManager.registerListener(IntegrationLevelledMobs()) } IntegrationLoader("LevelledMobs") { this.eventManager.registerListener(IntegrationLevelledMobs()) }
) )

View File

@@ -2,15 +2,15 @@ package com.willfp.ecobosses.bosses
import com.willfp.eco.core.fast.fast import com.willfp.eco.core.fast.fast
import com.willfp.ecobosses.EcoBossesPlugin import com.willfp.ecobosses.EcoBossesPlugin
import com.willfp.libreforge.Holder import com.willfp.ecobosses.util.EntityProvidedHolder
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import org.bukkit.persistence.PersistentDataType import org.bukkit.persistence.PersistentDataType
import kotlin.math.pow import kotlin.math.pow
val Player.bossHolders: Iterable<Holder> val Player.bossHolders: Collection<EntityProvidedHolder>
get() { get() {
val holders = mutableListOf<Holder>() val holders = mutableListOf<EntityProvidedHolder>()
for (boss in Bosses.values()) { for (boss in Bosses.values()) {
for (livingBoss in boss.getAllAlive()) { for (livingBoss in boss.getAllAlive()) {
@@ -21,7 +21,7 @@ val Player.bossHolders: Iterable<Holder>
} }
if (entity.location.distanceSquared(this.location) <= boss.influence.pow(2)) { if (entity.location.distanceSquared(this.location) <= boss.influence.pow(2)) {
holders.add(boss) holders.add(EntityProvidedHolder(boss, entity))
} }
} }
} }
@@ -38,7 +38,7 @@ var ItemStack.bossEgg: EcoBoss?
if (value == null) { if (value == null) {
pdc.remove(spawnEggKey) pdc.remove(spawnEggKey)
} else { } else {
pdc.set(spawnEggKey, PersistentDataType.STRING, value.id) pdc.set(spawnEggKey, PersistentDataType.STRING, value.id.key)
} }
this.itemMeta = meta this.itemMeta = meta
} }

View File

@@ -1,21 +1,29 @@
package com.willfp.ecobosses.bosses package com.willfp.ecobosses.bosses
import com.google.common.collect.BiMap
import com.google.common.collect.HashBiMap
import com.google.common.collect.ImmutableList import com.google.common.collect.ImmutableList
import com.willfp.eco.core.config.ConfigType import com.willfp.eco.core.config.ConfigType
import com.willfp.eco.core.config.interfaces.Config
import com.willfp.eco.core.config.readConfig import com.willfp.eco.core.config.readConfig
import com.willfp.eco.core.config.updating.ConfigUpdater import com.willfp.eco.core.config.updating.ConfigUpdater
import com.willfp.eco.core.registry.Registry
import com.willfp.ecobosses.EcoBossesPlugin import com.willfp.ecobosses.EcoBossesPlugin
import com.willfp.libreforge.loader.LibreforgePlugin
import com.willfp.libreforge.loader.configs.ConfigCategory
import com.willfp.libreforge.loader.configs.LegacyLocation
import com.willfp.libreforge.separatorAmbivalent import com.willfp.libreforge.separatorAmbivalent
import org.bukkit.entity.Entity import org.bukkit.entity.Entity
import org.bukkit.entity.LivingEntity import org.bukkit.entity.LivingEntity
import java.io.File import java.io.File
import java.util.UUID import java.util.UUID
object Bosses { object Bosses : ConfigCategory("boss", "bosses") {
/** Registered bosses. */ /** Registered bosses. */
private val BY_ID: BiMap<String, EcoBoss> = HashBiMap.create() private val registry = Registry<EcoBoss>()
override val legacyLocation = LegacyLocation(
"ecobosses.yml",
"bosses"
)
/** /**
* Get all registered [EcoBoss]s. * Get all registered [EcoBoss]s.
@@ -24,7 +32,7 @@ object Bosses {
*/ */
@JvmStatic @JvmStatic
fun values(): List<EcoBoss> { fun values(): List<EcoBoss> {
return ImmutableList.copyOf(BY_ID.values) return ImmutableList.copyOf(registry.values())
} }
/** /**
@@ -35,52 +43,15 @@ object Bosses {
*/ */
@JvmStatic @JvmStatic
fun getByID(name: String): EcoBoss? { fun getByID(name: String): EcoBoss? {
return BY_ID[name] return registry[name]
} }
/** override fun clear(plugin: LibreforgePlugin) {
* Update all [EcoBoss]s. registry.clear()
*
* @param plugin Instance of EcoBosses.
*/
@ConfigUpdater
@JvmStatic
fun update(plugin: EcoBossesPlugin) {
for (boss in values()) {
removeBoss(boss)
}
for ((id, config) in plugin.fetchConfigs("bosses")) {
addNewBoss(EcoBoss(id, config, plugin))
}
val ecoBossesYml = File(plugin.dataFolder, "ecobosses.yml").readConfig(ConfigType.YAML)
for (bossConfig in ecoBossesYml.getSubsections("bosses")) {
// Boss configs are separator ambivalent in order to preserve backwards compatibility
addNewBoss(EcoBoss(bossConfig.getString("id"), bossConfig.separatorAmbivalent(), plugin))
}
} }
/** override fun acceptConfig(plugin: LibreforgePlugin, id: String, config: Config) {
* Add new [EcoBoss] to EcoBosses. registry.register(EcoBoss(id, config, plugin as EcoBossesPlugin))
*
* @param set The [EcoBoss] to add.
*/
@JvmStatic
fun addNewBoss(set: EcoBoss) {
BY_ID.remove(set.id)
BY_ID[set.id] = set
}
/**
* Remove [EcoBoss] from EcoBosses.
*
* @param set The [EcoBoss] to remove.
*/
@JvmStatic
fun removeBoss(set: EcoBoss) {
BY_ID.remove(set.id)
} }
/** /**

View File

@@ -17,6 +17,7 @@ import com.willfp.eco.core.items.builder.ItemStackBuilder
import com.willfp.eco.core.recipe.Recipes import com.willfp.eco.core.recipe.Recipes
import com.willfp.eco.core.recipe.parts.EmptyTestableItem import com.willfp.eco.core.recipe.parts.EmptyTestableItem
import com.willfp.eco.core.recipe.recipes.CraftingRecipe import com.willfp.eco.core.recipe.recipes.CraftingRecipe
import com.willfp.eco.core.registry.Registrable
import com.willfp.eco.util.NamespacedKeyUtils import com.willfp.eco.util.NamespacedKeyUtils
import com.willfp.eco.util.toComponent import com.willfp.eco.util.toComponent
import com.willfp.ecobosses.events.BossKillEvent import com.willfp.ecobosses.events.BossKillEvent
@@ -38,6 +39,7 @@ import com.willfp.ecobosses.util.SpawnTotem
import com.willfp.ecobosses.util.XpReward import com.willfp.ecobosses.util.XpReward
import com.willfp.ecobosses.util.topDamagers import com.willfp.ecobosses.util.topDamagers
import com.willfp.libreforge.Holder import com.willfp.libreforge.Holder
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 net.kyori.adventure.bossbar.BossBar import net.kyori.adventure.bossbar.BossBar
@@ -53,10 +55,12 @@ import java.util.Objects
import java.util.UUID import java.util.UUID
class EcoBoss( class EcoBoss(
override val id: String, id: String,
val config: Config, val config: Config,
private val plugin: EcoPlugin private val plugin: EcoPlugin
) : Holder { ) : Holder, Registrable {
override val id = plugin.createNamespacedKey(id)
val displayName: String = config.getString("display-name") val displayName: String = config.getString("display-name")
val lifespan = config.getInt("lifespan") val lifespan = config.getInt("lifespan")
@@ -138,7 +142,7 @@ class EcoBoss(
val recipe = Recipes.createAndRegisterRecipe( val recipe = Recipes.createAndRegisterRecipe(
this@EcoBoss.plugin, this@EcoBoss.plugin,
"${this.id}_spawn_egg", "${this.id.key}_spawn_egg",
spawnEggBacker, spawnEggBacker,
config.getStrings("spawn.egg.recipe") config.getStrings("spawn.egg.recipe")
) )
@@ -192,9 +196,10 @@ class EcoBoss(
ConfiguredGoal(it.getInt("priority"), goal) ConfiguredGoal(it.getInt("priority"), goal)
} }
val spawnConditions = config.getSubsections("spawn.conditions").mapNotNull { val spawnConditions = Conditions.compile(
Conditions.compile(it, "$id Spawn Conditions") config.getSubsections("spawn.conditions"),
} ViolationContext(plugin, "$id Spawn Conditions")
)
private val bossBarColor = BossBar.Color.valueOf(config.getString("boss-bar.color").uppercase()) private val bossBarColor = BossBar.Color.valueOf(config.getString("boss-bar.color").uppercase())
@@ -307,12 +312,12 @@ class EcoBoss(
override val conditions = Conditions.compile( override val conditions = Conditions.compile(
config.getSubsections("conditions"), config.getSubsections("conditions"),
"Boss ID $id" ViolationContext(plugin, "Boss ID $id")
) )
override val effects = Effects.compile( override val effects = Effects.compile(
config.getSubsections("effects"), config.getSubsections("effects"),
"Boss ID $id" ViolationContext(plugin, "Boss ID $id")
) )
fun markDead(uuid: UUID) { fun markDead(uuid: UUID) {
@@ -339,7 +344,7 @@ class EcoBoss(
mob.persistentDataContainer.set( mob.persistentDataContainer.set(
plugin.namespacedKeyFactory.create("boss"), plugin.namespacedKeyFactory.create("boss"),
PersistentDataType.STRING, PersistentDataType.STRING,
this.id this.id.key
) )
if (hasCustomAI) { if (hasCustomAI) {
@@ -470,6 +475,10 @@ class EcoBoss(
) )
} }
override fun getID(): String {
return this.id.key
}
override fun equals(other: Any?): Boolean { override fun equals(other: Any?): Boolean {
if (other !is EcoBoss) { if (other !is EcoBoss) {
return false return false

View File

@@ -5,6 +5,7 @@ import com.willfp.eco.core.display.Display
import com.willfp.eco.core.display.DisplayModule import com.willfp.eco.core.display.DisplayModule
import com.willfp.eco.core.display.DisplayPriority import com.willfp.eco.core.display.DisplayPriority
import com.willfp.eco.core.fast.fast import com.willfp.eco.core.fast.fast
import com.willfp.libreforge.SimpleProvidedHolder
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
@@ -26,8 +27,8 @@ class EggDisplay(
val egg = itemStack.bossEgg ?: return val egg = itemStack.bossEgg ?: return
val lines = egg.spawnConditions val lines = egg.spawnConditions
.filterNot { it.isMet(player) } .filterNot { it.isMet(player, SimpleProvidedHolder(egg)) }
.mapNotNull { it.notMetLines?.map { line -> Display.PREFIX + line } } .map { it.notMetLines.map { line -> Display.PREFIX + line } }
.flatten() .flatten()

View File

@@ -2,13 +2,9 @@ package com.willfp.ecobosses.commands
import com.willfp.eco.core.command.impl.PluginCommand import com.willfp.eco.core.command.impl.PluginCommand
import com.willfp.ecobosses.EcoBossesPlugin import com.willfp.ecobosses.EcoBossesPlugin
import com.willfp.ecobosses.bosses.Bosses
import com.willfp.libreforge.lrcdb.CommandExport
import com.willfp.libreforge.lrcdb.CommandImport
import com.willfp.libreforge.lrcdb.ExportableConfig
import org.bukkit.command.CommandSender import org.bukkit.command.CommandSender
class CommandEcobosses(plugin: EcoBossesPlugin) : PluginCommand( class CommandEcoBosses(plugin: EcoBossesPlugin) : PluginCommand(
plugin, plugin,
"ecobosses", "ecobosses",
"ecobosses.command.ecobosses", "ecobosses.command.ecobosses",
@@ -26,14 +22,5 @@ class CommandEcobosses(plugin: EcoBossesPlugin) : PluginCommand(
.addSubcommand(CommandKillall(plugin)) .addSubcommand(CommandKillall(plugin))
.addSubcommand(CommandSpawn(plugin)) .addSubcommand(CommandSpawn(plugin))
.addSubcommand(CommandGive(plugin)) .addSubcommand(CommandGive(plugin))
.addSubcommand(CommandImport("bosses", plugin))
.addSubcommand(CommandExport(plugin) {
Bosses.values().map {
ExportableConfig(
it.id,
it.config
)
}
})
} }
} }

View File

@@ -47,7 +47,7 @@ class CommandGive(plugin: EcoPlugin) : Subcommand(
} }
var message = plugin.langYml.getMessage("give-success") var message = plugin.langYml.getMessage("give-success")
message = message.replace("%boss%", boss.id).replace("%recipient%", reciever.name) message = message.replace("%boss%", boss.id.key).replace("%recipient%", reciever.name)
sender.sendMessage(message) sender.sendMessage(message)
val itemStack = boss.spawnEgg!! val itemStack = boss.spawnEgg!!
@@ -94,7 +94,7 @@ class CommandGive(plugin: EcoPlugin) : Subcommand(
* The cached names. * The cached names.
*/ */
private val BOSS_NAMES: List<String> private val BOSS_NAMES: List<String>
get() = Bosses.values().map { it.id } get() = Bosses.values().map { it.id.key }
/** /**

View File

@@ -166,7 +166,7 @@ class CommandSpawn(plugin: EcoBossesPlugin) : Subcommand(
* The cached names. * The cached names.
*/ */
private val BOSS_NAMES: List<String> private val BOSS_NAMES: List<String>
get() = Bosses.values().map { it.id } get() = Bosses.values().map { it.id.key }
/** /**
* The cached numbers. * The cached numbers.

View File

@@ -0,0 +1,28 @@
package com.willfp.ecobosses.libreforge
import com.willfp.ecobosses.bosses.Bosses
import com.willfp.ecobosses.bosses.EcoBoss
import com.willfp.ecobosses.events.BossTryDropItemEvent
import com.willfp.libreforge.effects.templates.MultiMultiplierEffect
import org.bukkit.event.EventHandler
object EffectBossDropChanceMultiplier : MultiMultiplierEffect<EcoBoss>("boss_drop_chance_multiplier") {
override val key = "bosses"
override fun getElement(key: String): EcoBoss? {
return Bosses.getByID(key)
}
override fun getAllElements(): Collection<EcoBoss> {
return Bosses.values()
}
@EventHandler(ignoreCancelled = true)
fun handle(event: BossTryDropItemEvent) {
val player = event.player ?: return
val multiplier = getMultiplier(player, event.boss)
event.chance *= multiplier
}
}

View File

@@ -0,0 +1,24 @@
package com.willfp.ecobosses.libreforge
import com.willfp.eco.core.config.interfaces.Config
import com.willfp.ecobosses.events.BossSpawnEvent
import com.willfp.libreforge.NoCompileData
import com.willfp.libreforge.getProvider
import com.willfp.libreforge.mutators.Mutator
import com.willfp.libreforge.triggers.Trigger
import com.willfp.libreforge.triggers.TriggerData
import com.willfp.libreforge.triggers.TriggerParameter
import org.bukkit.entity.Entity
import org.bukkit.entity.LivingEntity
import org.bukkit.event.EventHandler
object MutatorLocationToBoss : Mutator<NoCompileData>("location_to_boss") {
override fun mutate(data: TriggerData, config: Config, compileData: NoCompileData): TriggerData {
val entity = data.holder.getProvider<LivingEntity>() ?: return data
val location = entity.location
return data.copy(
location = location
)
}
}

View File

@@ -0,0 +1,32 @@
package com.willfp.ecobosses.libreforge
import com.willfp.ecobosses.events.BossKillEvent
import com.willfp.libreforge.triggers.Trigger
import com.willfp.libreforge.triggers.TriggerData
import com.willfp.libreforge.triggers.TriggerParameter
import org.bukkit.attribute.Attribute
import org.bukkit.event.EventHandler
object TriggerKillBoss : Trigger("kill_boss") {
override val parameters = setOf(
TriggerParameter.PLAYER,
TriggerParameter.VICTIM,
TriggerParameter.LOCATION
)
@EventHandler(ignoreCancelled = true)
fun handle(event: BossKillEvent) {
val killer = event.killer ?: return
val entity = event.boss.entity
this.dispatch(
killer,
TriggerData(
player = killer,
victim = entity,
location = entity.location,
value = entity.getAttribute(Attribute.GENERIC_MAX_HEALTH)!!.value
)
)
}
}

View File

@@ -0,0 +1,28 @@
package com.willfp.ecobosses.libreforge
import com.willfp.ecobosses.events.BossSpawnEvent
import com.willfp.libreforge.triggers.Trigger
import com.willfp.libreforge.triggers.TriggerData
import com.willfp.libreforge.triggers.TriggerParameter
import org.bukkit.event.EventHandler
object TriggerSpawnBoss : Trigger("spawn_boss") {
override val parameters = setOf(
TriggerParameter.PLAYER,
TriggerParameter.LOCATION
)
@EventHandler(ignoreCancelled = true)
fun handle(event: BossSpawnEvent) {
val player = event.spawner ?: return
val location = event.location
this.dispatch(
player,
TriggerData(
player = player,
location = location
)
)
}
}

View File

@@ -1,15 +1,15 @@
package com.willfp.ecobosses.lifecycle package com.willfp.ecobosses.lifecycle
import com.willfp.eco.core.EcoPlugin
import com.willfp.ecobosses.events.BossDespawnEvent import com.willfp.ecobosses.events.BossDespawnEvent
import com.willfp.ecobosses.events.BossKillEvent import com.willfp.ecobosses.events.BossKillEvent
import com.willfp.ecobosses.events.BossSpawnEvent import com.willfp.ecobosses.events.BossSpawnEvent
import com.willfp.libreforge.LibReforgePlugin
import org.bukkit.event.EventHandler import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority import org.bukkit.event.EventPriority
import org.bukkit.event.Listener import org.bukkit.event.Listener
class ConsoleLoggers( class ConsoleLoggers(
private val plugin: LibReforgePlugin private val plugin: EcoPlugin
) : Listener { ) : Listener {
@EventHandler( @EventHandler(
ignoreCancelled = true, ignoreCancelled = true,

View File

@@ -3,7 +3,7 @@ package com.willfp.ecobosses.spawn
import com.willfp.ecobosses.EcoBossesPlugin import com.willfp.ecobosses.EcoBossesPlugin
import com.willfp.ecobosses.bosses.bossEgg import com.willfp.ecobosses.bosses.bossEgg
import com.willfp.ecobosses.events.BossSpawnEvent import com.willfp.ecobosses.events.BossSpawnEvent
import com.willfp.libreforge.conditions.isMet import com.willfp.libreforge.SimpleProvidedHolder
import org.bukkit.Bukkit import org.bukkit.Bukkit
import org.bukkit.Location import org.bukkit.Location
import org.bukkit.block.Container import org.bukkit.block.Container
@@ -79,7 +79,7 @@ class SpawnEggHandler(
} }
if (player != null) { if (player != null) {
if (!boss.spawnConditions.isMet(player)) { if (!boss.spawnConditions.areMet(player, SimpleProvidedHolder(boss))) {
return false return false
} }
} }

View File

@@ -4,6 +4,7 @@ import com.willfp.eco.util.containsIgnoreCase
import com.willfp.ecobosses.bosses.Bosses import com.willfp.ecobosses.bosses.Bosses
import com.willfp.ecobosses.events.BossSpawnEvent import com.willfp.ecobosses.events.BossSpawnEvent
import com.willfp.ecobosses.util.SpawnTotem import com.willfp.ecobosses.util.SpawnTotem
import com.willfp.libreforge.SimpleProvidedHolder
import org.bukkit.Bukkit import org.bukkit.Bukkit
import org.bukkit.Material import org.bukkit.Material
import org.bukkit.block.Block import org.bukkit.block.Block
@@ -28,11 +29,13 @@ class SpawnTotemHandler : Listener {
middle = event.block.getRelative(0, -1, 0) middle = event.block.getRelative(0, -1, 0)
bottom = event.block.getRelative(0, -2, 0) bottom = event.block.getRelative(0, -2, 0)
} }
1 -> { 1 -> {
top = event.block.getRelative(0, 2, 0) top = event.block.getRelative(0, 2, 0)
middle = event.block.getRelative(0, 1, 0) middle = event.block.getRelative(0, 1, 0)
bottom = event.block bottom = event.block
} }
2 -> { 2 -> {
top = event.block.getRelative(0, 1, 0) top = event.block.getRelative(0, 1, 0)
middle = event.block middle = event.block
@@ -52,7 +55,7 @@ class SpawnTotemHandler : Listener {
val player = event.player val player = event.player
if (!boss.spawnConditions.all { it.condition.isConditionMet(player, it.config) }) { if (!boss.spawnConditions.areMet(player, SimpleProvidedHolder(boss))) {
return return
} }

View File

@@ -14,6 +14,7 @@ class BossBarTicker(
override fun tick(boss: LivingEcoBoss, tick: Int) { override fun tick(boss: LivingEcoBoss, tick: Int) {
val entity = boss.entity val entity = boss.entity
@Suppress("DEPRECATION")
bar.name(entity.customName!!.toComponent()) bar.name(entity.customName!!.toComponent())
bar.progress((entity.health / entity.getAttribute(Attribute.GENERIC_MAX_HEALTH)!!.value).toFloat()) bar.progress((entity.health / entity.getAttribute(Attribute.GENERIC_MAX_HEALTH)!!.value).toFloat())

View File

@@ -15,6 +15,7 @@ class DisplayNameTicker : BossTicker {
val formattedTime = String.format("%d:%02d", timeLeft / 60, timeLeft % 60) val formattedTime = String.format("%d:%02d", timeLeft / 60, timeLeft % 60)
@Suppress("DEPRECATION")
entity.customName = boss.boss.displayName entity.customName = boss.boss.displayName
.replace("%health%", NumberUtils.format(entity.health)) .replace("%health%", NumberUtils.format(entity.health))
.replace("%time%", formattedTime) .replace("%time%", formattedTime)

View File

@@ -14,11 +14,6 @@ class LifespanTicker : BossTicker {
Bukkit.getPluginManager().callEvent(event) Bukkit.getPluginManager().callEvent(event)
boss.remove() boss.remove()
boss.boss.handleLifecycle(
BossLifecycle.DESPAWN,
boss.entity.location,
boss.entity
)
} }
} }
} }

View File

@@ -0,0 +1,24 @@
package com.willfp.ecobosses.util
import com.willfp.libreforge.Holder
import com.willfp.libreforge.ProvidedHolder
import org.bukkit.entity.LivingEntity
class EntityProvidedHolder(
override val holder: Holder,
override val provider: LivingEntity
) : ProvidedHolder {
override fun equals(other: Any?): Boolean {
if (other !is EntityProvidedHolder) {
return false
}
return other.holder == holder && other.provider == provider
}
override fun hashCode(): Int {
var result = holder.hashCode()
result = 31 * result + provider.hashCode()
return result
}
}

View File

@@ -38,6 +38,7 @@ data class LocalBroadcast(
if (radius < 0) { if (radius < 0) {
for (message in toBroadcast) { for (message in toBroadcast) {
@Suppress("DEPRECATION")
Bukkit.broadcastMessage(message) Bukkit.broadcastMessage(message)
} }
} else { } else {

View File

@@ -8,9 +8,8 @@
# View an explanation for this system here: https://plugins.auxilor.io/all-plugins/the-entity-lookup-system # View an explanation for this system here: https://plugins.auxilor.io/all-plugins/the-entity-lookup-system
mob: iron_golem attack-damage:90 movement-speed:1.5 follow-range:16 health:1200 mob: iron_golem attack-damage:90 movement-speed:1.5 follow-range:16 health:1200
# If you're using model engine, you can specify the ID and animation here. You can also specify these in the mob with the lookup system. # If you're using model engine, you can specify the ID here. You can also specify these in the mob with the lookup system.
model-engine-id: "" model-engine-id: ""
model-engine-animation: ""
# Supported placeholders: %health%, %time% (formats as minutes:seconds, eg 1:56) # Supported placeholders: %health%, %time% (formats as minutes:seconds, eg 1:56)
display-name: "&8Steel Golem &7| &c%health%♥ &7| &e%time%" display-name: "&8Steel Golem &7| &c%health%♥ &7| &e%time%"

View File

@@ -1,16 +0,0 @@
# Read more about chains: https://plugins.auxilor.io/effects/configuring-an-effect#effect-chains
chains:
- id: blind
effects:
- id: potion_effect
args:
effect: blindness
level: 3
duration: 30
apply_to_player: true
- id: play_sound
args:
sound: entity_dragon_fireball_explode
pitch: 1.5
volume: 4

View File

@@ -8,48 +8,3 @@ log-spawn-kill: true
autospawn: autospawn:
one-boss-per-world: true # If only one boss can auto-spawn per world at once. one-boss-per-world: true # If only one boss can auto-spawn per world at once.
cooldown:
in-actionbar: true
sound:
enabled: true
sound: "BLOCK_NOTE_BLOCK_PLING"
pitch: 0.5
cannot-afford:
in-actionbar: true
sound:
enabled: true
sound: "BLOCK_NOTE_BLOCK_PLING"
pitch: 0.5
cannot-afford-type:
in-actionbar: true
sound:
enabled: true
sound: "BLOCK_NOTE_BLOCK_PLING"
pitch: 0.5
cannot-afford-price:
in-actionbar: true
sound:
enabled: true
sound: "BLOCK_NOTE_BLOCK_PLING"
pitch: 0.5
point-names: # If you have point names that look ugly (e.g. souls) then you can map them to nice names to be shown to players.
example_point: "Nicely Formatted Point"
use-faster-move-trigger: true # Disable if you want move trigger to detect sub-1-block movements
raytrace-distance: 80 # The distance that alt_click should check for a location
potions:
icon:
permanent: true
triggered: true
ambient:
permanent: false
triggered: true
particles:
permanent: false
triggered: true

View File

@@ -1,3 +1,8 @@
resource-id: 525 environment:
bstats-id: 10635 - name: libreforge version
color: "&9" value: ${libreforgeVersion}
options:
resource-id: 525
bstats-id: 10635
color: "&9"

View File

@@ -4,18 +4,6 @@ messages:
not-player: "&cThis command must be run by a player" not-player: "&cThis command must be run by a player"
invalid-command: "&cUnknown subcommand!" invalid-command: "&cUnknown subcommand!"
reloaded: "Reloaded!" reloaded: "Reloaded!"
cannot-afford: "&cYou can't afford to do this! &fCost: &a$$%cost%"
cannot-afford-type: "&cYou can't afford to do this! &fCost: &a%cost% %type%"
cannot-afford-price: "&cYou can't afford to do this! &fPrice: %price%"
on-cooldown: "&cThis effect is on cooldown! &fTime left: &a%seconds% seconds"
cannot-transmit: "&cYou can't transmit here!"
must-specify-lrcdb-id: "&cYou must specify the ID of the config to download! Not sure what this means? Go to &alrcdb.auxilor.io"
lrcdb-import-error: "&cError importing config: &f%message%"
lrcdb-import-success: "&fImported &a%name%&f! Reload the plugin to install it"
must-specify-config-name: "&cYou must specify the config name!"
invalid-config-name: "&cInvalid config name!"
lrcdb-export-error: "&cError exporting config: &f%message%"
lrcdb-export-success: "&fExported &a%name%&f! View it on &alrcdb.auxilor.io&f, or share your config ID: &f%id%"
sent-drop: "Check console for the drop!" sent-drop: "Check console for the drop!"
specify-boss: "&cYou must specify a valid boss!" specify-boss: "&cYou must specify a valid boss!"

View File

@@ -1,19 +0,0 @@
# Options for lrcdb (https://lrcdb.auxilor.io), a website to share configs
# with other server owners, so you can get more configs without making them
# yourself!
author: "Unknown Author" # The name attached to configs you export
# Options about automatically sharing configs you create
share-configs:
# If you want all your configs to automatically be publicly available,
# set this to true. This really helps out other users!
publicly: false
# If you don't want your configs to be usable to gather information about
# plugin usage or to improve the plugins in the future, disable this.
# Nothing identifying is shared.
enabled: true
# If you disable share-configs, you can still share select configs publicly
# with /ecobosses export <config>.

View File

@@ -0,0 +1,53 @@
name: ${pluginName}
version: ${version}
main: com.willfp.ecobosses.EcoBossesPlugin
api-version: 1.19
dependencies:
- name: eco
required: true
bootstrap: false
- name: libreforge
required: false
bootstrap: false
load-after:
- name: eco
bootstrap: false
permissions:
ecobosses.*:
description: All ecobosses permissions
default: op
children:
ecobosses.command.*: true
ecobosses.command.*:
description: All ecobosses commands
default: op
children:
ecobosses.command.ecobosses: true
ecobosses.command.reload: true
ecobosses.command.spawn: true
ecobosses.command.give: true
ecobosses.command.ecobosses:
description: Allows the use of /ecobosses
default: true
ecobosses.command.give:
description: Allows the use of /ecobosses give
default: op
ecobosses.command.spawn:
description: Allows the use of /ecobosses spawn
default: op
ecobosses.command.killall:
description: Allows the use of /ecobosses killall
default: op
ecobosses.command.reload:
description: Allows the use of /ecobosses reload
default: op

View File

@@ -1,27 +1,15 @@
name: EcoBosses name: ${pluginName}
version: ${projectVersion} version: ${version}
main: com.willfp.ecobosses.EcoBossesPlugin main: com.willfp.ecobosses.EcoBossesPlugin
api-version: 1.17 api-version: 1.17
authors: [Auxilor] authors: [Auxilor]
website: willfp.com website: willfp.com
load: STARTUP
depend: depend:
- eco - eco
softdepend: softdepend:
- libreforge
- LevelledMobs - LevelledMobs
- AureliumSkills - AureliumSkills
- Jobs
- mcMMO
- Vault
- TMMobcoins
- EcoEnchants
- Talismans
- EcoArmor
- EcoItems
- EcoSkills
- Boosters
- ModelEngine
- EcoJobs
commands: commands:
ecobosses: ecobosses:
@@ -42,8 +30,6 @@ permissions:
ecobosses.command.reload: true ecobosses.command.reload: true
ecobosses.command.spawn: true ecobosses.command.spawn: true
ecobosses.command.give: true ecobosses.command.give: true
ecobosses.command.import: true
ecobosses.command.export: true
ecobosses.command.ecobosses: ecobosses.command.ecobosses:
description: Allows the use of /ecobosses description: Allows the use of /ecobosses
@@ -64,11 +50,3 @@ permissions:
ecobosses.command.reload: ecobosses.command.reload:
description: Allows the use of /ecobosses reload description: Allows the use of /ecobosses reload
default: op default: op
ecobosses.command.import:
description: Allows the use of /ecobosses import
default: op
ecobosses.command.export:
description: Allows the use of /ecobosses export
default: op

View File

@@ -1,4 +1,5 @@
#libreforge-updater #libreforge-updater
#Fri Dec 09 17:01:53 GMT 2022 #Wed Jul 12 13:07:51 BST 2023
version=8.112.0 kotlin.code.style=official
plugin-name=EcoBosses libreforge-version=4.22.1
version=9.21.1

Binary file not shown.

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-7.5.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View File

@@ -1,12 +0,0 @@
pluginManagement {
repositories {
gradlePluginPortal()
maven { url "https://repo.jpenilla.xyz/snapshots/" }
}
}
rootProject.name = 'EcoBosses'
// Core
include ':eco-core'
include ':eco-core:core-plugin'

14
settings.gradle.kts Normal file
View File

@@ -0,0 +1,14 @@
pluginManagement {
repositories {
gradlePluginPortal()
mavenLocal()
maven("https://repo.jpenilla.xyz/snapshots/")
maven("https://repo.auxilor.io/repository/maven-public/")
}
}
rootProject.name = "EcoBosses"
// Core
include(":eco-core")
include(":eco-core:core-plugin")