From a63750ac1f9b9d873117d83438119ed5df91ae22 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 10 Oct 2022 22:08:56 +0700 Subject: [PATCH] Move stuff to appropriate place --- .../ru/dbotthepony/mc/otm/datagen/DataGen.kt | 1 + .../block/entity/AndroidStationBlockEntity.kt | 2 +- .../entity/ChemicalGeneratorBlockEntity.kt | 2 +- .../entity/matter/MatterBottlerBlockEntity.kt | 2 +- .../matter/MatterDecomposerBlockEntity.kt | 2 +- .../matter/MatterRecyclerBlockEntity.kt | 2 +- .../matter/MatterReplicatorBlockEntity.kt | 2 +- .../entity/matter/MatterScannerBlockEntity.kt | 2 +- .../mc/otm/client/render/WidgetAtlasHolder.kt | 2 +- .../ru/dbotthepony/mc/otm/core/WriteOnce.kt | 17 +++++++++++++ .../mc/otm/item/EnergySwordItem.kt | 2 +- .../ru/dbotthepony/mc/otm/registry/Ext.kt | 15 ++++++++++++ .../dbotthepony/mc/otm/registry/MRegistry.kt | 24 ------------------- .../otm/registry/objects/DecorativeBlock.kt | 2 +- .../mc/otm/saveddata/SavedCountingMap.kt | 2 +- .../ru/dbotthepony/mc/otm/worldgen/OreGen.kt | 2 +- 16 files changed, 45 insertions(+), 36 deletions(-) create mode 100644 src/main/kotlin/ru/dbotthepony/mc/otm/core/WriteOnce.kt diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt index 52701af48..e3e4812f6 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt @@ -21,6 +21,7 @@ import net.minecraftforge.data.event.GatherDataEvent import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.android.AndroidResearchDataProvider import ru.dbotthepony.mc.otm.block.* +import ru.dbotthepony.mc.otm.core.WriteOnce import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.datagen.blocks.BatteryBankProvider import ru.dbotthepony.mc.otm.datagen.blocks.MatterBankProvider diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/AndroidStationBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/AndroidStationBlockEntity.kt index 365599fec..c45cf3023 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/AndroidStationBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/AndroidStationBlockEntity.kt @@ -22,7 +22,7 @@ import ru.dbotthepony.mc.otm.menu.AndroidStationMenu import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.registry.MBlocks import ru.dbotthepony.mc.otm.registry.MNames -import ru.dbotthepony.mc.otm.registry.WriteOnce +import ru.dbotthepony.mc.otm.core.WriteOnce @Suppress("ObjectPropertyName") class AndroidStationBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/ChemicalGeneratorBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/ChemicalGeneratorBlockEntity.kt index c3bff5c4e..78ecd2422 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/ChemicalGeneratorBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/ChemicalGeneratorBlockEntity.kt @@ -28,7 +28,7 @@ import ru.dbotthepony.mc.otm.core.* import ru.dbotthepony.mc.otm.menu.ChemicalGeneratorMenu import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.registry.MNames -import ru.dbotthepony.mc.otm.registry.WriteOnce +import ru.dbotthepony.mc.otm.core.WriteOnce import java.lang.ref.WeakReference class ChemicalGeneratorBlockEntity(pos: BlockPos, state: BlockState) : MatteryBlockEntity(MBlockEntities.CHEMICAL_GENERATOR, pos, state), IDroppableContainer { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterBottlerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterBottlerBlockEntity.kt index 963c52ee0..02b4ffe98 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterBottlerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterBottlerBlockEntity.kt @@ -38,7 +38,7 @@ import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.core.* import ru.dbotthepony.mc.otm.registry.MBlocks import ru.dbotthepony.mc.otm.registry.MNames -import ru.dbotthepony.mc.otm.registry.WriteOnce +import ru.dbotthepony.mc.otm.core.WriteOnce class MatterBottlerBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : MatteryPoweredBlockEntity(MBlockEntities.MATTER_BOTTLER, p_155229_, p_155230_), IMatterGraphNode, IDroppableContainer { 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 17757703f..e8bfe4444 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 @@ -41,7 +41,7 @@ import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.registry.MBlocks import ru.dbotthepony.mc.otm.registry.MItems import ru.dbotthepony.mc.otm.registry.MNames -import ru.dbotthepony.mc.otm.registry.WriteOnce +import ru.dbotthepony.mc.otm.core.WriteOnce fun moveMatterAsDustIntoContainer(_matterValue: ImpreciseFraction, container: MatteryContainer, OUTPUT_DUST_MAIN: Int, OUTPUT_DUST_STACKING: Int): ImpreciseFraction { var matterValue = _matterValue 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 9c49a3041..6f7125e01 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 @@ -40,7 +40,7 @@ import ru.dbotthepony.mc.otm.core.defineImpreciseFraction import ru.dbotthepony.mc.otm.core.set import ru.dbotthepony.mc.otm.registry.MBlocks import ru.dbotthepony.mc.otm.registry.MNames -import ru.dbotthepony.mc.otm.registry.WriteOnce +import ru.dbotthepony.mc.otm.core.WriteOnce class MatterRecyclerBlockEntity(blockPos: BlockPos, blockState: BlockState) : MatteryWorkerBlockEntity(MBlockEntities.MATTER_RECYCLER, blockPos, blockState, ::Job), IMatterGraphNode, IDroppableContainer { 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 1983fb99d..2242aa1d1 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 @@ -35,7 +35,7 @@ import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.core.* import ru.dbotthepony.mc.otm.registry.MBlocks import ru.dbotthepony.mc.otm.registry.MNames -import ru.dbotthepony.mc.otm.registry.WriteOnce +import ru.dbotthepony.mc.otm.core.WriteOnce class MatterReplicatorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : MatteryWorkerBlockEntity(MBlockEntities.MATTER_REPLICATOR, p_155229_, p_155230_, { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt index 8fe2f7fea..0b1662d61 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt @@ -38,7 +38,7 @@ import ru.dbotthepony.mc.otm.menu.MatterScannerMenu import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.registry.MBlocks import ru.dbotthepony.mc.otm.registry.MNames -import ru.dbotthepony.mc.otm.registry.WriteOnce +import ru.dbotthepony.mc.otm.core.WriteOnce import java.util.* import kotlin.math.pow diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/WidgetAtlasHolder.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/WidgetAtlasHolder.kt index 5ff4019a6..b9062eb9c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/WidgetAtlasHolder.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/WidgetAtlasHolder.kt @@ -13,7 +13,7 @@ import ru.dbotthepony.mc.otm.client.LOGGED_IN import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.client.onceClient import ru.dbotthepony.mc.otm.isClientThread -import ru.dbotthepony.mc.otm.registry.WriteOnce +import ru.dbotthepony.mc.otm.core.WriteOnce import java.util.stream.Stream import kotlin.properties.Delegates diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/WriteOnce.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/WriteOnce.kt new file mode 100644 index 000000000..2cd7c6c41 --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/WriteOnce.kt @@ -0,0 +1,17 @@ +package ru.dbotthepony.mc.otm.core + +import kotlin.properties.ReadWriteProperty +import kotlin.reflect.KProperty + +class WriteOnce : ReadWriteProperty { + private var value: V? = null + + override fun getValue(thisRef: Any?, property: KProperty<*>): V { + return checkNotNull(value) { "Property ${property.name} is not initialized" } + } + + override fun setValue(thisRef: Any?, property: KProperty<*>, value: V) { + check(this.value == null) { "Property ${property.name} is already initialized" } + this.value = value + } +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/EnergySwordItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/EnergySwordItem.kt index 3d05bab1f..d0ec84edc 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/EnergySwordItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/EnergySwordItem.kt @@ -43,7 +43,7 @@ import ru.dbotthepony.mc.otm.core.formatPower import ru.dbotthepony.mc.otm.core.ifPresentK import ru.dbotthepony.mc.otm.core.orNull import ru.dbotthepony.mc.otm.registry.EMPDamageSource -import ru.dbotthepony.mc.otm.registry.WriteOnce +import ru.dbotthepony.mc.otm.core.WriteOnce /** * This is called from [net.minecraft.world.item.enchantment.EnchantmentHelper.getSweepingDamageRatio] diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt index 8819eecbb..4d3ef11aa 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt @@ -1,7 +1,14 @@ package ru.dbotthepony.mc.otm.registry +import com.mojang.serialization.Lifecycle +import net.minecraft.core.Holder +import net.minecraft.core.Registry +import net.minecraft.core.WritableRegistry +import net.minecraft.resources.ResourceKey +import net.minecraft.resources.ResourceLocation import net.minecraft.world.item.DyeColor import net.minecraftforge.registries.DeferredRegister +import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.core.SupplierMap private fun DeferredRegister.doColored(prefix: String, factory: (color: DyeColor, name: String) -> T): MutableCollection T>> { @@ -33,3 +40,11 @@ fun DeferredRegister.colored(prefix: String, factory: (color: DyeColor, n fun DeferredRegister.allColored(prefix: String, factory: (color: DyeColor?, name: String) -> T): Map { return SupplierMap(doColored(prefix, factory).also { (it as MutableCollection T>>).add((null as DyeColor?) to register(prefix) { factory.invoke(null, prefix) }::get) }) } + +fun Registry.register(key: String, value: T): Holder { + return this.register(ResourceLocation(OverdriveThatMatters.MOD_ID, key), value) +} + +fun Registry.register(key: ResourceLocation, value: T): Holder { + return (this as WritableRegistry).register(ResourceKey.create(key(), key), value, Lifecycle.stable()) +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt index 54eae7a2b..d96c72974 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt @@ -1,12 +1,9 @@ package ru.dbotthepony.mc.otm.registry -import com.mojang.serialization.Lifecycle import net.minecraft.advancements.CriteriaTriggers import net.minecraft.client.renderer.item.ItemProperties import net.minecraft.core.BlockPos -import net.minecraft.core.Holder import net.minecraft.core.Registry -import net.minecraft.core.WritableRegistry import net.minecraft.resources.ResourceKey import net.minecraft.resources.ResourceLocation import net.minecraft.world.damagesource.DamageSource @@ -59,14 +56,6 @@ import kotlin.properties.ReadOnlyProperty import kotlin.properties.ReadWriteProperty import kotlin.reflect.KProperty -fun Registry.register(key: String, value: T): Holder { - return this.register(ResourceLocation(OverdriveThatMatters.MOD_ID, key), value) -} - -fun Registry.register(key: ResourceLocation, value: T): Holder { - return (this as WritableRegistry).register(ResourceKey.create(key(), key), value, Lifecycle.stable()) -} - private class RegistryDelegate(key: String) : ReadOnlyProperty> { private var value: Supplier?>? = null @@ -95,19 +84,6 @@ private class RegistryDelegate(key: String) : ReadOnlyProperty : ReadWriteProperty { - private var value: V? = null - - override fun getValue(thisRef: Any?, property: KProperty<*>): V { - return checkNotNull(value) { "Property ${property.name} is not initialized" } - } - - override fun setValue(thisRef: Any?, property: KProperty<*>, value: V) { - check(this.value == null) { "Property ${property.name} is already initialized" } - this.value = value - } -} - object MRegistry { private val features = RegistryDelegate>("android_features") val ANDROID_FEATURES by features diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/DecorativeBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/DecorativeBlock.kt index 4f7f8dd39..2ba5ac727 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/DecorativeBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/DecorativeBlock.kt @@ -10,7 +10,7 @@ import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.RegistryObject import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.core.SupplierMap -import ru.dbotthepony.mc.otm.registry.WriteOnce +import ru.dbotthepony.mc.otm.core.WriteOnce /** * Base + Colored diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/saveddata/SavedCountingMap.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/saveddata/SavedCountingMap.kt index f9757eea0..a1ef2d947 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/saveddata/SavedCountingMap.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/saveddata/SavedCountingMap.kt @@ -10,7 +10,7 @@ import net.minecraft.world.level.saveddata.SavedData import org.apache.logging.log4j.LogManager import ru.dbotthepony.mc.otm.core.ProxiedMap import ru.dbotthepony.mc.otm.core.set -import ru.dbotthepony.mc.otm.registry.WriteOnce +import ru.dbotthepony.mc.otm.core.WriteOnce class SavedMapDelegate(val parent: SavedCountingMap>?, val index: Int, value: V) { constructor(value: V) : this(null, -1, value) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/worldgen/OreGen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/worldgen/OreGen.kt index 4090810ec..37429e909 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/worldgen/OreGen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/worldgen/OreGen.kt @@ -13,7 +13,7 @@ import net.minecraft.world.level.levelgen.placement.HeightRangePlacement import net.minecraft.world.level.levelgen.placement.InSquarePlacement import net.minecraft.world.level.levelgen.placement.PlacedFeature import ru.dbotthepony.mc.otm.registry.MBlocks -import ru.dbotthepony.mc.otm.registry.WriteOnce +import ru.dbotthepony.mc.otm.core.WriteOnce import ru.dbotthepony.mc.otm.registry.register @Suppress("UNNECESSARY_NOT_NULL_ASSERTION")