Skip to content

Commit fffcd2c

Browse files
committed
Fix /lootr clear not resetting visual.
1 parent be52beb commit fffcd2c

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

common/src/main/java/noobanidus/mods/lootr/common/data/DataStorage.java

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,18 @@
66
import net.minecraft.server.level.ServerChunkCache;
77
import net.minecraft.server.level.ServerLevel;
88
import net.minecraft.server.level.ServerPlayer;
9+
import net.minecraft.world.entity.Entity;
910
import net.minecraft.world.entity.player.Player;
1011
import net.minecraft.world.level.ChunkPos;
12+
import net.minecraft.world.level.block.entity.BlockEntity;
1113
import net.minecraft.world.level.saveddata.SavedData;
1214
import net.minecraft.world.level.storage.DimensionDataStorage;
1315
import net.minecraft.world.level.storage.LevelResource;
1416
import noobanidus.mods.lootr.common.api.LootrAPI;
17+
import noobanidus.mods.lootr.common.api.PlatformAPI;
1518
import noobanidus.mods.lootr.common.api.data.*;
19+
import noobanidus.mods.lootr.common.api.data.blockentity.ILootrBlockEntity;
20+
import noobanidus.mods.lootr.common.api.data.entity.ILootrCart;
1621
import noobanidus.mods.lootr.common.api.data.inventory.ILootrInventory;
1722
import noobanidus.mods.lootr.common.chunk.LoadedChunks;
1823
import noobanidus.mods.lootr.common.mixins.AccessorMixinDimensionDataStorage;
@@ -267,14 +272,27 @@ public static boolean clearInventories(UUID id) {
267272

268273
if (lootrSavedData.clearInventories(id)) {
269274
count++;
270-
if (!lootrSavedData.getInfoBlockType().equals(LootrBlockType.ENTITY)) {
271-
ServerLevel level = server.getLevel(lootrSavedData.getInfoDimension());
272-
if (level != null) {
273-
ServerChunkCache chunkCache = level.getChunkSource();
274-
ChunkPos chunkPos = new ChunkPos(lootrSavedData.getInfoPos());
275-
if (chunkCache.hasChunk(chunkPos.x, chunkPos.z) && LoadedChunks.getLoadedChunks(lootrSavedData.getInfoDimension())
276-
.contains(chunkPos)) {
277-
275+
ServerLevel level = server.getLevel(lootrSavedData.getInfoDimension());
276+
if (level != null) {
277+
ServerChunkCache chunkCache = level.getChunkSource();
278+
ChunkPos chunkPos = new ChunkPos(lootrSavedData.getInfoPos());
279+
if (chunkCache.hasChunk(chunkPos.x, chunkPos.z) && LoadedChunks.getLoadedChunks(lootrSavedData.getInfoDimension())
280+
.contains(chunkPos)) {
281+
if (lootrSavedData.getInfoBlockType() == LootrBlockType.ENTITY) {
282+
Entity entity = level.getEntity(lootrSavedData.getInfoUUID());
283+
if (entity instanceof ILootrCart cart) {
284+
cart.removeVisualOpener(id);
285+
cart.markChanged();
286+
PlatformAPI.performCartClose(cart);
287+
}
288+
} else {
289+
BlockEntity entity = level.getBlockEntity(lootrSavedData.getInfoPos());
290+
if (LootrAPI.resolveBlockEntity(entity) instanceof ILootrBlockEntity blockEntity) {
291+
blockEntity.removeVisualOpener(id);
292+
blockEntity.markChanged();
293+
PlatformAPI.performBlockClose(blockEntity);
294+
blockEntity.performUpdate();
295+
}
278296
}
279297
}
280298
}

0 commit comments

Comments
 (0)