diff --git a/src/main/java/li/cil/oc2/client/audio/LoopingBlockEntitySound.java b/src/main/java/li/cil/oc2/client/audio/LoopingBlockEntitySound.java index 422a0d11..aaeee7c4 100644 --- a/src/main/java/li/cil/oc2/client/audio/LoopingBlockEntitySound.java +++ b/src/main/java/li/cil/oc2/client/audio/LoopingBlockEntitySound.java @@ -1,6 +1,6 @@ package li.cil.oc2.client.audio; -import li.cil.oc2.common.Constants; +import li.cil.oc2.common.util.TickUtils; import net.minecraft.client.resources.sounds.AbstractTickableSoundInstance; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; @@ -9,9 +9,10 @@ import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.phys.Vec3; +import java.time.Duration; + public final class LoopingBlockEntitySound extends AbstractTickableSoundInstance { - private static final float FADE_IN_DURATION_IN_SECONDS = 2.0f; - private static final float FADE_IN_DURATION_IN_TICKS = FADE_IN_DURATION_IN_SECONDS * Constants.SECONDS_TO_TICKS; + private static final float FADE_IN_DURATION_IN_TICKS = TickUtils.toTicks(Duration.ofSeconds(2)); private static final float FADE_IN_PER_TICK = 1f / FADE_IN_DURATION_IN_TICKS; /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/blockentity/ComputerBlockEntity.java b/src/main/java/li/cil/oc2/common/blockentity/ComputerBlockEntity.java index a2fb627f..f53f812e 100644 --- a/src/main/java/li/cil/oc2/common/blockentity/ComputerBlockEntity.java +++ b/src/main/java/li/cil/oc2/common/blockentity/ComputerBlockEntity.java @@ -23,10 +23,7 @@ import li.cil.oc2.common.network.message.ComputerBusStateMessage; import li.cil.oc2.common.network.message.ComputerRunStateMessage; import li.cil.oc2.common.network.message.ComputerTerminalOutputMessage; import li.cil.oc2.common.serialization.NBTSerialization; -import li.cil.oc2.common.util.HorizontalBlockUtils; -import li.cil.oc2.common.util.NBTUtils; -import li.cil.oc2.common.util.SoundEvents; -import li.cil.oc2.common.util.TerminalUtils; +import li.cil.oc2.common.util.*; import li.cil.oc2.common.vm.*; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -45,9 +42,11 @@ import org.jetbrains.annotations.NotNull; import javax.annotation.Nullable; import java.nio.ByteBuffer; +import java.time.Duration; import java.util.*; -import static li.cil.oc2.common.Constants.*; +import static li.cil.oc2.common.Constants.BLOCK_ENTITY_TAG_NAME_IN_ITEM; +import static li.cil.oc2.common.Constants.ITEMS_TAG_NAME; public final class ComputerBlockEntity extends ModBlockEntity implements TerminalUserProvider { private static final String BUS_ELEMENT_TAG_NAME = "busElement"; @@ -61,7 +60,7 @@ public final class ComputerBlockEntity extends ModBlockEntity implements Termina private static final int FLASH_MEMORY_SLOTS = 1; private static final int CARD_SLOTS = 4; - private static final int MAX_RUNNING_SOUND_DELAY = SECONDS_TO_TICKS * 2; + private static final int MAX_RUNNING_SOUND_DELAY = TickUtils.toTicks(Duration.ofSeconds(2)); /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/blockentity/NetworkConnectorBlockEntity.java b/src/main/java/li/cil/oc2/common/blockentity/NetworkConnectorBlockEntity.java index 8e6dee08..e8744fe5 100644 --- a/src/main/java/li/cil/oc2/common/blockentity/NetworkConnectorBlockEntity.java +++ b/src/main/java/li/cil/oc2/common/blockentity/NetworkConnectorBlockEntity.java @@ -8,10 +8,7 @@ import li.cil.oc2.common.capabilities.Capabilities; import li.cil.oc2.common.item.Items; import li.cil.oc2.common.network.Network; import li.cil.oc2.common.network.message.NetworkConnectorConnectionsMessage; -import li.cil.oc2.common.util.ItemStackUtils; -import li.cil.oc2.common.util.LazyOptionalUtils; -import li.cil.oc2.common.util.NBTTagIds; -import li.cil.oc2.common.util.ServerScheduler; +import li.cil.oc2.common.util.*; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -33,6 +30,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.util.LazyOptional; import javax.annotation.Nullable; +import java.time.Duration; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -51,7 +49,7 @@ public final class NetworkConnectorBlockEntity extends ModBlockEntity { private static final String CONNECTIONS_TAG_NAME = "connections"; private static final String IS_OWNER_TAG_NAME = "is_owner"; - private static final int RETRY_UNLOADED_CHUNK_INTERVAL = 5 * Constants.SECONDS_TO_TICKS; + private static final int RETRY_UNLOADED_CHUNK_INTERVAL = TickUtils.toTicks(Duration.ofSeconds(5)); private static final int MAX_CONNECTION_COUNT = 2; private static final int MAX_CONNECTION_DISTANCE = 16; private static final int INITIAL_PACKET_TIME_TO_LIVE = 12; diff --git a/src/main/java/li/cil/oc2/common/bus/CommonDeviceBusController.java b/src/main/java/li/cil/oc2/common/bus/CommonDeviceBusController.java index 4600ca56..d1d79f45 100644 --- a/src/main/java/li/cil/oc2/common/bus/CommonDeviceBusController.java +++ b/src/main/java/li/cil/oc2/common/bus/CommonDeviceBusController.java @@ -3,12 +3,13 @@ package li.cil.oc2.common.bus; import li.cil.oc2.api.bus.DeviceBusController; import li.cil.oc2.api.bus.DeviceBusElement; import li.cil.oc2.api.bus.device.Device; -import li.cil.oc2.common.Constants; import li.cil.oc2.common.util.Event; import li.cil.oc2.common.util.LazyOptionalUtils; import li.cil.oc2.common.util.ParameterizedEvent; +import li.cil.oc2.common.util.TickUtils; import net.minecraftforge.common.util.LazyOptional; +import java.time.Duration; import java.util.*; import static java.util.Collections.emptySet; @@ -25,8 +26,8 @@ public class CommonDeviceBusController implements DeviceBusController { /////////////////////////////////////////////////////////////////// private static final int MAX_BUS_ELEMENT_COUNT = 128; - private static final int INCOMPLETE_RETRY_INTERVAL = 10 * Constants.SECONDS_TO_TICKS; - private static final int BAD_CONFIGURATION_RETRY_INTERVAL = 5 * Constants.SECONDS_TO_TICKS; + private static final int INCOMPLETE_RETRY_INTERVAL = TickUtils.toTicks(Duration.ofSeconds(10)); + private static final int BAD_CONFIGURATION_RETRY_INTERVAL = TickUtils.toTicks(Duration.ofSeconds(5)); /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/bus/device/item/BlockOperationsModuleDevice.java b/src/main/java/li/cil/oc2/common/bus/device/item/BlockOperationsModuleDevice.java index 65cc3d57..ff7a7a5e 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/item/BlockOperationsModuleDevice.java +++ b/src/main/java/li/cil/oc2/common/bus/device/item/BlockOperationsModuleDevice.java @@ -5,8 +5,8 @@ import li.cil.oc2.api.bus.device.object.Parameter; import li.cil.oc2.api.capabilities.Robot; import li.cil.oc2.api.util.RobotOperationSide; import li.cil.oc2.common.Config; -import li.cil.oc2.common.Constants; import li.cil.oc2.common.util.FakePlayerUtils; +import li.cil.oc2.common.util.TickUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -38,12 +38,13 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemStackHandler; import javax.annotation.Nullable; +import java.time.Duration; import java.util.List; public final class BlockOperationsModuleDevice extends AbstractItemRPCDevice { private static final String LAST_OPERATION_TAG_NAME = "cooldown"; - private static final int COOLDOWN = Constants.SECONDS_TO_TICKS; + private static final int COOLDOWN = TickUtils.toTicks(Duration.ofSeconds(1)); /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/bus/device/item/SoundCardItemDevice.java b/src/main/java/li/cil/oc2/common/bus/device/item/SoundCardItemDevice.java index 8eaee19d..956640a0 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/item/SoundCardItemDevice.java +++ b/src/main/java/li/cil/oc2/common/bus/device/item/SoundCardItemDevice.java @@ -2,8 +2,8 @@ package li.cil.oc2.common.bus.device.item; import li.cil.oc2.api.bus.device.object.Callback; import li.cil.oc2.api.bus.device.object.Parameter; -import li.cil.oc2.common.Constants; import li.cil.oc2.common.util.Location; +import li.cil.oc2.common.util.TickUtils; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; @@ -13,13 +13,14 @@ import net.minecraft.world.level.LevelAccessor; import net.minecraftforge.registries.ForgeRegistries; import javax.annotation.Nullable; +import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.function.Supplier; public final class SoundCardItemDevice extends AbstractItemRPCDevice { - private static final int COOLDOWN_IN_TICKS = 2 * Constants.SECONDS_TO_TICKS; + private static final int COOLDOWN_IN_TICKS = TickUtils.toTicks(Duration.ofSeconds(2)); private static final int MAX_FIND_RESULTS = 25; /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/entity/robot/RobotMovementAction.java b/src/main/java/li/cil/oc2/common/entity/robot/RobotMovementAction.java index e505e64f..ea4c6bc7 100644 --- a/src/main/java/li/cil/oc2/common/entity/robot/RobotMovementAction.java +++ b/src/main/java/li/cil/oc2/common/entity/robot/RobotMovementAction.java @@ -1,10 +1,10 @@ package li.cil.oc2.common.entity.robot; -import li.cil.oc2.common.Constants; import li.cil.oc2.common.entity.Entities; import li.cil.oc2.common.entity.Robot; import li.cil.oc2.common.util.NBTTagIds; import li.cil.oc2.common.util.NBTUtils; +import li.cil.oc2.common.util.TickUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -13,6 +13,7 @@ import net.minecraft.world.entity.MoverType; import net.minecraft.world.phys.Vec3; import javax.annotation.Nullable; +import java.time.Duration; import java.util.Objects; public final class RobotMovementAction extends AbstractRobotAction { @@ -20,7 +21,7 @@ public final class RobotMovementAction extends AbstractRobotAction { /////////////////////////////////////////////////////////////////// - private static final float MOVEMENT_SPEED = 1f / Constants.SECONDS_TO_TICKS; // block / sec -> block / tick. + private static final float MOVEMENT_SPEED = 1f / TickUtils.toTicks(Duration.ofSeconds(1)); // blocks per tick private static final String DIRECTION_TAG_NAME = "direction"; private static final String ORIGIN_TAG_NAME = "origin"; diff --git a/src/main/java/li/cil/oc2/common/entity/robot/RobotRotationAction.java b/src/main/java/li/cil/oc2/common/entity/robot/RobotRotationAction.java index 0cdd8bc5..0d35cb97 100644 --- a/src/main/java/li/cil/oc2/common/entity/robot/RobotRotationAction.java +++ b/src/main/java/li/cil/oc2/common/entity/robot/RobotRotationAction.java @@ -1,21 +1,22 @@ package li.cil.oc2.common.entity.robot; -import li.cil.oc2.common.Constants; import li.cil.oc2.common.entity.Robot; import li.cil.oc2.common.util.NBTTagIds; import li.cil.oc2.common.util.NBTUtils; +import li.cil.oc2.common.util.TickUtils; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; import javax.annotation.Nullable; +import java.time.Duration; public final class RobotRotationAction extends AbstractRobotAction { public static final float TARGET_EPSILON = 0.0001f; /////////////////////////////////////////////////////////////////// - private static final float ROTATION_SPEED = 90f / Constants.SECONDS_TO_TICKS; // degrees / sec -> degrees / tick + private static final float ROTATION_SPEED = 90f / TickUtils.toTicks(Duration.ofSeconds(1)); // degrees per tick private static final String DIRECTION_TAG_NAME = "direction"; private static final String TARGET_TAG_NAME = "start"; diff --git a/src/main/java/li/cil/oc2/common/util/TickUtils.java b/src/main/java/li/cil/oc2/common/util/TickUtils.java new file mode 100644 index 00000000..66c09d70 --- /dev/null +++ b/src/main/java/li/cil/oc2/common/util/TickUtils.java @@ -0,0 +1,11 @@ +package li.cil.oc2.common.util; + +import li.cil.oc2.common.Constants; + +import java.time.Duration; + +public final class TickUtils { + public static int toTicks(final Duration duration) { + return (int) (duration.getSeconds() * Constants.SECONDS_TO_TICKS); + } +} diff --git a/src/main/java/li/cil/oc2/common/vm/AbstractVirtualMachine.java b/src/main/java/li/cil/oc2/common/vm/AbstractVirtualMachine.java index ce4710cb..5cde6bb8 100644 --- a/src/main/java/li/cil/oc2/common/vm/AbstractVirtualMachine.java +++ b/src/main/java/li/cil/oc2/common/vm/AbstractVirtualMachine.java @@ -3,13 +3,13 @@ package li.cil.oc2.common.vm; import li.cil.ceres.api.Serialized; import li.cil.oc2.api.bus.device.vm.FirmwareLoader; import li.cil.oc2.api.bus.device.vm.VMDeviceLoadResult; -import li.cil.oc2.api.bus.device.vm.event.VMPausingEvent; import li.cil.oc2.common.Constants; import li.cil.oc2.common.bus.CommonDeviceBusController; import li.cil.oc2.common.bus.RPCDeviceBusAdapter; import li.cil.oc2.common.serialization.NBTSerialization; import li.cil.oc2.common.util.NBTTagIds; import li.cil.oc2.common.util.NBTUtils; +import li.cil.oc2.common.util.TickUtils; import li.cil.oc2.common.vm.context.global.GlobalVMContext; import li.cil.sedna.api.memory.MemoryAccessException; import li.cil.sedna.riscv.R5Board; @@ -22,6 +22,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import javax.annotation.Nullable; +import java.time.Duration; import java.util.Objects; public abstract class AbstractVirtualMachine implements VirtualMachine { @@ -36,7 +37,7 @@ public abstract class AbstractVirtualMachine implements VirtualMachine { public static final String RUN_STATE_TAG_NAME = "runState"; public static final String BOOT_ERROR_TAG_NAME = "bootError"; - private static final int DEVICE_LOAD_RETRY_INTERVAL = 10 * Constants.SECONDS_TO_TICKS; + private static final int DEVICE_LOAD_RETRY_INTERVAL = TickUtils.toTicks(Duration.ofSeconds(10)); ///////////////////////////////////////////////////////////////////