Move tick, timer and writeonce to util

This commit is contained in:
DBotThePony 2023-01-14 17:34:48 +07:00
parent aa07bdea3b
commit ea6a237de8
Signed by: DBot
GPG Key ID: DCC23B5715498507
25 changed files with 82 additions and 79 deletions

View File

@ -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

View File

@ -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()

View File

@ -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

View File

@ -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) :

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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()

View File

@ -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

View File

@ -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()
}
}
}
}
}

View File

@ -0,0 +1,8 @@
package ru.dbotthepony.mc.otm.core.util
/**
* Represents tick callback
*/
fun interface ITickable {
fun tick()
}

View File

@ -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()
}
}
}
}
}

View File

@ -1,4 +1,4 @@
package ru.dbotthepony.mc.otm.core
package ru.dbotthepony.mc.otm.core.util
import org.apache.logging.log4j.LogManager

View File

@ -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

View File

@ -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.*

View File

@ -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 {

View File

@ -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]

View File

@ -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

View File

@ -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 {

View File

@ -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

View File

@ -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)

View File

@ -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