Compare commits

..

No commits in common. "b3ca648be58960a4d191840a344ad2e38b3c381e" and "cb99fbe7493a6804f6d03a79710b0ef8ecfa0ee1" have entirely different histories.

6 changed files with 13 additions and 47 deletions

View File

@ -112,9 +112,6 @@ private fun sounds(provider: MatteryLanguageProvider) {
sound("rifle_shot", "Plasma rifle fires")
sound("plasma_weapon_overheat", "Plasma weapon overheats")
sound("player_become_android", "Player became android")
sound("projectile_parry", "Projectile parried")
sound("jump_boost", "Jump boost")
sound("shockwave", "Landing shockwave")
sound(MSoundEvents.CARGO_CRATE_OPEN, "Cargo crate opened")
}

View File

@ -121,9 +121,6 @@ private fun sounds(provider: MatteryLanguageProvider) {
sound("rifle_shot", "Выстрел плазменной винтовки")
sound("plasma_weapon_overheat", "Плазменное оружие перегрелось")
sound("player_become_android", "Игрок превратился в андроида")
sound("projectile_parry", "Снаряд парирован")
sound("jump_boost", "Усиленный прыжок")
sound("shockwave", "Ударная волна от приземления")
sound(MSoundEvents.CARGO_CRATE_OPEN, "Открыт грузовой ящик")
}

View File

