From 8d6d95dd6aaa9f96bd2c438e3e397bbc03c39aa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Wed, 27 Jan 2021 17:05:02 +0100 Subject: [PATCH] Some renaming and cleanup. --- ...eBlockDevice.java => BlockDeviceData.java} | 14 +++++---- .../cil/oc2/api/bus/device/data/Firmware.java | 2 +- .../device/{data => vm}/FirmwareLoader.java | 4 +-- .../ComputerTileEntityRenderer.java | 2 ++ src/main/java/li/cil/oc2/common/Main.java | 4 +-- ....java => BlockDeviceDataRegistration.java} | 10 +++---- ...tem.java => BuildrootBlockDeviceData.java} | 30 +++++++++++-------- .../bus/device/data/BuildrootFirmware.java | 4 +-- .../item/ByteBufferFlashMemoryVMDevice.java | 2 +- .../item/FirmwareFlashMemoryVMDevice.java | 2 +- .../item/HardDriveItemDeviceProvider.java | 14 ++++----- .../TypedDeviceItemStackHandler.java | 4 +++ .../cil/oc2/common/item/FlashMemoryItem.java | 2 +- .../oc2/common/serialization/BlobStorage.java | 2 +- .../vm/AbstractVirtualMachineState.java | 2 +- .../li/cil/oc2/common/vm/ManagedEventBus.java | 4 +++ .../oc2/common/vm/VirtualMachineRunner.java | 1 + .../oc2/common/vm/VirtualMachineState.java | 6 ++-- 18 files changed, 63 insertions(+), 46 deletions(-) rename src/main/java/li/cil/oc2/api/bus/device/data/{BaseBlockDevice.java => BlockDeviceData.java} (75%) rename src/main/java/li/cil/oc2/api/bus/device/{data => vm}/FirmwareLoader.java (77%) rename src/main/java/li/cil/oc2/common/bus/device/data/{BaseBlockDevices.java => BlockDeviceDataRegistration.java} (60%) rename src/main/java/li/cil/oc2/common/bus/device/data/{BuildrootRootFileSystem.java => BuildrootBlockDeviceData.java} (50%) diff --git a/src/main/java/li/cil/oc2/api/bus/device/data/BaseBlockDevice.java b/src/main/java/li/cil/oc2/api/bus/device/data/BlockDeviceData.java similarity index 75% rename from src/main/java/li/cil/oc2/api/bus/device/data/BaseBlockDevice.java rename to src/main/java/li/cil/oc2/api/bus/device/data/BlockDeviceData.java index 6ae183b1..ecf08c7c 100644 --- a/src/main/java/li/cil/oc2/api/bus/device/data/BaseBlockDevice.java +++ b/src/main/java/li/cil/oc2/api/bus/device/data/BlockDeviceData.java @@ -18,21 +18,25 @@ import net.minecraftforge.registries.IForgeRegistryEntry; * must be created. For example, if the implementation's registry name is * {@code my_mod:my_block_device}: *
- * /give ? oc2:hard_drive{oc2:{base:"my_mod:my_block_device"}}
+ * /give ? oc2:hard_drive{oc2:{data:"my_mod:my_block_device"}}
+ * 
+ * The drive can be made readonly by also specifying the {@code readonly} tag: + *
+ * /give ? oc2:hard_drive{oc2:{data:"my_mod:my_block_device",readonly:true}}
  * 
