Skip to content

Commit

Permalink
ModDimensionEntry registry emulation (dimensions not present yet, stby.)
Browse files Browse the repository at this point in the history
  • Loading branch information
ATPStorages committed Apr 12, 2024
1 parent edb3588 commit 756a175
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 9 deletions.
7 changes: 6 additions & 1 deletion src/main/kotlin/breadmod/registry/Registry.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import breadmod.registry.recipe.ModRecipeTypes
import breadmod.registry.screen.ModCreativeTabs
import breadmod.registry.screen.ModMenuTypes
import breadmod.registry.sound.ModSounds
import net.minecraft.core.RegistrySetBuilder
import net.minecraft.core.registries.Registries
import net.minecraftforge.eventbus.api.IEventBus
import net.minecraftforge.fml.ModLoadingContext
import net.minecraftforge.fml.config.ModConfig
Expand All @@ -21,7 +23,6 @@ val registerList = setOf(
ModItems.deferredRegister,
ModCreativeTabs.deferredRegister,
ModBlockEntities.deferredRegister,
ModDimensions.deferredRegister,
ModEntities.deferredRegister,
ModPainting.deferredRegister,
ModRecipeTypes.deferredRegister,
Expand All @@ -30,6 +31,9 @@ val registerList = setOf(
ModSounds.deferredRegister
)

val registrySet = RegistrySetBuilder()
.add(Registries.DIMENSION_TYPE, ModDimensions::bootstrap)

fun registerConfigs() = ModLoadingContext.get().let {
LOGGER.info("Registering configs")
it.registerConfig(ModConfig.Type.COMMON, ModConfiguration.COMMON_SPECIFICATION.right, "breadmod-common.toml")
Expand All @@ -40,6 +44,7 @@ fun registerAll(bus: IEventBus) {
LOGGER.info("Pushing register for ${it.registryName}")
it.register(bus)
}
// registrySet.build
registerConfigs()
}

49 changes: 41 additions & 8 deletions src/main/kotlin/breadmod/registry/dimension/ModDimensions.kt
Original file line number Diff line number Diff line change
@@ -1,17 +1,34 @@
package breadmod.registry.dimension

import breadmod.BreadMod
import java.util.OptionalLong
import net.minecraft.tags.BlockTags
import breadmod.BreadMod.modLocation
import net.minecraft.core.registries.Registries
import net.minecraft.world.level.dimension.DimensionType
import net.minecraftforge.registries.DeferredRegister
import net.minecraft.world.level.dimension.BuiltinDimensionTypes
import net.minecraft.data.worldgen.BootstapContext
import net.minecraft.resources.ResourceKey
import net.minecraft.resources.ResourceLocation
import net.minecraft.tags.BlockTags
import net.minecraft.util.valueproviders.ConstantInt
import net.minecraft.world.level.dimension.BuiltinDimensionTypes
import net.minecraft.world.level.dimension.DimensionType
import java.util.*

typealias BootstrapContext<T> = BootstapContext<T>

val entries = mutableListOf<ModDimensionEntry>()
private var freeze = false

object ModDimensions {
val deferredRegister: DeferredRegister<DimensionType> = DeferredRegister.create(Registries.DIMENSION_TYPE, BreadMod.ID)
val BREAD = deferredRegister.register("bread") {
fun register(
name: String,
dimensionType: (key: ResourceKey<DimensionType>, location: ResourceLocation) -> DimensionType
) = modLocation(name).let {
val resourceKey = ResourceKey.create(Registries.DIMENSION_TYPE, it)
ModDimensionEntry(
resourceKey, it,
dimensionType.invoke(resourceKey, it)
)
}

val BREAD = register("bread") { _, _ ->
DimensionType(
OptionalLong.empty(),
true,
Expand All @@ -35,4 +52,20 @@ object ModDimensions {
)
)
}

fun bootstrap(ctx: BootstrapContext<DimensionType>) {
entries.forEach { ctx.register(it.resourceKey, it.dimensionType) }
freeze = true
}
}

data class ModDimensionEntry(
val resourceKey: ResourceKey<DimensionType>,
val effectLocation: ResourceLocation,
val dimensionType: DimensionType
) {
init {
if(freeze) throw IllegalStateException("Dimension registered after entry list froze")
entries.add(this)
}
}

0 comments on commit 756a175

Please sign in to comment.