@ -35,7 +35,6 @@ import ru.dbotthepony.mc.otm.storage.*
import java.math.BigInteger
import java.util.*
import java.util.function.Consumer
import java.util.function.Supplier
import java.util.stream.Stream
private data class SlotTuple(val slot: Int, val stack: ItemStack)
@ -131,7 +130,7 @@ class StorageBusBlockEntity(blockPos: BlockPos, blockState: BlockState) : Matter
}
init {
savetables.codec(::filter, ItemFilter.CODEC, FILTER_KEY, Supplier { ItemFilter(MAX_FILTERS) })
savetables.codec(::filter, ItemFilter.CODEC, FILTER_KEY)
}
override fun setLevel(level: Level) {

View File

@ -38,7 +38,6 @@ import ru.dbotthepony.mc.otm.storage.ItemStorageStack
import ru.dbotthepony.mc.otm.storage.StorageStack
import java.math.BigInteger
import java.util.*
import java.util.function.Supplier
abstract class AbstractStorageImportExport(
blockType: BlockEntityType<*>,
@ -112,7 +111,7 @@ abstract class AbstractStorageImportExport(
}
init {
savetables.codec(::filter, ItemFilter.CODEC, FILTER_KEY, Supplier { ItemFilter(MAX_FILTERS) })
savetables.codec(::filter, ItemFilter.CODEC, FILTER_KEY)
}
companion object {

View File

@ -24,7 +24,6 @@ import ru.dbotthepony.mc.otm.core.math.Decimal
import ru.dbotthepony.mc.otm.core.math.Vector
import ru.dbotthepony.mc.otm.core.nbt.set
import java.util.function.Supplier
import kotlin.jvm.optionals.getOrNull
import kotlin.reflect.KMutableProperty0
import kotlin.reflect.KProperty0
@ -175,8 +174,8 @@ class Savetables : INBTSerializable<CompoundTag?> {
fun <T : Any> codecNullable(prop: Delegate<T?>, codec: Codec<T>, name: String): Stateless<T?, Tag> {
return Stateless(prop, name, Tag::class.java)
.withSerializer { prop.get()?.let { codec.encode(it, NbtOps.INSTANCE, NbtOps.INSTANCE.empty()).getOrThrow { throw IllegalStateException("Failed to write save data for '$name': $it") } } }
.withDeserializer { codec.decode(NbtOps.INSTANCE, it).resultOrPartial { throw IllegalStateException("Failed to read save data for '$name'", RuntimeException(it)) }.getOrNull()?.first }
.withSerializer { prop.get()?.let { codec.encode(it, NbtOps.INSTANCE, NbtOps.INSTANCE.empty()).getOrThrow() { throw IllegalStateException("Failed to write NBT data for $name: $it") } } }
.withDeserializer { codec.decode(NbtOps.INSTANCE, it).getOrThrow() { throw IllegalStateException("Failed to read NBT data for $name: $it") }.first }
}
fun <T : Any> codecNullable(prop: KMutableProperty0<T?>, codec: Codec<T>, name: String = prop.name): Stateless<T?, Tag> {
@ -185,8 +184,8 @@ class Savetables : INBTSerializable<CompoundTag?> {
fun <T : Any> codecNullable(prop: Delegate<T?>, codec: Codec<T>, name: String, default: T?): Stateless<T?, Tag> {
return Stateless(prop, name, Tag::class.java)
.withSerializer { prop.get()?.let { codec.encode(it, NbtOps.INSTANCE, NbtOps.INSTANCE.empty()).getOrThrow { throw IllegalStateException("Failed to write save data for '$name': $it") } } }
.withDeserializer { codec.decode(NbtOps.INSTANCE, it).resultOrPartial { LOGGER.error("Failed to read save data for '$name'", RuntimeException(it)) }.map { it.first }.orElse(default) }
.withSerializer { prop.get()?.let { codec.encode(it, NbtOps.INSTANCE, NbtOps.INSTANCE.empty()).getOrThrow { throw IllegalStateException("Failed to write NBT data for $name: $it") } } }
.withDeserializer { codec.decode(NbtOps.INSTANCE, it).mapOrElse({ it.first }, { LOGGER.error("Failed to read NBT data for $name", RuntimeException(it.message())); default }) }
.withDefault { default }
}
@ -196,28 +195,15 @@ class Savetables : INBTSerializable<CompoundTag?> {
fun <T : Any> codec(prop: Delegate<T>, codec: Codec<T>, name: String): Stateless<T, Tag> {
return Stateless(prop, name, Tag::class.java)
.withSerializer { codec.encode(prop.get(), NbtOps.INSTANCE, NbtOps.INSTANCE.empty()).getOrThrow { throw IllegalStateException("Failed to write save data for '$name': $it") } }
.withDeserializer {
codec.decode(NbtOps.INSTANCE, it).let { res ->
res
.resultOrPartial { LOGGER.error("Failed to read save data for '$name'", RuntimeException(it)) }
.map { it.first }
.orElseThrow { throw RuntimeException("Failed to read save data for '$name': ${res.error().get().message()}") }
}
}
.withSerializer { codec.encode(prop.get(), NbtOps.INSTANCE, NbtOps.INSTANCE.empty()).getOrThrow { throw IllegalStateException("Failed to write NBT data for $name: $it") } }
.withDeserializer { codec.decode(NbtOps.INSTANCE, it).getOrThrow() { throw IllegalStateException("Failed to read NBT data for $name: $it") }.first }
}
fun <T : Any> codec(prop: Delegate<T>, codec: Codec<T>, name: String, default: Supplier<T>): Stateless<T, Tag> {
fun <T : Any> codec(prop: Delegate<T>, codec: Codec<T>, name: String, default: T): Stateless<T, Tag> {
return Stateless(prop, name, Tag::class.java)
.withSerializer { codec.encode(prop.get(), NbtOps.INSTANCE, NbtOps.INSTANCE.empty()).getOrThrow { throw IllegalStateException("Failed to write save data for '$name': $it") } }
.withDeserializer {
codec
.decode(NbtOps.INSTANCE, it)
.resultOrPartial { LOGGER.error("Failed to read save data for '$name'", RuntimeException(it)) }
.map { it.first }
.orElseGet(default)
}
.withDefault { default.get() }
.withSerializer { codec.encode(prop.get(), NbtOps.INSTANCE, NbtOps.INSTANCE.empty()).getOrThrow { throw IllegalStateException("Failed to write NBT data for $name: $it") } }
.withDeserializer { codec.decode(NbtOps.INSTANCE, it).mapOrElse({ it.first }, { LOGGER.error("Failed to read NBT data for $name", RuntimeException(it.message())); default }) }
.withDefault { default }
}
fun <T : Any> codec(prop: KMutableProperty0<T>, codec: Codec<T>, name: String = prop.name): Stateless<T, Tag> {
@ -225,22 +211,10 @@ class Savetables : INBTSerializable<CompoundTag?> {
}
fun <T : Any> codec(prop: KMutableProperty0<T>, codec: Codec<T>, name: String = prop.name, default: T): Stateless<T, Tag> {
return codec(Delegate.Of(prop), codec, name, Supplier { default })
}
fun <T : Any> codec(prop: KMutableProperty0<T>, codec: Codec<T>, name: String = prop.name, default: Supplier<T>): Stateless<T, Tag> {
return codec(Delegate.Of(prop), codec, name, default)
}
fun <T : Any> codec(prop: KMutableProperty0<T>, codec: Codec<T>, default: Supplier<T>): Stateless<T, Tag> {
return codec(Delegate.Of(prop), codec, prop.name, default)
}
fun vector(prop: Delegate<Vector>, name: String, default: Vector = Vector.ZERO): Stateless<Vector, Tag> {
return codec(prop, Vector.CODEC, name, Supplier { default })
}
fun vector(prop: Delegate<Vector>, name: String, default: Supplier<Vector>): Stateless<Vector, Tag> {
return codec(prop, Vector.CODEC, name, default)
}

View File

@ -1,5 +1,5 @@
{
"loader": "neoforge:composite",
"loader": "forge:composite",
"parts": {
"body": {
"parent": "overdrive_that_matters:block/energy_servo_body",