*/ -public interface BaseBlockDevice extends IForgeRegistryEntry { +public interface BlockDeviceData extends IForgeRegistryEntry { /** * The registry name of the registry holding block device bases. */ - ResourceLocation REGISTRY = new ResourceLocation(API.MOD_ID, "base_block_device"); + ResourceLocation REGISTRY = new ResourceLocation(API.MOD_ID, "block_device_data"); /** * Gets the read-only base block device this implementation describes. * * @return the block device. */ - BlockDevice get(); + BlockDevice getBlockDevice(); /** * The display name of this block device base. May be shown in the tooltip @@ -40,5 +44,5 @@ public interface BaseBlockDevice extends IForgeRegistryEntry { * * @return the display name of this block device. */ - ITextComponent getName(); + ITextComponent getDisplayName(); } diff --git a/src/main/java/li/cil/oc2/api/bus/device/data/Firmware.java b/src/main/java/li/cil/oc2/api/bus/device/data/Firmware.java index 05b21a96..5a857a4f 100644 --- a/src/main/java/li/cil/oc2/api/bus/device/data/Firmware.java +++ b/src/main/java/li/cil/oc2/api/bus/device/data/Firmware.java @@ -45,5 +45,5 @@ public interface Firmware extends IForgeRegistryEntry { * * @return the display name of this firmware. */ - ITextComponent getName(); + ITextComponent getDisplayName(); } diff --git a/src/main/java/li/cil/oc2/api/bus/device/data/FirmwareLoader.java b/src/main/java/li/cil/oc2/api/bus/device/vm/FirmwareLoader.java similarity index 77% rename from src/main/java/li/cil/oc2/api/bus/device/data/FirmwareLoader.java rename to src/main/java/li/cil/oc2/api/bus/device/vm/FirmwareLoader.java index bc392dd3..cf92b914 100644 --- a/src/main/java/li/cil/oc2/api/bus/device/data/FirmwareLoader.java +++ b/src/main/java/li/cil/oc2/api/bus/device/vm/FirmwareLoader.java @@ -1,6 +1,4 @@ -package li.cil.oc2.api.bus.device.data; - -import li.cil.oc2.api.bus.device.vm.VMDevice; +package li.cil.oc2.api.bus.device.vm; /** * This interface serves as a marker for devices that load firmware. diff --git a/src/main/java/li/cil/oc2/client/renderer/tileentity/ComputerTileEntityRenderer.java b/src/main/java/li/cil/oc2/client/renderer/tileentity/ComputerTileEntityRenderer.java index 8a56ff8e..b0e8b479 100644 --- a/src/main/java/li/cil/oc2/client/renderer/tileentity/ComputerTileEntityRenderer.java +++ b/src/main/java/li/cil/oc2/client/renderer/tileentity/ComputerTileEntityRenderer.java @@ -41,6 +41,8 @@ public final class ComputerTileEntityRenderer extends TileEntityRenderer INITIALIZER = DeferredRegister.create(BaseBlockDevice.class, API.MOD_ID); +public final class BlockDeviceDataRegistration { + private static final DeferredRegister INITIALIZER = DeferredRegister.create(BlockDeviceData.class, API.MOD_ID); /////////////////////////////////////////////////////////////////// - public static final Supplier> REGISTRY = INITIALIZER.makeRegistry(BaseBlockDevice.REGISTRY.getPath(), RegistryBuilder::new); + public static final Supplier> REGISTRY = INITIALIZER.makeRegistry(BlockDeviceData.REGISTRY.getPath(), RegistryBuilder::new); /////////////////////////////////////////////////////////////////// - public static final RegistryObject BUILDROOT = INITIALIZER.register("buildroot", BuildrootRootFileSystem::new); + public static final RegistryObject BUILDROOT = INITIALIZER.register("buildroot", BuildrootBlockDeviceData::new); /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/bus/device/data/BuildrootRootFileSystem.java b/src/main/java/li/cil/oc2/common/bus/device/data/BuildrootBlockDeviceData.java similarity index 50% rename from src/main/java/li/cil/oc2/common/bus/device/data/BuildrootRootFileSystem.java rename to src/main/java/li/cil/oc2/common/bus/device/data/BuildrootBlockDeviceData.java index 90042d64..a585126d 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/data/BuildrootRootFileSystem.java +++ b/src/main/java/li/cil/oc2/common/bus/device/data/BuildrootBlockDeviceData.java @@ -1,6 +1,6 @@ package li.cil.oc2.common.bus.device.data; -import li.cil.oc2.api.bus.device.data.BaseBlockDevice; +import li.cil.oc2.api.bus.device.data.BlockDeviceData; import li.cil.sedna.api.device.BlockDevice; import li.cil.sedna.buildroot.Buildroot; import li.cil.sedna.device.block.ByteBufferBlockDevice; @@ -12,29 +12,33 @@ import org.apache.logging.log4j.Logger; import java.io.IOException; -public final class BuildrootRootFileSystem extends ForgeRegistryEntry implements BaseBlockDevice { +public final class BuildrootBlockDeviceData extends ForgeRegistryEntry implements BlockDeviceData { private static final Logger LOGGER = LogManager.getLogger(); - private static final ByteBufferBlockDevice ROOT_FS; + /////////////////////////////////////////////////////////////////// + + private static final ByteBufferBlockDevice INSTANCE; static { - ByteBufferBlockDevice rootfs; + ByteBufferBlockDevice instance; try { - rootfs = ByteBufferBlockDevice.createFromStream(Buildroot.getRootFilesystem(), true); + instance = ByteBufferBlockDevice.createFromStream(Buildroot.getRootFilesystem(), true); } catch (final IOException e) { LOGGER.error(e); - rootfs = ByteBufferBlockDevice.create(0, true); + instance = ByteBufferBlockDevice.create(0, true); } - ROOT_FS = rootfs; + INSTANCE = instance; + } + + /////////////////////////////////////////////////////////////////// + + @Override + public BlockDevice getBlockDevice() { + return INSTANCE; } @Override - public BlockDevice get() { - return ROOT_FS; - } - - @Override - public ITextComponent getName() { + public ITextComponent getDisplayName() { return new StringTextComponent("Linux"); } } diff --git a/src/main/java/li/cil/oc2/common/bus/device/data/BuildrootFirmware.java b/src/main/java/li/cil/oc2/common/bus/device/data/BuildrootFirmware.java index 0c6b8024..c07a140d 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/data/BuildrootFirmware.java +++ b/src/main/java/li/cil/oc2/common/bus/device/data/BuildrootFirmware.java @@ -23,7 +23,7 @@ public final class BuildrootFirmware extends ForgeRegistryEntry implem } @Override - public ITextComponent getName() { - return new StringTextComponent("OpenSBI+Linux"); + public ITextComponent getDisplayName() { + return new StringTextComponent("Linux"); } } diff --git a/src/main/java/li/cil/oc2/common/bus/device/item/ByteBufferFlashMemoryVMDevice.java b/src/main/java/li/cil/oc2/common/bus/device/item/ByteBufferFlashMemoryVMDevice.java index 73f73c38..c5e518f2 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/item/ByteBufferFlashMemoryVMDevice.java +++ b/src/main/java/li/cil/oc2/common/bus/device/item/ByteBufferFlashMemoryVMDevice.java @@ -2,7 +2,7 @@ package li.cil.oc2.common.bus.device.item; import com.google.common.eventbus.Subscribe; import li.cil.oc2.api.bus.device.ItemDevice; -import li.cil.oc2.api.bus.device.data.FirmwareLoader; +import li.cil.oc2.api.bus.device.vm.FirmwareLoader; import li.cil.oc2.api.bus.device.vm.VMContext; import li.cil.oc2.api.bus.device.vm.VMDevice; import li.cil.oc2.api.bus.device.vm.VMDeviceLoadResult; diff --git a/src/main/java/li/cil/oc2/common/bus/device/item/FirmwareFlashMemoryVMDevice.java b/src/main/java/li/cil/oc2/common/bus/device/item/FirmwareFlashMemoryVMDevice.java index 138655ee..9bc0a5f0 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/item/FirmwareFlashMemoryVMDevice.java +++ b/src/main/java/li/cil/oc2/common/bus/device/item/FirmwareFlashMemoryVMDevice.java @@ -3,7 +3,7 @@ package li.cil.oc2.common.bus.device.item; import com.google.common.eventbus.Subscribe; import li.cil.oc2.api.bus.device.ItemDevice; import li.cil.oc2.api.bus.device.data.Firmware; -import li.cil.oc2.api.bus.device.data.FirmwareLoader; +import li.cil.oc2.api.bus.device.vm.FirmwareLoader; import li.cil.oc2.api.bus.device.vm.VMContext; import li.cil.oc2.api.bus.device.vm.VMDevice; import li.cil.oc2.api.bus.device.vm.VMDeviceLoadResult; diff --git a/src/main/java/li/cil/oc2/common/bus/device/provider/item/HardDriveItemDeviceProvider.java b/src/main/java/li/cil/oc2/common/bus/device/provider/item/HardDriveItemDeviceProvider.java index c4d85a63..38b2a005 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/provider/item/HardDriveItemDeviceProvider.java +++ b/src/main/java/li/cil/oc2/common/bus/device/provider/item/HardDriveItemDeviceProvider.java @@ -3,13 +3,13 @@ package li.cil.oc2.common.bus.device.provider.item; import li.cil.oc2.api.bus.device.DeviceType; import li.cil.oc2.api.bus.device.DeviceTypes; import li.cil.oc2.api.bus.device.ItemDevice; -import li.cil.oc2.api.bus.device.data.BaseBlockDevice; +import li.cil.oc2.api.bus.device.data.BlockDeviceData; import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery; import li.cil.oc2.common.Config; import li.cil.oc2.common.bus.device.item.HardDriveVMDevice; import li.cil.oc2.common.bus.device.item.SparseHardDriveVMDevice; import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider; -import li.cil.oc2.common.item.HardDriveItem; +import li.cil.oc2.common.item.BlockDeviceItem; import li.cil.oc2.common.item.Items; import li.cil.sedna.api.device.BlockDevice; import net.minecraft.item.ItemStack; @@ -28,14 +28,14 @@ public final class HardDriveItemDeviceProvider extends AbstractItemDeviceProvide protected Optional getItemDevice(final ItemDeviceQuery query) { final ItemStack stack = query.getItemStack(); - final boolean readonly = HardDriveItem.isReadonly(stack); - final BaseBlockDevice baseBlockDevice = HardDriveItem.getBaseBlockDevice(stack); - if (baseBlockDevice != null) { - final BlockDevice base = baseBlockDevice.get(); + final boolean readonly = BlockDeviceItem.isReadonly(stack); + final BlockDeviceData handler = BlockDeviceItem.getData(stack); + if (handler != null) { + final BlockDevice base = handler.getBlockDevice(); return Optional.of(new SparseHardDriveVMDevice(stack, base, readonly)); } - final int size = MathHelper.clamp(HardDriveItem.getCapacity(stack), 0, Config.maxHardDriveSize); + final int size = MathHelper.clamp(BlockDeviceItem.getCapacity(stack), 0, Config.maxHardDriveSize); return Optional.of(new HardDriveVMDevice(stack, size, readonly)); } diff --git a/src/main/java/li/cil/oc2/common/container/TypedDeviceItemStackHandler.java b/src/main/java/li/cil/oc2/common/container/TypedDeviceItemStackHandler.java index 624935f4..a6aba62e 100644 --- a/src/main/java/li/cil/oc2/common/container/TypedDeviceItemStackHandler.java +++ b/src/main/java/li/cil/oc2/common/container/TypedDeviceItemStackHandler.java @@ -11,11 +11,15 @@ import java.util.function.Function; public class TypedDeviceItemStackHandler extends DeviceItemStackHandler { private final DeviceType deviceType; + /////////////////////////////////////////////////////////////////// + public TypedDeviceItemStackHandler(final int size, final Function> deviceLookup, final DeviceType deviceType) { super(size, deviceLookup); this.deviceType = deviceType; } + /////////////////////////////////////////////////////////////////// + @Override public boolean isItemValid(final int slot, final ItemStack stack) { return super.isItemValid(slot, stack) && Devices.getDeviceTypes(stack).contains(deviceType); diff --git a/src/main/java/li/cil/oc2/common/item/FlashMemoryItem.java b/src/main/java/li/cil/oc2/common/item/FlashMemoryItem.java index 76d936a9..00f9aef7 100644 --- a/src/main/java/li/cil/oc2/common/item/FlashMemoryItem.java +++ b/src/main/java/li/cil/oc2/common/item/FlashMemoryItem.java @@ -89,7 +89,7 @@ public final class FlashMemoryItem extends AbstractStorageItem { protected ITextComponent getDisplayNameSuffix(final ItemStack stack) { final Firmware firmware = getFirmware(stack); if (firmware != null) { - return firmware.getName(); + return firmware.getDisplayName(); } else { return super.getDisplayNameSuffix(stack); } diff --git a/src/main/java/li/cil/oc2/common/serialization/BlobStorage.java b/src/main/java/li/cil/oc2/common/serialization/BlobStorage.java index bb98a18f..44b71a72 100644 --- a/src/main/java/li/cil/oc2/common/serialization/BlobStorage.java +++ b/src/main/java/li/cil/oc2/common/serialization/BlobStorage.java @@ -37,7 +37,7 @@ public final class BlobStorage { private static final HashMultimap> WRITE_HANDLES = HashMultimap.create(); private static final HashMultimap> READ_HANDLES = HashMultimap.create(); private static final ExecutorService WORKERS = Executors.newCachedThreadPool(r -> { - final Thread thread = new Thread(r, "OC2 BlobStorage Thread"); + final Thread thread = new Thread(r, "Blob Storage I/O"); thread.setDaemon(false); return thread; }); diff --git a/src/main/java/li/cil/oc2/common/vm/AbstractVirtualMachineState.java b/src/main/java/li/cil/oc2/common/vm/AbstractVirtualMachineState.java index 1b9a6720..c7b71f2a 100644 --- a/src/main/java/li/cil/oc2/common/vm/AbstractVirtualMachineState.java +++ b/src/main/java/li/cil/oc2/common/vm/AbstractVirtualMachineState.java @@ -1,6 +1,6 @@ package li.cil.oc2.common.vm; -import li.cil.oc2.api.bus.device.data.FirmwareLoader; +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; diff --git a/src/main/java/li/cil/oc2/common/vm/ManagedEventBus.java b/src/main/java/li/cil/oc2/common/vm/ManagedEventBus.java index f54e0a0a..175b785e 100644 --- a/src/main/java/li/cil/oc2/common/vm/ManagedEventBus.java +++ b/src/main/java/li/cil/oc2/common/vm/ManagedEventBus.java @@ -10,10 +10,14 @@ public final class ManagedEventBus implements VMLifecycleEventBus { private final EventBus eventBus; private final ArrayList subscribers = new ArrayList<>(); + /////////////////////////////////////////////////////////////////// + public ManagedEventBus(final EventBus eventBus) { this.eventBus = eventBus; } + /////////////////////////////////////////////////////////////////// + public void invalidate() { for (final Object subscriber : subscribers) { eventBus.unregister(subscriber); diff --git a/src/main/java/li/cil/oc2/common/vm/VirtualMachineRunner.java b/src/main/java/li/cil/oc2/common/vm/VirtualMachineRunner.java index 608f892e..07e0a666 100644 --- a/src/main/java/li/cil/oc2/common/vm/VirtualMachineRunner.java +++ b/src/main/java/li/cil/oc2/common/vm/VirtualMachineRunner.java @@ -18,6 +18,7 @@ public class VirtualMachineRunner implements Runnable { private static final ExecutorService VM_RUNNERS = Executors.newCachedThreadPool(r -> { final Thread thread = new Thread(r); thread.setDaemon(true); + thread.setName("VirtualMachine Runner"); return thread; }); diff --git a/src/main/java/li/cil/oc2/common/vm/VirtualMachineState.java b/src/main/java/li/cil/oc2/common/vm/VirtualMachineState.java index 42494e7d..6e16a345 100644 --- a/src/main/java/li/cil/oc2/common/vm/VirtualMachineState.java +++ b/src/main/java/li/cil/oc2/common/vm/VirtualMachineState.java @@ -8,8 +8,6 @@ import net.minecraftforge.api.distmarker.OnlyIn; import javax.annotation.Nullable; public interface VirtualMachineState { - boolean isRunning(); - AbstractDeviceBusController.BusState getBusState(); @OnlyIn(Dist.CLIENT) @@ -26,11 +24,13 @@ public interface VirtualMachineState { @OnlyIn(Dist.CLIENT) void setBootErrorClient(ITextComponent value); + boolean isRunning(); + void start(); void stop(); - public enum RunState { + enum RunState { STOPPED, LOADING_DEVICES, RUNNING,