Update to MC 1.16.4.

This commit is contained in:
Florian Nücke
2020-12-05 17:42:33 +01:00
parent 58c9135db5
commit f8e058650f
18 changed files with 70 additions and 59 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);

View File

@@ -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()));
}
}

View File

@@ -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);
}
}

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -1,6 +1,7 @@
modLoader = "javafml"
loaderVersion = "[31,)"
issueTrackerURL = "${mod_issues_url}"
license = "MIT"
[[mods]]
modId = "${mod_id}"

View File

@@ -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);

View File

@@ -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;

View File

@@ -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;