From 1f47f51157e72417d50b12d98b126b69fabea5f6 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sat, 13 Jan 2024 11:42:36 +0700 Subject: [PATCH] Chunk resubscription? for broken mods --- .../dbotthepony/mc/otm/block/entity/MatteryBlockEntity.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/MatteryBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/MatteryBlockEntity.kt index fb7176745..777cff983 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/MatteryBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/MatteryBlockEntity.kt @@ -35,6 +35,7 @@ import net.minecraftforge.event.entity.player.PlayerEvent import net.minecraftforge.event.level.ChunkWatchEvent import net.minecraftforge.event.level.LevelEvent import net.minecraftforge.event.server.ServerStoppingEvent +import org.apache.logging.log4j.LogManager import ru.dbotthepony.mc.otm.SERVER_IS_LIVE import ru.dbotthepony.mc.otm.block.INeighbourChangeListener import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock @@ -660,6 +661,10 @@ abstract class MatteryBlockEntity(p_155228_: BlockEntityType<*>, p_155229_: Bloc if (players.add(player)) { veto.add(player) recheckPlayer(player) + } else if (player !in veto) { + LOGGER.warn("Player got subscribed to ${ChunkPos(chunkPos)} multiple times without unsubscribing, forcefully resubscribing") + unsubscribe(player) + subscribe(player) } } @@ -734,6 +739,7 @@ abstract class MatteryBlockEntity(p_155228_: BlockEntityType<*>, p_155229_: Bloc private val tickingMap = WeakHashMap>() private val vec2Dir = Int2ObjectOpenHashMap() + private val LOGGER = LogManager.getLogger() /** * Returns stream of players watching (tracking) specified [chunkPos] in [level]