diff --git a/build.gradle b/build.gradle index a92b6eb3c..7667d112c 100644 --- a/build.gradle +++ b/build.gradle @@ -20,6 +20,7 @@ repositories { } minecraft { + accessWidener = file("src/main/resources/computercraft.accesswidener") } configurations { diff --git a/src/main/java/dan200/computercraft/client/ClientRegistry.java b/src/main/java/dan200/computercraft/client/ClientRegistry.java index db9e05855..a74565581 100644 --- a/src/main/java/dan200/computercraft/client/ClientRegistry.java +++ b/src/main/java/dan200/computercraft/client/ClientRegistry.java @@ -15,6 +15,8 @@ import dan200.computercraft.shared.media.items.ItemDisk; import dan200.computercraft.shared.pocket.items.ItemPocketComputer; import dan200.computercraft.shared.util.Colour; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.model.BakedModel; import net.minecraft.client.render.model.ModelLoader; @@ -31,6 +33,7 @@ import net.fabricmc.fabric.api.event.client.ClientSpriteRegistryCallback; /** * Registers textures and models for items. */ +@Environment(EnvType.CLIENT) public final class ClientRegistry { private static final String[] EXTRA_MODELS = new String[] { "turtle_modem_normal_off_left", @@ -104,6 +107,7 @@ public final class ClientRegistry { model.getTextureDependencies(loader::getOrLoadModel, new HashSet<>()); SpriteAtlasTexture sprite = MinecraftClient.getInstance() .getSpriteAtlas(); - return model.bake(loader, sprite::getSprite, ModelRotation.X0_Y0); + return model.bake(loader, spriteIdentifier -> MinecraftClient.getInstance() + .getSpriteAtlas(spriteIdentifier.getAtlasId()).apply(spriteIdentifier.getTextureId()), ModelRotation.X0_Y0); } } diff --git a/src/main/java/dan200/computercraft/client/ClientTableFormatter.java b/src/main/java/dan200/computercraft/client/ClientTableFormatter.java index 10fb4986b..4a3108744 100644 --- a/src/main/java/dan200/computercraft/client/ClientTableFormatter.java +++ b/src/main/java/dan200/computercraft/client/ClientTableFormatter.java @@ -14,6 +14,9 @@ import dan200.computercraft.shared.command.text.ChatHelpers; import dan200.computercraft.shared.command.text.TableBuilder; import dan200.computercraft.shared.command.text.TableFormatter; import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.text.OrderedText; import org.apache.commons.lang3.StringUtils; import net.minecraft.client.MinecraftClient; @@ -24,6 +27,7 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.math.MathHelper; +@Environment(EnvType.CLIENT) public class ClientTableFormatter implements TableFormatter { public static final ClientTableFormatter INSTANCE = new ClientTableFormatter(); @@ -39,7 +43,7 @@ public class ClientTableFormatter implements TableFormatter { TextRenderer renderer = renderer(); - float spaceWidth = renderer.getCharWidth(' '); + float spaceWidth = renderer.getWidth(" "); int spaces = MathHelper.floor(extraWidth / spaceWidth); int extra = extraWidth - (int) (spaces * spaceWidth); @@ -57,7 +61,7 @@ public class ClientTableFormatter implements TableFormatter { @Override public int getWidth(Text component) { - return renderer().getWidth(component.asFormattedString()); + return renderer().getWidth(component.asString()); } @Override @@ -67,9 +71,9 @@ public class ClientTableFormatter implements TableFormatter { // Trim the text if it goes over the allowed length int maxWidth = MathHelper.floor(chat.getWidth() / chat.getChatScale()); - List list = ChatMessages.breakRenderedChatMessageLines(component, maxWidth, mc.textRenderer, false, false); + List list = ChatMessages.breakRenderedChatMessageLines(component, maxWidth, mc.textRenderer); if (!list.isEmpty()) { - chat.addMessage(list.get(0), id); + chat.addMessage((Text) list.get(0), id); } } diff --git a/src/main/java/dan200/computercraft/client/gui/GuiPrintout.java b/src/main/java/dan200/computercraft/client/gui/GuiPrintout.java index 7bf29e2a3..e5ed89e68 100644 --- a/src/main/java/dan200/computercraft/client/gui/GuiPrintout.java +++ b/src/main/java/dan200/computercraft/client/gui/GuiPrintout.java @@ -16,6 +16,7 @@ import com.mojang.blaze3d.platform.GlStateManager; import dan200.computercraft.core.terminal.TextBuffer; import dan200.computercraft.shared.common.ContainerHeldItem; import dan200.computercraft.shared.media.items.ItemPrintout; +import net.minecraft.client.util.math.MatrixStack; import org.lwjgl.glfw.GLFW; import net.minecraft.client.gui.screen.ingame.HandledScreen; @@ -102,23 +103,23 @@ public class GuiPrintout extends HandledScreen { } @Override - public void drawBackground(float partialTicks, int mouseX, int mouseY) { + public void drawBackground(MatrixStack stack, float partialTicks, int mouseX, int mouseY) { // Draw the printout GlStateManager.color4f(1.0f, 1.0f, 1.0f, 1.0f); GlStateManager.enableDepthTest(); - drawBorder(this.x, this.y, blitOffset, this.m_page, this.m_pages, this.m_book); + drawBorder(this.x, this.y, getZOffset(), this.m_page, this.m_pages, this.m_book); drawText(this.x + X_TEXT_MARGIN, this.y + Y_TEXT_MARGIN, ItemPrintout.LINES_PER_PAGE * this.m_page, this.m_text, this.m_colours); } @Override - public void render(int mouseX, int mouseY, float partialTicks) { + public void render(MatrixStack stack, int mouseX, int mouseY, float partialTicks) { // We must take the background further back in order to not overlap with our printed pages. - blitOffset--; - renderBackground(); - blitOffset++; + setZOffset(getZOffset() - 1); + renderBackground(stack); + setZOffset(getZOffset() + 1); - super.render(mouseX, mouseY, partialTicks); - this.drawMouseoverTooltip(mouseX, mouseY); + super.render(stack, mouseX, mouseY, partialTicks); + this.drawMouseoverTooltip(stack, mouseX, mouseY); } } diff --git a/src/main/java/dan200/computercraft/client/gui/GuiTurtle.java b/src/main/java/dan200/computercraft/client/gui/GuiTurtle.java index 3d75aa264..bf7c447d8 100644 --- a/src/main/java/dan200/computercraft/client/gui/GuiTurtle.java +++ b/src/main/java/dan200/computercraft/client/gui/GuiTurtle.java @@ -14,6 +14,7 @@ import dan200.computercraft.shared.computer.core.ClientComputer; import dan200.computercraft.shared.computer.core.ComputerFamily; import dan200.computercraft.shared.turtle.blocks.TileTurtle; import dan200.computercraft.shared.turtle.inventory.ContainerTurtle; +import net.minecraft.client.util.math.MatrixStack; import org.lwjgl.glfw.GLFW; import net.minecraft.client.gui.screen.ingame.HandledScreen; @@ -43,12 +44,12 @@ public class GuiTurtle extends HandledScreen { @Override protected void init() { super.init(); - minecraft.keyboard.enableRepeatEvents(true); + client.keyboard.setRepeatEvents(true); int termPxWidth = ComputerCraft.terminalWidth_turtle * FixedWidthFontRenderer.FONT_WIDTH; int termPxHeight = ComputerCraft.terminalHeight_turtle * FixedWidthFontRenderer.FONT_HEIGHT; - this.terminal = new WidgetTerminal(minecraft, () -> this.m_computer, ComputerCraft.terminalWidth_turtle, ComputerCraft.terminalHeight_turtle, 2, 2, 2, 2); + this.terminal = new WidgetTerminal(client, () -> this.m_computer, ComputerCraft.terminalWidth_turtle, ComputerCraft.terminalHeight_turtle, 2, 2, 2, 2); this.terminalWrapper = new WidgetWrapper(this.terminal, 2 + 8 + this.x, 2 + 8 + this.y, termPxWidth, termPxHeight); this.children.add(this.terminalWrapper); @@ -79,7 +80,7 @@ public class GuiTurtle extends HandledScreen { super.removed(); this.children.remove(this.terminal); this.terminal = null; - minecraft.keyboard.enableRepeatEvents(false); + client.keyboard.setRepeatEvents(false); } @Override @@ -89,37 +90,37 @@ public class GuiTurtle extends HandledScreen { } @Override - protected void drawBackground(float partialTicks, int mouseX, int mouseY) { + protected void drawBackground(MatrixStack stack, float partialTicks, int mouseX, int mouseY) { // Draw term boolean advanced = this.m_family == ComputerFamily.Advanced; this.terminal.draw(this.terminalWrapper.getX(), this.terminalWrapper.getY()); // Draw border/inventory GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - minecraft.getTextureManager() + client.getTextureManager() .bindTextureInner(advanced ? BACKGROUND_ADVANCED : BACKGROUND_NORMAL); - blit(this.x, this.y, 0, 0, this.backgroundWidth, this.backgroundHeight); + drawTexture(stack, this.x, this.y, 0, 0, this.backgroundWidth, this.backgroundHeight); - this.drawSelectionSlot(advanced); + this.drawSelectionSlot(stack, advanced); } - private void drawSelectionSlot(boolean advanced) { + private void drawSelectionSlot(MatrixStack stack, boolean advanced) { // Draw selection slot int slot = this.m_container.getSelectedSlot(); if (slot >= 0) { GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); int slotX = slot % 4; int slotY = slot / 4; - minecraft.getTextureManager() + client.getTextureManager() .bindTextureInner(advanced ? BACKGROUND_ADVANCED : BACKGROUND_NORMAL); - blit(this.x + this.m_container.m_turtleInvStartX - 2 + slotX * 18, this.y + this.m_container.m_playerInvStartY - 2 + slotY * 18, 0, 217, 24, 24); + drawTexture(stack, this.x + this.m_container.m_turtleInvStartX - 2 + slotX * 18, this.y + this.m_container.m_playerInvStartY - 2 + slotY * 18, 0, 217, 24, 24); } } @Override - public void render(int mouseX, int mouseY, float partialTicks) { - renderBackground(); - super.render(mouseX, mouseY, partialTicks); - this.drawMouseoverTooltip(mouseX, mouseY); + public void render(MatrixStack stack, int mouseX, int mouseY, float partialTicks) { + renderBackground(stack); + super.render(stack, mouseX, mouseY, partialTicks); + this.drawMouseoverTooltip(stack, mouseX, mouseY); } } diff --git a/src/main/java/dan200/computercraft/client/gui/widgets/WidgetTerminal.java b/src/main/java/dan200/computercraft/client/gui/widgets/WidgetTerminal.java index 713a2a657..96a255d43 100644 --- a/src/main/java/dan200/computercraft/client/gui/widgets/WidgetTerminal.java +++ b/src/main/java/dan200/computercraft/client/gui/widgets/WidgetTerminal.java @@ -20,6 +20,8 @@ import dan200.computercraft.shared.computer.core.ClientComputer; import dan200.computercraft.shared.computer.core.IComputer; import dan200.computercraft.shared.util.Colour; import dan200.computercraft.shared.util.Palette; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import org.lwjgl.glfw.GLFW; import org.lwjgl.opengl.GL11; @@ -30,6 +32,7 @@ import net.minecraft.client.render.BufferBuilder; import net.minecraft.client.render.Tessellator; import net.minecraft.client.render.VertexFormats; +@Environment(EnvType.CLIENT) public class WidgetTerminal implements Element { private static final float TERMINATE_TIME = 0.5f; @@ -410,16 +413,16 @@ public class WidgetTerminal implements Element { BufferBuilder buffer = tesslector.getBuffer(); buffer.begin(GL11.GL_QUADS, VertexFormats.POSITION_TEXTURE); buffer.vertex(x, y + height, 0) - .texture(0 / 256.0, height / 256.0) + .texture(0 / 256.0f, height / 256.0f) .next(); buffer.vertex(x + width, y + height, 0) - .texture(width / 256.0, height / 256.0) + .texture(width / 256.0f, height / 256.f) .next(); buffer.vertex(x + width, y, 0) - .texture(width / 256.0, 0 / 256.0) + .texture(width / 256.0f, 0 / 256.0f) .next(); buffer.vertex(x, y, 0) - .texture(0 / 256.0, 0 / 256.0) + .texture(0 / 256.0f, 0 / 256.0f) .next(); tesslector.draw(); } finally { diff --git a/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java b/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java index 17f013a52..e0463e28e 100644 --- a/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java +++ b/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java @@ -32,12 +32,12 @@ import dan200.computercraft.shared.peripheral.monitor.TileMonitor; import dan200.computercraft.shared.turtle.blocks.TileTurtle; import dan200.computercraft.shared.turtle.inventory.ContainerTurtle; +import net.fabricmc.fabric.api.client.rendereregistry.v1.BlockEntityRendererRegistry; import net.minecraft.client.texture.SpriteAtlasTexture; import net.minecraft.inventory.SimpleInventory; import net.minecraft.screen.ArrayPropertyDelegate; import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry; -import net.fabricmc.fabric.api.client.render.BlockEntityRendererRegistry; import net.fabricmc.fabric.api.event.client.ClientSpriteRegistryCallback; import net.fabricmc.fabric.api.event.client.ClientTickCallback; diff --git a/src/main/java/dan200/computercraft/shared/command/arguments/ArgumentSerializers.java b/src/main/java/dan200/computercraft/shared/command/arguments/ArgumentSerializers.java index 1c0c94cc1..72e710017 100644 --- a/src/main/java/dan200/computercraft/shared/command/arguments/ArgumentSerializers.java +++ b/src/main/java/dan200/computercraft/shared/command/arguments/ArgumentSerializers.java @@ -9,9 +9,9 @@ package dan200.computercraft.shared.command.arguments; import com.mojang.brigadier.arguments.ArgumentType; import dan200.computercraft.ComputerCraft; -import net.minecraft.command.arguments.ArgumentTypes; -import net.minecraft.command.arguments.serialize.ArgumentSerializer; -import net.minecraft.command.arguments.serialize.ConstantArgumentSerializer; +import net.minecraft.command.argument.ArgumentTypes; +import net.minecraft.command.argument.serialize.ArgumentSerializer; +import net.minecraft.command.argument.serialize.ConstantArgumentSerializer; import net.minecraft.util.Identifier; public final class ArgumentSerializers { diff --git a/src/main/java/dan200/computercraft/shared/command/arguments/ComputersArgumentType.java b/src/main/java/dan200/computercraft/shared/command/arguments/ComputersArgumentType.java index 280eb66a3..7dd6b29bc 100644 --- a/src/main/java/dan200/computercraft/shared/command/arguments/ComputersArgumentType.java +++ b/src/main/java/dan200/computercraft/shared/command/arguments/ComputersArgumentType.java @@ -36,7 +36,7 @@ import dan200.computercraft.ComputerCraft; import dan200.computercraft.shared.computer.core.ComputerFamily; import dan200.computercraft.shared.computer.core.ServerComputer; -import net.minecraft.command.arguments.serialize.ArgumentSerializer; +import net.minecraft.command.argument.serialize.ArgumentSerializer; import net.minecraft.network.PacketByteBuf; import net.minecraft.server.command.ServerCommandSource; diff --git a/src/main/java/dan200/computercraft/shared/command/arguments/RepeatArgumentType.java b/src/main/java/dan200/computercraft/shared/command/arguments/RepeatArgumentType.java index 8078860f8..75d3ed5b6 100644 --- a/src/main/java/dan200/computercraft/shared/command/arguments/RepeatArgumentType.java +++ b/src/main/java/dan200/computercraft/shared/command/arguments/RepeatArgumentType.java @@ -25,8 +25,8 @@ import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import net.minecraft.command.arguments.ArgumentTypes; -import net.minecraft.command.arguments.serialize.ArgumentSerializer; +import net.minecraft.command.argument.ArgumentTypes; +import net.minecraft.command.argument.serialize.ArgumentSerializer; import net.minecraft.network.PacketByteBuf; import net.minecraft.text.LiteralText; import net.minecraft.text.Text; diff --git a/src/main/java/dan200/computercraft/shared/command/text/ChatHelpers.java b/src/main/java/dan200/computercraft/shared/command/text/ChatHelpers.java index 69dab74cc..befd70fdf 100644 --- a/src/main/java/dan200/computercraft/shared/command/text/ChatHelpers.java +++ b/src/main/java/dan200/computercraft/shared/command/text/ChatHelpers.java @@ -6,12 +6,7 @@ package dan200.computercraft.shared.command.text; -import net.minecraft.text.ClickEvent; -import net.minecraft.text.HoverEvent; -import net.minecraft.text.LiteralText; -import net.minecraft.text.Style; -import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.*; import net.minecraft.util.Formatting; import net.minecraft.util.math.BlockPos; @@ -28,7 +23,7 @@ public final class ChatHelpers { } public static Text list(Text... children) { - Text component = new LiteralText(""); + MutableText component = new LiteralText(""); for (Text child : children) { component.append(child); } @@ -68,7 +63,7 @@ public final class ChatHelpers { style.withColor(Formatting.YELLOW); } style.withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, command)); - style.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, toolTip)); + style.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, toolTip)); return component; } diff --git a/src/main/java/dan200/computercraft/shared/computer/blocks/TileComputerBase.java b/src/main/java/dan200/computercraft/shared/computer/blocks/TileComputerBase.java index bb558556a..b4dd798e2 100644 --- a/src/main/java/dan200/computercraft/shared/computer/blocks/TileComputerBase.java +++ b/src/main/java/dan200/computercraft/shared/computer/blocks/TileComputerBase.java @@ -183,7 +183,6 @@ public abstract class TileComputerBase extends TileGeneric implements IComputerT * @param pos The position of the neighbour * @param side The side we are reading from * @return The effective redstone power - * @see net.minecraft.block.RedstoneBlock#method_9991(World, BlockPos, BlockState) */ protected static int getRedstoneInput(World world, BlockPos pos, Direction side) { int power = world.getEmittedRedstonePower(pos, side); @@ -321,8 +320,8 @@ public abstract class TileComputerBase extends TileGeneric implements IComputerT } @Override - public void fromTag(CompoundTag nbt) { - super.fromTag(nbt); + public void fromTag(BlockState state, CompoundTag nbt) { + super.fromTag(state, nbt); // Load ID, label and power state this.m_computerID = nbt.contains(NBT_ID) ? nbt.getInt(NBT_ID) : -1; diff --git a/src/main/java/dan200/computercraft/shared/mixin/MixinWorld.java b/src/main/java/dan200/computercraft/shared/mixin/MixinWorld.java index 52733fa49..d6465034d 100644 --- a/src/main/java/dan200/computercraft/shared/mixin/MixinWorld.java +++ b/src/main/java/dan200/computercraft/shared/mixin/MixinWorld.java @@ -39,7 +39,7 @@ public class MixinWorld { private static void setWorld(BlockEntity entity, Object world) { if (entity.getWorld() != world && entity instanceof TileGeneric) { - entity.setLocation((World) world); + entity.setLocation((World) world, entity.getPos()); } } diff --git a/src/main/java/dan200/computercraft/shared/turtle/core/TurtleBrain.java b/src/main/java/dan200/computercraft/shared/turtle/core/TurtleBrain.java index 51553c7a2..8e82e6041 100644 --- a/src/main/java/dan200/computercraft/shared/turtle/core/TurtleBrain.java +++ b/src/main/java/dan200/computercraft/shared/turtle/core/TurtleBrain.java @@ -209,7 +209,7 @@ public class TurtleBrain implements ITurtleAccess { } // Ensure the chunk is loaded - if (!world.isBlockLoaded(pos)) { + if (!world.isChunkLoaded(pos)) { return false; } @@ -239,7 +239,7 @@ public class TurtleBrain implements ITurtleAccess { if (newTile instanceof TileTurtle) { // Copy the old turtle state into the new turtle TileTurtle newTurtle = (TileTurtle) newTile; - newTurtle.setLocation(world); + newTurtle.setLocation(world, pos); newTurtle.setPos(pos); newTurtle.transferStateFrom(oldOwner); newTurtle.createServerComputer() @@ -631,7 +631,7 @@ public class TurtleBrain implements ITurtleAccess { } Box aabb = new Box(minX, minY, minZ, maxX, maxY, maxZ); - List list = world.getEntities((Entity) null, aabb, EntityPredicates.EXCEPT_SPECTATOR); + List list = world.getOtherEntities((Entity) null, aabb, EntityPredicates.EXCEPT_SPECTATOR); if (!list.isEmpty()) { double pushStep = 1.0f / ANIM_DURATION; double pushStepX = moveDir.getOffsetX() * pushStep; diff --git a/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java b/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java index 11ac50f46..72870e5f2 100644 --- a/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java +++ b/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java @@ -43,9 +43,8 @@ public final class TurtlePlayer extends FakePlayer { private void setState(ITurtleAccess turtle) { BlockPos position = turtle.getPosition(); - x = position.getX() + 0.5; - y = position.getY() + 0.5; - z = position.getZ() + 0.5; + + this.pos.add(0.5, 0.5, 0.5); this.yaw = turtle.getDirection() .asRotation(); @@ -102,9 +101,9 @@ public final class TurtlePlayer extends FakePlayer { @Override public Vec3d getCameraPosVec(float float_1) { - y -= this.getStandingEyeHeight(); + this.pos.subtract(0, this.getStandingEyeHeight(), 0); Vec3d r = super.getCameraPosVec(float_1); - y += this.getStandingEyeHeight(); + this.pos.add(0, this.getStandingEyeHeight(), 0); return r; } } diff --git a/src/main/java/dan200/computercraft/shared/util/Config.java b/src/main/java/dan200/computercraft/shared/util/Config.java index 7c386cf71..37439d095 100644 --- a/src/main/java/dan200/computercraft/shared/util/Config.java +++ b/src/main/java/dan200/computercraft/shared/util/Config.java @@ -8,7 +8,7 @@ import java.util.concurrent.TimeUnit; import blue.endless.jankson.Comment; import blue.endless.jankson.Jankson; import blue.endless.jankson.JsonObject; -import blue.endless.jankson.impl.SyntaxError; +import blue.endless.jankson.api.SyntaxError; import com.google.common.base.CaseFormat; import com.google.common.base.Converter; import dan200.computercraft.ComputerCraft; diff --git a/src/main/java/dan200/computercraft/shared/util/WorldUtil.java b/src/main/java/dan200/computercraft/shared/util/WorldUtil.java index e867af0e9..43d5c4f5a 100644 --- a/src/main/java/dan200/computercraft/shared/util/WorldUtil.java +++ b/src/main/java/dan200/computercraft/shared/util/WorldUtil.java @@ -11,6 +11,7 @@ import java.util.List; import javax.annotation.Nonnull; import com.google.common.base.Predicate; +import net.minecraft.world.RaycastContext; import org.apache.commons.lang3.tuple.Pair; import net.minecraft.block.BlockState; @@ -28,7 +29,6 @@ import net.minecraft.util.math.Box; import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; import net.minecraft.util.shape.VoxelShape; -import net.minecraft.world.RayTraceContext; import net.minecraft.world.World; public final class WorldUtil { @@ -69,10 +69,10 @@ public final class WorldUtil { // Raycast for blocks ENTITY.updatePosition(vecStart.x, vecStart.y, vecStart.z); - HitResult result = world.rayTrace(new RayTraceContext(vecStart, + HitResult result = world.raycast(new RaycastContext(vecStart, vecEnd, - RayTraceContext.ShapeType.OUTLINE, - RayTraceContext.FluidHandling.NONE, + RaycastContext.ShapeType.OUTLINE, + RaycastContext.FluidHandling.NONE, ENTITY)); if (result != null && result.getType() == HitResult.Type.BLOCK) { distance = vecStart.distanceTo(result.getPos()); @@ -92,7 +92,7 @@ public final class WorldUtil { Entity closest = null; double closestDist = 99.0; - List list = world.getEntities(Entity.class, bigBox, CAN_COLLIDE); + List list = world.getEntitiesByClass(Entity.class, bigBox, CAN_COLLIDE); for (Entity entity : list) { Box littleBox = entity.getBoundingBox(); diff --git a/src/main/resources/computercraft.accesswidener b/src/main/resources/computercraft.accesswidener new file mode 100644 index 000000000..aebb41cc2 --- /dev/null +++ b/src/main/resources/computercraft.accesswidener @@ -0,0 +1,12 @@ +accessWidener v1 named + +accessible method net/minecraft/client/gui/hud/ChatHud addMessage (Lnet/minecraft/text/Text;I)V +accessible method net/minecraft/client/gui/hud/ChatHud removeMessage (I)V +accessible field net/minecraft/block/entity/BlockEntity invalid Z +accessible method net/minecraft/world/World isValid (Lnet/minecraft/util/math/BlockPos;)Z +accessible method net/minecraft/client/render/item/HeldItemRenderer renderArmHoldingItem (Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IFFLnet/minecraft/util/Arm;)V +accessible method net/minecraft/client/render/item/HeldItemRenderer renderArm (Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/util/Arm;)V +accessible method net/minecraft/client/render/item/HeldItemRenderer getMapAngle (F)F +accessible method net/minecraft/client/texture/TextureManager bindTextureInner (Lnet/minecraft/util/Identifier;)V +accessible field net/minecraft/entity/Entity pos Lnet/minecraft/util/math/Vec3d; +extendable method net/minecraft/entity/Entity getCameraPosVec (F)Lnet/minecraft/util/math/Vec3d;