Fixes, add levelup sound

This commit is contained in:
TomTom 2024-03-15 09:27:23 +01:00
parent fb2a999cc7
commit 61532f1087
6 changed files with 41 additions and 11 deletions

View File

@ -48,9 +48,11 @@ class Config(file: File, stream: InputStream) {
@JvmStatic
fun PLACE_PERMISSION() = AxMinionsAPI.INSTANCE.getConfig().get("place-permissions", false)
@JvmStatic
fun WORK_WHEN_OWNER_OFFLINE() = AxMinionsAPI.INSTANCE.getConfig().get<Boolean>("work-when-owner-offline", true)
fun WORK_WHEN_OWNER_OFFLINE() = AxMinionsAPI.INSTANCE.getConfig().get("work-when-owner-offline", true)
@JvmStatic
fun MAX_BREAKS_PER_TICK() = AxMinionsAPI.INSTANCE.getConfig().get<Int>("max-breaks-per-tick", 200)
fun MAX_BREAKS_PER_TICK() = AxMinionsAPI.INSTANCE.getConfig().get("max-breaks-per-tick", 200)
@JvmStatic
fun UPGRADE_SOUND() = AxMinionsAPI.INSTANCE.getConfig().get("upgrade-sound", "ENTITY_PLAYER_LEVELUP")
@JvmStatic
fun DEBUG(): Boolean {
if (debug === null) {

View File

@ -2,21 +2,32 @@ package com.artillexstudios.axminions.api.minions.miniontype
import com.artillexstudios.axapi.config.Config
import com.artillexstudios.axapi.libs.boostedyaml.boostedyaml.block.implementation.Section
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder
import com.artillexstudios.axapi.libs.boostedyaml.boostedyaml.settings.dumper.DumperSettings
import com.artillexstudios.axapi.libs.boostedyaml.boostedyaml.settings.general.GeneralSettings
import com.artillexstudios.axapi.libs.boostedyaml.boostedyaml.settings.loader.LoaderSettings
import com.artillexstudios.axapi.libs.boostedyaml.boostedyaml.settings.updater.UpdaterSettings
import com.artillexstudios.axapi.utils.ItemBuilder
import com.artillexstudios.axminions.api.AxMinionsAPI
import com.artillexstudios.axminions.api.minions.Minion
import com.artillexstudios.axminions.api.utils.Keys
import org.bukkit.inventory.ItemStack
import org.bukkit.persistence.PersistentDataType
import java.io.File
import java.io.InputStream
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder
import org.bukkit.inventory.ItemStack
import org.bukkit.persistence.PersistentDataType
abstract class MinionType(private val name: String, private val defaults: InputStream) {
private lateinit var config: Config
fun load() {
config = Config(File(AxMinionsAPI.INSTANCE.getAxMinionsDataFolder(), "/minions/$name.yml"), defaults)
config = Config(
File(AxMinionsAPI.INSTANCE.getAxMinionsDataFolder(), "/minions/$name.yml"),
defaults,
GeneralSettings.builder().setUseDefaults(false).build(),
LoaderSettings.DEFAULT,
DumperSettings.DEFAULT,
UpdaterSettings.DEFAULT
)
AxMinionsAPI.INSTANCE.getDataHandler().insertType(this)
}
@ -41,7 +52,11 @@ abstract class MinionType(private val name: String, private val defaults: InputS
}
fun getItem(level: Int = 1, actions: Long = 0): ItemStack {
val builder = ItemBuilder(config.getSection("item"), Placeholder.unparsed("level", level.toString()), Placeholder.unparsed("actions", actions.toString()))
val builder = ItemBuilder(
config.getSection("item"),
Placeholder.unparsed("level", level.toString()),
Placeholder.unparsed("actions", actions.toString())
)
builder.storePersistentData(Keys.MINION_TYPE, PersistentDataType.STRING, name)
builder.storePersistentData(Keys.LEVEL, PersistentDataType.INTEGER, level)
builder.storePersistentData(Keys.STATISTICS, PersistentDataType.LONG, actions)

View File

@ -14,6 +14,7 @@ import com.artillexstudios.axminions.api.utils.fastFor
import net.md_5.bungee.api.ChatMessageType
import net.md_5.bungee.api.chat.TextComponent
import org.bukkit.Material
import org.bukkit.Sound
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
@ -144,6 +145,10 @@ class MinionInventoryListener : Listener {
it.takeBalance(player, money)
}
if (Config.UPGRADE_SOUND().isNotBlank()) {
player.playSound(player, Config.UPGRADE_SOUND(), 1.0f, 1.0f)
}
minion.setLevel(minion.getLevel() + 1)
}

View File

@ -25,6 +25,8 @@ import com.artillexstudios.axminions.api.utils.fastFor
import com.artillexstudios.axminions.api.warnings.Warning
import com.artillexstudios.axminions.api.warnings.Warnings
import com.artillexstudios.axminions.listeners.LinkingListener
import java.text.NumberFormat
import java.util.Locale
import java.util.UUID
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder
import org.bukkit.Bukkit
@ -55,6 +57,9 @@ class Minion(
private val locationID: Int,
private var chestLocationId: Int
) : Minion {
companion object {
private val numberFormat = NumberFormat.getCompactNumberInstance(Locale.ENGLISH, NumberFormat.Style.SHORT)
}
private lateinit var entity: PacketArmorStand
private var nextAction = 0
private var range = 0.0
@ -250,7 +255,7 @@ class Minion(
this.level + 1
).toString()
)
val stored = Placeholder.parsed("storage", storage.toString())
val stored = Placeholder.parsed("storage", numberFormat.format(storage))
val actions = Placeholder.parsed("actions", actions.toString())
val multiplier = Placeholder.parsed("multiplier", type.getDouble("multiplier", this.level).toString())
val nextMultiplier = Placeholder.parsed(

View File

@ -7,8 +7,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock
import kotlin.concurrent.read
import kotlin.concurrent.write
import org.bukkit.Chunk
import org.bukkit.Location
object Minions {
internal val lock = ReentrantReadWriteLock()

View File

@ -50,6 +50,11 @@ max-breaks-per-tick: 200
# Possible options: chat, title, subtitle, actionbar
upgrade-fail: "chat"
# The sound played when you upgrade a minion
# set to "" to disable!
# For a list of sounds visit: https://jd.papermc.io/paper/1.20/org/bukkit/Sound.html
upgrade-sound: "ENTITY_PLAYER_LEVELUP"
database:
# Can be H2 (SqLite support is planned)
type: "H2"
@ -101,4 +106,4 @@ gui:
debug: false
# Do not change!
config-version: 5
config-version: 6