root.materialMiningSound root.materialFootstepSound

This commit is contained in:
DBotThePony 2023-04-10 19:01:53 +07:00
parent 3a29b49bf6
commit b311c8516b
Signed by: DBot
GPG Key ID: DCC23B5715498507
3 changed files with 35 additions and 4 deletions

View File

@ -72,7 +72,6 @@ import ru.dbotthepony.kstarbound.util.ITimeSource
import ru.dbotthepony.kstarbound.util.ItemStack
import ru.dbotthepony.kstarbound.util.JVMTimeSource
import ru.dbotthepony.kstarbound.util.PathStack
import ru.dbotthepony.kstarbound.util.PausableTimeSource
import ru.dbotthepony.kstarbound.util.SBPattern
import ru.dbotthepony.kstarbound.util.WriteOnce
import ru.dbotthepony.kstarbound.util.filterNotNull
@ -90,10 +89,8 @@ import java.util.function.BinaryOperator
import java.util.function.Function
import java.util.function.Supplier
import java.util.stream.Collector
import kotlin.NoSuchElementException
import kotlin.collections.ArrayList
import kotlin.random.Random
import kotlin.random.nextInt
class Starbound : ISBFileLocator {
private val logger = LogManager.getLogger()
@ -645,6 +642,36 @@ class Starbound : ISBFileLocator {
1
}
state.setTableFunction("materialMiningSound", this) { args ->
val name = args.getString()
val mod = if (args.hasSomethingAt()) args.getString() else null
val mat = tiles[name] ?: throw NoSuchElementException("No such material $name")
if (mod == null) {
args.push(mat.value.miningSounds.firstOrNull())
} else {
val getMod = tileModifiers[mod] ?: throw NoSuchElementException("No such material modifier $mod")
args.push(getMod.value.miningSounds.firstOrNull() ?: mat.value.miningSounds.firstOrNull())
}
1
}
state.setTableFunction("materialFootstepSound", this) { args ->
val name = args.getString()
val mod = if (args.hasSomethingAt()) args.getString() else null
val mat = tiles[name] ?: throw NoSuchElementException("No such material $name")
if (mod == null) {
args.push(mat.value.footstepSound)
} else {
val getMod = tileModifiers[mod] ?: throw NoSuchElementException("No such material modifier $mod")
args.push(getMod.value.footstepSound ?: mat.value.footstepSound)
}
1
}
state.pop()
state.load(polyfill, "@starbound.jar!/scripts/polyfill.lua")

View File

@ -18,9 +18,11 @@ data class MaterialModifier(
val harvestLevel: Int = 0,
val breaksWithTile: Boolean = true,
val grass: Boolean = false,
val miningSounds: ImmutableList<String> = ImmutableList.of(),
val miningParticle: String? = null,
val footstepSound: String? = null,
val miningSounds: ImmutableList<String> = ImmutableList.of(),
@JsonPropertyConfig(isFlat = true)
val descriptionData: ThingDescription,

View File

@ -1,5 +1,6 @@
package ru.dbotthepony.kstarbound.defs.tile
import com.google.common.collect.ImmutableList
import com.google.gson.GsonBuilder
import ru.dbotthepony.kstarbound.defs.AssetReference
import ru.dbotthepony.kstarbound.defs.IThingWithDescription
@ -17,6 +18,7 @@ data class TileDefinition(
val particleColor: Color? = null,
val itemDrop: String? = null,
val footstepSound: String? = null,
val miningSounds: ImmutableList<String> = ImmutableList.of(),
val blocksLiquidFlow: Boolean = true,
val soil: Boolean = false,