Split up vm and rpc device packages.
This commit is contained in:
@@ -18,7 +18,7 @@ import com.mojang.math.Matrix4f;
|
||||
import com.mojang.math.Vector3f;
|
||||
import li.cil.oc2.common.block.ProjectorBlock;
|
||||
import li.cil.oc2.common.blockentity.ProjectorBlockEntity;
|
||||
import li.cil.oc2.common.bus.device.vm.ProjectorVMDevice;
|
||||
import li.cil.oc2.common.bus.device.vm.block.ProjectorDevice;
|
||||
import li.cil.oc2.common.ext.MinecraftExt;
|
||||
import li.cil.oc2.common.util.FakePlayerUtils;
|
||||
import li.cil.oc2.jcodec.common.model.Picture;
|
||||
@@ -427,7 +427,7 @@ public final class ProjectorDepthRenderer {
|
||||
private static RenderInfo getRenderInfo(final ProjectorBlockEntity projector) {
|
||||
try {
|
||||
return RENDER_INFO.get(projector, () -> {
|
||||
final DynamicTexture texture = new DynamicTexture(ProjectorVMDevice.WIDTH, ProjectorVMDevice.HEIGHT, false);
|
||||
final DynamicTexture texture = new DynamicTexture(ProjectorDevice.WIDTH, ProjectorDevice.HEIGHT, false);
|
||||
final RenderInfo renderInfo = new RenderInfo(texture);
|
||||
projector.setFrameConsumer(renderInfo);
|
||||
return renderInfo;
|
||||
@@ -465,17 +465,17 @@ public final class ProjectorDepthRenderer {
|
||||
// Convert in quads, based on the half resolution of UV. As such, skip every other row, since
|
||||
// we're setting the current and the next.
|
||||
int lumaIndex = 0, chromaIndex = 0;
|
||||
for (int halfRow = 0; halfRow < ProjectorVMDevice.HEIGHT / 2; halfRow++, lumaIndex += ProjectorVMDevice.WIDTH * 2) {
|
||||
for (int halfRow = 0; halfRow < ProjectorDevice.HEIGHT / 2; halfRow++, lumaIndex += ProjectorDevice.WIDTH * 2) {
|
||||
final int row = halfRow * 2;
|
||||
for (int halfCol = 0; halfCol < ProjectorVMDevice.WIDTH / 2; halfCol++, chromaIndex++) {
|
||||
for (int halfCol = 0; halfCol < ProjectorDevice.WIDTH / 2; halfCol++, chromaIndex++) {
|
||||
final int col = halfCol * 2;
|
||||
final int yIndex = lumaIndex + col;
|
||||
final byte cb = u[chromaIndex];
|
||||
final byte cr = v[chromaIndex];
|
||||
setFromYUV420(image, col, row, y[yIndex], cb, cr);
|
||||
setFromYUV420(image, col + 1, row, y[yIndex + 1], cb, cr);
|
||||
setFromYUV420(image, col, row + 1, y[yIndex + ProjectorVMDevice.WIDTH], cb, cr);
|
||||
setFromYUV420(image, col + 1, row + 1, y[yIndex + ProjectorVMDevice.WIDTH + 1], cb, cr);
|
||||
setFromYUV420(image, col, row + 1, y[yIndex + ProjectorDevice.WIDTH], cb, cr);
|
||||
setFromYUV420(image, col + 1, row + 1, y[yIndex + ProjectorDevice.WIDTH + 1], cb, cr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,51 +2,39 @@
|
||||
|
||||
package li.cil.oc2.common.blockentity;
|
||||
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.Constants;
|
||||
import li.cil.oc2.common.block.DiskDriveBlock;
|
||||
import li.cil.oc2.common.bus.device.item.AbstractBlockDeviceVMDevice;
|
||||
import li.cil.oc2.common.bus.device.vm.block.DiskDriveContainer;
|
||||
import li.cil.oc2.common.bus.device.vm.block.DiskDriveDevice;
|
||||
import li.cil.oc2.common.capabilities.Capabilities;
|
||||
import li.cil.oc2.common.container.TypedItemStackHandler;
|
||||
import li.cil.oc2.common.item.FloppyItem;
|
||||
import li.cil.oc2.common.network.Network;
|
||||
import li.cil.oc2.common.network.message.DiskDriveFloppyMessage;
|
||||
import li.cil.oc2.common.serialization.BlobStorage;
|
||||
import li.cil.oc2.common.tags.ItemTags;
|
||||
import li.cil.oc2.common.util.ItemStackUtils;
|
||||
import li.cil.oc2.common.util.LocationSupplierUtils;
|
||||
import li.cil.oc2.common.util.SoundEvents;
|
||||
import li.cil.oc2.common.util.ThrottledSoundEmitter;
|
||||
import li.cil.sedna.api.device.BlockDevice;
|
||||
import li.cil.sedna.device.block.ByteBufferBlockDevice;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.IOException;
|
||||
import java.nio.MappedByteBuffer;
|
||||
import java.nio.channels.FileChannel;
|
||||
import java.time.Duration;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public final class DiskDriveBlockEntity extends ModBlockEntity {
|
||||
public final class DiskDriveBlockEntity extends ModBlockEntity implements DiskDriveContainer {
|
||||
private static final String DATA_TAG_NAME = "data";
|
||||
|
||||
private static final ByteBufferBlockDevice EMPTY_BLOCK_DEVICE = ByteBufferBlockDevice.create(0, false);
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
private final DiskDriveItemStackHandler itemHandler = new DiskDriveItemStackHandler();
|
||||
private final DiskDriveVMDevice device = new DiskDriveVMDevice();
|
||||
private final DiskDriveDevice<DiskDriveBlockEntity> device = new DiskDriveDevice<>(this);
|
||||
private final ThrottledSoundEmitter accessSoundEmitter;
|
||||
private final ThrottledSoundEmitter insertSoundEmitter;
|
||||
private final ThrottledSoundEmitter ejectSoundEmitter;
|
||||
@@ -148,6 +136,16 @@ public final class DiskDriveBlockEntity extends ModBlockEntity {
|
||||
itemHandler.deserializeNBT(tag.getCompound(Constants.ITEMS_TAG_NAME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getDiskItemStack() {
|
||||
return itemHandler.getStackInSlotRaw(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleDataAccess() {
|
||||
accessSoundEmitter.play();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
private final class DiskDriveItemStackHandler extends TypedItemStackHandler {
|
||||
@@ -223,87 +221,4 @@ public final class DiskDriveBlockEntity extends ModBlockEntity {
|
||||
ItemStackUtils.getOrCreateModDataTag(stack).put(DATA_TAG_NAME, tag);
|
||||
}
|
||||
}
|
||||
|
||||
private final class DiskDriveVMDevice extends AbstractBlockDeviceVMDevice<BlockDevice, BlockEntity> {
|
||||
public DiskDriveVMDevice() {
|
||||
super(DiskDriveBlockEntity.this, false);
|
||||
}
|
||||
|
||||
public void updateBlockDevice(final CompoundTag tag) {
|
||||
joinOpenJob();
|
||||
|
||||
if (device == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
device.setBlock(EMPTY_BLOCK_DEVICE);
|
||||
} catch (final IOException e) {
|
||||
LOGGER.error(e);
|
||||
}
|
||||
|
||||
if (blobHandle != null) {
|
||||
BlobStorage.close(blobHandle);
|
||||
blobHandle = null;
|
||||
}
|
||||
|
||||
importFromItemStack(tag);
|
||||
|
||||
setOpenJob(createBlockDevice().thenAcceptAsync(blockDevice -> {
|
||||
try {
|
||||
device.setBlock(blockDevice);
|
||||
} catch (final IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}, WORKERS));
|
||||
}
|
||||
|
||||
public void removeBlockDevice() {
|
||||
joinOpenJob();
|
||||
|
||||
if (device == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
device.setBlock(EMPTY_BLOCK_DEVICE);
|
||||
} catch (final IOException e) {
|
||||
LOGGER.error(e);
|
||||
}
|
||||
|
||||
if (blobHandle != null) {
|
||||
BlobStorage.close(blobHandle);
|
||||
blobHandle = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CompletableFuture<BlockDevice> createBlockDevice() {
|
||||
final ItemStack stack = itemHandler.getStackInSlotRaw(0);
|
||||
if (stack.isEmpty() || !(stack.getItem() instanceof final FloppyItem floppy)) {
|
||||
return CompletableFuture.completedFuture(EMPTY_BLOCK_DEVICE);
|
||||
}
|
||||
|
||||
final int capacity = Mth.clamp(floppy.getCapacity(stack), 0, Config.maxFloppySize);
|
||||
if (capacity <= 0) {
|
||||
return CompletableFuture.completedFuture(EMPTY_BLOCK_DEVICE);
|
||||
}
|
||||
|
||||
blobHandle = BlobStorage.validateHandle(blobHandle);
|
||||
return CompletableFuture.supplyAsync(() -> {
|
||||
try {
|
||||
final FileChannel channel = BlobStorage.getOrOpen(blobHandle);
|
||||
final MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_WRITE, 0, capacity);
|
||||
return ByteBufferBlockDevice.wrap(buffer, false);
|
||||
} catch (final IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}, WORKERS);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleDataAccess() {
|
||||
accessSoundEmitter.play();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
package li.cil.oc2.common.blockentity;
|
||||
|
||||
import li.cil.oc2.common.bus.device.vm.KeyboardVMDevice;
|
||||
import li.cil.oc2.common.bus.device.vm.block.KeyboardDevice;
|
||||
import li.cil.oc2.common.capabilities.Capabilities;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -11,7 +11,7 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public final class KeyboardBlockEntity extends ModBlockEntity {
|
||||
private final KeyboardVMDevice<BlockEntity> keyboardDevice = new KeyboardVMDevice<>(this);
|
||||
private final KeyboardDevice<BlockEntity> keyboardDevice = new KeyboardDevice<>(this);
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ package li.cil.oc2.common.blockentity;
|
||||
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.block.ProjectorBlock;
|
||||
import li.cil.oc2.common.bus.device.vm.ProjectorVMDevice;
|
||||
import li.cil.oc2.common.bus.device.vm.block.ProjectorDevice;
|
||||
import li.cil.oc2.common.capabilities.Capabilities;
|
||||
import li.cil.oc2.common.energy.FixedEnergyStorage;
|
||||
import li.cil.oc2.common.network.Network;
|
||||
@@ -47,7 +47,7 @@ public final class ProjectorBlockEntity extends ModBlockEntity implements Tickab
|
||||
public static final int MAX_RENDER_DISTANCE = 16;
|
||||
public static final int MAX_GOOD_RENDER_DISTANCE = 12;
|
||||
public static final int MAX_WIDTH = MAX_GOOD_RENDER_DISTANCE + 1; // +1 To make it odd, so we can center.
|
||||
public static final int MAX_HEIGHT = (MAX_GOOD_RENDER_DISTANCE * ProjectorVMDevice.HEIGHT / ProjectorVMDevice.WIDTH) + 1; // + 1 To match horizontal margin.
|
||||
public static final int MAX_HEIGHT = (MAX_GOOD_RENDER_DISTANCE * ProjectorDevice.HEIGHT / ProjectorDevice.WIDTH) + 1; // + 1 To match horizontal margin.
|
||||
|
||||
private static final String ENERGY_TAG_NAME = "energy";
|
||||
private static final String IS_PROJECTING_TAG_NAME = "projecting";
|
||||
@@ -61,10 +61,10 @@ public final class ProjectorBlockEntity extends ModBlockEntity implements Tickab
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
private final ProjectorVMDevice projectorDevice = new ProjectorVMDevice(this);
|
||||
private final ProjectorDevice projectorDevice = new ProjectorDevice(this);
|
||||
private boolean isProjecting, hasEnergy;
|
||||
private final FixedEnergyStorage energy = new FixedEnergyStorage(Config.projectorEnergyStorage);
|
||||
private final Picture picture = Picture.create(ProjectorVMDevice.WIDTH, ProjectorVMDevice.HEIGHT, ColorSpace.YUV420J);
|
||||
private final Picture picture = Picture.create(ProjectorDevice.WIDTH, ProjectorDevice.HEIGHT, ColorSpace.YUV420J);
|
||||
|
||||
// Video encoding.
|
||||
private final H264Encoder encoder = new H264Encoder(new CQPRateControl(12));
|
||||
|
||||
@@ -4,8 +4,9 @@ package li.cil.oc2.common.bus.device.provider;
|
||||
|
||||
import li.cil.oc2.api.bus.device.provider.BlockDeviceProvider;
|
||||
import li.cil.oc2.api.bus.device.provider.ItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.provider.block.*;
|
||||
import li.cil.oc2.common.bus.device.provider.block.BlockEntityCapabilityDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.provider.item.*;
|
||||
import li.cil.oc2.common.bus.device.rpc.block.*;
|
||||
import li.cil.oc2.common.util.RegistryUtils;
|
||||
import net.minecraftforge.registries.DeferredRegister;
|
||||
import net.minecraftforge.registries.IForgeRegistry;
|
||||
@@ -25,8 +26,8 @@ public final class Providers {
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
public static void initialize() {
|
||||
BLOCK_DEVICE_PROVIDERS.register("block", BlockStateDeviceProvider::new);
|
||||
BLOCK_DEVICE_PROVIDERS.register("block_entity", BlockEntityDeviceProvider::new);
|
||||
BLOCK_DEVICE_PROVIDERS.register("block", BlockStateObjectDeviceProvider::new);
|
||||
BLOCK_DEVICE_PROVIDERS.register("block_entity", BlockEntityObjectDeviceProvider::new);
|
||||
|
||||
BLOCK_DEVICE_PROVIDERS.register("block_entity/capability", BlockEntityCapabilityDeviceProvider::new);
|
||||
BLOCK_DEVICE_PROVIDERS.register("energy_storage", EnergyStorageBlockDeviceProvider::new);
|
||||
|
||||
@@ -5,8 +5,8 @@ package li.cil.oc2.common.bus.device.provider.item;
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery;
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.bus.device.item.BlockOperationsModuleDevice;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.rpc.item.BlockOperationsModuleDevice;
|
||||
import li.cil.oc2.common.capabilities.Capabilities;
|
||||
import li.cil.oc2.common.item.Items;
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery;
|
||||
import li.cil.oc2.api.capabilities.TerminalUserProvider;
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.bus.device.item.FileImportExportCardItemDevice;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.rpc.item.FileImportExportCardItemDevice;
|
||||
import li.cil.oc2.common.capabilities.Capabilities;
|
||||
import li.cil.oc2.common.item.Items;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
|
||||
@@ -5,8 +5,8 @@ package li.cil.oc2.common.bus.device.provider.item;
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery;
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.bus.device.item.ByteBufferFlashMemoryVMDevice;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.vm.item.ByteBufferFlashStorageDevice;
|
||||
import li.cil.oc2.common.item.FlashMemoryItem;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
@@ -26,6 +26,6 @@ public final class FlashMemoryItemDeviceProvider extends AbstractItemDeviceProvi
|
||||
final FlashMemoryItem item = (FlashMemoryItem) stack.getItem();
|
||||
|
||||
final int capacity = Mth.clamp(item.getCapacity(stack), 0, Config.maxFlashMemorySize);
|
||||
return Optional.of(new ByteBufferFlashMemoryVMDevice(stack, capacity));
|
||||
return Optional.of(new ByteBufferFlashStorageDevice(stack, capacity));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ package li.cil.oc2.common.bus.device.provider.item;
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.data.Firmware;
|
||||
import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery;
|
||||
import li.cil.oc2.common.bus.device.item.FirmwareFlashMemoryVMDevice;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.vm.item.FirmwareFlashStorageDevice;
|
||||
import li.cil.oc2.common.item.FlashMemoryWithExternalDataItem;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
@@ -29,6 +29,6 @@ public final class FlashMemoryWithExternalDataItemDeviceProvider extends Abstrac
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
return Optional.of(new FirmwareFlashMemoryVMDevice(stack, firmware));
|
||||
return Optional.of(new FirmwareFlashStorageDevice(stack, firmware));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@ import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery;
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.Constants;
|
||||
import li.cil.oc2.common.bus.device.item.HardDriveVMDevice;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.vm.item.HardDriveDevice;
|
||||
import li.cil.oc2.common.item.HardDriveItem;
|
||||
import li.cil.oc2.common.util.LocationSupplierUtils;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
@@ -27,14 +27,14 @@ public final class HardDriveItemDeviceProvider extends AbstractItemDeviceProvide
|
||||
@Override
|
||||
public void unmount(@Nullable final ItemDeviceQuery query, final CompoundTag tag) {
|
||||
super.unmount(query, tag);
|
||||
HardDriveVMDevice.unmount(tag);
|
||||
HardDriveDevice.unmount(tag);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
protected Optional<ItemDevice> getItemDevice(final ItemDeviceQuery query) {
|
||||
return Optional.of(new HardDriveVMDevice(query.getItemStack(), getCapacity(query), false, LocationSupplierUtils.of(query)));
|
||||
return Optional.of(new HardDriveDevice(query.getItemStack(), getCapacity(query), false, LocationSupplierUtils.of(query)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -7,8 +7,8 @@ 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.Constants;
|
||||
import li.cil.oc2.common.bus.device.item.HardDriveVMDeviceWithInitialData;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.vm.item.HardDriveDeviceWithInitialData;
|
||||
import li.cil.oc2.common.item.HardDriveWithExternalDataItem;
|
||||
import li.cil.oc2.common.util.LocationSupplierUtils;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
@@ -27,7 +27,7 @@ public final class HardDriveWithExternalDataItemDeviceProvider extends AbstractI
|
||||
@Override
|
||||
public void unmount(@Nullable final ItemDeviceQuery query, final CompoundTag tag) {
|
||||
super.unmount(query, tag);
|
||||
HardDriveVMDeviceWithInitialData.unmount(tag);
|
||||
HardDriveDeviceWithInitialData.unmount(tag);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
@@ -41,7 +41,7 @@ public final class HardDriveWithExternalDataItemDeviceProvider extends AbstractI
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
return Optional.of(new HardDriveVMDeviceWithInitialData(stack, data.getBlockDevice(), false, LocationSupplierUtils.of(query)));
|
||||
return Optional.of(new HardDriveDeviceWithInitialData(stack, data.getBlockDevice(), false, LocationSupplierUtils.of(query)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -5,8 +5,8 @@ package li.cil.oc2.common.bus.device.provider.item;
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery;
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.bus.device.item.InventoryOperationsModuleDevice;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.rpc.item.InventoryOperationsModuleDevice;
|
||||
import li.cil.oc2.common.capabilities.Capabilities;
|
||||
import li.cil.oc2.common.item.Items;
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery;
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.Constants;
|
||||
import li.cil.oc2.common.bus.device.item.MemoryDevice;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.vm.item.MemoryDevice;
|
||||
import li.cil.oc2.common.item.MemoryItem;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
@@ -5,8 +5,8 @@ package li.cil.oc2.common.bus.device.provider.item;
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery;
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.bus.device.item.NetworkInterfaceCardItemDevice;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.vm.item.NetworkInterfaceCardDevice;
|
||||
import li.cil.oc2.common.item.Items;
|
||||
|
||||
import java.util.Optional;
|
||||
@@ -20,7 +20,7 @@ public final class NetworkInterfaceCardItemDeviceProvider extends AbstractItemDe
|
||||
|
||||
@Override
|
||||
protected Optional<ItemDevice> getItemDevice(final ItemDeviceQuery query) {
|
||||
return Optional.of(new NetworkInterfaceCardItemDevice(query.getItemStack()));
|
||||
return Optional.of(new NetworkInterfaceCardDevice(query.getItemStack()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -5,8 +5,8 @@ package li.cil.oc2.common.bus.device.provider.item;
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery;
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.bus.device.item.NetworkTunnelItemDevice;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.vm.item.NetworkTunnelDevice;
|
||||
import li.cil.oc2.common.item.Items;
|
||||
|
||||
import java.util.Optional;
|
||||
@@ -20,7 +20,7 @@ public final class NetworkTunnelCardItemDeviceProvider extends AbstractItemDevic
|
||||
|
||||
@Override
|
||||
protected Optional<ItemDevice> getItemDevice(final ItemDeviceQuery query) {
|
||||
return Optional.of(new NetworkTunnelItemDevice(query.getItemStack()));
|
||||
return Optional.of(new NetworkTunnelDevice(query.getItemStack()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -5,8 +5,8 @@ package li.cil.oc2.common.bus.device.provider.item;
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery;
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.bus.device.item.NetworkTunnelItemDevice;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.vm.item.NetworkTunnelDevice;
|
||||
import li.cil.oc2.common.item.Items;
|
||||
|
||||
import java.util.Optional;
|
||||
@@ -20,7 +20,7 @@ public final class NetworkTunnelModuleItemDeviceProvider extends AbstractItemDev
|
||||
|
||||
@Override
|
||||
protected Optional<ItemDevice> getItemDevice(final ItemDeviceQuery query) {
|
||||
return Optional.of(new NetworkTunnelItemDevice(query.getItemStack()));
|
||||
return Optional.of(new NetworkTunnelDevice(query.getItemStack()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -5,8 +5,8 @@ package li.cil.oc2.common.bus.device.provider.item;
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery;
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.bus.device.item.RedstoneInterfaceCardItemDevice;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.rpc.item.RedstoneInterfaceCardItemDevice;
|
||||
import li.cil.oc2.common.item.Items;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -5,8 +5,8 @@ package li.cil.oc2.common.bus.device.provider.item;
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery;
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.bus.device.item.SoundCardItemDevice;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractItemDeviceProvider;
|
||||
import li.cil.oc2.common.bus.device.rpc.item.SoundCardItemDevice;
|
||||
import li.cil.oc2.common.item.Items;
|
||||
import li.cil.oc2.common.util.LocationSupplierUtils;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.provider.block;
|
||||
package li.cil.oc2.common.bus.device.rpc.block;
|
||||
|
||||
import li.cil.oc2.api.bus.device.Device;
|
||||
import li.cil.oc2.api.bus.device.object.Callbacks;
|
||||
@@ -10,7 +10,7 @@ import li.cil.oc2.api.util.Invalidatable;
|
||||
import li.cil.oc2.common.bus.device.provider.util.AbstractBlockEntityDeviceProvider;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
|
||||
public final class BlockEntityDeviceProvider extends AbstractBlockEntityDeviceProvider<BlockEntity> {
|
||||
public final class BlockEntityObjectDeviceProvider extends AbstractBlockEntityDeviceProvider<BlockEntity> {
|
||||
@Override
|
||||
public Invalidatable<Device> getBlockDevice(final BlockDeviceQuery query, final BlockEntity blockEntity) {
|
||||
if (Callbacks.hasMethods(blockEntity)) {
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.provider.block;
|
||||
package li.cil.oc2.common.bus.device.rpc.block;
|
||||
|
||||
import li.cil.oc2.api.bus.device.Device;
|
||||
import li.cil.oc2.api.bus.device.object.Callbacks;
|
||||
@@ -13,7 +13,7 @@ import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public final class BlockStateDeviceProvider extends AbstractBlockDeviceProvider {
|
||||
public final class BlockStateObjectDeviceProvider extends AbstractBlockDeviceProvider {
|
||||
@Override
|
||||
public Invalidatable<Device> getDevice(final BlockDeviceQuery query) {
|
||||
final Level level = query.getLevel();
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.provider.block;
|
||||
package li.cil.oc2.common.bus.device.rpc.block;
|
||||
|
||||
import li.cil.oc2.api.bus.device.Device;
|
||||
import li.cil.oc2.api.bus.device.object.ObjectDevice;
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.provider.block;
|
||||
package li.cil.oc2.common.bus.device.rpc.block;
|
||||
|
||||
import li.cil.oc2.api.bus.device.Device;
|
||||
import li.cil.oc2.api.bus.device.object.ObjectDevice;
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.provider.block;
|
||||
package li.cil.oc2.common.bus.device.rpc.block;
|
||||
|
||||
import li.cil.oc2.api.bus.device.Device;
|
||||
import li.cil.oc2.api.bus.device.object.ObjectDevice;
|
||||
@@ -0,0 +1,9 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
@ParametersAreNonnullByDefault
|
||||
@MethodsReturnNonnullByDefault
|
||||
package li.cil.oc2.common.bus.device.rpc.block;
|
||||
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.rpc.item;
|
||||
|
||||
import li.cil.oc2.api.bus.device.DeviceContainer;
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.rpc.item;
|
||||
|
||||
import li.cil.oc2.api.bus.device.object.Callback;
|
||||
import li.cil.oc2.api.bus.device.object.Parameter;
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.rpc.item;
|
||||
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap;
|
||||
import li.cil.oc2.api.bus.device.object.Callback;
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.rpc.item;
|
||||
|
||||
import li.cil.oc2.api.bus.device.object.Callback;
|
||||
import li.cil.oc2.api.bus.device.object.Parameter;
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.rpc.item;
|
||||
|
||||
import li.cil.oc2.api.bus.device.object.Callback;
|
||||
import li.cil.oc2.api.bus.device.object.DocumentedDevice;
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.rpc.item;
|
||||
|
||||
import li.cil.oc2.api.bus.device.object.Callback;
|
||||
import li.cil.oc2.api.bus.device.object.Parameter;
|
||||
@@ -0,0 +1,9 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
@ParametersAreNonnullByDefault
|
||||
@MethodsReturnNonnullByDefault
|
||||
package li.cil.oc2.common.bus.device.rpc.item;
|
||||
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
@@ -0,0 +1,11 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.vm.block;
|
||||
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
public interface DiskDriveContainer {
|
||||
ItemStack getDiskItemStack();
|
||||
|
||||
void handleDataAccess();
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.vm.block;
|
||||
|
||||
import li.cil.oc2.common.Config;
|
||||
import li.cil.oc2.common.bus.device.vm.item.AbstractBlockStorageDevice;
|
||||
import li.cil.oc2.common.item.FloppyItem;
|
||||
import li.cil.oc2.common.serialization.BlobStorage;
|
||||
import li.cil.sedna.api.device.BlockDevice;
|
||||
import li.cil.sedna.device.block.ByteBufferBlockDevice;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.MappedByteBuffer;
|
||||
import java.nio.channels.FileChannel;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public final class DiskDriveDevice<T extends BlockEntity & DiskDriveContainer> extends AbstractBlockStorageDevice<BlockDevice, T> {
|
||||
private static final ByteBufferBlockDevice EMPTY_BLOCK_DEVICE = ByteBufferBlockDevice.create(0, false);
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
public DiskDriveDevice(final T container) {
|
||||
super(container, false);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
public void updateBlockDevice(final CompoundTag tag) {
|
||||
joinOpenJob();
|
||||
|
||||
if (device == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
device.setBlock(EMPTY_BLOCK_DEVICE);
|
||||
} catch (final IOException e) {
|
||||
LOGGER.error(e);
|
||||
}
|
||||
|
||||
if (blobHandle != null) {
|
||||
BlobStorage.close(blobHandle);
|
||||
blobHandle = null;
|
||||
}
|
||||
|
||||
importFromItemStack(tag);
|
||||
|
||||
setOpenJob(createBlockDevice().thenAcceptAsync(blockDevice -> {
|
||||
try {
|
||||
device.setBlock(blockDevice);
|
||||
} catch (final IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}, WORKERS));
|
||||
}
|
||||
|
||||
public void removeBlockDevice() {
|
||||
joinOpenJob();
|
||||
|
||||
if (device == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
device.setBlock(EMPTY_BLOCK_DEVICE);
|
||||
} catch (final IOException e) {
|
||||
LOGGER.error(e);
|
||||
}
|
||||
|
||||
if (blobHandle != null) {
|
||||
BlobStorage.close(blobHandle);
|
||||
blobHandle = null;
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
protected CompletableFuture<BlockDevice> createBlockDevice() {
|
||||
final ItemStack stack = identity.getDiskItemStack();
|
||||
if (stack.isEmpty() || !(stack.getItem() instanceof final FloppyItem floppy)) {
|
||||
return CompletableFuture.completedFuture(EMPTY_BLOCK_DEVICE);
|
||||
}
|
||||
|
||||
final int capacity = Mth.clamp(floppy.getCapacity(stack), 0, Config.maxFloppySize);
|
||||
if (capacity <= 0) {
|
||||
return CompletableFuture.completedFuture(EMPTY_BLOCK_DEVICE);
|
||||
}
|
||||
|
||||
blobHandle = BlobStorage.validateHandle(blobHandle);
|
||||
return CompletableFuture.supplyAsync(() -> {
|
||||
try {
|
||||
final FileChannel channel = BlobStorage.getOrOpen(blobHandle);
|
||||
final MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_WRITE, 0, capacity);
|
||||
return ByteBufferBlockDevice.wrap(buffer, false);
|
||||
} catch (final IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}, WORKERS);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleDataAccess() {
|
||||
identity.handleDataAccess();
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.vm;
|
||||
package li.cil.oc2.common.bus.device.vm.block;
|
||||
|
||||
import li.cil.oc2.api.bus.device.vm.VMDevice;
|
||||
import li.cil.oc2.api.bus.device.vm.VMDeviceLoadResult;
|
||||
@@ -16,7 +16,7 @@ import net.minecraft.nbt.CompoundTag;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public final class KeyboardVMDevice<T> extends IdentityProxy<T> implements VMDevice {
|
||||
public final class KeyboardDevice<T> extends IdentityProxy<T> implements VMDevice {
|
||||
private static final String DEVICE_TAG_NAME = "device";
|
||||
private static final String ADDRESS_TAG_NAME = "address";
|
||||
private static final String INTERRUPT_TAG_NAME = "interrupt";
|
||||
@@ -33,7 +33,7 @@ public final class KeyboardVMDevice<T> extends IdentityProxy<T> implements VMDev
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
public KeyboardVMDevice(final T identity) {
|
||||
public KeyboardDevice(final T identity) {
|
||||
super(identity);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.vm;
|
||||
package li.cil.oc2.common.bus.device.vm.block;
|
||||
|
||||
import li.cil.oc2.api.bus.device.vm.VMDevice;
|
||||
import li.cil.oc2.api.bus.device.vm.VMDeviceLoadResult;
|
||||
@@ -21,7 +21,7 @@ import java.nio.MappedByteBuffer;
|
||||
import java.nio.channels.FileChannel;
|
||||
import java.util.UUID;
|
||||
|
||||
public final class ProjectorVMDevice extends IdentityProxy<ProjectorBlockEntity> implements VMDevice {
|
||||
public final class ProjectorDevice extends IdentityProxy<ProjectorBlockEntity> implements VMDevice {
|
||||
private static final String ADDRESS_TAG_NAME = "address";
|
||||
private static final String BLOB_HANDLE_TAG_NAME = "blob";
|
||||
|
||||
@@ -40,7 +40,7 @@ public final class ProjectorVMDevice extends IdentityProxy<ProjectorBlockEntity>
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
public ProjectorVMDevice(final ProjectorBlockEntity identity) {
|
||||
public ProjectorDevice(final ProjectorBlockEntity identity) {
|
||||
super(identity);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
@ParametersAreNonnullByDefault
|
||||
@MethodsReturnNonnullByDefault
|
||||
package li.cil.oc2.common.bus.device.vm.block;
|
||||
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.vm.item;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
@@ -32,7 +32,7 @@ import java.util.concurrent.CompletionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
public abstract class AbstractBlockDeviceVMDevice<TBlock extends BlockDevice, TIdentity> extends IdentityProxy<TIdentity> implements VMDevice, ItemDevice {
|
||||
public abstract class AbstractBlockStorageDevice<TBlock extends BlockDevice, TIdentity> extends IdentityProxy<TIdentity> implements VMDevice, ItemDevice {
|
||||
protected static final Logger LOGGER = LogManager.getLogger();
|
||||
|
||||
private static final String DEVICE_TAG_NAME = "device";
|
||||
@@ -64,7 +64,7 @@ public abstract class AbstractBlockDeviceVMDevice<TBlock extends BlockDevice, TI
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
protected AbstractBlockDeviceVMDevice(final TIdentity identity, final boolean readonly) {
|
||||
protected AbstractBlockStorageDevice(final TIdentity identity, final boolean readonly) {
|
||||
super(identity);
|
||||
this.readonly = readonly;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.vm.item;
|
||||
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.vm.VMDevice;
|
||||
@@ -24,7 +24,7 @@ import net.minecraftforge.common.util.LazyOptional;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public abstract class AbstractNetworkInterfaceItemDevice extends IdentityProxy<ItemStack> implements VMDevice, ItemDevice, ICapabilityProvider {
|
||||
public abstract class AbstractNetworkInterfaceDevice extends IdentityProxy<ItemStack> implements VMDevice, ItemDevice, ICapabilityProvider {
|
||||
private static final String DEVICE_TAG_NAME = "device";
|
||||
private static final String ADDRESS_TAG_NAME = "address";
|
||||
private static final String INTERRUPT_TAG_NAME = "interrupt";
|
||||
@@ -41,7 +41,7 @@ public abstract class AbstractNetworkInterfaceItemDevice extends IdentityProxy<I
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
protected AbstractNetworkInterfaceItemDevice(final ItemStack identity) {
|
||||
protected AbstractNetworkInterfaceDevice(final ItemStack identity) {
|
||||
super(identity);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.vm.item;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
@@ -23,7 +23,7 @@ import net.minecraft.world.item.ItemStack;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public final class ByteBufferFlashMemoryVMDevice extends IdentityProxy<ItemStack> implements VMDevice, ItemDevice, FirmwareLoader {
|
||||
public final class ByteBufferFlashStorageDevice extends IdentityProxy<ItemStack> implements VMDevice, ItemDevice, FirmwareLoader {
|
||||
public static final String DATA_TAG_NAME = "data";
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
@@ -41,7 +41,7 @@ public final class ByteBufferFlashMemoryVMDevice extends IdentityProxy<ItemStack
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
public ByteBufferFlashMemoryVMDevice(final ItemStack identity, final int size) {
|
||||
public ByteBufferFlashStorageDevice(final ItemStack identity, final int size) {
|
||||
super(identity);
|
||||
this.size = size;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.vm.item;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
@@ -17,13 +17,13 @@ import li.cil.sedna.api.memory.MemoryMap;
|
||||
import net.minecraft.network.chat.TranslatableComponent;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
public final class FirmwareFlashMemoryVMDevice extends IdentityProxy<ItemStack> implements VMDevice, ItemDevice, FirmwareLoader {
|
||||
public final class FirmwareFlashStorageDevice extends IdentityProxy<ItemStack> implements VMDevice, ItemDevice, FirmwareLoader {
|
||||
private final Firmware firmware;
|
||||
private MemoryMap memoryMap;
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
public FirmwareFlashMemoryVMDevice(final ItemStack identity, final Firmware firmware) {
|
||||
public FirmwareFlashStorageDevice(final ItemStack identity, final Firmware firmware) {
|
||||
super(identity);
|
||||
this.firmware = firmware;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.vm.item;
|
||||
|
||||
import li.cil.oc2.common.serialization.BlobStorage;
|
||||
import li.cil.oc2.common.util.Location;
|
||||
@@ -17,13 +17,13 @@ import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class HardDriveVMDevice extends AbstractBlockDeviceVMDevice<ByteBufferBlockDevice, ItemStack> {
|
||||
public class HardDriveDevice extends AbstractBlockStorageDevice<ByteBufferBlockDevice, ItemStack> {
|
||||
private final int size;
|
||||
private final ThrottledSoundEmitter soundEmitter;
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
public HardDriveVMDevice(final ItemStack identity, final int size, final boolean readonly, final Supplier<Optional<Location>> location) {
|
||||
public HardDriveDevice(final ItemStack identity, final int size, final boolean readonly, final Supplier<Optional<Location>> location) {
|
||||
super(identity, readonly);
|
||||
this.size = size;
|
||||
this.soundEmitter = new ThrottledSoundEmitter(location, SoundEvents.HDD_ACCESS.get())
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.vm.item;
|
||||
|
||||
import com.google.common.io.ByteStreams;
|
||||
import li.cil.oc2.common.util.Location;
|
||||
@@ -15,12 +15,12 @@ import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public final class HardDriveVMDeviceWithInitialData extends HardDriveVMDevice {
|
||||
public final class HardDriveDeviceWithInitialData extends HardDriveDevice {
|
||||
private final BlockDevice base;
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
public HardDriveVMDeviceWithInitialData(final ItemStack identity, final BlockDevice base, final boolean readonly, final Supplier<Optional<Location>> location) {
|
||||
public HardDriveDeviceWithInitialData(final ItemStack identity, final BlockDevice base, final boolean readonly, final Supplier<Optional<Location>> location) {
|
||||
super(identity, (int) base.getCapacity(), readonly, location);
|
||||
this.base = base;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.vm.item;
|
||||
|
||||
import li.cil.oc2.api.bus.device.ItemDevice;
|
||||
import li.cil.oc2.api.bus.device.vm.VMDevice;
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.vm.item;
|
||||
|
||||
import li.cil.oc2.common.item.NetworkInterfaceCardItem;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -11,8 +11,8 @@ import net.minecraftforge.common.util.LazyOptional;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public final class NetworkInterfaceCardItemDevice extends AbstractNetworkInterfaceItemDevice {
|
||||
public NetworkInterfaceCardItemDevice(final ItemStack identity) {
|
||||
public final class NetworkInterfaceCardDevice extends AbstractNetworkInterfaceDevice {
|
||||
public NetworkInterfaceCardDevice(final ItemStack identity) {
|
||||
super(identity);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.vm.item;
|
||||
|
||||
import com.google.common.collect.BiMap;
|
||||
import com.google.common.collect.HashBiMap;
|
||||
@@ -23,8 +23,8 @@ import org.jetbrains.annotations.Nullable;
|
||||
import java.time.Duration;
|
||||
import java.util.*;
|
||||
|
||||
public final class NetworkTunnelItemDevice extends AbstractNetworkInterfaceItemDevice {
|
||||
public NetworkTunnelItemDevice(final ItemStack identity) {
|
||||
public final class NetworkTunnelDevice extends AbstractNetworkInterfaceDevice {
|
||||
public NetworkTunnelDevice(final ItemStack identity) {
|
||||
super(identity);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
@ParametersAreNonnullByDefault
|
||||
@MethodsReturnNonnullByDefault
|
||||
package li.cil.oc2.common.bus.device.item;
|
||||
package li.cil.oc2.common.bus.device.vm.item;
|
||||
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
package li.cil.oc2.common.item;
|
||||
|
||||
import li.cil.oc2.api.API;
|
||||
import li.cil.oc2.common.bus.device.item.ByteBufferFlashMemoryVMDevice;
|
||||
import li.cil.oc2.common.bus.device.vm.item.ByteBufferFlashStorageDevice;
|
||||
import li.cil.oc2.common.util.NBTTagIds;
|
||||
import net.minecraft.Util;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
@@ -25,7 +25,7 @@ public final class FlashMemoryItem extends AbstractStorageItem {
|
||||
public CompoundTag getShareTag(final ItemStack stack) {
|
||||
final CompoundTag tag = super.getShareTag(stack);
|
||||
if (tag != null && tag.contains(API.MOD_ID, NBTTagIds.TAG_COMPOUND)) {
|
||||
tag.getCompound(API.MOD_ID).remove(ByteBufferFlashMemoryVMDevice.DATA_TAG_NAME);
|
||||
tag.getCompound(API.MOD_ID).remove(ByteBufferFlashStorageDevice.DATA_TAG_NAME);
|
||||
}
|
||||
return tag;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
package li.cil.oc2.common.network.message;
|
||||
|
||||
import li.cil.oc2.common.bus.device.item.FileImportExportCardItemDevice;
|
||||
import li.cil.oc2.common.bus.device.rpc.item.FileImportExportCardItemDevice;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraftforge.network.NetworkEvent;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
package li.cil.oc2.common.network.message;
|
||||
|
||||
import li.cil.oc2.common.bus.device.item.FileImportExportCardItemDevice;
|
||||
import li.cil.oc2.common.bus.device.rpc.item.FileImportExportCardItemDevice;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraftforge.network.NetworkEvent;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
package li.cil.oc2.common.network.message;
|
||||
|
||||
import li.cil.oc2.client.gui.FileChooserScreen;
|
||||
import li.cil.oc2.common.bus.device.item.FileImportExportCardItemDevice;
|
||||
import li.cil.oc2.common.bus.device.rpc.item.FileImportExportCardItemDevice;
|
||||
import li.cil.oc2.common.network.Network;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
package li.cil.oc2.common.network.message;
|
||||
|
||||
import li.cil.oc2.common.bus.device.item.FileImportExportCardItemDevice;
|
||||
import li.cil.oc2.common.bus.device.rpc.item.FileImportExportCardItemDevice;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraftforge.network.NetworkEvent;
|
||||
|
||||
Reference in New Issue
Block a user