From 6fc26c869ae49dd01233b2d5b0205755be7e678f Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 19 Jan 2025 13:28:54 +0700 Subject: [PATCH] Move codecs to subpackage --- .../otm/android/AndroidResearchDescription.kt | 5 -- .../mc/otm/android/AndroidResearchResult.kt | 4 -- .../mc/otm/android/AndroidResearchType.kt | 3 +- .../dbotthepony/mc/otm/block/entity/Jobs.kt | 2 +- .../entity/decorative/GrillBlockEntity.kt | 2 +- .../matter/MatterDecomposerBlockEntity.kt | 6 +- .../matter/MatterEntanglerBlockEntity.kt | 5 +- .../matter/MatterRecyclerBlockEntity.kt | 5 +- .../matter/MatterReplicatorBlockEntity.kt | 5 +- .../mc/otm/container/MatteryContainer.kt | 2 +- .../mc/otm/core/chart/DecimalHistoryChart.kt | 2 +- .../mc/otm/data/DecimalProvider.kt | 1 + .../mc/otm/data/codec/CodecList.kt | 56 +++++++++++++++++++ .../mc/otm/data/{ => codec}/Codecs.kt | 4 +- .../otm/data/{ => codec}/ComparableCodec.kt | 14 +++-- .../mc/otm/data/{ => codec}/DecimalCodec.kt | 2 +- .../otm/data/{ => codec}/JsonElementCodec.kt | 2 +- .../PredicatedCodecList.kt} | 49 +--------------- .../mc/otm/data/{ => codec}/SingletonCodec.kt | 2 +- .../world/StandardDeviationHeightProvider.kt | 2 +- .../mc/otm/matter/ComputeAction.kt | 4 +- .../dbotthepony/mc/otm/matter/InsertAction.kt | 2 +- .../dbotthepony/mc/otm/matter/UpdateAction.kt | 4 +- .../menu/input/DecimalInputWithFeedback.kt | 2 +- .../mc/otm/recipe/MatterEntanglerRecipe.kt | 4 +- .../mc/otm/recipe/MatteryCookingRecipe.kt | 2 +- .../mc/otm/recipe/PainterRecipe.kt | 4 +- .../mc/otm/recipe/PlatePressRecipe.kt | 2 +- .../mc/otm/registry/MDataComponentTypes.kt | 3 +- .../mc/otm/registry/MLootItemConditions.kt | 14 +++-- .../otm/triggers/AndroidTravelUnderwater.kt | 2 +- .../mc/otm/triggers/HurtTrigger.kt | 2 +- .../mc/otm/triggers/KillAsAndroidTrigger.kt | 2 +- .../otm/worldgen/feature/BlackHolePlacer.kt | 2 +- 34 files changed, 112 insertions(+), 110 deletions(-) create mode 100644 src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/CodecList.kt rename src/main/kotlin/ru/dbotthepony/mc/otm/data/{ => codec}/Codecs.kt (95%) rename src/main/kotlin/ru/dbotthepony/mc/otm/data/{ => codec}/ComparableCodec.kt (80%) rename src/main/kotlin/ru/dbotthepony/mc/otm/data/{ => codec}/DecimalCodec.kt (98%) rename src/main/kotlin/ru/dbotthepony/mc/otm/data/{ => codec}/JsonElementCodec.kt (94%) rename src/main/kotlin/ru/dbotthepony/mc/otm/data/{CodecList.kt => codec/PredicatedCodecList.kt} (59%) rename src/main/kotlin/ru/dbotthepony/mc/otm/data/{ => codec}/SingletonCodec.kt (94%) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchDescription.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchDescription.kt index 44b450b0d..b34bbc302 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchDescription.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchDescription.kt @@ -1,6 +1,5 @@ package ru.dbotthepony.mc.otm.android -import com.mojang.datafixers.util.Either import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import com.mojang.serialization.codecs.RecordCodecBuilder @@ -8,16 +7,12 @@ import net.minecraft.ChatFormatting import net.minecraft.network.chat.Component import net.minecraft.network.chat.ComponentSerialization import net.neoforged.bus.api.IEventBus -import ru.dbotthepony.kommons.util.getValue import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.client.ShiftPressedCond import ru.dbotthepony.mc.otm.config.AndroidConfig import ru.dbotthepony.mc.otm.core.TextComponent import ru.dbotthepony.mc.otm.core.TranslatableComponent -import ru.dbotthepony.mc.otm.core.getValue import ru.dbotthepony.mc.otm.core.util.formatPower -import ru.dbotthepony.mc.otm.data.SingletonCodec -import ru.dbotthepony.mc.otm.data.simpleCodec import ru.dbotthepony.mc.otm.registry.MDeferredRegister import ru.dbotthepony.mc.otm.registry.RegistryDelegate diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchResult.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchResult.kt index 743ab4acd..00978c783 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchResult.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchResult.kt @@ -1,16 +1,12 @@ package ru.dbotthepony.mc.otm.android -import com.mojang.datafixers.util.Either import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import com.mojang.serialization.codecs.RecordCodecBuilder import net.minecraft.resources.ResourceLocation import net.neoforged.bus.api.IEventBus import org.apache.logging.log4j.LogManager -import ru.dbotthepony.kommons.util.getValue import ru.dbotthepony.mc.otm.OverdriveThatMatters -import ru.dbotthepony.mc.otm.core.getValue -import ru.dbotthepony.mc.otm.data.SingletonCodec import ru.dbotthepony.mc.otm.registry.AndroidFeatures import ru.dbotthepony.mc.otm.registry.MDeferredRegister import ru.dbotthepony.mc.otm.registry.MRegistry diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchType.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchType.kt index 2c87d3625..f7e2cc739 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchType.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchType.kt @@ -5,7 +5,6 @@ import com.google.gson.JsonObject import com.google.gson.JsonSyntaxException import com.mojang.datafixers.util.Either import com.mojang.serialization.Codec -import com.mojang.serialization.codecs.ListCodec import com.mojang.serialization.codecs.RecordCodecBuilder import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet import net.minecraft.core.registries.BuiltInRegistries @@ -24,7 +23,7 @@ import ru.dbotthepony.mc.otm.client.render.sprites.AbstractMatterySprite import ru.dbotthepony.mc.otm.client.render.sprites.SpriteType import ru.dbotthepony.mc.otm.core.collect.ListSet import ru.dbotthepony.mc.otm.core.TranslatableComponent -import ru.dbotthepony.mc.otm.data.JsonElementCodec +import ru.dbotthepony.mc.otm.data.codec.JsonElementCodec import ru.dbotthepony.mc.otm.isClient import java.util.Optional import java.util.function.Function diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/Jobs.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/Jobs.kt index a0a922ce6..1caa0e725 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/Jobs.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/Jobs.kt @@ -17,7 +17,7 @@ import ru.dbotthepony.mc.otm.core.math.weakEqualDoubles import ru.dbotthepony.mc.otm.core.math.weakGreaterThan import ru.dbotthepony.mc.otm.core.math.weakLessThan import ru.dbotthepony.mc.otm.core.nbt.set -import ru.dbotthepony.mc.otm.data.DecimalCodec +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec private fun isReason(status: Any?, reason: Any) = status == null || status == reason private val LOGGER = LogManager.getLogger() diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/GrillBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/GrillBlockEntity.kt index 606fa87fd..6957326a5 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/GrillBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/GrillBlockEntity.kt @@ -40,7 +40,7 @@ import ru.dbotthepony.mc.otm.core.math.component3 import ru.dbotthepony.mc.otm.core.nbt.set import ru.dbotthepony.mc.otm.core.set import ru.dbotthepony.mc.otm.core.util.countingLazy -import ru.dbotthepony.mc.otm.data.minRange +import ru.dbotthepony.mc.otm.data.codec.minRange import ru.dbotthepony.mc.otm.menu.decorative.GrillMenu import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.registry.MBlocks diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterDecomposerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterDecomposerBlockEntity.kt index d795408ca..3795b0711 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterDecomposerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterDecomposerBlockEntity.kt @@ -23,16 +23,14 @@ import ru.dbotthepony.mc.otm.capability.matter.ProfiledMatterStorage import ru.dbotthepony.mc.otm.config.MachinesConfig import ru.dbotthepony.mc.otm.container.HandlerFilter import ru.dbotthepony.mc.otm.container.MatteryContainer -import ru.dbotthepony.mc.otm.container.UpgradeContainer import ru.dbotthepony.mc.otm.core.math.Decimal -import ru.dbotthepony.mc.otm.data.DecimalCodec -import ru.dbotthepony.mc.otm.data.minRange +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec +import ru.dbotthepony.mc.otm.data.codec.minRange import ru.dbotthepony.mc.otm.graph.matter.SimpleMatterNode import ru.dbotthepony.mc.otm.matter.MatterManager import ru.dbotthepony.mc.otm.menu.matter.MatterDecomposerMenu import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.registry.MItems -import java.util.function.BooleanSupplier class MatterDecomposerBlockEntity(pos: BlockPos, state: BlockState) : MatteryWorkerBlockEntity(MBlockEntities.MATTER_DECOMPOSER, pos, state, DecomposerJob.CODEC) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterEntanglerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterEntanglerBlockEntity.kt index 5ecd55358..1f068f48f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterEntanglerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterEntanglerBlockEntity.kt @@ -27,10 +27,9 @@ import ru.dbotthepony.mc.otm.config.MachinesConfig import ru.dbotthepony.mc.otm.container.MatteryCraftingContainer import ru.dbotthepony.mc.otm.container.HandlerFilter import ru.dbotthepony.mc.otm.container.MatteryContainer -import ru.dbotthepony.mc.otm.container.UpgradeContainer import ru.dbotthepony.mc.otm.core.math.Decimal -import ru.dbotthepony.mc.otm.data.DecimalCodec -import ru.dbotthepony.mc.otm.data.minRange +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec +import ru.dbotthepony.mc.otm.data.codec.minRange import ru.dbotthepony.mc.otm.graph.matter.MatterNode import ru.dbotthepony.mc.otm.menu.matter.MatterEntanglerMenu import ru.dbotthepony.mc.otm.registry.MBlockEntities diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterRecyclerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterRecyclerBlockEntity.kt index 54f6479e1..225f1f247 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterRecyclerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterRecyclerBlockEntity.kt @@ -23,14 +23,13 @@ import ru.dbotthepony.mc.otm.capability.matter.ProfiledMatterStorage import ru.dbotthepony.mc.otm.config.MachinesConfig import ru.dbotthepony.mc.otm.container.MatteryContainer import ru.dbotthepony.mc.otm.container.HandlerFilter -import ru.dbotthepony.mc.otm.container.UpgradeContainer import ru.dbotthepony.mc.otm.core.math.Decimal import ru.dbotthepony.mc.otm.graph.matter.MatterGraph import ru.dbotthepony.mc.otm.item.matter.MatterDustItem import ru.dbotthepony.mc.otm.menu.matter.MatterRecyclerMenu import ru.dbotthepony.mc.otm.registry.MBlockEntities -import ru.dbotthepony.mc.otm.data.DecimalCodec -import ru.dbotthepony.mc.otm.data.minRange +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec +import ru.dbotthepony.mc.otm.data.codec.minRange import ru.dbotthepony.mc.otm.graph.matter.SimpleMatterNode class MatterRecyclerBlockEntity(blockPos: BlockPos, blockState: BlockState) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterReplicatorBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterReplicatorBlockEntity.kt index 69fd5f3e0..40d9fc6e8 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterReplicatorBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterReplicatorBlockEntity.kt @@ -27,10 +27,9 @@ import ru.dbotthepony.mc.otm.capability.matter.* import ru.dbotthepony.mc.otm.config.MachinesConfig import ru.dbotthepony.mc.otm.container.HandlerFilter import ru.dbotthepony.mc.otm.container.MatteryContainer -import ru.dbotthepony.mc.otm.container.UpgradeContainer import ru.dbotthepony.mc.otm.core.math.Decimal -import ru.dbotthepony.mc.otm.data.DecimalCodec -import ru.dbotthepony.mc.otm.data.minRange +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec +import ru.dbotthepony.mc.otm.data.codec.minRange import ru.dbotthepony.mc.otm.graph.matter.MatterNode import ru.dbotthepony.mc.otm.matter.MatterManager import ru.dbotthepony.mc.otm.menu.matter.MatterReplicatorMenu diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/MatteryContainer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/MatteryContainer.kt index a52001fe6..75c8a329b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/MatteryContainer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/MatteryContainer.kt @@ -32,7 +32,7 @@ import ru.dbotthepony.mc.otm.core.collect.map import ru.dbotthepony.mc.otm.core.collect.toList import ru.dbotthepony.mc.otm.core.immutableList import ru.dbotthepony.mc.otm.core.isNotEmpty -import ru.dbotthepony.mc.otm.data.minRange +import ru.dbotthepony.mc.otm.data.codec.minRange import ru.dbotthepony.mc.otm.network.StreamCodecs import ru.dbotthepony.mc.otm.network.syncher.ISynchable import ru.dbotthepony.mc.otm.network.syncher.SynchableObservedDelegate diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/chart/DecimalHistoryChart.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/chart/DecimalHistoryChart.kt index 66c350868..ef52060a5 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/chart/DecimalHistoryChart.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/chart/DecimalHistoryChart.kt @@ -4,7 +4,7 @@ import com.mojang.serialization.Codec import net.minecraft.network.RegistryFriendlyByteBuf import ru.dbotthepony.mc.otm.core.collect.reduce import ru.dbotthepony.mc.otm.core.math.Decimal -import ru.dbotthepony.mc.otm.data.DecimalCodec +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec import ru.dbotthepony.mc.otm.network.MatteryStreamCodec class DecimalHistoryChart : AbstractHistoryChart { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/DecimalProvider.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/DecimalProvider.kt index 442ae3f43..8cd19d0eb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/DecimalProvider.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/DecimalProvider.kt @@ -10,6 +10,7 @@ import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.core.ResourceLocation import ru.dbotthepony.mc.otm.core.math.Decimal import ru.dbotthepony.mc.otm.core.math.nextDecimal +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec import ru.dbotthepony.mc.otm.registry.MDeferredRegister import ru.dbotthepony.mc.otm.registry.RegistryDelegate diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/CodecList.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/CodecList.kt new file mode 100644 index 000000000..b65e731d5 --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/CodecList.kt @@ -0,0 +1,56 @@ +package ru.dbotthepony.mc.otm.data.codec + +import com.google.common.collect.ImmutableList +import com.mojang.datafixers.util.Pair +import com.mojang.serialization.Codec +import com.mojang.serialization.DataResult +import com.mojang.serialization.DynamicOps +import ru.dbotthepony.mc.otm.core.stream +import java.util.stream.Stream + +class CodecList(codecs: Stream>) : Codec { + constructor(codecs: Collection>) : this(codecs.stream()) + constructor(vararg codecs: Codec) : this(codecs.stream() as Stream>) + + private val codecs = codecs.collect(ImmutableList.toImmutableList()) + + init { + require(this.codecs.isNotEmpty()) { "No codecs provided" } + } + + override fun encode(input: S, ops: DynamicOps, prefix: T): DataResult { + val results = ArrayList>(codecs.size) + + for (codec in codecs) { + val result = codec.encode(input, ops, prefix) + + if (result.result().isPresent) { + return result + } else { + results.add(result) + } + } + + return DataResult.error { + "None of codecs encoded the input:\n " + results.joinToString(";\n ") { it.error().get().message() } + } + } + + override fun decode(ops: DynamicOps, input: T): DataResult> { + val results = ArrayList>>(codecs.size) + + for (codec in codecs) { + val result = codec.decode(ops, input) + + if (result.result().isPresent) { + return result + } else { + results.add(result) + } + } + + return DataResult.error { + "None of codecs decoded the input:\n " + results.joinToString(";\n ") { it.error().get().message() } + } + } +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/Codecs.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/Codecs.kt similarity index 95% rename from src/main/kotlin/ru/dbotthepony/mc/otm/data/Codecs.kt rename to src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/Codecs.kt index 6b4f17f3b..fda9b6d9f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/Codecs.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/Codecs.kt @@ -1,8 +1,6 @@ -package ru.dbotthepony.mc.otm.data +package ru.dbotthepony.mc.otm.data.codec import com.mojang.serialization.Codec -import com.mojang.serialization.Dynamic -import com.mojang.serialization.JsonOps import com.mojang.serialization.codecs.RecordCodecBuilder import net.minecraft.advancements.critereon.DamagePredicate import net.minecraft.advancements.critereon.DamageSourcePredicate diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/ComparableCodec.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/ComparableCodec.kt similarity index 80% rename from src/main/kotlin/ru/dbotthepony/mc/otm/data/ComparableCodec.kt rename to src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/ComparableCodec.kt index 3a49fcf06..7788628a8 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/ComparableCodec.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/ComparableCodec.kt @@ -1,11 +1,12 @@ -package ru.dbotthepony.mc.otm.data +package ru.dbotthepony.mc.otm.data.codec import com.mojang.datafixers.util.Pair import com.mojang.serialization.Codec import com.mojang.serialization.DataResult import com.mojang.serialization.DynamicOps -class ComparableCodec>(val parent: Codec, val min: S? = null, val max: S? = null, val minExclusive: Boolean = false, val maxExclusive: Boolean = false) : Codec { +class ComparableCodec>(val parent: Codec, val min: S? = null, val max: S? = null, val minExclusive: Boolean = false, val maxExclusive: Boolean = false) : + Codec { private fun check(input: S): DataResult? { if (min != null) { if (minExclusive) { @@ -46,6 +47,9 @@ class ComparableCodec>(val parent: Codec, val min: S? = nul } } -fun > Codec.minRange(min: S, exclusive: Boolean = false) = ComparableCodec(this, min = min, minExclusive = exclusive) -fun > Codec.maxRange(max: S, exclusive: Boolean = false) = ComparableCodec(this, max = max, maxExclusive = exclusive) -fun > Codec.inRange(min: S, minExclusive: Boolean = false, max: S, maxExclusive: Boolean = false) = ComparableCodec(this, min, max, minExclusive, maxExclusive) +fun > Codec.minRange(min: S, exclusive: Boolean = false) = + ComparableCodec(this, min = min, minExclusive = exclusive) +fun > Codec.maxRange(max: S, exclusive: Boolean = false) = + ComparableCodec(this, max = max, maxExclusive = exclusive) +fun > Codec.inRange(min: S, minExclusive: Boolean = false, max: S, maxExclusive: Boolean = false) = + ComparableCodec(this, min, max, minExclusive, maxExclusive) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/DecimalCodec.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/DecimalCodec.kt similarity index 98% rename from src/main/kotlin/ru/dbotthepony/mc/otm/data/DecimalCodec.kt rename to src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/DecimalCodec.kt index 35477d652..029e5e35d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/DecimalCodec.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/DecimalCodec.kt @@ -1,4 +1,4 @@ -package ru.dbotthepony.mc.otm.data +package ru.dbotthepony.mc.otm.data.codec import com.mojang.datafixers.util.Pair import com.mojang.serialization.Codec diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/JsonElementCodec.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/JsonElementCodec.kt similarity index 94% rename from src/main/kotlin/ru/dbotthepony/mc/otm/data/JsonElementCodec.kt rename to src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/JsonElementCodec.kt index 783222a0e..c59f9fd55 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/JsonElementCodec.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/JsonElementCodec.kt @@ -1,4 +1,4 @@ -package ru.dbotthepony.mc.otm.data +package ru.dbotthepony.mc.otm.data.codec import com.google.gson.JsonElement import com.mojang.datafixers.util.Pair diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/CodecList.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/PredicatedCodecList.kt similarity index 59% rename from src/main/kotlin/ru/dbotthepony/mc/otm/data/CodecList.kt rename to src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/PredicatedCodecList.kt index 572fa629c..0ecbba727 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/CodecList.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/PredicatedCodecList.kt @@ -1,4 +1,4 @@ -package ru.dbotthepony.mc.otm.data +package ru.dbotthepony.mc.otm.data.codec import com.google.common.collect.ImmutableList import com.mojang.datafixers.util.Pair @@ -9,53 +9,6 @@ import ru.dbotthepony.mc.otm.core.stream import java.util.function.Predicate import java.util.stream.Stream -class CodecList(codecs: Stream>) : Codec { - constructor(codecs: Collection>) : this(codecs.stream()) - constructor(vararg codecs: Codec) : this(codecs.stream() as Stream>) - - private val codecs = codecs.collect(ImmutableList.toImmutableList()) - - init { - require(this.codecs.isNotEmpty()) { "No codecs provided" } - } - - override fun encode(input: S, ops: DynamicOps, prefix: T): DataResult { - val results = ArrayList>(codecs.size) - - for (codec in codecs) { - val result = codec.encode(input, ops, prefix) - - if (result.result().isPresent) { - return result - } else { - results.add(result) - } - } - - return DataResult.error { - "None of codecs encoded the input:\n " + results.joinToString(";\n ") { it.error().get().message() } - } - } - - override fun decode(ops: DynamicOps, input: T): DataResult> { - val results = ArrayList>>(codecs.size) - - for (codec in codecs) { - val result = codec.decode(ops, input) - - if (result.result().isPresent) { - return result - } else { - results.add(result) - } - } - - return DataResult.error { - "None of codecs decoded the input:\n " + results.joinToString(";\n ") { it.error().get().message() } - } - } -} - class PredicatedCodecList(codecs: Stream, Predicate>>) : Codec { constructor(codecs: Collection, Predicate>>) : this(codecs.stream()) constructor(vararg codecs: kotlin.Pair, Predicate>) : this(codecs.stream() as Stream, Predicate>>) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/SingletonCodec.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/SingletonCodec.kt similarity index 94% rename from src/main/kotlin/ru/dbotthepony/mc/otm/data/SingletonCodec.kt rename to src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/SingletonCodec.kt index 07613af20..b7b13a1d1 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/SingletonCodec.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/SingletonCodec.kt @@ -1,4 +1,4 @@ -package ru.dbotthepony.mc.otm.data +package ru.dbotthepony.mc.otm.data.codec import com.mojang.serialization.DataResult import com.mojang.serialization.DynamicOps diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/world/StandardDeviationHeightProvider.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/world/StandardDeviationHeightProvider.kt index 860d76a75..1b44faf34 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/world/StandardDeviationHeightProvider.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/world/StandardDeviationHeightProvider.kt @@ -10,7 +10,7 @@ import net.minecraft.world.level.levelgen.heightproviders.HeightProvider import net.minecraft.world.level.levelgen.heightproviders.HeightProviderType import org.apache.logging.log4j.LogManager import ru.dbotthepony.mc.otm.core.nextNormalDouble -import ru.dbotthepony.mc.otm.data.minRange +import ru.dbotthepony.mc.otm.data.codec.minRange import ru.dbotthepony.mc.otm.registry.MHeightProviders /** diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/ComputeAction.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/ComputeAction.kt index 6932d86af..75a6560a1 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/ComputeAction.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/ComputeAction.kt @@ -13,8 +13,8 @@ import net.minecraft.resources.ResourceLocation import net.minecraft.tags.TagKey import net.minecraft.world.item.Item import ru.dbotthepony.mc.otm.core.math.Decimal -import ru.dbotthepony.mc.otm.data.DecimalCodec -import ru.dbotthepony.mc.otm.data.PredicatedCodecList +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec +import ru.dbotthepony.mc.otm.data.codec.PredicatedCodecList import java.util.Optional import java.util.function.Predicate diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/InsertAction.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/InsertAction.kt index 87bab4b7e..36ed93f7c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/InsertAction.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/InsertAction.kt @@ -8,7 +8,7 @@ import net.minecraft.resources.ResourceLocation import net.minecraft.tags.TagKey import net.minecraft.world.item.Item import ru.dbotthepony.mc.otm.core.math.Decimal -import ru.dbotthepony.mc.otm.data.DecimalCodec +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec import java.util.Optional class InsertAction( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/UpdateAction.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/UpdateAction.kt index 12fc4eab1..7c3f4c099 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/UpdateAction.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/UpdateAction.kt @@ -9,8 +9,8 @@ import net.minecraft.resources.ResourceLocation import net.minecraft.tags.TagKey import net.minecraft.world.item.Item import ru.dbotthepony.mc.otm.core.math.Decimal -import ru.dbotthepony.mc.otm.data.DecimalCodec -import ru.dbotthepony.mc.otm.data.simpleCodec +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec +import ru.dbotthepony.mc.otm.data.codec.simpleCodec class UpdateAction( id: Either>, diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/input/DecimalInputWithFeedback.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/input/DecimalInputWithFeedback.kt index a2aaee415..0dfd22338 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/input/DecimalInputWithFeedback.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/input/DecimalInputWithFeedback.kt @@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.menu.input import ru.dbotthepony.kommons.util.Delegate import ru.dbotthepony.mc.otm.core.math.Decimal -import ru.dbotthepony.mc.otm.data.DecimalCodec +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec import ru.dbotthepony.mc.otm.menu.MatteryMenu import java.util.function.Supplier import kotlin.reflect.KMutableProperty0 diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatterEntanglerRecipe.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatterEntanglerRecipe.kt index b993b1c9d..06483cf20 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatterEntanglerRecipe.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatterEntanglerRecipe.kt @@ -21,8 +21,8 @@ import ru.dbotthepony.mc.otm.capability.matteryEnergy import ru.dbotthepony.mc.otm.core.collect.filterNotNull import ru.dbotthepony.mc.otm.core.collect.map import ru.dbotthepony.mc.otm.core.math.Decimal -import ru.dbotthepony.mc.otm.data.DecimalCodec -import ru.dbotthepony.mc.otm.data.minRange +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec +import ru.dbotthepony.mc.otm.data.codec.minRange import ru.dbotthepony.mc.otm.network.StreamCodecs import ru.dbotthepony.mc.otm.network.optional import ru.dbotthepony.mc.otm.network.wrap diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatteryCookingRecipe.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatteryCookingRecipe.kt index ee85ac733..dbf831d0e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatteryCookingRecipe.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatteryCookingRecipe.kt @@ -14,7 +14,7 @@ import net.minecraft.world.item.crafting.* import net.minecraft.world.level.Level import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.core.registryName -import ru.dbotthepony.mc.otm.data.minRange +import ru.dbotthepony.mc.otm.data.codec.minRange import ru.dbotthepony.mc.otm.network.StreamCodecs import ru.dbotthepony.mc.otm.network.streamCodec import ru.dbotthepony.mc.otm.registry.MItems diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PainterRecipe.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PainterRecipe.kt index 876d0847c..ea81b4d6b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PainterRecipe.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PainterRecipe.kt @@ -26,8 +26,8 @@ import net.minecraft.world.item.crafting.RecipeType import net.minecraft.world.level.Level import ru.dbotthepony.mc.otm.block.entity.decorative.PainterBlockEntity import ru.dbotthepony.mc.otm.core.get -import ru.dbotthepony.mc.otm.data.PredicatedCodecList -import ru.dbotthepony.mc.otm.data.minRange +import ru.dbotthepony.mc.otm.data.codec.PredicatedCodecList +import ru.dbotthepony.mc.otm.data.codec.minRange import ru.dbotthepony.mc.otm.network.MatteryStreamCodec import ru.dbotthepony.mc.otm.network.nullable import ru.dbotthepony.mc.otm.registry.MItems diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt index 28c57ecc2..708be3d26 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt @@ -24,7 +24,7 @@ import ru.dbotthepony.mc.otm.container.get import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.registry.MRecipes import ru.dbotthepony.mc.otm.core.registryName -import ru.dbotthepony.mc.otm.data.minRange +import ru.dbotthepony.mc.otm.data.codec.minRange import ru.dbotthepony.mc.otm.network.StreamCodecs import ru.dbotthepony.mc.otm.network.streamCodec import ru.dbotthepony.mc.otm.registry.MItems diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDataComponentTypes.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDataComponentTypes.kt index 87e90768f..945eb1f98 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDataComponentTypes.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDataComponentTypes.kt @@ -9,13 +9,12 @@ import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.codec.StreamCodec import net.minecraft.util.StringRepresentable import net.neoforged.bus.api.IEventBus -import net.neoforged.neoforge.fluids.FluidStack import net.neoforged.neoforge.fluids.SimpleFluidContent import ru.dbotthepony.mc.otm.capability.FlowDirection import ru.dbotthepony.mc.otm.capability.matter.PatternState import ru.dbotthepony.mc.otm.container.ItemFilter import ru.dbotthepony.mc.otm.core.math.Decimal -import ru.dbotthepony.mc.otm.data.DecimalCodec +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec import ru.dbotthepony.mc.otm.item.tool.RedstoneInteractorItem import ru.dbotthepony.mc.otm.network.StreamCodecs import java.util.UUID diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MLootItemConditions.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MLootItemConditions.kt index 4b2f95d77..9fe0372cf 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MLootItemConditions.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MLootItemConditions.kt @@ -4,7 +4,7 @@ import net.minecraft.core.registries.Registries import net.minecraft.world.level.storage.loot.predicates.LootItemConditionType import net.neoforged.bus.api.IEventBus import ru.dbotthepony.mc.otm.OverdriveThatMatters -import ru.dbotthepony.mc.otm.data.SingletonCodec +import ru.dbotthepony.mc.otm.data.codec.SingletonCodec import ru.dbotthepony.mc.otm.data.condition.ChanceWithPlaytimeCondition import ru.dbotthepony.mc.otm.data.condition.HasExoPackCondition import ru.dbotthepony.mc.otm.data.condition.ItemInInventoryCondition @@ -15,11 +15,17 @@ import ru.dbotthepony.mc.otm.data.condition.ChanceCondition object MLootItemConditions { private val registry = MDeferredRegister(Registries.LOOT_CONDITION_TYPE, OverdriveThatMatters.MOD_ID) - val HAS_EXOPACK: LootItemConditionType by registry.register("has_exopack") { LootItemConditionType(SingletonCodec(HasExoPackCondition)) } + val HAS_EXOPACK: LootItemConditionType by registry.register("has_exopack") { LootItemConditionType( + SingletonCodec(HasExoPackCondition) + ) } val CHANCE_WITH_PLAYTIME: LootItemConditionType by registry.register("chance_with_playtime") { LootItemConditionType(ChanceWithPlaytimeCondition.CODEC) } val ITEM_IN_INVENTORY: LootItemConditionType by registry.register("item_in_inventory") { LootItemConditionType(ItemInInventoryCondition.CODEC) } - val KILLED_BY_REAL_PLAYER: LootItemConditionType by registry.register("killed_by_real_player") { LootItemConditionType(SingletonCodec(KilledByRealPlayer)) } - val KILLED_BY_REAL_PLAYER_OR_INDIRECTLY: LootItemConditionType by registry.register("killed_by_real_player_or_indirectly") { LootItemConditionType(SingletonCodec(KilledByRealPlayerOrIndirectly)) } + val KILLED_BY_REAL_PLAYER: LootItemConditionType by registry.register("killed_by_real_player") { LootItemConditionType( + SingletonCodec(KilledByRealPlayer) + ) } + val KILLED_BY_REAL_PLAYER_OR_INDIRECTLY: LootItemConditionType by registry.register("killed_by_real_player_or_indirectly") { LootItemConditionType( + SingletonCodec(KilledByRealPlayerOrIndirectly) + ) } val CHANCE: LootItemConditionType by registry.register("chance") { LootItemConditionType(ChanceCondition.CODEC) } fun register(bus: IEventBus) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/AndroidTravelUnderwater.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/AndroidTravelUnderwater.kt index c2039f212..25955a8e9 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/AndroidTravelUnderwater.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/AndroidTravelUnderwater.kt @@ -7,7 +7,7 @@ import net.minecraft.resources.ResourceLocation import net.minecraft.server.level.ServerPlayer import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.core.ResourceLocation -import ru.dbotthepony.mc.otm.data.minRange +import ru.dbotthepony.mc.otm.data.codec.minRange import java.util.* object AndroidTravelUnderwater : MCriterionTrigger(ResourceLocation(OverdriveThatMatters.MOD_ID, "android_walk_underwater")) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/HurtTrigger.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/HurtTrigger.kt index 5f5fbd5fc..6ae8f2407 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/HurtTrigger.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/HurtTrigger.kt @@ -10,7 +10,7 @@ import net.minecraft.resources.ResourceLocation import net.minecraft.server.level.ServerPlayer import net.minecraft.world.damagesource.DamageSource import net.minecraft.world.entity.LivingEntity -import ru.dbotthepony.mc.otm.data.DamagePredicateCodec +import ru.dbotthepony.mc.otm.data.codec.DamagePredicateCodec import java.util.* class HurtTrigger(id: ResourceLocation) : MCriterionTrigger(id) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/KillAsAndroidTrigger.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/KillAsAndroidTrigger.kt index d0b374989..e25fdc498 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/KillAsAndroidTrigger.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/KillAsAndroidTrigger.kt @@ -14,7 +14,7 @@ import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.capability.MatteryPlayer import ru.dbotthepony.mc.otm.capability.matteryPlayer import ru.dbotthepony.mc.otm.core.ResourceLocation -import ru.dbotthepony.mc.otm.data.SingletonCodec +import ru.dbotthepony.mc.otm.data.codec.SingletonCodec import ru.dbotthepony.mc.otm.registry.MRegistry import java.util.Optional import java.util.function.Predicate diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/worldgen/feature/BlackHolePlacer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/worldgen/feature/BlackHolePlacer.kt index ae74b6f1f..374c5fe4b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/worldgen/feature/BlackHolePlacer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/worldgen/feature/BlackHolePlacer.kt @@ -9,7 +9,7 @@ import ru.dbotthepony.mc.otm.block.entity.blackhole.BlackHoleBlockEntity import ru.dbotthepony.mc.otm.config.ServerConfig import ru.dbotthepony.mc.otm.core.math.Decimal import ru.dbotthepony.mc.otm.core.math.nextDecimal -import ru.dbotthepony.mc.otm.data.DecimalCodec +import ru.dbotthepony.mc.otm.data.codec.DecimalCodec import ru.dbotthepony.mc.otm.registry.MBlocks object BlackHolePlacerFeature : Feature(