Skip to content

Commit d1cc9e2

Browse files
committed
Loot Table reload listener
1 parent 97881d8 commit d1cc9e2

2 files changed

Lines changed: 55 additions & 7 deletions

File tree

src/main/java/com/algorithmlx/dimore/mixin/PackRepositoryMixin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.algorithmlx.dimore.mixin;
22

33
import com.algorithmlx.dimore.ModKt;
4+
import com.algorithmlx.dimore.init.config.CommentedJSONManager;
45
import com.algorithmlx.dimore.init.resource.DimOreResourcePack;
56
import com.google.common.collect.Lists;
67
import net.minecraft.network.chat.Component;
@@ -21,6 +22,7 @@
2122
public class PackRepositoryMixin {
2223
@ModifyVariable(method = "<init>", at = @At("HEAD"), argsOnly = true)
2324
private static RepositorySource[] dimore$init(RepositorySource[] sources) {
25+
if (!CommentedJSONManager.INSTANCE.getConfig().getEnableCustomBlocks()) return sources;
2426
var asList = Lists.newArrayList(sources);
2527
asList.add((packConsumer) -> {
2628
var supp = new Pack.ResourcesSupplier() {

src/main/kotlin/init/Registry.kt

Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,18 @@ import net.minecraft.world.level.storage.loot.LootPool
3333
import net.minecraft.world.level.storage.loot.entries.AlternativesEntry
3434
import net.minecraft.world.level.storage.loot.entries.LootItem
3535
import 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
3841
import net.minecraft.core.Holder
3942
import 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+
*///?}
4048
import net.neoforged.neoforge.registries.DeferredBlock
4149
import net.neoforged.neoforge.registries.DeferredRegister
4250
import net.neoforged.neoforge.registries.NeoForgeRegistries
@@ -46,7 +54,16 @@ import com.algorithmlx.dimore.init.config.DimensionalOresConfig
4654
import com.algorithmlx.dimore.util.DimensionOreConfig
4755
import com.algorithmlx.dimore.util.OreGeneratorFactory
4856
import 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
4959
import 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+
*///?}
5067
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature
5168
import 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

Comments
 (0)