@@ -33,10 +33,18 @@ import net.minecraft.world.level.storage.loot.LootPool
3333import net.minecraft.world.level.storage.loot.entries.AlternativesEntry
3434import net.minecraft.world.level.storage.loot.entries.LootItem
3535import net.minecraft.world.level.storage.loot.providers.number.ConstantValue
36+ import net.minecraft.server.packs.resources.ResourceManager
37+ import net.minecraft.server.packs.resources.SimplePreparableReloadListener
38+ import net.minecraft.util.profiling.ProfilerFiller
3639// ? if neoforge {
3740/* import com.algorithmlx.dimore.worldgen.DimOreModifier
3841import net.minecraft.core.Holder
3942import net.neoforged.bus.api.IEventBus
43+ //? if >1.21.1 {
44+ import net.neoforged.neoforge.event.AddServerReloadListenersEvent as AddReloadListenerEvent
45+ //?} else {
46+ /*import net.neoforged.neoforge.event.AddReloadListenerEvent
47+ *///?}
4048import net.neoforged.neoforge.registries.DeferredBlock
4149import net.neoforged.neoforge.registries.DeferredRegister
4250import net.neoforged.neoforge.registries.NeoForgeRegistries
@@ -46,7 +54,16 @@ import com.algorithmlx.dimore.init.config.DimensionalOresConfig
4654import com.algorithmlx.dimore.util.DimensionOreConfig
4755import com.algorithmlx.dimore.util.OreGeneratorFactory
4856import net.fabricmc.fabric.api.event.registry.DynamicRegistrySetupCallback
57+ // $ if >1.21.1 'import net.fabricmc.fabric.api.resource.v1.ResourceLoader' else 'import net.fabricmc.fabric.api.resource.ResourceManagerHelper as ResourceLoader'
58+ import net.fabricmc.fabric.api.resource.v1.ResourceLoader
4959import net.minecraft.core.Registry
60+ import net.minecraft.server.packs.PackType
61+ // ? if <=1.21.1 {
62+ /* import net.minecraft.server.packs.resources.PreparableReloadListener
63+ import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener
64+ import java.util.concurrent.CompletableFuture
65+ import java.util.concurrent.Executor
66+ */ // ?}
5067import net.minecraft.world.level.levelgen.feature.ConfiguredFeature
5168import net.minecraft.world.level.levelgen.placement.PlacedFeature
5269// ?}
@@ -76,8 +93,23 @@ object Registry {
7693 if (CommentedJSONManager .config.enableCustomBlocks) initOresFromJSON()
7794 if (CommentedJSONManager .config.enableLootTables) registerLootTables()
7895
96+ val lootTableReload = object : SimplePreparableReloadListener <Unit >() {
97+ override fun prepare (manager : ResourceManager , profiler : ProfilerFiller ) {}
98+ override fun apply (preparations : Unit , manager : ResourceManager , profiler : ProfilerFiller ) = registerLootTables()
99+ }
100+
101+ // ? if >1.21.1 || fabricLike
102+ val lootTableReloadId = ResLoc .parse(" $ModId :config_loot_table" )
103+
79104 // ? if forgeLike {
80105 /* biomeModifierSerializers.register("dimore_modifier", Supplier { DimOreModifier.codec })
106+ bus.addListener { event: AddReloadListenerEvent ->
107+ //? if >1.21.1 {
108+ event.addListener(lootTableReloadId, lootTableReload)
109+ //?} else {
110+ /*event.addListener(lootTableReload)
111+ *///?}
112+ }
81113 */ // ?} else {
82114 DynamicRegistrySetupCallback .EVENT .register { regMgr ->
83115 val confReg = regMgr.getOptional(Registries .CONFIGURED_FEATURE )
@@ -87,6 +119,20 @@ object Registry {
87119
88120 registerFeatures(confReg.get(), placedReg.get())
89121 }
122+
123+ ResourceLoader .get(PackType .SERVER_DATA )
124+ // ? if >1.21.1 {
125+ // $ if >1.21.11 '.registerReloadListener(lootTableReloadId, lootTableReload)' else '.registerReloader(lootTableReloadId, lootTableReload)'
126+ .registerReloadListener(lootTableReloadId, lootTableReload)
127+ // ?} else {
128+ /* .registerReloadListener(object : IdentifiableResourceReloadListener {
129+ override fun getFabricId(): ResLoc? = lootTableReloadId
130+ override fun reload(
131+ preparationBarrier: PreparableReloadListener.PreparationBarrier, resourceManager: ResourceManager,
132+ profilerFiller: ProfilerFiller, profilerFiller2: ProfilerFiller, executor: Executor, executor2: Executor
133+ ): CompletableFuture<Void?>? = lootTableReload.reload(preparationBarrier, resourceManager, profilerFiller, profilerFiller2, executor, executor2)
134+ })
135+ */ // ? }
90136 // ?}
91137 }
92138
@@ -214,7 +260,7 @@ object Registry {
214260 ))).build()
215261 }
216262
217- fun registerLootTables () {
263+ private fun registerLootTables () {
218264 val lootFiles = File (" config/$ModId /loot/" )
219265 if (! lootFiles.exists()) {
220266 lootFiles.parentFile.mkdirs()
@@ -258,25 +304,25 @@ object Registry {
258304 shouldRegisterItem: Boolean
259305 ): DeferredBlock<B> {
260306 //? if >1.21.1 {
261- /* val blockKey = { it: ResLoc -> ResourceKey.create(Registries.BLOCK, it) }
307+ val blockKey = { it: ResLoc -> ResourceKey.create(Registries.BLOCK, it) }
262308 val bl = blockRegistry.register(id) { rk ->
263309 block(properties.setId(blockKey(rk)))
264310 }
265- */ //?} else
266- val bl = blockRegistry.register(id, Supplier { block(properties) })
311+ //?} else
312+ // val bl = blockRegistry.register(id, Supplier { block(properties) })
267313
268314 if (shouldRegisterItem) {
269315 //? if >1.21.1 {
270- /* itemRegistry.register(id) { rk ->
316+ itemRegistry.register(id) { rk ->
271317 NamedBlockItem(
272318 bl.get(),
273319 Item.Properties()
274320 .setId(ResourceKey.create(Registries.ITEM, rk))
275321 .useBlockDescriptionPrefix()
276322 )
277323 }
278- */ //?} else
279- itemRegistry.register(id, Supplier { NamedBlockItem(bl.get(), Item.Properties()) })
324+ //?} else
325+ // itemRegistry.register(id, Supplier { NamedBlockItem(bl.get(), Item.Properties()) })
280326 }
281327
282328 blockHolders[id] = bl
0 commit comments