diff --git a/gradle.properties b/gradle.properties index 1809bd51..f30ff72c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.daemon=false forge_version=47.2.32 -semver=1.0.1 +semver=1.1.0 curse_project_id=1037738 diff --git a/src/main/java/li/cil/oc2r/common/Config.java b/src/main/java/li/cil/oc2r/common/Config.java index e889d88e..aaeb8936 100644 --- a/src/main/java/li/cil/oc2r/common/Config.java +++ b/src/main/java/li/cil/oc2r/common/Config.java @@ -11,6 +11,7 @@ import java.util.UUID; @SuppressWarnings("FieldMayBeFinal") public final class Config { + //TODO: Implement configuration of CPU MHzs @Path("vm") public static long maxAllocatedMemory = 512 * Constants.MEGABYTE; @Path("energy.blocks") public static double busCableEnergyPerTick = 0.1; @@ -31,6 +32,7 @@ public final class Config { @Path("energy.items") public static double memoryEnergyPerMegabytePerTick = 0.5; @Path("energy.items") public static double hardDriveEnergyPerMegabytePerTick = 1; + @Path("energy.items") public static double cpuEnergyPerMegahertzPerTick = 0.1; @Path("energy.items") public static int redstoneInterfaceCardEnergyPerTick = 1; @Path("energy.items") public static int networkInterfaceEnergyPerTick = 1; @Path("energy.items") public static int fileImportExportCardEnergyPerTick = 1; diff --git a/src/main/java/li/cil/oc2r/common/bus/device/provider/item/CPUItemDeviceProvider.java b/src/main/java/li/cil/oc2r/common/bus/device/provider/item/CPUItemDeviceProvider.java index 8edeb750..de96bea6 100644 --- a/src/main/java/li/cil/oc2r/common/bus/device/provider/item/CPUItemDeviceProvider.java +++ b/src/main/java/li/cil/oc2r/common/bus/device/provider/item/CPUItemDeviceProvider.java @@ -2,9 +2,13 @@ package li.cil.oc2r.common.bus.device.provider.item; import li.cil.oc2r.api.bus.device.ItemDevice; import li.cil.oc2r.api.bus.device.provider.ItemDeviceQuery; +import li.cil.oc2r.common.Config; +import li.cil.oc2r.common.Constants; import li.cil.oc2r.common.bus.device.provider.util.AbstractItemDeviceProvider; import li.cil.oc2r.common.bus.device.rpc.item.CPUItemDevice; import li.cil.oc2r.common.item.CPUItem; +import li.cil.oc2r.common.item.MemoryItem; +import net.minecraft.world.item.ItemStack; import java.util.Optional; @@ -22,6 +26,9 @@ public class CPUItemDeviceProvider extends AbstractItemDeviceProvider { @Override protected int getItemDeviceEnergyConsumption(final ItemDeviceQuery query) { - return 1; + final ItemStack stack = query.getItemStack(); + final CPUItem item = (CPUItem) stack.getItem(); + final int freq = Math.max(item.getFrequency(), 0); + return Math.max(1, (int) Math.round(freq * Config.cpuEnergyPerMegahertzPerTick / 1_000_000)); } }