Fail fast on attempt to load drives in illegal state

This commit is contained in:
DBotThePony 2022-05-14 16:51:10 +07:00
parent ad93ff58fb
commit 9a72ceeeb4
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 17 additions and 2 deletions

View File

@ -9,6 +9,7 @@ import net.minecraft.world.level.block.entity.BlockEntity
import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional
import ru.dbotthepony.mc.otm.SERVER_IS_DYING
import ru.dbotthepony.mc.otm.block.CableBlock
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.graph.Graph6Node
@ -54,12 +55,16 @@ class MatterCableBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
override fun onNeighbour(node: Graph6Node<*>, direction: Direction) {
val newState = blockState.setValue(CableBlock.MAPPING_CONNECTION_PROP[direction.ordinal], true)
if (newState !== blockState) level!!.setBlock(blockPos, newState, Block.UPDATE_CLIENTS)
if (newState !== blockState && !SERVER_IS_DYING)
level!!.setBlock(blockPos, newState, Block.UPDATE_CLIENTS)
}
override fun onUnNeighbour(node: Graph6Node<*>, direction: Direction) {
val newState = blockState.setValue(CableBlock.MAPPING_CONNECTION_PROP[direction.ordinal], false)
if (newState !== blockState) level!!.setBlock(blockPos, newState, Block.UPDATE_CLIENTS)
if (newState !== blockState && !SERVER_IS_DYING)
level!!.setBlock(blockPos, newState, Block.UPDATE_CLIENTS)
}
override fun setRemoved() {

View File

@ -17,6 +17,7 @@ import net.minecraftforge.event.server.ServerAboutToStartEvent
import net.minecraftforge.event.server.ServerStoppingEvent
import net.minecraftforge.event.world.WorldEvent
import org.apache.logging.log4j.LogManager
import ru.dbotthepony.mc.otm.SERVER_IS_DYING
import java.io.File
import java.lang.ref.WeakReference
import java.util.ArrayList
@ -53,6 +54,9 @@ object DrivePool {
if (!isLegalAccess())
throw IllegalAccessException("Can not access drive pool from outside of server thread.")
if (SERVER_IS_DYING)
throw IllegalStateException("Fail-fast: Server is shutting down")
val get = pool[id]
if (get != null) {
@ -88,6 +92,9 @@ object DrivePool {
if (!isLegalAccess())
throw IllegalAccessException("Can not access drive pool from outside of server thread.")
if (SERVER_IS_DYING)
throw IllegalStateException("Fail-fast: Server is shutting down")
pool[id] = WeakDriveReference(drive)
}
@ -96,6 +103,9 @@ object DrivePool {
if (!isLegalAccess())
throw IllegalAccessException("Can not access drive pool from outside of server thread.")
if (SERVER_IS_DYING)
throw IllegalStateException("Fail-fast: Server is shutting down")
pool[id]?.access()
}