Skip to content

Commit 8f66a4a

Browse files
committed
Fix #694: for some values of "fix".
This might actually be problematic but I can't think of any other way to do this. Funnily enough this was actually an issue (always) in 1.21, I guess?
1 parent 7e59f5d commit 8f66a4a

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

common/src/main/java/noobanidus/mods/lootr/common/block/entity/BlockEntityTicker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ private void addEntity(Level level, BlockEntity entity, ChunkPos chunkPos) {
8080
}
8181

8282
private static boolean isValidEntity(BlockEntity entity) {
83-
if (LootrAPI.resolveBlockEntity(entity) instanceof ILootrBlockEntity) {
83+
if (entity instanceof ILootrBlockEntity || LootrAPI.resolveBlockEntity(entity) instanceof ILootrBlockEntity) {
8484
return false;
8585
}
8686
ILootrDataAdapter<BlockEntity> adapter = LootrAPI.getAdapter(entity);
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package noobanidus.mods.lootr.common.mixins;
2+
3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import net.minecraft.world.RandomizableContainer;
6+
import net.minecraft.world.level.ChunkPos;
7+
import net.minecraft.world.level.block.entity.BlockEntity;
8+
import noobanidus.mods.lootr.common.block.entity.BlockEntityTicker;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.injection.At;
11+
12+
@Mixin(RandomizableContainer.class)
13+
public interface MixinRandomizableContainer {
14+
@WrapOperation(method = "tryLoadLootTable", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/RandomizableContainer;setLootTableSeed(J)V"))
15+
default void lootr$tryLoadLootTable(RandomizableContainer instance, long l, Operation<Void> original) {
16+
original.call(instance, l);
17+
if (instance instanceof BlockEntity blockEntity && blockEntity.getLevel() != null) {
18+
BlockEntityTicker.addEntity(blockEntity, blockEntity.getLevel(), new ChunkPos(blockEntity.getBlockPos()));
19+
}
20+
}
21+
22+
// TODO: Maybe a hook in `unpackLootTable`? That would need to ensure that the block is convertible as we'd want to cancel unpacking in the event that the block is converting, but otherwise continue as normal.
23+
}

common/src/main/resources/lootr-common.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"MixinLootTable",
1515
"MixinPoiType",
1616
"MixinPoiTypes",
17+
"MixinRandomizableContainer",
1718
"MixinServerGamePacketListenerImpl",
1819
"MixinStructureTemplate"
1920
],

0 commit comments

Comments
 (0)