From df15bd2f6909b0d77cfc2cb8da41b4f64f6eb13f Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 1 Jan 2024 17:55:27 +0700 Subject: [PATCH] More backporting --- .../android/feature/ExtendedReachFeature.kt | 8 ++++---- .../otm/android/feature/ItemMagnetFeature.kt | 4 ++-- .../block/decorative/TritaniumPressurePlate.kt | 3 --- .../otm/client/screen/panels/Panel2Widget.kt | 6 +----- .../mc/otm/compat/vanilla/MatteryChestMenu.kt | 16 ++++++++-------- .../otm/container/MatteryCraftingContainer.kt | 4 ---- .../mc/otm/core/UnOverengineering.kt | 17 ----------------- .../dbotthepony/mc/otm/core/util/ItemSorter.kt | 2 +- .../mc/otm/core/util/StreamCodecs.kt | 4 ++-- .../ru/dbotthepony/mc/otm/data/CodecList.kt | 18 +++++++++--------- .../dbotthepony/mc/otm/data/ComparableCodec.kt | 8 ++++---- .../dbotthepony/mc/otm/data/ComponentCodec.kt | 2 +- .../ru/dbotthepony/mc/otm/data/DecimalCodec.kt | 6 +++--- .../dbotthepony/mc/otm/data/IngredientCodec.kt | 2 +- .../mc/otm/data/IngredientMatrixCodec.kt | 14 +++++++------- .../mc/otm/data/ItemPredicateCodec.kt | 4 ++-- .../ru/dbotthepony/mc/otm/data/UUIDCodec.kt | 4 ++-- .../mc/otm/data/loot/LootPoolAppender.kt | 4 ++-- .../mc/otm/item/EssenceCapsuleItem.kt | 2 +- .../otm/item/PortableCondensationDriveItem.kt | 2 +- .../armor/PortableGravitationStabilizerItem.kt | 6 +++--- 21 files changed, 54 insertions(+), 82 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ExtendedReachFeature.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ExtendedReachFeature.kt index 270e08963..7a7b62b84 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ExtendedReachFeature.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ExtendedReachFeature.kt @@ -9,20 +9,20 @@ import java.util.* class ExtendedReachFeature(android: MatteryPlayerCapability) : AndroidFeature(AndroidFeatures.EXTENDED_REACH, android) { override fun applyModifiers() { - if (!ForgeMod.BLOCK_REACH.isPresent) + if (!ForgeMod.REACH_DISTANCE.isPresent) return - val reach = ply.getAttribute(ForgeMod.BLOCK_REACH.get()) ?: return + val reach = ply.getAttribute(ForgeMod.REACH_DISTANCE.get()) ?: return reach.removePermanentModifier(MODIFIER_ID) reach.addPermanentModifier(AttributeModifier(MODIFIER_ID, type.displayName.toString(), level + 1.0, AttributeModifier.Operation.ADDITION)) } override fun removeModifiers() { - if (!ForgeMod.BLOCK_REACH.isPresent) + if (!ForgeMod.REACH_DISTANCE.isPresent) return - ply.getAttribute(ForgeMod.BLOCK_REACH.get())?.removePermanentModifier(MODIFIER_ID) + ply.getAttribute(ForgeMod.REACH_DISTANCE.get())?.removePermanentModifier(MODIFIER_ID) } companion object { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ItemMagnetFeature.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ItemMagnetFeature.kt index 7b6e93493..ad4d00cc5 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ItemMagnetFeature.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ItemMagnetFeature.kt @@ -61,7 +61,7 @@ class ItemMagnetFeature(capability: MatteryPlayerCapability) : AndroidSwitchable private data class ItemPos(var position: Vector, var ticksSinceActivity: Int) private val rememberPositions = WeakHashMap() - private val serverPredicate = Predicate { it is ItemEntity && !it.hasPickUpDelay() && (it.owner == null || it.owner != ply || it.lifespan - it.age <= 200) } + private val serverPredicate = Predicate { it is ItemEntity && !it.hasPickUpDelay() && (it.owner == null || it.owner != ply.uuid || it.lifespan - it.age <= 200) } private val clientPredicate = Predicate { it is ItemEntity && (datatable[it] ?: SharedItemEntityData.EMPTY).let { !it.hasPickupDelay && (it.owner == null || it.owner != ply.uuid || it.lifespan - it.age <= 200) } } private fun doTick(server: Boolean) { @@ -79,7 +79,7 @@ class ItemMagnetFeature(capability: MatteryPlayerCapability) : AndroidSwitchable ent as ItemEntity if (server) { - GenericNetworkChannel.send(ply, ItemEntityDataPacket(ent.id, ent.owner?.uuid, ent.age, ent.lifespan, ent.hasPickUpDelay())) + GenericNetworkChannel.send(ply, ItemEntityDataPacket(ent.id, ent.owner, ent.age, ent.lifespan, ent.hasPickUpDelay())) if (!serverPredicate.test(ent)) { continue diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumPressurePlate.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumPressurePlate.kt index 1a37c06e3..75fbde496 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumPressurePlate.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumPressurePlate.kt @@ -11,16 +11,13 @@ import net.minecraft.world.item.ItemStack import net.minecraft.world.item.TooltipFlag import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.Level -import net.minecraft.world.level.LevelAccessor import net.minecraft.world.level.block.BasePressurePlateBlock import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.SoundType import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.state.StateDefinition -import net.minecraft.world.level.block.state.properties.BlockSetType import net.minecraft.world.level.block.state.properties.BlockStateProperties import net.minecraft.world.level.material.Material -import net.minecraft.world.level.material.PushReaction import ru.dbotthepony.mc.otm.core.TranslatableComponent import ru.dbotthepony.mc.otm.core.get diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/Panel2Widget.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/Panel2Widget.kt index c286191cc..6cff8a82f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/Panel2Widget.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/Panel2Widget.kt @@ -70,12 +70,8 @@ class Panel2Widget>( return panel.isMouseOver(p_94748_, p_94749_) } - override fun setFocused(p_265728_: Boolean) { + override fun changeFocus(p_265728_: Boolean): Boolean { // no op - } - - override fun isFocused(): Boolean { - // ага, щас return false } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/vanilla/MatteryChestMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/vanilla/MatteryChestMenu.kt index 6ed91b59f..c726ff6d3 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/vanilla/MatteryChestMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/vanilla/MatteryChestMenu.kt @@ -44,14 +44,14 @@ class MatteryChestMenu( companion object { private val registrar = DeferredRegister.create(Registries.MENU, OverdriveThatMatters.MOD_ID) - private val GENERIC_9x1 by registrar.register("generic_9x1") { MenuType(::c9x1, FeatureFlags.VANILLA_SET) } - private val GENERIC_9x2 by registrar.register("generic_9x2") { MenuType(::c9x2, FeatureFlags.VANILLA_SET) } - private val GENERIC_9x3 by registrar.register("generic_9x3") { MenuType(::c9x3, FeatureFlags.VANILLA_SET) } - private val GENERIC_9x4 by registrar.register("generic_9x4") { MenuType(::c9x4, FeatureFlags.VANILLA_SET) } - private val GENERIC_9x5 by registrar.register("generic_9x5") { MenuType(::c9x5, FeatureFlags.VANILLA_SET) } - private val GENERIC_9x6 by registrar.register("generic_9x6") { MenuType(::c9x6, FeatureFlags.VANILLA_SET) } - private val GENERIC_3x3 by registrar.register("generic_3x3") { MenuType(::c3x3, FeatureFlags.VANILLA_SET) } - private val HOPPER by registrar.register("hopper") { MenuType(::hopper, FeatureFlags.VANILLA_SET) } + private val GENERIC_9x1 by registrar.register("generic_9x1") { MenuType(::c9x1) } + private val GENERIC_9x2 by registrar.register("generic_9x2") { MenuType(::c9x2) } + private val GENERIC_9x3 by registrar.register("generic_9x3") { MenuType(::c9x3) } + private val GENERIC_9x4 by registrar.register("generic_9x4") { MenuType(::c9x4) } + private val GENERIC_9x5 by registrar.register("generic_9x5") { MenuType(::c9x5) } + private val GENERIC_9x6 by registrar.register("generic_9x6") { MenuType(::c9x6) } + private val GENERIC_3x3 by registrar.register("generic_3x3") { MenuType(::c3x3) } + private val HOPPER by registrar.register("hopper") { MenuType(::hopper) } @JvmStatic @JvmOverloads diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/MatteryCraftingContainer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/MatteryCraftingContainer.kt index 1639388a5..27baab0d0 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/MatteryCraftingContainer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/MatteryCraftingContainer.kt @@ -100,10 +100,6 @@ open class MatteryCraftingContainer private constructor(private val listener: Ma return parent.canPlaceItem(p_18952_, p_18953_) } - override fun canTakeItem(p_273520_: Container, p_272681_: Int, p_273702_: ItemStack): Boolean { - return parent.canTakeItem(p_273520_, p_272681_, p_273702_) - } - override fun countItem(p_18948_: Item): Int { return parent.countItem(p_18948_) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/UnOverengineering.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/UnOverengineering.kt index 3cc18df17..2fbe1ff64 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/UnOverengineering.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/UnOverengineering.kt @@ -4,21 +4,14 @@ import com.google.gson.JsonElement import com.google.gson.JsonSyntaxException import com.mojang.serialization.Codec import com.mojang.serialization.JsonOps -import net.minecraft.core.Holder -import net.minecraft.core.RegistryAccess -import net.minecraft.core.registries.Registries import net.minecraft.nbt.NbtOps import net.minecraft.nbt.Tag import net.minecraft.network.FriendlyByteBuf import net.minecraft.network.chat.MutableComponent import net.minecraft.network.chat.contents.LiteralContents import net.minecraft.network.chat.contents.TranslatableContents -import net.minecraft.resources.ResourceKey import net.minecraft.resources.ResourceLocation import net.minecraft.sounds.SoundEvent -import net.minecraft.tags.DamageTypeTags -import net.minecraft.world.damagesource.DamageSource -import net.minecraft.world.damagesource.DamageType import net.minecraft.world.item.Item import net.minecraft.world.level.block.Block import net.minecraft.world.level.material.Fluid @@ -90,13 +83,3 @@ fun FriendlyByteBuf.writeRegistryId(value: Item) = writeRegistryId(ForgeRegistri // 1.19.3 lol inline val SoundEvent.holder get() = ForgeRegistries.SOUND_EVENTS.getHolder(this).orElse(null) ?: throw NoSuchElementException("$this is missing from ${ForgeRegistries.SOUND_EVENTS}") - -// 1.19.4 :thonkang: -inline val DamageSource.isFall get() = `is`(DamageTypeTags.IS_FALL) -inline val DamageSource.isBypassArmor get() = `is`(DamageTypeTags.BYPASSES_ARMOR) -inline val DamageSource.isExplosion get() = `is`(DamageTypeTags.IS_EXPLOSION) -inline val DamageSource.isFire get() = `is`(DamageTypeTags.IS_FIRE) - -fun RegistryAccess.damageType(key: ResourceKey): Holder { - return registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key) -} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/ItemSorter.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/ItemSorter.kt index 7e11694ea..0b4a15aff 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/ItemSorter.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/ItemSorter.kt @@ -56,7 +56,7 @@ object CreativeMenuItemComparator : Comparator { if (item2index.isEmpty()) { val player = minecraft.player ?: return // creative tabs were not populated yet - CreativeModeTabs.tryRebuildTabContents(player.connection.enabledFeatures(), false /* operator tabs */, player.level.registryAccess()) + CreativeModeTabs.tryRebuildTabContents(player.connection.enabledFeatures(), false /* operator tabs */) doRebuild() } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/StreamCodecs.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/StreamCodecs.kt index 961847d1e..81968cf67 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/StreamCodecs.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/StreamCodecs.kt @@ -195,11 +195,11 @@ class EnumValueCodec>(clazz: Class) : IStreamCodec, Codec< override fun decode(ops: DynamicOps, input: T): DataResult> { if (ops.compressMaps()) { return ops.getNumberValue(input) - .flatMap { values.getOrNull(it.toInt())?.let { DataResult.success(Pair(it, ops.empty())) } ?: DataResult.error { "No such enum with ordinal index $it" } } + .flatMap { values.getOrNull(it.toInt())?.let { DataResult.success(Pair(it, ops.empty())) } ?: DataResult.error("No such enum with ordinal index $it") } } return ops.getStringValue(input) - .flatMap { valuesMap[it]?.let { DataResult.success(Pair(it, ops.empty())) } ?: DataResult.error { "No such enum value $it" } } + .flatMap { valuesMap[it]?.let { DataResult.success(Pair(it, ops.empty())) } ?: DataResult.error("No such enum value $it") } } companion object { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/CodecList.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/CodecList.kt index 572fa629c..1636d73a3 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/CodecList.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/CodecList.kt @@ -32,9 +32,9 @@ class CodecList(codecs: Stream>) : Codec { } } - return DataResult.error { + 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> { @@ -50,9 +50,9 @@ class CodecList(codecs: Stream>) : Codec { } } - return DataResult.error { + return DataResult.error ( "None of codecs decoded the input:\n " + results.joinToString(";\n ") { it.error().get().message() } - } + ) } } @@ -83,13 +83,13 @@ class PredicatedCodecList(codecs: Stream, Predicat } } else { val i2 = i - results.add(DataResult.error { "Codec #$i2 predicate tested false" }) + results.add(DataResult.error("Codec #$i2 predicate tested false")) } } - return DataResult.error { + 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> { @@ -105,8 +105,8 @@ class PredicatedCodecList(codecs: Stream, Predicat } } - return DataResult.error { + 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/ComparableCodec.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/ComparableCodec.kt index 3a49fcf06..83c457723 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/ComparableCodec.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/ComparableCodec.kt @@ -10,11 +10,11 @@ class ComparableCodec>(val parent: Codec, val min: S? = nul if (min != null) { if (minExclusive) { if (input <= min) { - return DataResult.error { "Value $input is smaller or equal to minimal $min" } + return DataResult.error("Value $input is smaller or equal to minimal $min") } } else { if (input < min) { - return DataResult.error { "Value $input is smaller than minimal $min" } + return DataResult.error("Value $input is smaller than minimal $min") } } } @@ -22,11 +22,11 @@ class ComparableCodec>(val parent: Codec, val min: S? = nul if (max != null) { if (maxExclusive) { if (input >= max) { - return DataResult.error { "Value $input is bigger or equal to maximal $max" } + return DataResult.error("Value $input is bigger or equal to maximal $max") } } else { if (input > max) { - return DataResult.error { "Value $input is bigger than maximal $max" } + return DataResult.error("Value $input is bigger than maximal $max") } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/ComponentCodec.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/ComponentCodec.kt index ec65bb31a..82ff139e2 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/ComponentCodec.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/ComponentCodec.kt @@ -19,7 +19,7 @@ object ComponentCodec : Codec { try { return DataResult.success(Pair(Component.Serializer.fromJson(value), ops.empty())) } catch (err: JsonSyntaxException) { - return DataResult.error { "Error decoding component: ${err.message}" } + return DataResult.error("Error decoding component: ${err.message}") } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/DecimalCodec.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/DecimalCodec.kt index 062564586..445fb51eb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/DecimalCodec.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/DecimalCodec.kt @@ -25,7 +25,7 @@ object DecimalCodec : Codec { try { DataResult.success(Pair(Decimal(it), ops.empty())) } catch (err: NumberFormatException) { - DataResult.error { "Not a valid number for converting into Decimal: $it" } + DataResult.error("Not a valid number for converting into Decimal: $it") } }.get().map( { @@ -40,7 +40,7 @@ object DecimalCodec : Codec { .toByteArray() ), ops.empty())) } catch (err: NumberFormatException) { - DataResult.error { "Failed to convert array of bytes into Decimal: $it" } + DataResult.error("Failed to convert array of bytes into Decimal: $it") } }.get().map( { @@ -54,7 +54,7 @@ object DecimalCodec : Codec { DataResult.success(it) }, { e2 -> - DataResult.error { "None of attempts at decoding Decimal were successful: ${e0.message()}; ${e1.message()}; ${e2.message()}" } + DataResult.error("None of attempts at decoding Decimal were successful: ${e0.message()}; ${e1.message()}; ${e2.message()}") } ) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/IngredientCodec.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/IngredientCodec.kt index 27c18ade8..aa6b50077 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/IngredientCodec.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/IngredientCodec.kt @@ -17,7 +17,7 @@ object IngredientCodec : Codec { try { return DataResult.success(Pair(Ingredient.fromJson(ops.convertTo(JsonOps.INSTANCE, input)), ops.empty())) } catch (err: JsonSyntaxException) { - return DataResult.error { "Error decoding Ingredient: ${err.message}" } + return DataResult.error("Error decoding Ingredient: ${err.message}") } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/IngredientMatrixCodec.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/IngredientMatrixCodec.kt index 12d7117cd..d13d41320 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/IngredientMatrixCodec.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/IngredientMatrixCodec.kt @@ -39,13 +39,13 @@ class IngredientMatrixCodec(ingredientCodec: Codec) : Codec) : Codec) : Codec) : Codec { return try { DataResult.success(Pair(ItemPredicate.fromJson(ops.convertTo(JsonOps.INSTANCE, input)), ops.empty())) } catch (err: JsonSyntaxException) { - DataResult.error { "Failed to deserialize ItemPredicate: ${err.message}" } + DataResult.error("Failed to deserialize ItemPredicate: ${err.message}") } catch (err: JsonParseException) { - DataResult.error { "Failed to deserialize ItemPredicate: ${err.message}" } + DataResult.error("Failed to deserialize ItemPredicate: ${err.message}") } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/UUIDCodec.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/UUIDCodec.kt index a6fead1fb..9334b20d4 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/UUIDCodec.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/UUIDCodec.kt @@ -29,7 +29,7 @@ object UUIDCodec : Codec { } else if (l.size == 2) { DataResult.success(Pair(UUID(l[0], l[1]), ops.empty())) } else { - DataResult.error { "Can't construct UUID from ${l.size} elements" } + DataResult.error("Can't construct UUID from ${l.size} elements") } }.get().map( { @@ -43,7 +43,7 @@ object UUIDCodec : Codec { DataResult.success(it) }, { - DataResult.error { "Unable to deserialize UUID: ${e0.message()}; ${it.message()}" } + DataResult.error("Unable to deserialize UUID: ${e0.message()}; ${it.message()}") } ) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/LootPoolAppender.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/LootPoolAppender.kt index 4154609d1..0f0224793 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/LootPoolAppender.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/LootPoolAppender.kt @@ -67,7 +67,7 @@ class LootPoolAppender(conditions: Array, pools: Stream, pools: Stream) { super.initializeClient(consumer) consumer.accept(GravitationStabilizerArmorRenderProperties)