Update to MC 1.16.4.
This commit is contained in:
12
build.gradle
12
build.gradle
@@ -42,9 +42,9 @@ group = mod_group
|
||||
archivesBaseName = "${mod_name}-MC${minecraft_version}"
|
||||
|
||||
sourceCompatibility = targetCompatibility = JavaVersion.VERSION_1_8
|
||||
compileJava {
|
||||
sourceCompatibility = targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaVersion.VERSION_1_8
|
||||
|
||||
javadoc.options.addStringOption('Xdoclint:none', '-quiet')
|
||||
|
||||
configurations {
|
||||
embed
|
||||
@@ -98,7 +98,7 @@ minecraft {
|
||||
workingDirectory project.file('run')
|
||||
|
||||
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
|
||||
property 'forge.logging.console.level', 'warn'
|
||||
property 'forge.logging.console.level', 'info'
|
||||
|
||||
mods {
|
||||
oc2 {
|
||||
@@ -111,7 +111,7 @@ minecraft {
|
||||
workingDirectory project.file('run')
|
||||
|
||||
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
|
||||
property 'forge.logging.console.level', 'warn'
|
||||
property 'forge.logging.console.level', 'info'
|
||||
|
||||
mods {
|
||||
oc2 {
|
||||
@@ -124,7 +124,7 @@ minecraft {
|
||||
workingDirectory project.file('run')
|
||||
|
||||
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
|
||||
property 'forge.logging.console.level', 'warn'
|
||||
property 'forge.logging.console.level', 'info'
|
||||
|
||||
args '--mod', 'oc2', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources')
|
||||
forceExit false
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
org.gradle.jvmargs=-Xmx3G
|
||||
org.gradle.daemon=false
|
||||
|
||||
minecraft_version=1.15.2
|
||||
minecraft_version_min=1.15.2
|
||||
minecraft_version=1.16.4
|
||||
minecraft_version_min=1.16.4
|
||||
mappings_channel=snapshot
|
||||
mappings_version=20200813-1.15.1
|
||||
forge_version=31.2.36
|
||||
forge_version_min=31
|
||||
mappings_version=20201028-1.16.3
|
||||
forge_version=35.1.7
|
||||
forge_version_min=35
|
||||
|
||||
mod_group=li.cil.oc2
|
||||
mod_id=oc2
|
||||
@@ -19,7 +19,7 @@ version_major=0
|
||||
version_minor=0
|
||||
version_patch=1
|
||||
|
||||
jei_version=6.0.2.12
|
||||
jei_version=7.6.0.58
|
||||
|
||||
curse.project.id=0
|
||||
curse.project.releaseType=release
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package li.cil.oc2.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import li.cil.oc2.api.API;
|
||||
import li.cil.oc2.common.container.ComputerContainer;
|
||||
@@ -20,15 +21,15 @@ public final class ComputerContainerScreen extends ContainerScreen<ComputerConta
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(final int mouseX, final int mouseY, final float partialTicks) {
|
||||
renderBackground();
|
||||
super.render(mouseX, mouseY, partialTicks);
|
||||
public void render(final MatrixStack matrixStack, final int mouseX, final int mouseY, final float partialTicks) {
|
||||
renderBackground(matrixStack);
|
||||
super.render(matrixStack, mouseX, mouseY, partialTicks);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(final float partialTicks, final int mouseX, final int mouseY) {
|
||||
protected void drawGuiContainerBackgroundLayer(final MatrixStack matrixStack, final float partialTicks, final int mouseX, final int mouseY) {
|
||||
RenderSystem.color4f(1f, 1f, 1f, 1f);
|
||||
Objects.requireNonNull(minecraft).getTextureManager().bindTexture(BACKGROUND);
|
||||
blit(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
blit(matrixStack, guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,20 +42,20 @@ public final class TerminalScreen extends Screen {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(final int mouseX, final int mouseY, final float partialTicks) {
|
||||
renderBackground();
|
||||
public void render(final MatrixStack matrixStack, final int mouseX, final int mouseY, final float partialTicks) {
|
||||
renderBackground(matrixStack);
|
||||
|
||||
isMouseOverTerminal = isPointInRegion(TERMINAL_AREA_X, TERMINAL_AREA_Y, TERMINAL_AREA_WIDTH, TERMINAL_AREA_HEIGHT, mouseX, mouseY);
|
||||
RenderSystem.color4f(1f, 1f, 1f, 1f);
|
||||
Objects.requireNonNull(minecraft).getTextureManager().bindTexture(BACKGROUND);
|
||||
blit(windowLeft, windowTop, 0, 0, windowWidth, windowHeight, TEXTURE_SIZE, TEXTURE_SIZE);
|
||||
blit(matrixStack, windowLeft, windowTop, 0, 0, windowWidth, windowHeight, TEXTURE_SIZE, TEXTURE_SIZE);
|
||||
|
||||
if (isMouseOverTerminal) {
|
||||
Objects.requireNonNull(minecraft).getTextureManager().bindTexture(BACKGROUND_TERMINAL_FOCUSED);
|
||||
blit(windowLeft, windowTop, 0, 0, windowWidth, windowHeight, TEXTURE_SIZE, TEXTURE_SIZE);
|
||||
blit(matrixStack, windowLeft, windowTop, 0, 0, windowWidth, windowHeight, TEXTURE_SIZE, TEXTURE_SIZE);
|
||||
}
|
||||
|
||||
super.render(mouseX, mouseY, partialTicks);
|
||||
super.render(matrixStack, mouseX, mouseY, partialTicks);
|
||||
|
||||
final MatrixStack stack = new MatrixStack();
|
||||
stack.translate(windowLeft + TERMINAL_AREA_X, windowTop + TERMINAL_AREA_Y, this.itemRenderer.zLevel);
|
||||
@@ -118,13 +118,13 @@ public final class TerminalScreen extends Screen {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removed() {
|
||||
super.removed();
|
||||
public void onClose() {
|
||||
super.onClose();
|
||||
|
||||
Objects.requireNonNull(minecraft).keyboardListener.enableRepeatEvents(false);
|
||||
}
|
||||
|
||||
private boolean isPointInRegion(int x, int y, int width, int height, double mouseX, double mouseY) {
|
||||
private boolean isPointInRegion(final int x, final int y, final int width, final int height, double mouseX, double mouseY) {
|
||||
mouseX = mouseX - this.windowLeft;
|
||||
mouseY = mouseY - this.windowTop;
|
||||
return mouseX >= x && mouseX < x + width && mouseY >= y && mouseY < y + height;
|
||||
|
||||
@@ -9,7 +9,7 @@ import li.cil.oc2.api.API;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.audio.SimpleSound;
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
import net.minecraft.client.renderer.Matrix4f;
|
||||
import net.minecraft.util.math.vector.Matrix4f;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.WorldVertexBufferUploader;
|
||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||
|
||||
@@ -9,16 +9,16 @@ import li.cil.oc2.client.render.OpenComputersRenderType;
|
||||
import li.cil.oc2.common.block.ComputerBlock;
|
||||
import li.cil.oc2.common.tile.ComputerTileEntity;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.Matrix4f;
|
||||
import net.minecraft.client.renderer.Quaternion;
|
||||
import net.minecraft.client.renderer.Vector3f;
|
||||
import net.minecraft.client.renderer.model.Material;
|
||||
import net.minecraft.client.renderer.model.RenderMaterial;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||
import net.minecraft.inventory.container.PlayerContainer;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.util.math.vector.Matrix4f;
|
||||
import net.minecraft.util.math.vector.Quaternion;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
import net.minecraft.util.math.vector.Vector3f;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.client.event.TextureStitchEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
@@ -30,9 +30,9 @@ public final class ComputerTileEntityRenderer extends TileEntityRenderer<Compute
|
||||
private static final ResourceLocation OVERLAY_STATUS_LOCATION = new ResourceLocation(API.MOD_ID, "blocks/computer/computer_overlay_status");
|
||||
private static final ResourceLocation OVERLAY_TERMINAL_LOCATION = new ResourceLocation(API.MOD_ID, "blocks/computer/computer_overlay_terminal");
|
||||
|
||||
private static final Material TEXTURE_POWER = new Material(PlayerContainer.LOCATION_BLOCKS_TEXTURE, OVERLAY_POWER_LOCATION);
|
||||
private static final Material TEXTURE_STATUS = new Material(PlayerContainer.LOCATION_BLOCKS_TEXTURE, OVERLAY_STATUS_LOCATION);
|
||||
private static final Material TEXTURE_TERMINAL = new Material(PlayerContainer.LOCATION_BLOCKS_TEXTURE, OVERLAY_TERMINAL_LOCATION);
|
||||
private static final RenderMaterial TEXTURE_POWER = new RenderMaterial(PlayerContainer.LOCATION_BLOCKS_TEXTURE, OVERLAY_POWER_LOCATION);
|
||||
private static final RenderMaterial TEXTURE_STATUS = new RenderMaterial(PlayerContainer.LOCATION_BLOCKS_TEXTURE, OVERLAY_STATUS_LOCATION);
|
||||
private static final RenderMaterial TEXTURE_TERMINAL = new RenderMaterial(PlayerContainer.LOCATION_BLOCKS_TEXTURE, OVERLAY_TERMINAL_LOCATION);
|
||||
|
||||
@SubscribeEvent
|
||||
public static void handleTextureStitchEvent(final TextureStitchEvent.Pre event) {
|
||||
@@ -48,12 +48,12 @@ public final class ComputerTileEntityRenderer extends TileEntityRenderer<Compute
|
||||
@Override
|
||||
public void render(final ComputerTileEntity tileEntity, final float partialTicks, final MatrixStack stack, final IRenderTypeBuffer buffer, final int combinedLightIn, final int combinedOverlayIn) {
|
||||
final Direction blockFacing = tileEntity.getBlockState().get(ComputerBlock.HORIZONTAL_FACING);
|
||||
final Vec3d cameraPosition = renderDispatcher.renderInfo.getRenderViewEntity().getEyePosition(partialTicks);
|
||||
final Vector3d cameraPosition = renderDispatcher.renderInfo.getRenderViewEntity().getEyePosition(partialTicks);
|
||||
|
||||
// If viewer is not in front of the block we can skip all of the rest, it cannot be visible.
|
||||
// We check against the center of the block instead of the actual relevant face for simplicity.
|
||||
final Vec3d relativeCameraPosition = cameraPosition.subtract(new Vec3d(tileEntity.getPos()).add(0.5, 0.5, 0.5));
|
||||
final double projectedCameraPosition = relativeCameraPosition.dotProduct(new Vec3d(blockFacing.getDirectionVec()));
|
||||
final Vector3d relativeCameraPosition = cameraPosition.subtract(Vector3d.copyCentered(tileEntity.getPos()));
|
||||
final double projectedCameraPosition = relativeCameraPosition.dotProduct(Vector3d.copy(blockFacing.getDirectionVec()));
|
||||
if (projectedCameraPosition <= 0) {
|
||||
return;
|
||||
}
|
||||
@@ -75,7 +75,7 @@ public final class ComputerTileEntityRenderer extends TileEntityRenderer<Compute
|
||||
stack.scale(pixelScale, pixelScale, pixelScale);
|
||||
|
||||
// Render terminal content if close enough.
|
||||
if (tileEntity.getDistanceSq(cameraPosition.x, cameraPosition.y, cameraPosition.z) < 6f * 6f) {
|
||||
if (Vector3d.copyCentered(tileEntity.getPos()).isWithinDistanceOf(cameraPosition, 6f * 6f)) {
|
||||
stack.push();
|
||||
stack.translate(2, 2, -0.9f);
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ public final class ComputerBlock extends HorizontalBlock {
|
||||
NetworkHooks.openGui(player, new INamedContainerProvider() {
|
||||
@Override
|
||||
public ITextComponent getDisplayName() {
|
||||
return getNameTextComponent();
|
||||
return getTranslatedName();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -104,6 +104,6 @@ public final class ComputerBlock extends HorizontalBlock {
|
||||
}
|
||||
|
||||
private void openTerminalScreen(final ComputerTileEntity computer) {
|
||||
Minecraft.getInstance().displayGuiScreen(new TerminalScreen(computer, getNameTextComponent()));
|
||||
Minecraft.getInstance().displayGuiScreen(new TerminalScreen(computer, getTranslatedName()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import li.cil.oc2.OpenComputers;
|
||||
import li.cil.oc2.common.bus.TileEntityDeviceBusElement;
|
||||
import li.cil.oc2.common.capabilities.Capabilities;
|
||||
import li.cil.oc2.serialization.NBTSerialization;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
@@ -43,8 +44,8 @@ public class BusCableTileEntity extends AbstractTileEntity {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(final CompoundNBT compound) {
|
||||
super.read(compound);
|
||||
public void read(final BlockState state, final CompoundNBT compound) {
|
||||
super.read(state, compound);
|
||||
NBTSerialization.deserialize(compound.getCompound(BUS_ELEMENT_NBT_TAG_NAME), busElement);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import li.cil.sedna.device.virtio.VirtIOFileSystemDevice;
|
||||
import li.cil.sedna.fs.HostFileSystem;
|
||||
import li.cil.sedna.memory.PhysicalMemoryInputStream;
|
||||
import li.cil.sedna.memory.PhysicalMemoryOutputStream;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.nbt.ListNBT;
|
||||
import net.minecraft.tileentity.ITickableTileEntity;
|
||||
@@ -210,8 +211,8 @@ public final class ComputerTileEntity extends AbstractTileEntity implements ITic
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleUpdateTag(final CompoundNBT tag) {
|
||||
super.handleUpdateTag(tag);
|
||||
public void handleUpdateTag(final BlockState state,final CompoundNBT tag) {
|
||||
super.handleUpdateTag(state, tag);
|
||||
|
||||
NBTSerialization.deserialize(tag.getCompound(TERMINAL_NBT_TAG_NAME), terminal);
|
||||
busState = TileEntityDeviceBusController.State.values()[tag.getInt(BUS_STATE_NBT_TAG_NAME)];
|
||||
@@ -246,8 +247,8 @@ public final class ComputerTileEntity extends AbstractTileEntity implements ITic
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(final CompoundNBT compound) {
|
||||
super.read(compound);
|
||||
public void read(final BlockState state, final CompoundNBT compound) {
|
||||
super.read(state, compound);
|
||||
|
||||
joinVirtualMachine();
|
||||
if (ramJobHandle != null) {
|
||||
|
||||
@@ -3,6 +3,7 @@ package li.cil.oc2.common.tile;
|
||||
import li.cil.oc2.OpenComputers;
|
||||
import li.cil.oc2.api.bus.device.object.Callback;
|
||||
import li.cil.oc2.api.bus.device.object.NamedDevice;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.HorizontalBlock;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
@@ -13,7 +14,6 @@ import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
import static java.util.Collections.singletonList;
|
||||
|
||||
@@ -35,8 +35,8 @@ public class RedstoneInterfaceTileEntity extends TileEntity implements NamedDevi
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(final CompoundNBT compound) {
|
||||
super.read(compound);
|
||||
public void read(final BlockState state, final CompoundNBT compound) {
|
||||
super.read(state, compound);
|
||||
final byte[] output = compound.getByteArray(OUTPUT_NBT_TAG_NAME);
|
||||
if (output.length == HORIZONTAL_DIRECTION_COUNT) {
|
||||
System.arraycopy(output, 0, this.output, 0, HORIZONTAL_DIRECTION_COUNT);
|
||||
|
||||
@@ -6,7 +6,7 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.data.DataGenerator;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraftforge.client.model.generators.BlockStateProvider;
|
||||
import net.minecraftforge.client.model.generators.ExistingFileHelper;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
import net.minecraftforge.fml.RegistryObject;
|
||||
|
||||
public class BlockStates extends BlockStateProvider {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package li.cil.oc2.data;
|
||||
|
||||
import net.minecraft.data.DataGenerator;
|
||||
import net.minecraftforge.client.model.generators.ExistingFileHelper;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.event.lifecycle.GatherDataEvent;
|
||||
|
||||
@@ -2,8 +2,8 @@ package li.cil.oc2.data;
|
||||
|
||||
import li.cil.oc2.api.API;
|
||||
import net.minecraft.data.DataGenerator;
|
||||
import net.minecraftforge.client.model.generators.ExistingFileHelper;
|
||||
import net.minecraftforge.client.model.generators.ItemModelProvider;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
|
||||
public final class ItemModels extends ItemModelProvider {
|
||||
public ItemModels(final DataGenerator generator, final ExistingFileHelper existingFileHelper) {
|
||||
|
||||
@@ -2,6 +2,7 @@ package li.cil.oc2.serialization;
|
||||
|
||||
import com.google.common.collect.HashMultimap;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.world.storage.FolderName;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@@ -25,6 +26,9 @@ import java.util.concurrent.Future;
|
||||
*/
|
||||
public final class BlobStorage {
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
|
||||
private static final FolderName BLOBS_FOLDER_NAME = new FolderName("oc2-blobs");
|
||||
|
||||
private static final HashMultimap<UUID, Future<Void>> WRITE_HANDLES = HashMultimap.create();
|
||||
private static final HashMultimap<UUID, Future<Void>> READ_HANDLES = HashMultimap.create();
|
||||
private static final HashSet<UUID> DELETED_HANDLES = new HashSet<>();
|
||||
@@ -104,7 +108,7 @@ public final class BlobStorage {
|
||||
*/
|
||||
public static void setServer(final MinecraftServer server) {
|
||||
synchronize();
|
||||
dataDirectory = server.getActiveAnvilConverter().getFile(server.getFolderName(), "oc2-blobs").toPath();
|
||||
dataDirectory = server.func_240776_a_(BLOBS_FOLDER_NAME);
|
||||
try {
|
||||
Files.createDirectories(dataDirectory);
|
||||
} catch (final IOException e) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
modLoader = "javafml"
|
||||
loaderVersion = "[31,)"
|
||||
issueTrackerURL = "${mod_issues_url}"
|
||||
license = "MIT"
|
||||
|
||||
[[mods]]
|
||||
modId = "${mod_id}"
|
||||
|
||||
@@ -6,17 +6,16 @@ import li.cil.oc2.common.bus.TileEntityDeviceBusController;
|
||||
import li.cil.oc2.common.capabilities.Capabilities;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.registry.Bootstrap;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import static java.util.Collections.emptyList;
|
||||
import static java.util.Collections.singletonList;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
@@ -34,6 +33,13 @@ public class DeviceBusTests {
|
||||
private TileEntityDeviceBusController busController;
|
||||
private DeviceBusElement busControllerBusElement;
|
||||
|
||||
@BeforeAll
|
||||
public static void setup() {
|
||||
// Gotta go through regular MC bootstrapping first because otherwise class
|
||||
// load order may lead to errors because static fields reference each other.
|
||||
Bootstrap.register();
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
public void setupEach() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
|
||||
@@ -2,7 +2,6 @@ package li.cil.oc2.serialization;
|
||||
|
||||
import li.cil.ceres.api.Serialized;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -10,13 +10,11 @@ import li.cil.oc2.api.bus.device.rpc.RPCDevice;
|
||||
import li.cil.oc2.api.bus.device.rpc.RPCMethod;
|
||||
import li.cil.oc2.common.bus.RPCAdapter;
|
||||
import li.cil.sedna.api.device.serial.SerialDevice;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user