Не рендерится предмет

Версия Minecraft
1.16.5
API
Forge
1,374
113
241
Почему-то не рендерится предмет. Путём sout'ов я определил, что stack.isEmpty() всегда выдаёт true конкретно в этом классе, даже если он должен быть false. Если убрать условие, то предмет не рендерится даже если он внутри тайла. Т.е. stack == ItemStack.EMPTY в любом случае, даже если в тайле stack != ItemStack.EMPTY.
Код был свор... нагло взят и преобразован с исходников ботании от безысходности по причине отсутствия рендера.
Java:
public class EnchantedTableTileRenderer extends TileEntityRenderer<EnchantedTableTile> {
    Minecraft mc = Minecraft.getInstance();

    public EnchantedTableTileRenderer(TileEntityRendererDispatcher manager) {
        super(manager);
    }
    @Override
    public void render(EnchantedTableTile te, float partialTicks, MatrixStack ms,
                       IRenderTypeBuffer buffer, int combinedLight, int combinedOverlay ) {
        ItemStack stack = te.handler.getStackInSlot(0);
        if(!stack.isEmpty()) {
            ms.pushPose();
            ms.translate(0.5F, 1.5F, 0.5F);
            ms.mulPose(Vector3f.ZP.rotationDegrees(180f - partialTicks));
            float s = 0.6F;
            ms.scale(s, s, s);
            mc.getItemRenderer().renderStatic(stack, ItemCameraTransforms.TransformType.FIXED, combinedLight,
                    combinedOverlay, ms, buffer);
            ms.popPose();
        }
    }
}
 
1,374
113
241
Почему не рендерился предмет я понял: я не сделал синхронизацию. Однако создать эту синхронизацию у меня не выходит.
Код прилагаю, конечно же. Только TileEntity, поскольку в TileEntityRenderer я ничего не трогал. Ориентировался на темы с форума forge, исходники create, botania, minecraft by example.
TileEntity класс:
public class EnchantedTableTile extends TileEntity {
    public final ItemStackHandler handler = new ItemStackHandler(1) {
        @Override protected void onContentsChanged(int slot) { setChanged(); }
        @Override public boolean isItemValid(int slot, @Nonnull ItemStack stack) {
            return stack.getItem() instanceof ItemRegister.ItemSymbol;
        }
        @Override public int getSlotLimit(int slot) { return 2; }
        @Nonnull @Override public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) {
            return !isItemValid(slot, stack) ? stack : super.insertItem(slot, stack, simulate);
        }};
    public final LazyOptional<ItemStackHandler> inventory = LazyOptional.of(() -> handler);
    public EnchantedTableTile() {
        super(TileRegister.ENCHANTED_TABLE_TILE_TYPE.get());
    }
    @Nonnull @Override public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap) {
        return cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY ?
                inventory.cast() : super.getCapability(cap);
    }
    @Override protected void invalidateCaps() {
        super.invalidateCaps();
        inventory.invalidate();
    }
    @Override public void load(BlockState state, CompoundNBT tag) {
        super.load(state, tag);
        handler.deserializeNBT(tag.getCompound("Inventory"));
    }
    @Override public CompoundNBT save(CompoundNBT tag) {
        tag.put("Inventory", handler.serializeNBT());
        return super.save(tag);
    }

    @Override public SUpdateTileEntityPacket getUpdatePacket() {
        return new SUpdateTileEntityPacket(getBlockPos(), -90, getUpdateTag());
    }
    @Override public void onDataPacket(NetworkManager net, SUpdateTileEntityPacket pkt) {
        load(getBlockState(), pkt.getTag());
    }
    @Override public CompoundNBT getUpdateTag() { return save(new CompoundNBT()); }
    @Override public void handleUpdateTag(BlockState state, CompoundNBT tag) { load(state, tag); }
}
 
Сверху