Move tick, timer and writeonce to util
This commit is contained in:
parent
aa07bdea3b
commit
ea6a237de8
@ -20,7 +20,7 @@ import net.minecraftforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.android.AndroidResearchDataProvider
|
||||
import ru.dbotthepony.mc.otm.block.*
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.datagen.blocks.BatteryBankProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.blocks.MatterBankProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.blocks.MatteryBlockStateProvider
|
||||
|
@ -16,10 +16,10 @@ import net.minecraftforge.event.server.ServerStoppingEvent
|
||||
import net.minecraftforge.fml.loading.FMLLoader
|
||||
import org.apache.logging.log4j.LogManager
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.core.IConditionalTickable
|
||||
import ru.dbotthepony.mc.otm.core.ITickable
|
||||
import ru.dbotthepony.mc.otm.core.TickList
|
||||
import ru.dbotthepony.mc.otm.core.TimerQueue
|
||||
import ru.dbotthepony.mc.otm.core.util.IConditionalTickable
|
||||
import ru.dbotthepony.mc.otm.core.util.ITickable
|
||||
import ru.dbotthepony.mc.otm.core.util.TickList
|
||||
import ru.dbotthepony.mc.otm.core.util.TimerQueue
|
||||
import java.util.*
|
||||
|
||||
private val preServerTick = TickList()
|
||||
|
@ -2,12 +2,11 @@ package ru.dbotthepony.mc.otm.android
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArraySet
|
||||
import net.minecraft.data.CachedOutput
|
||||
import net.minecraft.data.DataGenerator
|
||||
import net.minecraft.data.DataProvider
|
||||
import net.minecraft.data.PackOutput
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
import java.util.Collections
|
||||
import java.util.LinkedList
|
||||
import java.util.concurrent.CompletableFuture
|
||||
|
@ -21,7 +21,7 @@ import ru.dbotthepony.mc.otm.menu.AndroidStationMenu
|
||||
import ru.dbotthepony.mc.otm.registry.MBlockEntities
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MNames
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
|
||||
@Suppress("ObjectPropertyName")
|
||||
class AndroidStationBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
|
||||
|
@ -29,7 +29,7 @@ import ru.dbotthepony.mc.otm.core.*
|
||||
import ru.dbotthepony.mc.otm.menu.ChemicalGeneratorMenu
|
||||
import ru.dbotthepony.mc.otm.registry.MBlockEntities
|
||||
import ru.dbotthepony.mc.otm.registry.MNames
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.core.math.DecimalConfigValue
|
||||
import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
||||
|
@ -38,7 +38,7 @@ import ru.dbotthepony.mc.otm.registry.MBlockEntities
|
||||
import ru.dbotthepony.mc.otm.core.*
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MNames
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.core.math.DecimalConfigValue
|
||||
import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
||||
|
@ -28,7 +28,6 @@ import ru.dbotthepony.mc.otm.capability.matter.IMatterStorage
|
||||
import ru.dbotthepony.mc.otm.capability.matter.MatterStorageImpl
|
||||
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
||||
import ru.dbotthepony.mc.otm.container.MatteryContainerHooks
|
||||
import ru.dbotthepony.mc.otm.core.*
|
||||
import ru.dbotthepony.mc.otm.graph.Graph6Node
|
||||
import ru.dbotthepony.mc.otm.graph.matter.IMatterGraphNode
|
||||
import ru.dbotthepony.mc.otm.graph.matter.MatterNetworkGraph
|
||||
@ -38,7 +37,7 @@ import ru.dbotthepony.mc.otm.registry.MBlockEntities
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MNames
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.core.math.DecimalConfigValue
|
||||
import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
||||
|
@ -41,7 +41,7 @@ import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MNames
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.math.getDecimal
|
||||
import ru.dbotthepony.mc.otm.core.math.set
|
||||
|
||||
|
@ -31,10 +31,9 @@ import ru.dbotthepony.mc.otm.graph.matter.IMatterGraphNode
|
||||
import ru.dbotthepony.mc.otm.graph.matter.MatterNetworkGraph
|
||||
import ru.dbotthepony.mc.otm.menu.MatterReplicatorMenu
|
||||
import ru.dbotthepony.mc.otm.registry.MBlockEntities
|
||||
import ru.dbotthepony.mc.otm.core.*
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MNames
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.core.math.DecimalConfigValue
|
||||
import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
||||
|
@ -37,7 +37,7 @@ import ru.dbotthepony.mc.otm.menu.MatterScannerMenu
|
||||
import ru.dbotthepony.mc.otm.registry.MBlockEntities
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MNames
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.matter.MatterManager
|
||||
import java.util.*
|
||||
import kotlin.math.pow
|
||||
|
@ -2,11 +2,10 @@ package ru.dbotthepony.mc.otm.client
|
||||
|
||||
import net.minecraftforge.client.event.ClientPlayerNetworkEvent
|
||||
import net.minecraftforge.event.TickEvent
|
||||
import org.apache.logging.log4j.LogManager
|
||||
import ru.dbotthepony.mc.otm.core.IConditionalTickable
|
||||
import ru.dbotthepony.mc.otm.core.ITickable
|
||||
import ru.dbotthepony.mc.otm.core.TickList
|
||||
import ru.dbotthepony.mc.otm.core.TimerQueue
|
||||
import ru.dbotthepony.mc.otm.core.util.IConditionalTickable
|
||||
import ru.dbotthepony.mc.otm.core.util.ITickable
|
||||
import ru.dbotthepony.mc.otm.core.util.TickList
|
||||
import ru.dbotthepony.mc.otm.core.util.TimerQueue
|
||||
import ru.dbotthepony.mc.otm.isClient
|
||||
|
||||
private val preTickList = TickList()
|
||||
|
@ -15,7 +15,7 @@ import net.minecraftforge.common.capabilities.ICapabilityProvider
|
||||
import net.minecraftforge.common.util.LazyOptional
|
||||
import net.minecraftforge.event.AttachCapabilitiesEvent
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent
|
||||
import ru.dbotthepony.mc.otm.core.ITickable
|
||||
import ru.dbotthepony.mc.otm.core.util.ITickable
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.onceServer
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||
|
@ -0,0 +1,36 @@
|
||||
package ru.dbotthepony.mc.otm.core.util
|
||||
|
||||
/**
|
||||
* Represents tick callback with condition, once
|
||||
*/
|
||||
interface IConditionalTickable : ITickable {
|
||||
/**
|
||||
* Once this returns false, it should stay false.
|
||||
*
|
||||
* If it suddenly turns true after being false, result is undefined.
|
||||
*/
|
||||
val canTick: Boolean
|
||||
|
||||
companion object {
|
||||
fun wrap(ticker: () -> Boolean): IConditionalTickable {
|
||||
return object : IConditionalTickable {
|
||||
override var canTick: Boolean = true
|
||||
private set
|
||||
|
||||
override fun tick() {
|
||||
canTick = !ticker.invoke()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun wrap(condition: () -> Boolean, ticker: () -> Unit): IConditionalTickable {
|
||||
return object : IConditionalTickable {
|
||||
override val canTick: Boolean get() = condition.invoke()
|
||||
|
||||
override fun tick() {
|
||||
ticker.invoke()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package ru.dbotthepony.mc.otm.core.util
|
||||
|
||||
/**
|
||||
* Represents tick callback
|
||||
*/
|
||||
fun interface ITickable {
|
||||
fun tick()
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
package ru.dbotthepony.mc.otm.core
|
||||
package ru.dbotthepony.mc.otm.core.util
|
||||
|
||||
import org.apache.logging.log4j.LogManager
|
||||
import kotlin.ConcurrentModificationException
|
||||
|
||||
class TickList {
|
||||
private val conditional = ArrayDeque<IConditionalTickable>()
|
||||
@ -47,10 +46,16 @@ class TickList {
|
||||
}
|
||||
|
||||
fun until(ticker: () -> Boolean) = add(IConditionalTickable.wrap(ticker))
|
||||
fun `while`(tickerCondition: () -> Boolean, ticker: () -> Unit) = add(IConditionalTickable.wrap(tickerCondition, ticker))
|
||||
fun `while`(tickerCondition: () -> Boolean, ticker: () -> Unit) = add(
|
||||
IConditionalTickable.wrap(
|
||||
tickerCondition,
|
||||
ticker
|
||||
)
|
||||
)
|
||||
|
||||
fun until(ticker: () -> Boolean, condition: Boolean, reason: String) = add(IConditionalTickable.wrap(ticker), condition, reason)
|
||||
fun `while`(tickerCondition: () -> Boolean, ticker: () -> Unit, condition: Boolean, reason: String) = add(IConditionalTickable.wrap(tickerCondition, ticker), condition, reason)
|
||||
fun `while`(tickerCondition: () -> Boolean, ticker: () -> Unit, condition: Boolean, reason: String) = add(
|
||||
IConditionalTickable.wrap(tickerCondition, ticker), condition, reason)
|
||||
|
||||
fun tick() {
|
||||
if (inTicker) {
|
||||
@ -97,39 +102,3 @@ class TickList {
|
||||
private val LOGGER = LogManager.getLogger()
|
||||
}
|
||||
}
|
||||
|
||||
fun interface ITickable {
|
||||
fun tick()
|
||||
}
|
||||
|
||||
interface IConditionalTickable : ITickable {
|
||||
/**
|
||||
* Once this returns false, it should stay false.
|
||||
*
|
||||
* If it suddenly turns true after being false, result is undefined.
|
||||
*/
|
||||
val canTick: Boolean
|
||||
|
||||
companion object {
|
||||
fun wrap(ticker: () -> Boolean): IConditionalTickable {
|
||||
return object : IConditionalTickable {
|
||||
override var canTick: Boolean = true
|
||||
private set
|
||||
|
||||
override fun tick() {
|
||||
canTick = !ticker.invoke()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun wrap(condition: () -> Boolean, ticker: () -> Unit): IConditionalTickable {
|
||||
return object : IConditionalTickable {
|
||||
override val canTick: Boolean get() = condition.invoke()
|
||||
|
||||
override fun tick() {
|
||||
ticker.invoke()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package ru.dbotthepony.mc.otm.core
|
||||
package ru.dbotthepony.mc.otm.core.util
|
||||
|
||||
import org.apache.logging.log4j.LogManager
|
||||
|
@ -1,4 +1,4 @@
|
||||
package ru.dbotthepony.mc.otm.core
|
||||
package ru.dbotthepony.mc.otm.core.util
|
||||
|
||||
import kotlin.properties.ReadWriteProperty
|
||||
import kotlin.reflect.KProperty
|
@ -5,7 +5,7 @@ import net.minecraft.core.Direction
|
||||
import net.minecraft.core.SectionPos
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.world.level.block.entity.BlockEntity
|
||||
import ru.dbotthepony.mc.otm.core.IConditionalTickable
|
||||
import ru.dbotthepony.mc.otm.core.util.IConditionalTickable
|
||||
import ru.dbotthepony.mc.otm.core.math.plus
|
||||
import ru.dbotthepony.mc.otm.addTicker
|
||||
import java.util.*
|
||||
|
@ -1,8 +1,8 @@
|
||||
package ru.dbotthepony.mc.otm.graph
|
||||
|
||||
import net.minecraft.core.Direction
|
||||
import ru.dbotthepony.mc.otm.core.IConditionalTickable
|
||||
import ru.dbotthepony.mc.otm.core.ITickable
|
||||
import ru.dbotthepony.mc.otm.core.util.IConditionalTickable
|
||||
import ru.dbotthepony.mc.otm.core.util.ITickable
|
||||
import ru.dbotthepony.mc.otm.SERVER_IS_LIVE
|
||||
|
||||
interface GraphNodeListener {
|
||||
|
@ -42,7 +42,7 @@ import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
||||
import ru.dbotthepony.mc.otm.core.ifPresentK
|
||||
import ru.dbotthepony.mc.otm.core.orNull
|
||||
import ru.dbotthepony.mc.otm.registry.EMPDamageSource
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
|
||||
/**
|
||||
* This is called from [net.minecraft.world.item.enchantment.EnchantmentHelper.getSweepingDamageRatio]
|
||||
|
@ -9,7 +9,7 @@ import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.level.ItemLike
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import java.util.Collections
|
||||
import java.util.concurrent.CompletableFuture
|
||||
|
@ -1,17 +1,11 @@
|
||||
package ru.dbotthepony.mc.otm.registry
|
||||
|
||||
import com.google.common.collect.Iterators
|
||||
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap
|
||||
import it.unimi.dsi.fastutil.objects.ReferenceLinkedOpenHashSet
|
||||
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.item.CreativeModeTab
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraftforge.event.CreativeModeTabEvent
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.registry.MItems.BATTERY_CREATIVE
|
||||
|
||||
object MCreativeTabs {
|
||||
|
@ -8,7 +8,7 @@ import net.minecraft.world.level.block.state.BlockBehaviour
|
||||
import net.minecraftforge.registries.DeferredRegister
|
||||
import net.minecraftforge.registries.RegistryObject
|
||||
import ru.dbotthepony.mc.otm.core.collect.SupplierMap
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
|
||||
/**
|
||||
* Base + Colored
|
||||
|
@ -10,7 +10,7 @@ import net.minecraft.world.level.saveddata.SavedData
|
||||
import org.apache.logging.log4j.LogManager
|
||||
import ru.dbotthepony.mc.otm.core.collect.ProxiedMap
|
||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||
import ru.dbotthepony.mc.otm.core.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
|
||||
class SavedMapDelegate<V>(val parent: SavedCountingMap<SavedMapDelegate<V>>?, val index: Int, value: V) {
|
||||
constructor(value: V) : this(null, -1, value)
|
||||
|
@ -3,7 +3,7 @@ package ru.dbotthepony.mc.otm.tests
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
import ru.dbotthepony.mc.otm.core.TimerQueue
|
||||
import ru.dbotthepony.mc.otm.core.util.TimerQueue
|
||||
|
||||
object TimerQueueTests {
|
||||
@Test
|
||||
|
Loading…
Reference in New Issue
Block a user